data -> userdata

This commit is contained in:
2025-05-27 10:33:46 -04:00
parent f6cd807da3
commit 0027c9ff79
2 changed files with 23 additions and 23 deletions

View File

@@ -7,12 +7,12 @@ extern "C" {
__attribute__((visibility("default"))) WeaselJsonParser * __attribute__((visibility("default"))) WeaselJsonParser *
WeaselJsonParser_create(int stackSize, const WeaselJsonCallbacks *callbacks, WeaselJsonParser_create(int stackSize, const WeaselJsonCallbacks *callbacks,
void *data) { void *userdata) {
auto *buf = malloc(sizeof(Parser3) + stackSize); auto *buf = malloc(sizeof(Parser3) + stackSize);
if (buf == nullptr) { if (buf == nullptr) {
return nullptr; return nullptr;
} }
return (WeaselJsonParser *)new (buf) Parser3{callbacks, data, stackSize}; return (WeaselJsonParser *)new (buf) Parser3{callbacks, userdata, stackSize};
} }
__attribute__((visibility("default"))) void __attribute__((visibility("default"))) void

View File

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