Make json_callbacks a static class member

This commit is contained in:
2025-08-14 15:01:09 -04:00
parent b3e504a6f9
commit 035bd8b068
2 changed files with 7 additions and 6 deletions

View File

@@ -3,9 +3,8 @@
#include <charconv> #include <charconv>
#include <cstring> #include <cstring>
namespace {
// Global callbacks for JSON parsing // Global callbacks for JSON parsing
const WeaselJsonCallbacks json_callbacks = { const WeaselJsonCallbacks CommitRequest::json_callbacks = {
.on_begin_object = CommitRequest::on_begin_object, .on_begin_object = CommitRequest::on_begin_object,
.on_end_object = CommitRequest::on_end_object, .on_end_object = CommitRequest::on_end_object,
.on_string_data = CommitRequest::on_string_data, .on_string_data = CommitRequest::on_string_data,
@@ -17,6 +16,8 @@ const WeaselJsonCallbacks json_callbacks = {
.on_false_literal = CommitRequest::on_false_literal, .on_false_literal = CommitRequest::on_false_literal,
.on_null_literal = CommitRequest::on_null_literal, .on_null_literal = CommitRequest::on_null_literal,
}; };
namespace {
// Base64 decoding table // Base64 decoding table
constexpr std::array<int, 256> make_base64_decode_table() { constexpr std::array<int, 256> make_base64_decode_table() {
std::array<int, 256> table{}; std::array<int, 256> table{};
@@ -387,8 +388,6 @@ bool CommitRequest::parse_json(std::string_view json_str) {
bool CommitRequest::begin_streaming_parse() { bool CommitRequest::begin_streaming_parse() {
reset(); reset();
json_parser_ = WeaselJsonParser_create(64, &json_callbacks, this, 0);
return json_parser_ != nullptr; return json_parser_ != nullptr;
} }
@@ -440,4 +439,4 @@ CommitRequest::ParseStatus CommitRequest::finish_streaming_parse() {
parser_context_.parse_error = true; parser_context_.parse_error = true;
return ParseStatus::Error; return ParseStatus::Error;
} }
} }

View File

@@ -103,7 +103,9 @@ private:
std::vector<Precondition, ArenaStlAllocator<Precondition>> preconditions_; std::vector<Precondition, ArenaStlAllocator<Precondition>> preconditions_;
std::vector<Operation, ArenaStlAllocator<Operation>> operations_; std::vector<Operation, ArenaStlAllocator<Operation>> operations_;
ParserContext parser_context_; ParserContext parser_context_;
WeaselJsonParser *json_parser_ = nullptr; WeaselJsonParser *json_parser_ =
WeaselJsonParser_create(64, &json_callbacks, this, 0);
static const WeaselJsonCallbacks json_callbacks;
public: public:
/** /**