protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h
Go to the documentation of this file.
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31 #ifndef GOOGLE_PROTOBUF_UTIL_CONVERTER_PROTOSTREAM_OBJECTWRITER_H__
32 #define GOOGLE_PROTOBUF_UTIL_CONVERTER_PROTOSTREAM_OBJECTWRITER_H__
33 
34 #include <deque>
35 #include <string>
36 #include <unordered_map>
37 #include <unordered_set>
38 
39 #include <google/protobuf/stubs/common.h>
40 #include <google/protobuf/type.pb.h>
41 #include <google/protobuf/io/coded_stream.h>
42 #include <google/protobuf/io/zero_copy_stream_impl.h>
43 #include <google/protobuf/descriptor.h>
44 #include <google/protobuf/util/internal/type_info.h>
45 #include <google/protobuf/util/internal/datapiece.h>
46 #include <google/protobuf/util/internal/error_listener.h>
47 #include <google/protobuf/util/internal/proto_writer.h>
48 #include <google/protobuf/util/internal/structured_objectwriter.h>
49 #include <google/protobuf/util/type_resolver.h>
50 #include <google/protobuf/stubs/bytestream.h>
51 #include <google/protobuf/stubs/status.h>
52 #include <google/protobuf/stubs/hash.h>
53 
54 #include <google/protobuf/port_def.inc>
55 
56 namespace google {
57 namespace protobuf {
58 namespace util {
59 namespace converter {
60 
61 class ObjectLocationTracker;
62 
63 // An ObjectWriter that can write protobuf bytes directly from writer events.
64 // This class supports all special types like Struct and Map. It uses
65 // the ProtoWriter class to write raw proto bytes.
66 //
67 // It also supports streaming.
68 class PROTOBUF_EXPORT ProtoStreamObjectWriter : public ProtoWriter {
69  public:
70  // Options that control ProtoStreamObjectWriter class's behavior.
71  struct Options {
72  // Treats numeric inputs in google.protobuf.Struct as strings. Normally,
73  // numeric values are returned in double field "number_value" of
74  // google.protobuf.Struct. However, this can cause precision loss for
75  // int64/uint64/double inputs. This option is provided for cases that want
76  // to preserve number precision.
77  //
78  // TODO(skarvaje): Rename to struct_numbers_as_strings as it covers double
79  // as well.
80  bool struct_integers_as_strings;
81 
82  // Not treat unknown fields as an error. If there is an unknown fields,
83  // just ignore it and continue to process the rest. Note that this doesn't
84  // apply to unknown enum values.
85  bool ignore_unknown_fields;
86 
87  // Ignore unknown enum values.
88  bool ignore_unknown_enum_values;
89 
90  // If true, check if enum name in camel case or without underscore matches
91  // the field name.
92  bool use_lower_camel_for_enums;
93 
94  // If true, check if enum name in UPPER_CASE matches the field name.
95  bool case_insensitive_enum_parsing;
96 
97  // If true, skips rendering the map entry if map value is null unless the
98  // value type is google.protobuf.NullType.
99  bool ignore_null_value_map_entry;
100 
101  // If true, accepts repeated key/value pair for a map proto field.
103 
104  // If true, disable implicitly creating message list.
106 
107  // If true, suppress the error of implicitly creating message list when it
108  // is disabled.
110 
111  // If true, disable implicitly creating scalar list.
113 
114  // If true, suppress the error of implicitly creating scalar list when it
115  // is disabled.
117 
118  // If true, suppress the error of rendering scalar field if the source is an
119  // object.
121 
122  // If true, use the json name in missing fields errors.
124 
126  : struct_integers_as_strings(false),
127  ignore_unknown_fields(false),
128  ignore_unknown_enum_values(false),
129  use_lower_camel_for_enums(false),
130  case_insensitive_enum_parsing(false),
131  ignore_null_value_map_entry(false),
132  use_legacy_json_map_format(false),
133  disable_implicit_message_list(false),
134  suppress_implicit_message_list_error(false),
135  disable_implicit_scalar_list(false),
136  suppress_implicit_scalar_list_error(false),
137  suppress_object_to_scalar_error(false),
138  use_json_name_in_missing_fields(false) {}
139 
140  // Default instance of Options with all options set to defaults.
141  static const Options& Defaults() {
142  static Options defaults;
143  return defaults;
144  }
145  };
146 
147  // Constructor. Does not take ownership of any parameter passed in.
153  ~ProtoStreamObjectWriter() override;
154 
155  // ObjectWriter methods.
156  ProtoStreamObjectWriter* StartObject(StringPiece name) override;
157  ProtoStreamObjectWriter* EndObject() override;
158  ProtoStreamObjectWriter* StartList(StringPiece name) override;
159  ProtoStreamObjectWriter* EndList() override;
160 
161  // Renders a DataPiece 'value' into a field whose wire type is determined
162  // from the given field 'name'.
163  ProtoStreamObjectWriter* RenderDataPiece(StringPiece name,
164  const DataPiece& data) override;
165 
166  protected:
167  // Function that renders a well known type with modified behavior.
168  typedef util::Status (*TypeRenderer)(ProtoStreamObjectWriter*,
169  const DataPiece&);
170 
171  // Handles writing Anys out using nested object writers and the like.
172  class PROTOBUF_EXPORT AnyWriter {
173  public:
174  explicit AnyWriter(ProtoStreamObjectWriter* parent);
175  ~AnyWriter();
176 
177  // Passes a StartObject call through to the Any writer.
178  void StartObject(StringPiece name);
179 
180  // Passes an EndObject call through to the Any. Returns true if the any
181  // handled the EndObject call, false if the Any is now all done and is no
182  // longer needed.
183  bool EndObject();
184 
185  // Passes a StartList call through to the Any writer.
186  void StartList(StringPiece name);
187 
188  // Passes an EndList call through to the Any writer.
189  void EndList();
190 
191  // Renders a data piece on the any.
192  void RenderDataPiece(StringPiece name, const DataPiece& value);
193 
194  private:
195  // Before the "@type" field is encountered, we store all incoming data
196  // into this Event struct and replay them after we get the "@type" field.
197  class PROTOBUF_EXPORT Event {
198  public:
199  enum Type {
200  START_OBJECT = 0,
201  END_OBJECT = 1,
202  START_LIST = 2,
203  END_LIST = 3,
204  RENDER_DATA_PIECE = 4,
205  };
206 
207  // Constructor for END_OBJECT and END_LIST events.
208  explicit Event(Type type) : type_(type), value_(DataPiece::NullData()) {}
209 
210  // Constructor for START_OBJECT and START_LIST events.
212  : type_(type), name_(name), value_(DataPiece::NullData()) {}
213 
214  // Constructor for RENDER_DATA_PIECE events.
216  : type_(RENDER_DATA_PIECE), name_(name), value_(value) {
217  DeepCopy();
218  }
219 
220  Event(const Event& other)
221  : type_(other.type_), name_(other.name_), value_(other.value_) {
222  DeepCopy();
223  }
224 
225  Event& operator=(const Event& other) {
226  type_ = other.type_;
227  name_ = other.name_;
228  value_ = other.value_;
229  DeepCopy();
230  return *this;
231  }
232 
233  void Replay(AnyWriter* writer) const;
234 
235  private:
236  void DeepCopy();
237 
238  Type type_;
241  std::string value_storage_;
242  };
243 
244  // Handles starting up the any once we have a type.
245  void StartAny(const DataPiece& value);
246 
247  // Writes the Any out to the parent writer in its serialized form.
248  void WriteAny();
249 
250  // The parent of this writer, needed for various bits such as type info and
251  // the listeners.
253 
254  // The nested object writer, used to write events.
255  std::unique_ptr<ProtoStreamObjectWriter> ow_;
256 
257  // The type_url_ that this Any represents.
258  std::string type_url_;
259 
260  // Whether this any is invalid. This allows us to only report an invalid
261  // Any message a single time rather than every time we get a nested field.
262  bool invalid_;
263 
264  // The output data and wrapping ByteSink.
267 
268  // The depth within the Any, so we can track when we're done.
269  int depth_;
270 
271  // True if the type is a well-known type. Well-known types in Any
272  // has a special formatting:
273  // {
274  // "@type": "type.googleapis.com/google.protobuf.XXX",
275  // "value": <JSON representation of the type>,
276  // }
277  bool is_well_known_type_;
278  TypeRenderer* well_known_type_render_;
279 
280  // Store data before the "@type" field.
281  std::vector<Event> uninterpreted_events_;
282  };
283 
284  // Represents an item in a stack of items used to keep state between
285  // ObjectWrier events.
286  class PROTOBUF_EXPORT Item : public BaseElement {
287  public:
288  // Indicates the type of item.
289  enum ItemType {
290  MESSAGE, // Simple message
291  MAP, // Proto3 map type
292  ANY, // Proto3 Any type
293  };
294 
295  // Constructor for the root item.
296  Item(ProtoStreamObjectWriter* enclosing, ItemType item_type,
297  bool is_placeholder, bool is_list);
298 
299  // Constructor for a field of a message.
300  Item(Item* parent, ItemType item_type, bool is_placeholder, bool is_list);
301 
302  ~Item() override {}
303 
304  // These functions return true if the element type is corresponding to the
305  // type in function name.
306  bool IsMap() { return item_type_ == MAP; }
307  bool IsAny() { return item_type_ == ANY; }
308 
309  AnyWriter* any() const { return any_.get(); }
310 
311  Item* parent() const override {
312  return static_cast<Item*>(BaseElement::parent());
313  }
314 
315  // Inserts map key into hash set if and only if the key did NOT already
316  // exist in hash set.
317  // The hash set (map_keys_) is ONLY used to keep track of map keys.
318  // Return true if insert successfully; returns false if the map key was
319  // already present.
320  bool InsertMapKeyIfNotPresent(StringPiece map_key);
321 
322  bool is_placeholder() const { return is_placeholder_; }
323  bool is_list() const { return is_list_; }
324 
325  private:
326  // Used for access to variables of the enclosing instance of
327  // ProtoStreamObjectWriter.
329 
330  // A writer for Any objects, handles all Any-related nonsense.
331  std::unique_ptr<AnyWriter> any_;
332 
333  // The type of this element, see enum for permissible types.
334  ItemType item_type_;
335 
336  // Set of map keys already seen for the type_. Used to validate incoming
337  // messages so no map key appears more than once.
338  std::unique_ptr<std::unordered_set<std::string> > map_keys_;
339 
340  // Conveys whether this Item is a placeholder or not. Placeholder items are
341  // pushed to stack to account for special types.
342  bool is_placeholder_;
343 
344  // Conveys whether this Item is a list or not. This is used to send
345  // StartList or EndList calls to underlying ObjectWriter.
346  bool is_list_;
347 
349  };
350 
351  ProtoStreamObjectWriter(const TypeInfo* typeinfo,
354 
355  ProtoStreamObjectWriter(const TypeInfo* typeinfo,
359 
360  // Returns true if the field is a map.
361  inline bool IsMap(const google::protobuf::Field& field);
362 
363  // Returns true if the field is an any.
364  inline bool IsAny(const google::protobuf::Field& field);
365 
366  // Returns true if the field is google.protobuf.Struct.
367  inline bool IsStruct(const google::protobuf::Field& field);
368 
369  // Returns true if the field is google.protobuf.Value.
370  inline bool IsStructValue(const google::protobuf::Field& field);
371 
372  // Returns true if the field is google.protobuf.ListValue.
373  inline bool IsStructListValue(const google::protobuf::Field& field);
374 
375  // Renders google.protobuf.Value in struct.proto. It picks the right oneof
376  // type based on value's type.
377  static util::Status RenderStructValue(ProtoStreamObjectWriter* ow,
378  const DataPiece& data);
379 
380  // Renders google.protobuf.Timestamp value.
381  static util::Status RenderTimestamp(ProtoStreamObjectWriter* ow,
382  const DataPiece& data);
383 
384  // Renders google.protobuf.FieldMask value.
385  static util::Status RenderFieldMask(ProtoStreamObjectWriter* ow,
386  const DataPiece& data);
387 
388  // Renders google.protobuf.Duration value.
389  static util::Status RenderDuration(ProtoStreamObjectWriter* ow,
390  const DataPiece& data);
391 
392  // Renders wrapper message types for primitive types in
393  // google/protobuf/wrappers.proto.
394  static util::Status RenderWrapperType(ProtoStreamObjectWriter* ow,
395  const DataPiece& data);
396 
397  static void InitRendererMap();
398  static void DeleteRendererMap();
399  static TypeRenderer* FindTypeRenderer(const std::string& type_url);
400 
401  // Returns true if the map key for type_ is not duplicated key.
402  // If map key is duplicated key, this function returns false.
403  // Note that caller should make sure that the current proto element (current_)
404  // is of element type MAP or STRUCT_MAP.
405  // It also calls the appropriate error callback and unnormalzied_name is used
406  // for error string.
407  bool ValidMapKey(StringPiece unnormalized_name);
408 
409  // Pushes an item on to the stack. Also calls either StartObject or StartList
410  // on the underlying ObjectWriter depending on whether is_list is false or
411  // not.
412  // is_placeholder conveys whether the item is a placeholder item or not.
413  // Placeholder items are pushed when adding auxiliary types' StartObject or
414  // StartList calls.
415  void Push(StringPiece name, Item::ItemType item_type,
416  bool is_placeholder, bool is_list);
417 
418 
419  // Pops items from the stack. All placeholder items are popped until a
420  // non-placeholder item is found.
421  void Pop();
422 
423  // Pops one element from the stack. Calls EndObject() or EndList() on the
424  // underlying ObjectWriter depending on the value of is_list_.
425  void PopOneElement();
426 
427  private:
428  // Helper functions to create the map and find functions responsible for
429  // rendering well known types, keyed by type URL.
430  static std::unordered_map<std::string, TypeRenderer>* renderers_;
431 
432  // Variables for describing the structure of the input tree:
433  // master_type_: descriptor for the whole protobuf message.
434  const google::protobuf::Type& master_type_;
435 
436  // The current element, variable for internal state processing.
437  std::unique_ptr<Item> current_;
438 
439  // Reference to the options that control this class's behavior.
441 
443 };
444 
445 } // namespace converter
446 } // namespace util
447 } // namespace protobuf
448 } // namespace google
449 
450 #include <google/protobuf/port_undef.inc>
451 
452 #endif // GOOGLE_PROTOBUF_UTIL_CONVERTER_PROTOSTREAM_OBJECTWRITER_H__
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter::Event::Event
Event(const Event &other)
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:220
google::protobuf::util::converter::ProtoStreamObjectWriter::Item::is_list
bool is_list() const
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:323
Type
struct Type Type
Definition: bloaty/third_party/protobuf/php/ext/google/protobuf/protobuf.h:673
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter::Event::operator=
Event & operator=(const Event &other)
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:225
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter::Event::Event
Event(StringPiece name, const DataPiece &value)
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:215
current_
Block * current_
Definition: protobuf/src/google/protobuf/descriptor.cc:1035
MESSAGE
static const char MESSAGE[]
Definition: test-callback-stack.c:31
google::protobuf::value
const Descriptor::ReservedRange value
Definition: bloaty/third_party/protobuf/src/google/protobuf/descriptor.h:1954
false
#define false
Definition: setup_once.h:323
google::protobuf::util::converter::ProtoStreamObjectWriter::Item::any
AnyWriter * any() const
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:309
options
double_dict options[]
Definition: capstone_test.c:55
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
type_
std::string type_
Definition: client_channel_stress_test.cc:212
google::protobuf
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
google::protobuf::util::converter::ProtoStreamObjectWriter::Item::ItemType
ItemType
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:257
make_cmakelists.converter
converter
Definition: make_cmakelists.py:317
setup.name
name
Definition: setup.py:542
name_
const std::string name_
Definition: priority.cc:233
type_resolver
TypeResolver * type_resolver
Definition: bloaty/third_party/protobuf/conformance/conformance_cpp.cc:71
google::protobuf::util::converter::ProtoStreamObjectWriter::Options::disable_implicit_scalar_list
bool disable_implicit_scalar_list
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:112
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter::Event
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:165
google::protobuf::python::cmessage::DeepCopy
PyObject * DeepCopy(CMessage *self, PyObject *arg)
Definition: bloaty/third_party/protobuf/python/google/protobuf/pyext/message.cc:2388
google::protobuf::util::converter::ProtoStreamObjectWriter::Options::use_json_name_in_missing_fields
bool use_json_name_in_missing_fields
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:123
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter::Event::Event
Event(Type type)
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:208
gmock_output_test.output
output
Definition: bloaty/third_party/googletest/googlemock/test/gmock_output_test.py:175
Type
Definition: bloaty/third_party/protobuf/src/google/protobuf/type.pb.h:182
google::protobuf::util::TypeResolver
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/type_resolver.h:52
google::protobuf::util::converter::ProtoStreamObjectWriter::Options::Options
Options()
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:125
google::protobuf::strings::StringByteSink
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/bytestream.h:257
google::protobuf::python::repeated_composite_container::Item
static PyObject * Item(PyObject *pself, Py_ssize_t index)
Definition: bloaty/third_party/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc:439
google::protobuf::StringPiece
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/stringpiece.h:180
google::protobuf::python::repeated_composite_container::Pop
static PyObject * Pop(PyObject *pself, PyObject *args)
Definition: bloaty/third_party/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc:445
google::protobuf::util::converter::IsMap
bool IsMap(const google::protobuf::Field &field, const google::protobuf::Type &type)
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/utility.cc:360
depth_
int depth_
Definition: json_writer.cc:73
GOOGLE_DISALLOW_IMPLICIT_CONSTRUCTORS
#define GOOGLE_DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName)
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/macros.h:45
google::protobuf::util::converter::TypeInfo
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/type_info.h:50
data
char data[kBufferLength]
Definition: abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1006
google::protobuf::util::converter::ProtoStreamObjectWriter::Item::parent
Item * parent() const override
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:311
google::protobuf::util::converter::ProtoStreamObjectWriter::Options::suppress_object_to_scalar_error
bool suppress_object_to_scalar_error
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:120
writer
void writer(void *n)
Definition: libuv/docs/code/locks/main.c:22
google::protobuf::util::converter::ProtoStreamObjectWriter::Options
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:70
google::protobuf::util::converter::ProtoStreamObjectWriter::Item::IsAny
bool IsAny()
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:307
value_
int value_
Definition: orphanable_test.cc:38
Field
struct Field Field
Definition: bloaty/third_party/protobuf/php/ext/google/protobuf/protobuf.h:647
output_
std::string output_
Definition: json_writer.cc:76
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter::Event::value_
DataPiece value_
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:208
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter::Event::name_
std::string name_
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:207
field
const FieldDescriptor * field
Definition: bloaty/third_party/protobuf/src/google/protobuf/compiler/parser_unittest.cc:2692
options_
DebugStringOptions options_
Definition: bloaty/third_party/protobuf/src/google/protobuf/descriptor.cc:2390
google::protobuf::util::converter::ProtoStreamObjectWriter::Item::IsMap
bool IsMap()
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:306
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter::Event::Event
Event(Type type, StringPiece name)
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:211
google::protobuf::util::converter::ProtoStreamObjectWriter
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:67
grpc::protobuf::util::Status
GRPC_CUSTOM_UTIL_STATUS Status
Definition: include/grpcpp/impl/codegen/config_protobuf.h:93
type_url
string * type_url
Definition: bloaty/third_party/protobuf/conformance/conformance_cpp.cc:72
data_
std::string data_
Definition: cord_rep_btree_navigator_test.cc:84
google::protobuf::util::converter::ProtoStreamObjectWriter::Options::suppress_implicit_scalar_list_error
bool suppress_implicit_scalar_list_error
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:116
google::protobuf::util::Status
Definition: third_party/bloaty/third_party/protobuf/src/google/protobuf/stubs/status.h:67
google::protobuf::strings::ByteSink
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/bytestream.h:78
google::protobuf::util::converter::ProtoStreamObjectWriter::Options::use_legacy_json_map_format
bool use_legacy_json_map_format
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:102
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter::Event::type_
Type type_
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:206
google::protobuf::util::converter::ProtoStreamObjectWriter::Item::~Item
~Item() override
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:302
google::protobuf::util::converter::ProtoStreamObjectWriter::Options::suppress_implicit_message_list_error
bool suppress_implicit_message_list_error
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:109
asyncio_get_stats.type
type
Definition: asyncio_get_stats.py:37
parent_
RefCountedPtr< GrpcLb > parent_
Definition: grpclb.cc:438
google::protobuf::util::converter::ProtoStreamObjectWriter::Item
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:254
google::protobuf::util::converter::DataPiece
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/datapiece.h:59
google::protobuf::util::converter::ProtoStreamObjectWriter::Item::is_placeholder
bool is_placeholder() const
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:322
google::protobuf::util::converter::ProtoStreamObjectWriter::AnyWriter
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:140
google::protobuf::util::converter::ErrorListener
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/error_listener.h:54
google
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:11
mox.Replay
def Replay(*args)
Definition: bloaty/third_party/protobuf/python/mox.py:235
google::protobuf::util::converter::ProtoStreamObjectWriter::Options::disable_implicit_message_list
bool disable_implicit_message_list
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:105
google::protobuf::util::converter::ProtoStreamObjectWriter::Options::Defaults
static const Options & Defaults()
Definition: protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h:141


grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:49