| Index: third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.h
|
| diff --git a/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.h b/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.h
|
| index 78defa1d488d19765c77e5552c5148e41a7c43f3..d7d4347b3ac6ce023fe5915d1592cd04572ee9d8 100644
|
| --- a/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.h
|
| +++ b/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.h
|
| @@ -82,6 +82,41 @@ class LIBPROTOBUF_EXPORT ProtoStreamObjectSource : public ObjectSource {
|
|
|
| virtual util::Status NamedWriteTo(StringPiece name, ObjectWriter* ow) const;
|
|
|
| + // Sets whether or not to use lowerCamelCase casing for enum values. If set to
|
| + // false, enum values are output without any case conversions.
|
| + //
|
| + // For example, if we have an enum:
|
| + // enum Type {
|
| + // ACTION_AND_ADVENTURE = 1;
|
| + // }
|
| + // Type type = 20;
|
| + //
|
| + // And this option is set to true. Then the rendered "type" field will have
|
| + // the string "actionAndAdventure".
|
| + // {
|
| + // ...
|
| + // "type": "actionAndAdventure",
|
| + // ...
|
| + // }
|
| + //
|
| + // If set to false, the rendered "type" field will have the string
|
| + // "ACTION_AND_ADVENTURE".
|
| + // {
|
| + // ...
|
| + // "type": "ACTION_AND_ADVENTURE",
|
| + // ...
|
| + // }
|
| + void set_use_lower_camel_for_enums(bool value) {
|
| + use_lower_camel_for_enums_ = value;
|
| + }
|
| +
|
| + // Sets the max recursion depth of proto message to be deserialized. Proto
|
| + // messages over this depth will fail to be deserialized.
|
| + // Default value is 64.
|
| + void set_max_recursion_depth(int max_depth) {
|
| + max_recursion_depth_ = max_depth;
|
| + }
|
| +
|
| protected:
|
| // Writes a proto2 Message to the ObjectWriter. When the given end_tag is
|
| // found this method will complete, allowing it to be used for parsing both
|
| @@ -223,6 +258,12 @@ class LIBPROTOBUF_EXPORT ProtoStreamObjectSource : public ObjectSource {
|
| std::pair<int64, int32> ReadSecondsAndNanos(
|
| const google::protobuf::Type& type) const;
|
|
|
| + // Helper function to check recursion depth and increment it. It will return
|
| + // Status::OK if the current depth is allowed. Otherwise an error is returned.
|
| + // type_name and field_name are used for error reporting.
|
| + util::Status IncrementRecursionDepth(StringPiece type_name,
|
| + StringPiece field_name) const;
|
| +
|
| // Input stream to read from. Ownership rests with the caller.
|
| google::protobuf::io::CodedInputStream* stream_;
|
|
|
| @@ -237,6 +278,15 @@ class LIBPROTOBUF_EXPORT ProtoStreamObjectSource : public ObjectSource {
|
| const google::protobuf::Type& type_;
|
|
|
|
|
| + // Whether to render enums using lowerCamelCase. Defaults to false.
|
| + bool use_lower_camel_for_enums_;
|
| +
|
| + // Tracks current recursion depth.
|
| + mutable int recursion_depth_;
|
| +
|
| + // Maximum allowed recursion depth.
|
| + int max_recursion_depth_;
|
| +
|
| GOOGLE_DISALLOW_IMPLICIT_CONSTRUCTORS(ProtoStreamObjectSource);
|
| };
|
|
|
|
|