Call data callbacks
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user