Call non-data callbacks
This commit is contained in:
@@ -135,12 +135,14 @@ inline Status n_value(Parser3 *self) {
|
|||||||
switch (*self->buf) {
|
switch (*self->buf) {
|
||||||
case '{':
|
case '{':
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_begin_object(self->data);
|
||||||
if (auto s = self->push({N_OBJECT})) {
|
if (auto s = self->push({N_OBJECT})) {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '[':
|
case '[':
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_begin_array(self->data);
|
||||||
if (auto s = self->push({N_ARRAY})) {
|
if (auto s = self->push({N_ARRAY})) {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
@@ -163,6 +165,7 @@ inline Status n_value(Parser3 *self) {
|
|||||||
case '9':
|
case '9':
|
||||||
case '-':
|
case '-':
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_begin_number(self->data);
|
||||||
if (auto s = self->push({N_NUMBER})) {
|
if (auto s = self->push({N_NUMBER})) {
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
@@ -217,6 +220,7 @@ inline Status n_object2(Parser3 *self) {
|
|||||||
case '}':
|
case '}':
|
||||||
++self->buf;
|
++self->buf;
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_end_object(self->data);
|
||||||
MUSTTAIL return Parser3::keepGoing(self);
|
MUSTTAIL return Parser3::keepGoing(self);
|
||||||
case '"':
|
case '"':
|
||||||
self->pop();
|
self->pop();
|
||||||
@@ -238,6 +242,7 @@ inline Status n_object3(Parser3 *self) {
|
|||||||
case '}':
|
case '}':
|
||||||
++self->buf;
|
++self->buf;
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_end_object(self->data);
|
||||||
MUSTTAIL return Parser3::keepGoing(self);
|
MUSTTAIL return Parser3::keepGoing(self);
|
||||||
case ',':
|
case ',':
|
||||||
++self->buf;
|
++self->buf;
|
||||||
@@ -275,6 +280,7 @@ inline Status n_array2(Parser3 *self) {
|
|||||||
case ']':
|
case ']':
|
||||||
++self->buf;
|
++self->buf;
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_end_array(self->data);
|
||||||
MUSTTAIL return Parser3::keepGoing(self);
|
MUSTTAIL return Parser3::keepGoing(self);
|
||||||
default:
|
default:
|
||||||
self->pop();
|
self->pop();
|
||||||
@@ -293,6 +299,7 @@ inline Status n_array3(Parser3 *self) {
|
|||||||
case ']':
|
case ']':
|
||||||
++self->buf;
|
++self->buf;
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_end_array(self->data);
|
||||||
MUSTTAIL return Parser3::keepGoing(self);
|
MUSTTAIL return Parser3::keepGoing(self);
|
||||||
case ',':
|
case ',':
|
||||||
++self->buf;
|
++self->buf;
|
||||||
@@ -321,6 +328,7 @@ inline Status n_string(Parser3 *self) {
|
|||||||
if (*self->buf != '"') {
|
if (*self->buf != '"') {
|
||||||
return S_REJECT;
|
return S_REJECT;
|
||||||
}
|
}
|
||||||
|
self->callbacks->on_begin_string(self->data);
|
||||||
++self->buf;
|
++self->buf;
|
||||||
self->pop();
|
self->pop();
|
||||||
if (auto s = self->push({N_STRING2})) {
|
if (auto s = self->push({N_STRING2})) {
|
||||||
@@ -343,6 +351,7 @@ inline Status n_string2(Parser3 *self) {
|
|||||||
case '"':
|
case '"':
|
||||||
++self->buf;
|
++self->buf;
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_end_string(self->data);
|
||||||
MUSTTAIL return Parser3::keepGoing(self);
|
MUSTTAIL return Parser3::keepGoing(self);
|
||||||
case '\\':
|
case '\\':
|
||||||
++self->buf;
|
++self->buf;
|
||||||
@@ -663,6 +672,7 @@ inline Status n_true(Parser3 *self) {
|
|||||||
if (*self->buf == 'e') {
|
if (*self->buf == 'e') {
|
||||||
++self->buf;
|
++self->buf;
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_true_literal(self->data);
|
||||||
MUSTTAIL return Parser3::keepGoing(self);
|
MUSTTAIL return Parser3::keepGoing(self);
|
||||||
}
|
}
|
||||||
return S_REJECT;
|
return S_REJECT;
|
||||||
@@ -672,6 +682,7 @@ inline Status n_false(Parser3 *self) {
|
|||||||
if (*self->buf == 'e') {
|
if (*self->buf == 'e') {
|
||||||
++self->buf;
|
++self->buf;
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_false_literal(self->data);
|
||||||
MUSTTAIL return Parser3::keepGoing(self);
|
MUSTTAIL return Parser3::keepGoing(self);
|
||||||
}
|
}
|
||||||
return S_REJECT;
|
return S_REJECT;
|
||||||
@@ -681,6 +692,7 @@ inline Status n_null(Parser3 *self) {
|
|||||||
if (*self->buf == 'l') {
|
if (*self->buf == 'l') {
|
||||||
++self->buf;
|
++self->buf;
|
||||||
self->pop();
|
self->pop();
|
||||||
|
self->callbacks->on_null_literal(self->data);
|
||||||
MUSTTAIL return Parser3::keepGoing(self);
|
MUSTTAIL return Parser3::keepGoing(self);
|
||||||
}
|
}
|
||||||
return S_REJECT;
|
return S_REJECT;
|
||||||
|
|||||||
Reference in New Issue
Block a user