Index: third_party/protobuf/src/google/protobuf/util/internal/json_objectwriter.h |
diff --git a/third_party/protobuf/src/google/protobuf/util/internal/json_objectwriter.h b/third_party/protobuf/src/google/protobuf/util/internal/json_objectwriter.h |
index cb7e2fb30c4fec5b621f720de734be48250cfbb9..31edc2927ffe38b957ae7648df462f13ebdac69e 100644 |
--- a/third_party/protobuf/src/google/protobuf/util/internal/json_objectwriter.h |
+++ b/third_party/protobuf/src/google/protobuf/util/internal/json_objectwriter.h |
@@ -93,7 +93,8 @@ class LIBPROTOBUF_EXPORT JsonObjectWriter : public StructuredObjectWriter { |
stream_(out), |
sink_(out), |
indent_string_(indent_string.ToString()), |
- use_websafe_base64_for_bytes_(false) {} |
+ use_websafe_base64_for_bytes_(false), |
+ empty_name_ok_for_next_key_(false) {} |
virtual ~JsonObjectWriter(); |
// ObjectWriter methods. |
@@ -111,11 +112,19 @@ class LIBPROTOBUF_EXPORT JsonObjectWriter : public StructuredObjectWriter { |
virtual JsonObjectWriter* RenderString(StringPiece name, StringPiece value); |
virtual JsonObjectWriter* RenderBytes(StringPiece name, StringPiece value); |
virtual JsonObjectWriter* RenderNull(StringPiece name); |
+ virtual JsonObjectWriter* RenderNullAsEmpty(StringPiece name); |
void set_use_websafe_base64_for_bytes(bool value) { |
use_websafe_base64_for_bytes_ = value; |
} |
+ // Whether empty strings should be rendered for the next JSON key. This |
+ // setting is only valid until the next key is rendered, after which it gets |
+ // reset to false. |
+ virtual void empty_name_ok_for_next_key() { |
+ empty_name_ok_for_next_key_ = true; |
+ } |
+ |
protected: |
class LIBPROTOBUF_EXPORT Element : public BaseElement { |
public: |
@@ -195,6 +204,10 @@ class LIBPROTOBUF_EXPORT JsonObjectWriter : public StructuredObjectWriter { |
// Writes an individual character to the output. |
void WriteChar(const char c) { stream_->WriteRaw(&c, sizeof(c)); } |
+ // Returns the current value of empty_name_ok_for_next_key_ and resets it to |
+ // false. |
+ bool GetAndResetEmptyKeyOk(); |
+ |
google::protobuf::scoped_ptr<Element> element_; |
google::protobuf::io::CodedOutputStream* stream_; |
ByteSinkWrapper sink_; |
@@ -204,6 +217,11 @@ class LIBPROTOBUF_EXPORT JsonObjectWriter : public StructuredObjectWriter { |
// to regular base64 encoding. |
bool use_websafe_base64_for_bytes_; |
+ // Whether empty strings should be rendered for the next JSON key. This |
+ // setting is only valid until the next key is rendered, after which it gets |
+ // reset to false. |
+ bool empty_name_ok_for_next_key_; |
+ |
GOOGLE_DISALLOW_IMPLICIT_CONSTRUCTORS(JsonObjectWriter); |
}; |