You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brpc.apache.org by jr...@apache.org on 2022/11/28 13:13:26 UTC

[incubator-brpc] 01/01: - Make BUTIL_RAPIDJSON_NAMESPACE_BEGIN::GenericDocument's handler method public to enable outside custom parser/writer

This is an automated email from the ASF dual-hosted git repository.

jrjbear pushed a commit to branch custom-rapidjson
in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git

commit 5b62c4e508273c68d550cf86e22eee15879fe672
Author: jiangrujie <ji...@bytedance.com>
AuthorDate: Mon Nov 28 21:07:15 2022 +0800

    - Make BUTIL_RAPIDJSON_NAMESPACE_BEGIN::GenericDocument's handler method public to enable outside custom parser/writer
---
 src/butil/third_party/rapidjson/document.h | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/butil/third_party/rapidjson/document.h b/src/butil/third_party/rapidjson/document.h
index c78ae420..783186b9 100644
--- a/src/butil/third_party/rapidjson/document.h
+++ b/src/butil/third_party/rapidjson/document.h
@@ -1942,6 +1942,8 @@ private:
     template <typename,typename,typename> friend class GenericReader; // for parsing
     template <typename, typename> friend class GenericValue; // for deep copying
 
+// NOTE(jrj): Make the following methods public to enable outside parser/writer 
+public:
     // Implementation of Handler
     bool Null() { new (stack_.template Push<ValueType>()) ValueType(); return true; }
     bool Bool(bool b) { new (stack_.template Push<ValueType>()) ValueType(b); return true; }
@@ -1977,6 +1979,17 @@ private:
         return true;
     }
 
+    // NOTE(jrj): Extract the last element from the stack and move into `this' GenericDocument
+    void FinalizeHandler() {
+        if (StackSize() > 0) {
+            ValueType* rhs = stack_.template Pop<ValueType>(1);
+            this->RawAssign(*rhs);  // Transfer ownership
+        }
+        RAPIDJSON_ASSERT(stack_.Empty());
+    }
+
+    size_t StackSize() const { return stack_.GetSize(); }
+
 private:
     //! Prohibit copying
     GenericDocument(const GenericDocument&);


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@brpc.apache.org
For additional commands, e-mail: dev-help@brpc.apache.org