data -> userdata
This commit is contained in:
@@ -7,12 +7,12 @@ extern "C" {
|
||||
|
||||
__attribute__((visibility("default"))) WeaselJsonParser *
|
||||
WeaselJsonParser_create(int stackSize, const WeaselJsonCallbacks *callbacks,
|
||||
void *data) {
|
||||
void *userdata) {
|
||||
auto *buf = malloc(sizeof(Parser3) + stackSize);
|
||||
if (buf == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
return (WeaselJsonParser *)new (buf) Parser3{callbacks, data, stackSize};
|
||||
return (WeaselJsonParser *)new (buf) Parser3{callbacks, userdata, stackSize};
|
||||
}
|
||||
|
||||
__attribute__((visibility("default"))) void
|
||||
|
||||
@@ -68,8 +68,8 @@ enum Symbol : uint8_t {
|
||||
N_SYMBOL_COUNT, // Must be last
|
||||
};
|
||||
struct Parser3 {
|
||||
Parser3(const WeaselJsonCallbacks *callbacks, void *data, int stackSize)
|
||||
: callbacks(callbacks), data(data), stackSize(stackSize) {
|
||||
Parser3(const WeaselJsonCallbacks *callbacks, void *userdata, int stackSize)
|
||||
: callbacks(callbacks), userdata(userdata), stackSize(stackSize) {
|
||||
reset();
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ struct Parser3 {
|
||||
int len = buf - dataBegin;
|
||||
assert(len >= 0);
|
||||
if (done || len > 0) {
|
||||
callbacks->on_number_data(data, dataBegin, len, done);
|
||||
callbacks->on_number_data(userdata, dataBegin, len, done);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ struct Parser3 {
|
||||
int len = writeBuf - dataBegin;
|
||||
assert(len >= 0);
|
||||
if (done || len > 0) {
|
||||
callbacks->on_string_data(data, dataBegin, len, done);
|
||||
callbacks->on_string_data(userdata, dataBegin, len, done);
|
||||
}
|
||||
dataBegin = writeBuf;
|
||||
}
|
||||
@@ -116,7 +116,7 @@ struct Parser3 {
|
||||
assert(result >= 0);
|
||||
return result;
|
||||
}
|
||||
Symbol top() const {
|
||||
[[nodiscard]] Symbol top() const {
|
||||
assert(!empty());
|
||||
return *(stackPtr - 1);
|
||||
}
|
||||
@@ -144,7 +144,7 @@ struct Parser3 {
|
||||
// Used for unescaping string data in place
|
||||
char *writeBuf;
|
||||
const WeaselJsonCallbacks *const callbacks;
|
||||
void *const data;
|
||||
void *const userdata;
|
||||
Symbol *stackPtr;
|
||||
bool complete;
|
||||
uint32_t utf8Codepoint;
|
||||
@@ -178,7 +178,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_value(Parser3 *self) {
|
||||
}
|
||||
switch (*self->buf) {
|
||||
case '{':
|
||||
self->callbacks->on_begin_object(self->data);
|
||||
self->callbacks->on_begin_object(self->userdata);
|
||||
++self->buf;
|
||||
self->pop();
|
||||
if (auto s = self->push({N_OBJECT2})) {
|
||||
@@ -186,7 +186,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_value(Parser3 *self) {
|
||||
}
|
||||
break;
|
||||
case '[':
|
||||
self->callbacks->on_begin_array(self->data);
|
||||
self->callbacks->on_begin_array(self->userdata);
|
||||
++self->buf;
|
||||
self->pop();
|
||||
if (auto s = self->push({N_ARRAY2})) {
|
||||
@@ -238,7 +238,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_value(Parser3 *self) {
|
||||
self->pop();
|
||||
if (self->len() >= 3) {
|
||||
if (memcmp(self->buf, "rue", 3) == 0) {
|
||||
self->callbacks->on_true_literal(self->data);
|
||||
self->callbacks->on_true_literal(self->userdata);
|
||||
self->buf += 3;
|
||||
} else [[unlikely]] {
|
||||
return WeaselJson_REJECT;
|
||||
@@ -254,7 +254,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_value(Parser3 *self) {
|
||||
self->pop();
|
||||
if (self->len() >= 4) {
|
||||
if (memcmp(self->buf, "alse", 4) == 0) {
|
||||
self->callbacks->on_false_literal(self->data);
|
||||
self->callbacks->on_false_literal(self->userdata);
|
||||
self->buf += 4;
|
||||
} else [[unlikely]] {
|
||||
return WeaselJson_REJECT;
|
||||
@@ -270,7 +270,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_value(Parser3 *self) {
|
||||
self->pop();
|
||||
if (self->len() >= 3) {
|
||||
if (memcmp(self->buf, "ull", 3) == 0) {
|
||||
self->callbacks->on_null_literal(self->data);
|
||||
self->callbacks->on_null_literal(self->userdata);
|
||||
self->buf += 3;
|
||||
} else [[unlikely]] {
|
||||
return WeaselJson_REJECT;
|
||||
@@ -299,7 +299,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_object2(Parser3 *self) {
|
||||
case '}':
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_end_object(self->data);
|
||||
self->callbacks->on_end_object(self->userdata);
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
case '"':
|
||||
++self->buf;
|
||||
@@ -326,7 +326,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_object3(Parser3 *self) {
|
||||
case '}':
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_end_object(self->data);
|
||||
self->callbacks->on_end_object(self->userdata);
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
case ',':
|
||||
++self->buf;
|
||||
@@ -352,7 +352,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_array2(Parser3 *self) {
|
||||
case ']':
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_end_array(self->data);
|
||||
self->callbacks->on_end_array(self->userdata);
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
default:
|
||||
self->pop();
|
||||
@@ -375,7 +375,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_array3(Parser3 *self) {
|
||||
case ']':
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_end_array(self->data);
|
||||
self->callbacks->on_end_array(self->userdata);
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
case ',':
|
||||
++self->buf;
|
||||
@@ -663,7 +663,7 @@ inline PRESERVE_NONE WeaselJsonStatus t_hex2(Parser3 *self) {
|
||||
w[0] = (0b00011111 & self->utf8Codepoint) | 0b11000000;
|
||||
w += 2;
|
||||
if (useTmp) {
|
||||
self->callbacks->on_string_data(self->data, tmp, 2, false);
|
||||
self->callbacks->on_string_data(self->userdata, tmp, 2, false);
|
||||
}
|
||||
} else {
|
||||
assert(self->utf8Codepoint < 0x10000);
|
||||
@@ -691,7 +691,7 @@ inline PRESERVE_NONE WeaselJsonStatus t_hex2(Parser3 *self) {
|
||||
w[0] = (0b00001111 & self->utf8Codepoint) | 0b11100000;
|
||||
w += 3;
|
||||
if (useTmp) {
|
||||
self->callbacks->on_string_data(self->data, tmp, 3, false);
|
||||
self->callbacks->on_string_data(self->userdata, tmp, 3, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -743,7 +743,7 @@ inline PRESERVE_NONE WeaselJsonStatus t_hex3(Parser3 *self) {
|
||||
w[0] = (0b00000111 & self->utf8Codepoint) | 0b11110000;
|
||||
w += 4;
|
||||
if (useTmp) {
|
||||
self->callbacks->on_string_data(self->data, tmp, 4, false);
|
||||
self->callbacks->on_string_data(self->userdata, tmp, 4, false);
|
||||
}
|
||||
|
||||
self->pop();
|
||||
@@ -918,7 +918,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_true(Parser3 *self) {
|
||||
if (*self->buf == 'e') {
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_true_literal(self->data);
|
||||
self->callbacks->on_true_literal(self->userdata);
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
} else [[unlikely]] {
|
||||
return WeaselJson_REJECT;
|
||||
@@ -929,7 +929,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_false(Parser3 *self) {
|
||||
if (*self->buf == 'e') {
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_false_literal(self->data);
|
||||
self->callbacks->on_false_literal(self->userdata);
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
} else [[unlikely]] {
|
||||
return WeaselJson_REJECT;
|
||||
@@ -940,7 +940,7 @@ inline PRESERVE_NONE WeaselJsonStatus n_null(Parser3 *self) {
|
||||
if (*self->buf == 'l') {
|
||||
++self->buf;
|
||||
self->pop();
|
||||
self->callbacks->on_null_literal(self->data);
|
||||
self->callbacks->on_null_literal(self->userdata);
|
||||
MUSTTAIL return Parser3::keepGoing(self);
|
||||
} else [[unlikely]] {
|
||||
return WeaselJson_REJECT;
|
||||
|
||||
Reference in New Issue
Block a user