Call data callbacks

This commit is contained in:
2025-05-18 11:50:16 -04:00
parent a47d791ff8
commit c65cf44cc8

View File

@@ -345,6 +345,9 @@ inline Status n_string2(Parser3 *self) {
if (uint8_t(*self->buf) < 0x20) { if (uint8_t(*self->buf) < 0x20) {
return S_REJECT; return S_REJECT;
} }
if (*self->buf != '"') {
self->callbacks->on_string_data(self->data, self->buf, 1);
}
if (int8_t(*self->buf) > 0) { if (int8_t(*self->buf) > 0) {
// one byte utf-8 encoding // one byte utf-8 encoding
switch (*self->buf) { switch (*self->buf) {
@@ -399,6 +402,7 @@ inline Status n_string_following_escape(Parser3 *self) {
if (self->len() == 0) { if (self->len() == 0) {
return S_REJECT; return S_REJECT;
} }
self->callbacks->on_string_data(self->data, self->buf, 1);
switch (*self->buf) { switch (*self->buf) {
case '"': case '"':
case '\\': case '\\':
@@ -431,6 +435,7 @@ inline Status t_utf8_continuation_byte(Parser3 *self) {
return S_REJECT; return S_REJECT;
} }
if ((*self->buf & 0b11000000) == 0b10000000) { if ((*self->buf & 0b11000000) == 0b10000000) {
self->callbacks->on_string_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
@@ -469,6 +474,7 @@ inline Status t_hex(Parser3 *self) {
if (('0' <= *self->buf && *self->buf <= '9') || if (('0' <= *self->buf && *self->buf <= '9') ||
('a' <= *self->buf && *self->buf <= 'f') || ('a' <= *self->buf && *self->buf <= 'f') ||
('A' <= *self->buf && *self->buf <= 'F')) { ('A' <= *self->buf && *self->buf <= 'F')) {
self->callbacks->on_string_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
@@ -490,6 +496,7 @@ inline Status n_integer(Parser3 *self) {
} }
switch (*self->buf) { switch (*self->buf) {
case '0': case '0':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
@@ -502,6 +509,7 @@ inline Status n_integer(Parser3 *self) {
case '7': case '7':
case '8': case '8':
case '9': case '9':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
if (auto s = self->push({N_DIGITS2})) { if (auto s = self->push({N_DIGITS2})) {
@@ -509,6 +517,7 @@ inline Status n_integer(Parser3 *self) {
} }
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
case '-': case '-':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
if (auto s = self->push({N_INTEGER2})) { if (auto s = self->push({N_INTEGER2})) {
@@ -526,6 +535,7 @@ inline Status n_integer2(Parser3 *self) {
} }
switch (*self->buf) { switch (*self->buf) {
case '0': case '0':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
@@ -538,6 +548,7 @@ inline Status n_integer2(Parser3 *self) {
case '7': case '7':
case '8': case '8':
case '9': case '9':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
if (auto s = self->push({N_DIGITS2})) { if (auto s = self->push({N_DIGITS2})) {
@@ -564,6 +575,7 @@ inline Status n_digits(Parser3 *self) {
case '7': case '7':
case '8': case '8':
case '9': case '9':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
if (auto s = self->push({N_DIGITS2})) { if (auto s = self->push({N_DIGITS2})) {
@@ -591,6 +603,7 @@ inline Status n_digits2(Parser3 *self) {
case '7': case '7':
case '8': case '8':
case '9': case '9':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);
default: default:
@@ -606,6 +619,7 @@ inline Status n_fraction(Parser3 *self) {
} }
switch (*self->buf) { switch (*self->buf) {
case '.': case '.':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
if (auto s = self->push({N_DIGITS})) { if (auto s = self->push({N_DIGITS})) {
@@ -626,6 +640,7 @@ inline Status n_exponent(Parser3 *self) {
switch (*self->buf) { switch (*self->buf) {
case 'e': case 'e':
case 'E': case 'E':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
if (auto s = self->push({N_SIGN, N_DIGITS})) { if (auto s = self->push({N_SIGN, N_DIGITS})) {
@@ -646,6 +661,7 @@ inline Status n_sign(Parser3 *self) {
switch (*self->buf) { switch (*self->buf) {
case '+': case '+':
case '-': case '-':
self->callbacks->on_number_data(self->data, self->buf, 1);
++self->buf; ++self->buf;
self->pop(); self->pop();
MUSTTAIL return Parser3::keepGoing(self); MUSTTAIL return Parser3::keepGoing(self);