diff --git a/src/commit_request.cpp b/src/commit_request.cpp index 7c0706b..3940f09 100644 --- a/src/commit_request.cpp +++ b/src/commit_request.cpp @@ -3,9 +3,8 @@ #include #include -namespace { // Global callbacks for JSON parsing -const WeaselJsonCallbacks json_callbacks = { +const WeaselJsonCallbacks CommitRequest::json_callbacks = { .on_begin_object = CommitRequest::on_begin_object, .on_end_object = CommitRequest::on_end_object, .on_string_data = CommitRequest::on_string_data, @@ -17,6 +16,8 @@ const WeaselJsonCallbacks json_callbacks = { .on_false_literal = CommitRequest::on_false_literal, .on_null_literal = CommitRequest::on_null_literal, }; + +namespace { // Base64 decoding table constexpr std::array make_base64_decode_table() { std::array table{}; @@ -387,8 +388,6 @@ bool CommitRequest::parse_json(std::string_view json_str) { bool CommitRequest::begin_streaming_parse() { reset(); - - json_parser_ = WeaselJsonParser_create(64, &json_callbacks, this, 0); return json_parser_ != nullptr; } @@ -440,4 +439,4 @@ CommitRequest::ParseStatus CommitRequest::finish_streaming_parse() { parser_context_.parse_error = true; return ParseStatus::Error; } -} \ No newline at end of file +} diff --git a/src/commit_request.hpp b/src/commit_request.hpp index 5a9539c..3ff4491 100644 --- a/src/commit_request.hpp +++ b/src/commit_request.hpp @@ -103,7 +103,9 @@ private: std::vector> preconditions_; std::vector> operations_; ParserContext parser_context_; - WeaselJsonParser *json_parser_ = nullptr; + WeaselJsonParser *json_parser_ = + WeaselJsonParser_create(64, &json_callbacks, this, 0); + static const WeaselJsonCallbacks json_callbacks; public: /**