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