protobuf/src/google/protobuf/generated_message_table_driven.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_GENERATED_MESSAGE_TABLE_DRIVEN_H__
32 #define GOOGLE_PROTOBUF_GENERATED_MESSAGE_TABLE_DRIVEN_H__
33 
34 #include <google/protobuf/map.h>
35 #include <google/protobuf/map_entry_lite.h>
36 #include <google/protobuf/map_field_lite.h>
37 #include <google/protobuf/message_lite.h>
38 #include <google/protobuf/wire_format_lite.h>
39 
40 // We require C++11 and Clang to use constexpr for variables, as GCC 4.8
41 // requires constexpr to be consistent between declarations of variables
42 // unnecessarily (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58541).
43 // VS 2017 Update 3 also supports this usage of constexpr.
44 #if defined(__clang__) || (defined(_MSC_VER) && _MSC_VER >= 1911)
45 #define PROTOBUF_CONSTEXPR_VAR constexpr
46 #else // !__clang__
47 #define PROTOBUF_CONSTEXPR_VAR
48 #endif // !_clang
49 
50 #ifdef SWIG
51 #error "You cannot SWIG proto headers"
52 #endif
53 
54 #include <google/protobuf/port_def.inc>
55 
56 namespace google {
57 namespace protobuf {
58 namespace internal {
59 
60 // Processing-type masks.
61 static constexpr const unsigned char kOneofMask = 0x40;
62 static constexpr const unsigned char kRepeatedMask = 0x20;
63 // Mask for the raw type: either a WireFormatLite::FieldType or one of the
64 // ProcessingTypes below, without the oneof or repeated flag.
65 static constexpr const unsigned char kTypeMask = 0x1f;
66 
67 // Wire type masks.
68 static constexpr const unsigned char kNotPackedMask = 0x10;
69 static constexpr const unsigned char kInvalidMask = 0x20;
70 
72  TYPE_STRING_CORD = 19,
74  TYPE_BYTES_CORD = 21,
77  TYPE_BYTES_INLINED = 24,
78  TYPE_MAP = 25,
79 };
80 
81 static_assert(TYPE_MAP < kRepeatedMask, "Invalid enum");
82 
83 struct PROTOBUF_EXPORT FieldMetadata {
84  uint32_t offset; // offset of this field in the struct
85  uint32_t tag; // field * 8 + wire_type
86  // byte offset * 8 + bit_offset;
87  // if the high bit is set then this is the byte offset of the oneof_case
88  // for this field.
90  uint32_t type; // the type of this field.
91  const void* ptr; // auxiliary data
92 
93  // From the serializer point of view each fundamental type can occur in
94  // 4 different ways. For simplicity we treat all combinations as a cartesion
95  // product although not all combinations are allowed.
97  kPresence,
99  kRepeated,
100  kPacked,
101  kOneOf,
102  kNumTypeClasses // must be last enum
103  };
104  // C++ protobuf has 20 fundamental types, were we added Cord and StringPiece
105  // and also distinguish the same types if they have different wire format.
106  enum {
107  kCordType = 19,
108  kStringPieceType = 20,
109  kInlinedType = 21,
110  kNumTypes = 21,
111  kSpecial = kNumTypes * kNumTypeClasses,
112  };
113 
114  static int CalculateType(int fundamental_type, FieldTypeClass type_class);
115 };
116 
117 // TODO(ckennelly): Add a static assertion to ensure that these masks do not
118 // conflict with wiretypes.
119 
120 // ParseTableField is kept small to help simplify instructions for computing
121 // offsets, as we will always need this information to parse a field.
122 // Additional data, needed for some types, is stored in
123 // AuxiliaryParseTableField.
124 struct ParseTableField {
126  // The presence_index ordinarily represents a has_bit index, but for fields
127  // inside a oneof it represents the index in _oneof_case_.
129  unsigned char normal_wiretype;
130  unsigned char packed_wiretype;
131 
132  // processing_type is given by:
133  // (FieldDescriptor->type() << 1) | FieldDescriptor->is_packed()
134  unsigned char processing_type;
135 
136  unsigned char tag_size;
137 };
138 
139 struct ParseTable;
140 
142  typedef bool (*EnumValidator)(int);
143 
144  // Enums
145  struct enum_aux {
147  };
149  // Group, messages
150  struct message_aux {
151  // ExplicitlyInitialized<T> -> T requires a reinterpret_cast, which prevents
152  // the tables from being constructed as a constexpr. We use void to avoid
153  // the cast.
154  const void* default_message_void;
155  const MessageLite* default_message() const {
156  return static_cast<const MessageLite*>(default_message_void);
157  }
158  };
160  // Strings
161  struct string_aux {
162  const void* default_ptr;
163  const char* field_name;
164  };
166 
167  struct map_aux {
169  };
171 
172  AuxiliaryParseTableField() = default;
174  : enums(e) {}
176  : messages(m) {}
178  : strings(s) {}
180  : maps(m) {}
181 };
182 
183 struct ParseTable {
184  const ParseTableField* fields;
186  int max_field_number;
187  // TODO(ckennelly): Do something with this padding.
188 
189  // TODO(ckennelly): Vet these for sign extension.
194 
195  // ExplicitlyInitialized<T> -> T requires a reinterpret_cast, which prevents
196  // the tables from being constructed as a constexpr. We use void to avoid
197  // the cast.
198  const void* default_instance_void;
199  const MessageLite* default_instance() const {
200  return static_cast<const MessageLite*>(default_instance_void);
201  }
202 
203  bool unknown_field_set;
204 };
205 
206 static_assert(sizeof(ParseTableField) <= 16, "ParseTableField is too large");
207 // The tables must be composed of POD components to ensure link-time
208 // initialization.
210 static_assert(std::is_trivial<ParseTableField>::value, "");
213 static_assert(
216 static_assert(
219  "");
220 static_assert(
224 static_assert(std::is_trivial<ParseTable>::value, "");
225 
226 // TODO(ckennelly): Consolidate these implementations into a single one, using
227 // dynamic dispatch to the appropriate unknown field handler.
228 bool MergePartialFromCodedStream(MessageLite* msg, const ParseTable& table,
230 bool MergePartialFromCodedStreamLite(MessageLite* msg, const ParseTable& table,
232 
233 template <typename Entry>
234 bool ParseMap(io::CodedInputStream* input, void* map_field) {
235  typedef typename MapEntryToMapField<Entry>::MapFieldType MapFieldType;
237  MapType;
238  typedef typename Entry::template Parser<MapFieldType, MapType> ParserType;
239 
240  ParserType parser(static_cast<MapFieldType*>(map_field));
242 }
243 
244 struct SerializationTable {
245  int num_fields;
246  const FieldMetadata* field_table;
247 };
248 
249 PROTOBUF_EXPORT void SerializeInternal(const uint8_t* base,
250  const FieldMetadata* table,
251  int32_t num_fields,
253 
254 inline void TableSerialize(const MessageLite& msg,
255  const SerializationTable* table,
257  const FieldMetadata* field_table = table->field_table;
258  int num_fields = table->num_fields - 1;
259  const uint8_t* base = reinterpret_cast<const uint8_t*>(&msg);
260  // TODO(gerbens) This skips the first test if we could use the fast
261  // array serialization path, we should make this
262  // int cached_size =
263  // *reinterpret_cast<const int32_t*>(base + field_table->offset);
264  // SerializeWithCachedSize(msg, field_table + 1, num_fields, cached_size, ...)
265  // But we keep conformance with the old way for now.
266  SerializeInternal(base, field_table + 1, num_fields, output);
267 }
268 
269 PROTOBUF_EXPORT uint8_t* SerializeInternalToArray(const uint8_t* base,
270  const FieldMetadata* table,
271  int32_t num_fields,
272  bool is_deterministic,
273  uint8_t* buffer);
274 
276  const SerializationTable* table,
277  bool is_deterministic, uint8_t* buffer) {
278  const uint8_t* base = reinterpret_cast<const uint8_t*>(&msg);
279  const FieldMetadata* field_table = table->field_table + 1;
280  int num_fields = table->num_fields - 1;
281  return SerializeInternalToArray(base, field_table, num_fields,
282  is_deterministic, buffer);
283 }
284 
285 template <typename T>
286 struct CompareHelper {
287  bool operator()(const T& a, const T& b) const { return a < b; }
288 };
289 
290 template <>
291 struct CompareHelper<ArenaStringPtr> {
292  bool operator()(const ArenaStringPtr& a, const ArenaStringPtr& b) const {
293  return a.Get() < b.Get();
294  }
295 };
296 
297 struct CompareMapKey {
298  template <typename T>
300  const MapEntryHelper<T>& b) const {
301  return Compare(a.key_, b.key_);
302  }
303  template <typename T>
304  bool Compare(const T& a, const T& b) const {
305  return CompareHelper<T>()(a, b);
306  }
307 };
308 
309 template <typename MapFieldType, const SerializationTable* table>
311  uint32_t has_offset, io::CodedOutputStream* output) {
312  typedef MapEntryHelper<typename MapFieldType::EntryTypeTrait> Entry;
313  typedef typename MapFieldType::MapType::const_iterator Iter;
314 
315  const MapFieldType& map_field =
316  *reinterpret_cast<const MapFieldType*>(base + offset);
317  const SerializationTable* t =
318  table +
319  has_offset; // has_offset is overloaded for maps to mean table offset
320  if (!output->IsSerializationDeterministic()) {
321  for (Iter it = map_field.GetMap().begin(); it != map_field.GetMap().end();
322  ++it) {
323  Entry map_entry(*it);
324  output->WriteVarint32(tag);
325  output->WriteVarint32(map_entry._cached_size_);
326  SerializeInternal(reinterpret_cast<const uint8_t*>(&map_entry),
327  t->field_table, t->num_fields, output);
328  }
329  } else {
330  std::vector<Entry> v;
331  for (Iter it = map_field.GetMap().begin(); it != map_field.GetMap().end();
332  ++it) {
333  v.push_back(Entry(*it));
334  }
335  std::sort(v.begin(), v.end(), CompareMapKey());
336  for (int i = 0; i < v.size(); i++) {
337  output->WriteVarint32(tag);
338  output->WriteVarint32(v[i]._cached_size_);
339  SerializeInternal(reinterpret_cast<const uint8_t*>(&v[i]), t->field_table,
340  t->num_fields, output);
341  }
342  }
343 }
344 
345 } // namespace internal
346 } // namespace protobuf
347 } // namespace google
348 
349 #include <google/protobuf/port_undef.inc>
350 
351 #endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_TABLE_DRIVEN_H__
ptr
char * ptr
Definition: abseil-cpp/absl/base/internal/low_level_alloc_test.cc:45
google::protobuf.internal::AuxiliaryParseTableField
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:141
google::protobuf.internal::AuxiliaryParseTableField::AuxiliaryParseTableField
constexpr AuxiliaryParseTableField(AuxiliaryParseTableField::map_aux m)
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:179
google::protobuf.internal::ParseMap
bool ParseMap(io::CodedInputStream *input, void *map_field)
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:224
google::protobuf.internal::TableSerializeToArray
uint8 * TableSerializeToArray(const MessageLite &msg, const SerializationTable *table, bool is_deterministic, uint8 *buffer)
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:263
google::protobuf.internal::ParseTable::default_instance
const MessageLite * default_instance() const
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:199
google::protobuf.internal::CompareHelper< ArenaStringPtr >::operator()
bool operator()(const ArenaStringPtr &a, const ArenaStringPtr &b) const
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:292
google::protobuf.internal::MapFieldSerializer
void MapFieldSerializer(const uint8 *base, uint32 offset, uint32 tag, uint32 has_offset, io::CodedOutputStream *output)
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:298
regen-readme.it
it
Definition: regen-readme.py:15
google::protobuf.internal::ParseTableField::offset
uint32_t offset
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:125
bool
bool
Definition: setup_once.h:312
google::protobuf.internal::FieldMetadata::FieldTypeClass
FieldTypeClass
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:96
google::protobuf.internal::AuxiliaryParseTableField::map_aux
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:167
google::protobuf.internal::AuxiliaryParseTableField::AuxiliaryParseTableField
constexpr AuxiliaryParseTableField(AuxiliaryParseTableField::message_aux m)
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:175
google::protobuf.internal::TYPE_BYTES_INLINED
@ TYPE_BYTES_INLINED
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:77
google::protobuf.internal::ParseTableField::presence_index
uint32_t presence_index
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:128
google::protobuf.internal::kInvalidMask
static constexpr const unsigned char kInvalidMask
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:69
google::protobuf.internal::AuxiliaryParseTableField::enums
enum_aux enums
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:148
google::protobuf.internal::ParseTable::extension_offset
int64_t extension_offset
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:192
google::protobuf.internal::TYPE_MAP
@ TYPE_MAP
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:78
google::protobuf.internal::ParseTable::fields
const ParseTableField * fields
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:184
google::protobuf
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
google::protobuf.internal::ParseTableField::tag_size
unsigned char tag_size
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:136
google::protobuf.internal::TYPE_STRING_STRING_PIECE
@ TYPE_STRING_STRING_PIECE
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:73
google::protobuf.internal::AuxiliaryParseTableField::AuxiliaryParseTableField
AuxiliaryParseTableField()=default
google::protobuf.internal::AuxiliaryParseTableField::messages
message_aux messages
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:159
google::protobuf.internal::CompareHelper
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:274
a
int a
Definition: abseil-cpp/absl/container/internal/hash_policy_traits_test.cc:88
google::protobuf.internal::SerializeInternal
PROTOBUF_EXPORT void SerializeInternal(const uint8 *base, const FieldMetadata *table, int32 num_fields, io::CodedOutputStream *output)
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_util.cc:619
google::protobuf.internal::TYPE_STRING_CORD
@ TYPE_STRING_CORD
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:72
google::protobuf::MessageLite
Definition: bloaty/third_party/protobuf/src/google/protobuf/message_lite.h:184
google::protobuf.internal::AuxiliaryParseTableField::strings
string_aux strings
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:165
google::protobuf.internal::AuxiliaryParseTableField::AuxiliaryParseTableField
constexpr AuxiliaryParseTableField(AuxiliaryParseTableField::enum_aux e)
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:173
google::protobuf.internal::ParseTable::has_bits_offset
int64_t has_bits_offset
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:190
uint8_t
unsigned char uint8_t
Definition: stdint-msvc2008.h:78
google::protobuf.internal::AuxiliaryParseTableField::enum_aux::validator
EnumValidator validator
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:146
google::protobuf.internal::MergePartialFromCodedStreamLite
bool MergePartialFromCodedStreamLite(MessageLite *msg, const ParseTable &table, io::CodedInputStream *input)
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven_lite.cc:98
T
#define T(upbtypeconst, upbtype, ctype, default_value)
google::protobuf.internal::CompareHelper::operator()
bool operator()(const T &a, const T &b) const
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:287
google::protobuf.internal::ParseTable::default_instance_void
const void * default_instance_void
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:198
google::protobuf.internal::WireFormatLite::ReadMessageNoVirtual
static bool ReadMessageNoVirtual(io::CodedInputStream *input, MessageType *value)
Definition: bloaty/third_party/protobuf/src/google/protobuf/wire_format_lite.h:340
google::protobuf.internal::ParseTable::arena_offset
int64_t arena_offset
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:193
google::protobuf.internal::ParseTableField::processing_type
unsigned char processing_type
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:134
google::protobuf.internal::FieldMetadata::offset
uint32_t offset
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:84
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
google::protobuf.internal::kTypeMask
static constexpr const unsigned char kTypeMask
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:65
gen_gtest_pred_impl.Iter
def Iter(n, format, sep='')
Definition: bloaty/third_party/googletest/googletest/scripts/gen_gtest_pred_impl.py:188
asyncio_get_stats.parser
parser
Definition: asyncio_get_stats.py:34
xds_interop_client.int
int
Definition: xds_interop_client.py:113
google::protobuf.internal::MergePartialFromCodedStream
bool MergePartialFromCodedStream(MessageLite *msg, const ParseTable &table, io::CodedInputStream *input)
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.cc:96
int64_t
signed __int64 int64_t
Definition: stdint-msvc2008.h:89
tag
static void * tag(intptr_t t)
Definition: bad_client.cc:318
google::protobuf.internal::AuxiliaryParseTableField::AuxiliaryParseTableField
constexpr AuxiliaryParseTableField(AuxiliaryParseTableField::string_aux s)
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:177
gmock_output_test.output
output
Definition: bloaty/third_party/googletest/googlemock/test/gmock_output_test.py:175
google::protobuf.internal::kOneofMask
static constexpr const unsigned char kOneofMask
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:61
google::protobuf.internal::FieldMetadata::type
uint32_t type
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:90
google::protobuf.internal::AuxiliaryParseTableField::message_aux::default_message
const MessageLite * default_message() const
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:155
setup.v
v
Definition: third_party/bloaty/third_party/capstone/bindings/python/setup.py:42
grpc::protobuf::MessageLite
GRPC_CUSTOM_MESSAGELITE MessageLite
Definition: include/grpcpp/impl/codegen/config_protobuf.h:79
google::protobuf.internal::AuxiliaryParseTableField::string_aux
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:161
google::protobuf.internal::kNotPackedMask
static constexpr const unsigned char kNotPackedMask
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:68
google::protobuf.internal::FieldMetadata::has_offset
uint32_t has_offset
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:89
google::protobuf.internal::CompareMapKey::operator()
bool operator()(const MapEntryHelper< T > &a, const MapEntryHelper< T > &b) const
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:299
google::protobuf.internal::ProcessingTypes
ProcessingTypes
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:71
google::protobuf.internal::AuxiliaryParseTableField::maps
map_aux maps
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:170
gen_synthetic_protos.base
base
Definition: gen_synthetic_protos.py:31
grpc::protobuf::io::CodedOutputStream
GRPC_CUSTOM_CODEDOUTPUTSTREAM CodedOutputStream
Definition: src/compiler/config.h:55
buffer
char buffer[1024]
Definition: libuv/docs/code/idle-compute/main.c:8
google::protobuf.internal::TYPE_BYTES_STRING_PIECE
@ TYPE_BYTES_STRING_PIECE
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:75
b
uint64_t b
Definition: abseil-cpp/absl/container/internal/layout_test.cc:53
msg
std::string msg
Definition: client_interceptors_end2end_test.cc:372
google::protobuf.internal::AuxiliaryParseTableField::message_aux::default_message_void
const void * default_message_void
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:154
google::protobuf.internal::SerializeInternalToArray
uint8 * SerializeInternalToArray(const uint8 *base, const FieldMetadata *table, int32 num_fields, bool is_deterministic, uint8 *buffer)
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_util.cc:661
google::protobuf::io::CodedOutputStream
Definition: bloaty/third_party/protobuf/src/google/protobuf/io/coded_stream.h:1044
google::protobuf.internal::AuxiliaryParseTableField::enum_aux
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:145
value
const char * value
Definition: hpack_parser_table.cc:165
google::protobuf.internal::ParseTable::oneof_case_offset
int64_t oneof_case_offset
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:191
google::protobuf.internal::AuxiliaryParseTableField::string_aux::default_ptr
const void * default_ptr
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:162
google::protobuf.internal::AuxiliaryParseTableField::string_aux::field_name
const char * field_name
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:163
google::protobuf.internal::CompareMapKey::Compare
bool Compare(const T &a, const T &b) const
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:292
google::protobuf.internal::SerializationTable::num_fields
int num_fields
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:235
absl::str_format_internal::LengthMod::t
@ t
google::protobuf.internal::TYPE_BYTES_CORD
@ TYPE_BYTES_CORD
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:74
google::protobuf.internal::TYPE_STRING_INLINED
@ TYPE_STRING_INLINED
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:76
google::protobuf.internal::ParseTableField::packed_wiretype
unsigned char packed_wiretype
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:130
google::protobuf::io::CodedInputStream
Definition: bloaty/third_party/protobuf/src/google/protobuf/io/coded_stream.h:180
google::protobuf.internal::MapEntryHelper
Definition: bloaty/third_party/protobuf/src/google/protobuf/map_entry_lite.h:635
google::protobuf.internal::ParseTable::aux
const AuxiliaryParseTableField * aux
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:185
google::protobuf.internal::ParseTable
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:183
google::protobuf.internal::AuxiliaryParseTableField::EnumValidator
bool(* EnumValidator)(int)
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:142
google::protobuf.internal::TableSerialize
void TableSerialize(const MessageLite &msg, const SerializationTable *table, io::CodedOutputStream *output)
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:244
google::protobuf.internal::ParseTable::unknown_field_set
bool unknown_field_set
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:203
input
std::string input
Definition: bloaty/third_party/protobuf/src/google/protobuf/io/tokenizer_unittest.cc:197
google::protobuf.internal::ParseTableField::normal_wiretype
unsigned char normal_wiretype
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:129
google::protobuf.internal::AuxiliaryParseTableField::map_aux::parse_map
bool(* parse_map)(io::CodedInputStream *, void *)
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:168
google::protobuf::Map
Definition: third_party/bloaty/third_party/protobuf/src/google/protobuf/arena.h:79
internal
Definition: benchmark/test/output_test_helper.cc:20
google::protobuf.internal::ParseTable::max_field_number
int max_field_number
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:186
table
uint8_t table[256]
Definition: hpack_parser.cc:456
setup.template
template
Definition: setup.py:47
google::protobuf.internal::kRepeatedMask
static constexpr const unsigned char kRepeatedMask
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:62
regress.m
m
Definition: regress/regress.py:25
int32_t
signed int int32_t
Definition: stdint-msvc2008.h:77
google::protobuf.internal::SerializationTable::field_table
const FieldMetadata * field_table
Definition: bloaty/third_party/protobuf/src/google/protobuf/generated_message_table_driven.h:236
google::protobuf.internal::AuxiliaryParseTableField::message_aux
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:150
google
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:11
google::protobuf.internal::ArenaStringPtr
Definition: bloaty/third_party/protobuf/src/google/protobuf/arenastring.h:74
kNoPresence
@ kNoPresence
Definition: mini_table.c:349
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
google::protobuf.internal::FieldMetadata::tag
uint32_t tag
Definition: protobuf/src/google/protobuf/generated_message_table_driven.h:85
offset
voidpf uLong offset
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:142


grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:26