From e06b0d0cf62c7f367a566b20092e8e5f6e37c82f Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Sun, 18 May 2025 11:43:05 -0400 Subject: [PATCH] Call non-data callbacks --- src/parser3.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/parser3.h b/src/parser3.h index c2e696a..c7dc539 100644 --- a/src/parser3.h +++ b/src/parser3.h @@ -135,12 +135,14 @@ inline Status n_value(Parser3 *self) { switch (*self->buf) { case '{': self->pop(); + self->callbacks->on_begin_object(self->data); if (auto s = self->push({N_OBJECT})) { return s; } break; case '[': self->pop(); + self->callbacks->on_begin_array(self->data); if (auto s = self->push({N_ARRAY})) { return s; } @@ -163,6 +165,7 @@ inline Status n_value(Parser3 *self) { case '9': case '-': self->pop(); + self->callbacks->on_begin_number(self->data); if (auto s = self->push({N_NUMBER})) { return s; } @@ -217,6 +220,7 @@ inline Status n_object2(Parser3 *self) { case '}': ++self->buf; self->pop(); + self->callbacks->on_end_object(self->data); MUSTTAIL return Parser3::keepGoing(self); case '"': self->pop(); @@ -238,6 +242,7 @@ inline Status n_object3(Parser3 *self) { case '}': ++self->buf; self->pop(); + self->callbacks->on_end_object(self->data); MUSTTAIL return Parser3::keepGoing(self); case ',': ++self->buf; @@ -275,6 +280,7 @@ inline Status n_array2(Parser3 *self) { case ']': ++self->buf; self->pop(); + self->callbacks->on_end_array(self->data); MUSTTAIL return Parser3::keepGoing(self); default: self->pop(); @@ -293,6 +299,7 @@ inline Status n_array3(Parser3 *self) { case ']': ++self->buf; self->pop(); + self->callbacks->on_end_array(self->data); MUSTTAIL return Parser3::keepGoing(self); case ',': ++self->buf; @@ -321,6 +328,7 @@ inline Status n_string(Parser3 *self) { if (*self->buf != '"') { return S_REJECT; } + self->callbacks->on_begin_string(self->data); ++self->buf; self->pop(); if (auto s = self->push({N_STRING2})) { @@ -343,6 +351,7 @@ inline Status n_string2(Parser3 *self) { case '"': ++self->buf; self->pop(); + self->callbacks->on_end_string(self->data); MUSTTAIL return Parser3::keepGoing(self); case '\\': ++self->buf; @@ -663,6 +672,7 @@ inline Status n_true(Parser3 *self) { if (*self->buf == 'e') { ++self->buf; self->pop(); + self->callbacks->on_true_literal(self->data); MUSTTAIL return Parser3::keepGoing(self); } return S_REJECT; @@ -672,6 +682,7 @@ inline Status n_false(Parser3 *self) { if (*self->buf == 'e') { ++self->buf; self->pop(); + self->callbacks->on_false_literal(self->data); MUSTTAIL return Parser3::keepGoing(self); } return S_REJECT; @@ -681,6 +692,7 @@ inline Status n_null(Parser3 *self) { if (*self->buf == 'l') { ++self->buf; self->pop(); + self->callbacks->on_null_literal(self->data); MUSTTAIL return Parser3::keepGoing(self); } return S_REJECT;