protobuf/src/google/protobuf/util/internal/proto_writer.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_PROTO_WRITER_H__
32 #define GOOGLE_PROTOBUF_UTIL_CONVERTER_PROTO_WRITER_H__
33 
34 #include <cstdint>
35 #include <deque>
36 #include <string>
37 #include <vector>
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/structured_objectwriter.h>
48 #include <google/protobuf/util/type_resolver.h>
49 #include <google/protobuf/stubs/bytestream.h>
50 #include <google/protobuf/stubs/status.h>
51 #include <google/protobuf/stubs/hash.h>
52 #include <google/protobuf/stubs/status.h>
53 
54 // Must be included last.
55 #include <google/protobuf/port_def.inc>
56 
57 namespace google {
58 namespace protobuf {
59 namespace util {
60 namespace converter {
61 
62 
63 class ObjectLocationTracker;
64 
65 // An ObjectWriter that can write protobuf bytes directly from writer events.
66 // This class does not support special types like Struct or Map. However, since
67 // this class supports raw protobuf, it can be used to provide support for
68 // special types by inheriting from it or by wrapping it.
69 //
70 // It also supports streaming.
71 class PROTOBUF_EXPORT ProtoWriter : public StructuredObjectWriter {
72  public:
73 // Constructor. Does not take ownership of any parameter passed in.
74  ProtoWriter(TypeResolver* type_resolver, const google::protobuf::Type& type,
75  strings::ByteSink* output, ErrorListener* listener);
76  ~ProtoWriter() override;
77 
78  // ObjectWriter methods.
79  ProtoWriter* StartObject(StringPiece name) override;
80  ProtoWriter* EndObject() override;
81  ProtoWriter* StartList(StringPiece name) override;
82  ProtoWriter* EndList() override;
84  return RenderDataPiece(name, DataPiece(value));
85  }
87  return RenderDataPiece(name, DataPiece(value));
88  }
90  return RenderDataPiece(name, DataPiece(value));
91  }
93  return RenderDataPiece(name, DataPiece(value));
94  }
96  return RenderDataPiece(name, DataPiece(value));
97  }
99  return RenderDataPiece(name, DataPiece(value));
100  }
102  return RenderDataPiece(name, DataPiece(value));
103  }
105  StringPiece value) override {
106  return RenderDataPiece(name,
107  DataPiece(value, use_strict_base64_decoding()));
108  }
109 
111  return RenderDataPiece(
112  name, DataPiece(value, false, use_strict_base64_decoding()));
113  }
114 
116  return RenderDataPiece(name, DataPiece::NullData());
117  }
118 
119 
120  // Renders a DataPiece 'value' into a field whose wire type is determined
121  // from the given field 'name'.
122  virtual ProtoWriter* RenderDataPiece(StringPiece name,
123  const DataPiece& data);
124 
125 
126  // Returns the location tracker to use for tracking locations for errors.
128  return element_ != nullptr ? *element_ : *tracker_;
129  }
130 
131  // When true, we finished writing to output a complete message.
132  bool done() override { return done_; }
133 
134  // Returns the proto stream object.
135  io::CodedOutputStream* stream() { return stream_.get(); }
136 
137  // Getters and mutators of invalid_depth_.
138  void IncrementInvalidDepth() { ++invalid_depth_; }
139  void DecrementInvalidDepth() { --invalid_depth_; }
140  int invalid_depth() { return invalid_depth_; }
141 
143 
144  const TypeInfo* typeinfo() { return typeinfo_; }
145 
146  void set_ignore_unknown_fields(bool ignore_unknown_fields) {
147  ignore_unknown_fields_ = ignore_unknown_fields;
148  }
149 
150  bool ignore_unknown_fields() { return ignore_unknown_fields_; }
151 
152  void set_ignore_unknown_enum_values(bool ignore_unknown_enum_values) {
153  ignore_unknown_enum_values_ = ignore_unknown_enum_values;
154  }
155 
156  void set_use_lower_camel_for_enums(bool use_lower_camel_for_enums) {
157  use_lower_camel_for_enums_ = use_lower_camel_for_enums;
158  }
159 
160  void set_case_insensitive_enum_parsing(bool case_insensitive_enum_parsing) {
161  case_insensitive_enum_parsing_ = case_insensitive_enum_parsing;
162  }
163 
165  bool use_json_name_in_missing_fields) {
166  use_json_name_in_missing_fields_ = use_json_name_in_missing_fields;
167  }
168 
169  protected:
170  class PROTOBUF_EXPORT ProtoElement : public BaseElement,
171  public LocationTrackerInterface {
172  public:
173  // Constructor for the root element. No parent nor field.
174  ProtoElement(const TypeInfo* typeinfo, const google::protobuf::Type& type,
175  ProtoWriter* enclosing);
176 
177  // Constructor for a field of an element.
178  ProtoElement(ProtoElement* parent, const google::protobuf::Field* field,
179  const google::protobuf::Type& type, bool is_list);
180 
181  ~ProtoElement() override {}
182 
183  // Called just before the destructor for clean up:
184  // - reports any missing required fields
185  // - computes the space needed by the size field, and augment the
186  // length of all parent messages by this additional space.
187  // - releases and returns the parent pointer.
188  ProtoElement* pop();
189 
190  // Accessors
191  // parent_field() may be nullptr if we are at root.
193  return parent_field_;
194  }
195  const google::protobuf::Type& type() const { return type_; }
196 
197  // Registers field for accounting required fields.
198  void RegisterField(const google::protobuf::Field* field);
199 
200  // To report location on error messages.
201  std::string ToString() const override;
202 
203  ProtoElement* parent() const override {
204  return static_cast<ProtoElement*>(BaseElement::parent());
205  }
206 
207  // Returns true if the index is already taken by a preceding oneof input.
208  bool IsOneofIndexTaken(int32_t index);
209 
210  // Marks the oneof 'index' as taken. Future inputs to this oneof will
211  // generate an error.
212  void TakeOneofIndex(int32_t index);
213 
214  bool proto3() { return proto3_; }
215 
216  private:
217  // Used for access to variables of the enclosing instance of
218  // ProtoWriter.
219  ProtoWriter* ow_;
220 
221  // Describes the element as a field in the parent message.
222  // parent_field_ is nullptr if and only if this element is the root element.
223  const google::protobuf::Field* parent_field_;
224 
225  // TypeInfo to lookup types.
226  const TypeInfo* typeinfo_;
227 
228  // Whether the type_ is proto3 or not.
229  bool proto3_;
230 
231  // Additional variables if this element is a message:
232  // (Root element is always a message).
233  // type_ : the type of this element.
234  // required_fields_ : set of required fields.
235  // size_index_ : index into ProtoWriter::size_insert_
236  // for later insertion of serialized message length.
238  std::set<const google::protobuf::Field*> required_fields_;
239  const int size_index_;
240 
241  // Tracks position in repeated fields, needed for LocationTrackerInterface.
242  int array_index_;
243 
244  // Set of oneof indices already seen for the type_. Used to validate
245  // incoming messages so no more than one oneof is set.
246  std::vector<bool> oneof_indices_;
247 
249  };
250 
251  // Container for inserting 'size' information at the 'pos' position.
252  struct SizeInfo {
253  const int pos;
254  int size;
255  };
256 
257  ProtoWriter(const TypeInfo* typeinfo, const google::protobuf::Type& type,
258  strings::ByteSink* output, ErrorListener* listener);
259 
260  ProtoElement* element() override { return element_.get(); }
261 
262  // Helper methods for calling ErrorListener. See error_listener.h.
263  void InvalidName(StringPiece unknown_name, StringPiece message);
264  void InvalidValue(StringPiece type_name, StringPiece value);
265  void MissingField(StringPiece missing_name);
266 
267  // Common code for BeginObject() and BeginList() that does invalid_depth_
268  // bookkeeping associated with name lookup.
269  const google::protobuf::Field* BeginNamed(StringPiece name,
270  bool is_list);
271 
272  // Lookup the field in the current element. Looks in the base descriptor
273  // and in any extension. This will report an error if the field cannot be
274  // found when ignore_unknown_names_ is false or if multiple matching
275  // extensions are found.
277 
278  // Lookup the field type in the type descriptor. Returns nullptr if the type
279  // is not known.
280  const google::protobuf::Type* LookupType(
282 
283  // Write serialized output to the final output ByteSink, inserting all
284  // the size information for nested messages that are missing from the
285  // intermediate Cord buffer.
286  void WriteRootMessage();
287 
288  // Helper method to write proto tags based on the given field.
289  void WriteTag(const google::protobuf::Field& field);
290 
291 
292  // Returns true if the field for type_ can be set as a oneof. If field is not
293  // a oneof type, this function does nothing and returns true.
294  // If another field for this oneof is already set, this function returns
295  // false. It also calls the appropriate error callback.
296  // unnormalized_name is used for error string.
297  bool ValidOneof(const google::protobuf::Field& field,
298  StringPiece unnormalized_name);
299 
300  // Returns true if the field is repeated.
301  bool IsRepeated(const google::protobuf::Field& field);
302 
303  // Starts an object given the field and the enclosing type.
304  ProtoWriter* StartObjectField(const google::protobuf::Field& field,
306 
307  // Starts a list given the field and the enclosing type.
308  ProtoWriter* StartListField(const google::protobuf::Field& field,
310 
311  // Renders a primitive field given the field and the enclosing type.
312  ProtoWriter* RenderPrimitiveField(const google::protobuf::Field& field,
314  const DataPiece& data);
315 
316  private:
317  // Writes an ENUM field, including tag, to the stream.
318  static util::Status WriteEnum(int field_number, const DataPiece& data,
321  bool use_lower_camel_for_enums,
322  bool case_insensitive_enum_parsing,
323  bool ignore_unknown_values);
324 
325  // Variables for describing the structure of the input tree:
326  // master_type_: descriptor for the whole protobuf message.
327  // typeinfo_ : the TypeInfo object to lookup types.
328  const google::protobuf::Type& master_type_;
329  const TypeInfo* typeinfo_;
330  // Whether we own the typeinfo_ object.
331  bool own_typeinfo_;
332 
333  // Indicates whether we finished writing root message completely.
334  bool done_;
335 
336  // If true, don't report unknown field names to the listener.
337  bool ignore_unknown_fields_;
338 
339  // If true, don't report unknown enum values to the listener.
340  bool ignore_unknown_enum_values_;
341 
342  // If true, check if enum name in camel case or without underscore matches the
343  // field name.
344  bool use_lower_camel_for_enums_;
345 
346  // If true, check if enum name in UPPER_CASE matches the field name.
347  bool case_insensitive_enum_parsing_;
348 
349  // If true, use the json name in missing fields errors.
351 
352  // Variable for internal state processing:
353  // element_ : the current element.
354  // size_insert_: sizes of nested messages.
355  // pos - position to insert the size field.
356  // size - size value to be inserted.
357  std::unique_ptr<ProtoElement> element_;
358  std::deque<SizeInfo> size_insert_;
359 
360  // Variables for output generation:
361  // output_ : pointer to an external ByteSink for final user-visible output.
362  // buffer_ : buffer holding partial message before being ready for output_.
363  // adapter_ : internal adapter between CodedOutputStream and buffer_.
364  // stream_ : wrapper for writing tags and other encodings in wire format.
367  io::StringOutputStream adapter_;
368  std::unique_ptr<io::CodedOutputStream> stream_;
369 
370  // Variables for error tracking and reporting:
371  // listener_ : a place to report any errors found.
372  // invalid_depth_: number of enclosing invalid nested messages.
373  // tracker_ : the root location tracker interface.
375  int invalid_depth_;
376  std::unique_ptr<LocationTrackerInterface> tracker_;
377 
379 };
380 
381 } // namespace converter
382 } // namespace util
383 } // namespace protobuf
384 } // namespace google
385 
386 #include <google/protobuf/port_undef.inc>
387 
388 #endif // GOOGLE_PROTOBUF_UTIL_CONVERTER_PROTO_WRITER_H__
Type
struct Type Type
Definition: bloaty/third_party/protobuf/php/ext/google/protobuf/protobuf.h:673
google::protobuf::util::converter::ProtoWriter::listener
ErrorListener * listener()
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:142
google::protobuf::value
const Descriptor::ReservedRange value
Definition: bloaty/third_party/protobuf/src/google/protobuf/descriptor.h:1954
google::protobuf::util::converter::ProtoWriter::RenderInt32
ProtoWriter * RenderInt32(StringPiece name, int32_t value) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:86
pos
int pos
Definition: libuv/docs/code/tty-gravity/main.c:11
google::protobuf::util::converter::ProtoWriter::location
const LocationTrackerInterface & location()
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:127
google::protobuf::util::converter::ProtoWriter::element
ProtoElement * element() override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:260
google::protobuf::util::converter::ProtoWriter::ProtoElement
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/proto_writer.h:158
google::protobuf::Enum
stream_
std::unique_ptr< grpc::ClientReaderInterface< OrcaLoadReport > > stream_
Definition: orca_service_end2end_test.cc:89
google::protobuf::util::converter::ProtoWriter::ProtoElement::proto3
bool proto3()
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:214
google::protobuf::util::converter::ProtoWriter::RenderBool
ProtoWriter * RenderBool(StringPiece name, bool value) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:83
google::protobuf::util::converter::ProtoWriter::ProtoElement::~ProtoElement
~ProtoElement() override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:181
google::protobuf::util::converter::ProtoWriter::RenderFloat
ProtoWriter * RenderFloat(StringPiece name, float value) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:101
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
TypeInfo
Definition: protobuf/php/ext/google/protobuf/def.h:69
google::protobuf
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
google::protobuf::util::converter::ProtoWriter::set_ignore_unknown_fields
void set_ignore_unknown_fields(bool ignore_unknown_fields)
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:146
make_cmakelists.converter
converter
Definition: make_cmakelists.py:317
setup.name
name
Definition: setup.py:542
type_resolver
TypeResolver * type_resolver
Definition: bloaty/third_party/protobuf/conformance/conformance_cpp.cc:71
message
char * message
Definition: libuv/docs/code/tty-gravity/main.c:12
done_
std::atomic< bool > done_
Definition: fuzzing_event_engine_test.cc:57
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
google::protobuf::util::converter::DataPiece::NullData
static DataPiece NullData()
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/datapiece.h:111
google::protobuf::util::converter::ProtoWriter::set_use_lower_camel_for_enums
void set_use_lower_camel_for_enums(bool use_lower_camel_for_enums)
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:156
buffer_
static uint8 buffer_[kBufferSize]
Definition: bloaty/third_party/protobuf/src/google/protobuf/io/coded_stream_unittest.cc:136
google::protobuf::util::converter::ProtoWriter::ignore_unknown_fields
bool ignore_unknown_fields()
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:150
google::protobuf::util::converter::ProtoWriter::RenderString
ProtoWriter * RenderString(StringPiece name, StringPiece value) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:104
google::protobuf::util::converter::ProtoWriter::use_json_name_in_missing_fields_
bool use_json_name_in_missing_fields_
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:350
google::protobuf::util::converter::ProtoWriter::set_case_insensitive_enum_parsing
void set_case_insensitive_enum_parsing(bool case_insensitive_enum_parsing)
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:160
google::protobuf::util::converter::ProtoWriter::set_ignore_unknown_enum_values
void set_ignore_unknown_enum_values(bool ignore_unknown_enum_values)
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:152
int64_t
signed __int64 int64_t
Definition: stdint-msvc2008.h:89
ToString
std::string ToString(const grpc::string_ref &r)
Definition: string_ref_helper.cc:24
gmock_output_test.output
output
Definition: bloaty/third_party/googletest/googlemock/test/gmock_output_test.py:175
google::protobuf::StringPiece
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/stringpiece.h:180
google::protobuf::util::converter::ProtoWriter::DecrementInvalidDepth
void DecrementInvalidDepth()
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:139
google::protobuf::util::converter::ProtoWriter::RenderUint64
ProtoWriter * RenderUint64(StringPiece name, uint64_t value) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:95
uint64_t
unsigned __int64 uint64_t
Definition: stdint-msvc2008.h:90
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
google::protobuf::util::converter::ProtoWriter::IncrementInvalidDepth
void IncrementInvalidDepth()
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:138
data
char data[kBufferLength]
Definition: abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1006
google::protobuf::util::converter::ProtoWriter::invalid_depth
int invalid_depth()
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:140
google::protobuf::util::converter::LocationTrackerInterface
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/location_tracker.h:47
google::protobuf::util::converter::ProtoWriter::ProtoElement::parent_field
const google::protobuf::Field * parent_field() const
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:192
google::protobuf::util::converter::ProtoWriter::RenderDouble
ProtoWriter * RenderDouble(StringPiece name, double value) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:98
google::protobuf::util::converter::ProtoWriter
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/proto_writer.h:67
google::protobuf::io::CodedOutputStream
Definition: bloaty/third_party/protobuf/src/google/protobuf/io/coded_stream.h:1044
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
field
const FieldDescriptor * field
Definition: bloaty/third_party/protobuf/src/google/protobuf/compiler/parser_unittest.cc:2692
google::protobuf::io::StringOutputStream
Definition: bloaty/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h:132
google::protobuf::util::converter::ProtoWriter::typeinfo
const TypeInfo * typeinfo()
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:144
google::protobuf::util::converter::ProtoWriter::stream
io::CodedOutputStream * stream()
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:135
google::protobuf::util::converter::ProtoWriter::ProtoElement::type
const google::protobuf::Type & type() const
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:195
index
int index
Definition: bloaty/third_party/protobuf/php/ext/google/protobuf/protobuf.h:1184
google::protobuf::util::converter::ProtoWriter::set_use_json_name_in_missing_fields
void set_use_json_name_in_missing_fields(bool use_json_name_in_missing_fields)
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:164
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::ProtoWriter::ProtoElement::parent
ProtoElement * parent() const override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:203
google::protobuf::util::converter::ProtoWriter::RenderNull
ProtoWriter * RenderNull(StringPiece name) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:115
google::protobuf::util::converter::ProtoWriter::RenderUint32
ProtoWriter * RenderUint32(StringPiece name, uint32_t value) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:89
google::protobuf::util::converter::ProtoWriter::done
bool done() override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:132
asyncio_get_stats.type
type
Definition: asyncio_get_stats.py:37
google::protobuf::util::converter::ProtoWriter::RenderBytes
ProtoWriter * RenderBytes(StringPiece name, StringPiece value) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:110
listener_
RefCountedPtr< Chttp2ServerListener > listener_
Definition: chttp2_server.cc:144
size
voidpf void uLong size
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
google::protobuf::util::converter::DataPiece
Definition: bloaty/third_party/protobuf/src/google/protobuf/util/internal/datapiece.h:59
int32_t
signed int int32_t
Definition: stdint-msvc2008.h:77
Lookup
static const char * Lookup(std::map< std::string, std::unique_ptr< char[]>> *dummy_lh, const char *key)
Definition: lhash_test.cc:53
phone_pb2.enum_type
enum_type
Definition: phone_pb2.py:198
google::protobuf::util::converter::ProtoWriter::RenderInt64
ProtoWriter * RenderInt64(StringPiece name, int64_t value) override
Definition: protobuf/src/google/protobuf/util/internal/proto_writer.h:92
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
type_name
static const char * type_name(int type)
Definition: adig.c:889
stream
voidpf stream
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136


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