reflection_internal.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_REFLECTION_INTERNAL_H__
32 #define GOOGLE_PROTOBUF_REFLECTION_INTERNAL_H__
33 
37 
38 namespace google {
39 namespace protobuf {
40 namespace internal {
41 // A base class for RepeatedFieldAccessor implementations that can support
42 // random-access efficiently. All iterator methods delegates the work to
43 // corresponding random-access methods.
45  public:
46  Iterator* BeginIterator(const Field* data) const override {
47  return PositionToIterator(0);
48  }
49  Iterator* EndIterator(const Field* data) const override {
50  return PositionToIterator(this->Size(data));
51  }
53  const Iterator* iterator) const override {
54  return const_cast<Iterator*>(iterator);
55  }
57  Iterator* iterator) const override {
58  return PositionToIterator(IteratorToPosition(iterator) + 1);
59  }
60  bool EqualsIterator(const Field* data, const Iterator* a,
61  const Iterator* b) const override {
62  return a == b;
63  }
64  void DeleteIterator(const Field* data, Iterator* iterator) const override {}
65  const Value* GetIteratorValue(const Field* data, const Iterator* iterator,
66  Value* scratch_space) const override {
67  return Get(data, static_cast<int>(IteratorToPosition(iterator)),
68  scratch_space);
69  }
70 
71  protected:
73 
74  private:
75  static intptr_t IteratorToPosition(const Iterator* iterator) {
76  return reinterpret_cast<intptr_t>(iterator);
77  }
78  static Iterator* PositionToIterator(intptr_t position) {
79  return reinterpret_cast<Iterator*>(position);
80  }
81 };
82 
83 // Base class for RepeatedFieldAccessor implementations that manipulates
84 // RepeatedField<T>.
85 template <typename T>
87  public:
89  bool IsEmpty(const Field* data) const override {
90  return GetRepeatedField(data)->empty();
91  }
92  int Size(const Field* data) const override {
93  return GetRepeatedField(data)->size();
94  }
95  const Value* Get(const Field* data, int index,
96  Value* scratch_space) const override {
97  return ConvertFromT(GetRepeatedField(data)->Get(index), scratch_space);
98  }
99  void Clear(Field* data) const override {
101  }
102  void Set(Field* data, int index, const Value* value) const override {
104  }
105  void Add(Field* data, const Value* value) const override {
107  }
108  void RemoveLast(Field* data) const override {
110  }
111  void SwapElements(Field* data, int index1, int index2) const override {
112  MutableRepeatedField(data)->SwapElements(index1, index2);
113  }
114 
115  protected:
116  ~RepeatedFieldWrapper() = default;
119  return reinterpret_cast<const RepeatedFieldType*>(data);
120  }
122  return reinterpret_cast<RepeatedFieldType*>(data);
123  }
124 
125  // Convert an object recevied by this accessor to an object to be stored in
126  // the underlying RepeatedField.
127  virtual T ConvertToT(const Value* value) const = 0;
128 
129  // Convert an object stored in RepeatedPtrField to an object that will be
130  // returned by this accessor. If the two objects have the same type (true for
131  // string fields with ctype=STRING), a pointer to the source object can be
132  // returned directly. Otherwise, data should be copied from value to
133  // scratch_space and scratch_space should be returned.
134  virtual const Value* ConvertFromT(const T& value,
135  Value* scratch_space) const = 0;
136 };
137 
138 // Base class for RepeatedFieldAccessor implementations that manipulates
139 // RepeatedPtrField<T>.
140 template <typename T>
142  public:
143  bool IsEmpty(const Field* data) const override {
144  return GetRepeatedField(data)->empty();
145  }
146  int Size(const Field* data) const override {
147  return GetRepeatedField(data)->size();
148  }
149  const Value* Get(const Field* data, int index,
150  Value* scratch_space) const override {
151  return ConvertFromT(GetRepeatedField(data)->Get(index), scratch_space);
152  }
153  void Clear(Field* data) const override {
155  }
156  void Set(Field* data, int index, const Value* value) const override {
158  }
159  void Add(Field* data, const Value* value) const override {
160  T* allocated = New(value);
161  ConvertToT(value, allocated);
163  }
164  void RemoveLast(Field* data) const override {
166  }
167  void SwapElements(Field* data, int index1, int index2) const override {
168  MutableRepeatedField(data)->SwapElements(index1, index2);
169  }
170 
171  protected:
172  ~RepeatedPtrFieldWrapper() = default;
175  return reinterpret_cast<const RepeatedFieldType*>(data);
176  }
178  return reinterpret_cast<RepeatedFieldType*>(data);
179  }
180 
181  // Create a new T instance. For repeated message fields, T can be specified
182  // as google::protobuf::Message so we can't use "new T()" directly. In that case, value
183  // should be a message of the same type (it's ensured by the caller) and a
184  // new message object will be created using it.
185  virtual T* New(const Value* value) const = 0;
186 
187  // Convert an object received by this accessor to an object that will be
188  // stored in the underlying RepeatedPtrField.
189  virtual void ConvertToT(const Value* value, T* result) const = 0;
190 
191  // Convert an object stored in RepeatedPtrField to an object that will be
192  // returned by this accessor. If the two objects have the same type (true for
193  // string fields with ctype=STRING), a pointer to the source object can be
194  // returned directly. Otherwise, data should be copied from value to
195  // scratch_space and scratch_space should be returned.
196  virtual const Value* ConvertFromT(const T& value,
197  Value* scratch_space) const = 0;
198 };
199 
200 // An implementation of RandomAccessRepeatedFieldAccessor that manipulates
201 // MapFieldBase.
203  public:
205  virtual ~MapFieldAccessor() {}
206  bool IsEmpty(const Field* data) const override {
207  return GetRepeatedField(data)->empty();
208  }
209  int Size(const Field* data) const override {
210  return GetRepeatedField(data)->size();
211  }
212  const Value* Get(const Field* data, int index,
213  Value* scratch_space) const override {
214  return ConvertFromEntry(GetRepeatedField(data)->Get(index), scratch_space);
215  }
216  void Clear(Field* data) const override {
218  }
219  void Set(Field* data, int index, const Value* value) const override {
221  }
222  void Add(Field* data, const Value* value) const override {
223  Message* allocated = New(value);
224  ConvertToEntry(value, allocated);
226  }
227  void RemoveLast(Field* data) const override {
229  }
230  void SwapElements(Field* data, int index1, int index2) const override {
231  MutableRepeatedField(data)->SwapElements(index1, index2);
232  }
233  void Swap(Field* data, const internal::RepeatedFieldAccessor* other_mutator,
234  Field* other_data) const override {
235  GOOGLE_CHECK(this == other_mutator);
237  }
238 
239  protected:
242  return reinterpret_cast<const RepeatedFieldType*>(
243  (&reinterpret_cast<const MapFieldBase*>(data)->GetRepeatedField()));
244  }
246  return reinterpret_cast<RepeatedFieldType*>(
247  reinterpret_cast<MapFieldBase*>(data)->MutableRepeatedField());
248  }
249  virtual Message* New(const Value* value) const {
250  return static_cast<const Message*>(value)->New();
251  }
252  // Convert an object received by this accessor to an MapEntry message to be
253  // stored in the underlying MapFieldBase.
254  virtual void ConvertToEntry(const Value* value, Message* result) const {
255  result->CopyFrom(*static_cast<const Message*>(value));
256  }
257  // Convert a MapEntry message stored in the underlying MapFieldBase to an
258  // object that will be returned by this accessor.
259  virtual const Value* ConvertFromEntry(const Message& value,
260  Value* scratch_space) const {
261  return static_cast<const Value*>(&value);
262  }
263 };
264 
265 // Default implementations of RepeatedFieldAccessor for primitive types.
266 template <typename T>
268  typedef void Field;
269  typedef void Value;
271 
272  public:
274  void Swap(Field* data, const internal::RepeatedFieldAccessor* other_mutator,
275  Field* other_data) const override {
276  // Currently RepeatedFieldPrimitiveAccessor is the only implementation of
277  // RepeatedFieldAccessor for primitive types. As we are using singletons
278  // for these accessors, here "other_mutator" must be "this".
279  GOOGLE_CHECK(this == other_mutator);
281  }
282 
283  protected:
284  T ConvertToT(const Value* value) const override {
285  return *static_cast<const T*>(value);
286  }
287  const Value* ConvertFromT(const T& value,
288  Value* scratch_space) const override {
289  return static_cast<const Value*>(&value);
290  }
291 };
292 
293 // Default implementation of RepeatedFieldAccessor for string fields with
294 // ctype=STRING.
296  : public RepeatedPtrFieldWrapper<std::string> {
297  typedef void Field;
298  typedef void Value;
300 
301  public:
303  void Swap(Field* data, const internal::RepeatedFieldAccessor* other_mutator,
304  Field* other_data) const override {
305  if (this == other_mutator) {
307  } else {
310  int other_size = other_mutator->Size(other_data);
311  for (int i = 0; i < other_size; ++i) {
312  Add<std::string>(data, other_mutator->Get<std::string>(other_data, i));
313  }
314  int size = Size(data);
315  other_mutator->Clear(other_data);
316  for (int i = 0; i < size; ++i) {
317  other_mutator->Add<std::string>(other_data, tmp.Get(i));
318  }
319  }
320  }
321 
322  protected:
323  std::string* New(const Value*) const override { return new std::string(); }
324  void ConvertToT(const Value* value, std::string* result) const override {
325  *result = *static_cast<const std::string*>(value);
326  }
328  Value* scratch_space) const override {
329  return static_cast<const Value*>(&value);
330  }
331 };
332 
333 
335  : public RepeatedPtrFieldWrapper<Message> {
336  typedef void Field;
337  typedef void Value;
338 
339  public:
341  void Swap(Field* data, const internal::RepeatedFieldAccessor* other_mutator,
342  Field* other_data) const override {
343  GOOGLE_CHECK(this == other_mutator);
345  }
346 
347  protected:
348  Message* New(const Value* value) const override {
349  return static_cast<const Message*>(value)->New();
350  }
351  void ConvertToT(const Value* value, Message* result) const override {
352  result->CopyFrom(*static_cast<const Message*>(value));
353  }
355  Value* scratch_space) const override {
356  return static_cast<const Value*>(&value);
357  }
358 };
359 } // namespace internal
360 } // namespace protobuf
361 } // namespace google
362 
363 #endif // GOOGLE_PROTOBUF_REFLECTION_INTERNAL_H__
google::protobuf::RepeatedPtrField< T >
google::protobuf.internal::RepeatedFieldPrimitiveAccessor
Definition: reflection_internal.h:267
google::protobuf.internal::RepeatedPtrFieldStringAccessor::ConvertToT
void ConvertToT(const Value *value, std::string *result) const override
Definition: reflection_internal.h:324
google::protobuf.internal::MapFieldAccessor::RepeatedFieldType
RepeatedPtrField< Message > RepeatedFieldType
Definition: reflection_internal.h:240
google::protobuf::value
const Descriptor::ReservedRange value
Definition: src/google/protobuf/descriptor.h:1954
google::protobuf.internal::RepeatedPtrFieldWrapper::Add
void Add(Field *data, const Value *value) const override
Definition: reflection_internal.h:159
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::GetIteratorValue
const Value * GetIteratorValue(const Field *data, const Iterator *iterator, Value *scratch_space) const override
Definition: reflection_internal.h:65
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::EndIterator
Iterator * EndIterator(const Field *data) const override
Definition: reflection_internal.h:49
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::BeginIterator
Iterator * BeginIterator(const Field *data) const override
Definition: reflection_internal.h:46
google::protobuf.internal::RepeatedFieldPrimitiveAccessor::RepeatedFieldPrimitiveAccessor
RepeatedFieldPrimitiveAccessor()
Definition: reflection_internal.h:273
google::protobuf.internal::RepeatedPtrFieldMessageAccessor::Swap
void Swap(Field *data, const internal::RepeatedFieldAccessor *other_mutator, Field *other_data) const override
Definition: reflection_internal.h:341
google::protobuf.internal::RepeatedPtrFieldStringAccessor::Value
void Value
Definition: reflection_internal.h:298
google::protobuf::RepeatedField::empty
bool empty() const
Definition: repeated_field.h:1135
google::protobuf.internal::RepeatedFieldWrapper::GetRepeatedField
static const RepeatedFieldType * GetRepeatedField(const Field *data)
Definition: reflection_internal.h:118
google::protobuf.internal::MapFieldAccessor::~MapFieldAccessor
virtual ~MapFieldAccessor()
Definition: reflection_internal.h:205
google::protobuf.internal::RepeatedPtrFieldWrapper
Definition: reflection_internal.h:141
google::protobuf.internal::RepeatedFieldWrapper::RepeatedFieldType
RepeatedField< T > RepeatedFieldType
Definition: reflection_internal.h:117
google::protobuf.internal::RepeatedPtrFieldStringAccessor::RepeatedPtrFieldStringAccessor
RepeatedPtrFieldStringAccessor()
Definition: reflection_internal.h:302
google::protobuf.internal::MapFieldAccessor::Add
void Add(Field *data, const Value *value) const override
Definition: reflection_internal.h:222
google::protobuf.internal::RepeatedFieldWrapper::ConvertToT
virtual T ConvertToT(const Value *value) const =0
google::protobuf::Message::CopyFrom
virtual void CopyFrom(const Message &from)
Definition: src/google/protobuf/message.cc:98
google::protobuf.internal::RepeatedFieldWrapper::MutableRepeatedField
static RepeatedFieldType * MutableRepeatedField(Field *data)
Definition: reflection_internal.h:121
google::protobuf::RepeatedPtrField::Get
const Element & Get(int index) const
Definition: repeated_field.h:2014
google::protobuf.internal::MapFieldAccessor::SwapElements
void SwapElements(Field *data, int index1, int index2) const override
Definition: reflection_internal.h:230
google::protobuf.internal::MapFieldAccessor::IsEmpty
bool IsEmpty(const Field *data) const override
Definition: reflection_internal.h:206
string
GLsizei const GLchar *const * string
Definition: glcorearb.h:3083
Value
Definition: struct.pb.h:304
google::protobuf::RepeatedField< T >
google::protobuf.internal::RepeatedPtrFieldStringAccessor::Swap
void Swap(Field *data, const internal::RepeatedFieldAccessor *other_mutator, Field *other_data) const override
Definition: reflection_internal.h:303
google::protobuf::RepeatedField::Add
void Add(const Element &value)
Definition: repeated_field.h:1220
google::protobuf::RepeatedField::Clear
void Clear()
Definition: repeated_field.h:1283
google::protobuf.internal::MapFieldAccessor::New
virtual Message * New(const Value *value) const
Definition: reflection_internal.h:249
T
#define T(upbtypeconst, upbtype, ctype, default_value)
google::protobuf.internal::RepeatedPtrFieldWrapper::IsEmpty
bool IsEmpty(const Field *data) const override
Definition: reflection_internal.h:143
google::protobuf.internal::MapFieldAccessor::Get
const Value * Get(const Field *data, int index, Value *scratch_space) const override
Definition: reflection_internal.h:212
google::protobuf::RepeatedPtrField::empty
bool empty() const
Definition: repeated_field.h:2004
map_field.h
google::protobuf.internal::RepeatedFieldAccessor::Size
virtual int Size(const Field *data) const =0
google::protobuf.internal::MapFieldAccessor::MutableRepeatedField
static RepeatedFieldType * MutableRepeatedField(Field *data)
Definition: reflection_internal.h:245
google::protobuf.internal::RepeatedPtrFieldWrapper::ConvertFromT
virtual const Value * ConvertFromT(const T &value, Value *scratch_space) const =0
google::protobuf.internal::RepeatedPtrFieldMessageAccessor
Definition: reflection_internal.h:334
b
GLboolean GLboolean GLboolean b
Definition: glcorearb.h:3228
google::protobuf.internal::RepeatedPtrFieldWrapper::Get
const Value * Get(const Field *data, int index, Value *scratch_space) const override
Definition: reflection_internal.h:149
google::protobuf.internal::RepeatedFieldWrapper::IsEmpty
bool IsEmpty(const Field *data) const override
Definition: reflection_internal.h:89
google::protobuf.internal::MapFieldAccessor::ConvertFromEntry
virtual const Value * ConvertFromEntry(const Message &value, Value *scratch_space) const
Definition: reflection_internal.h:259
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::~RandomAccessRepeatedFieldAccessor
~RandomAccessRepeatedFieldAccessor()=default
google::protobuf.internal::RepeatedFieldWrapper::RepeatedFieldWrapper
RepeatedFieldWrapper()
Definition: reflection_internal.h:88
google::protobuf.internal::RepeatedPtrFieldWrapper::GetRepeatedField
static const RepeatedFieldType * GetRepeatedField(const Field *data)
Definition: reflection_internal.h:174
google::protobuf.internal::RepeatedFieldAccessor::Iterator
void Iterator
Definition: reflection.h:306
google::protobuf.internal::RepeatedFieldWrapper::Clear
void Clear(Field *data) const override
Definition: reflection_internal.h:99
google::protobuf.internal::RepeatedPtrFieldStringAccessor::New
std::string * New(const Value *) const override
Definition: reflection_internal.h:323
google::protobuf.internal::RepeatedPtrFieldStringAccessor
Definition: reflection_internal.h:295
google::protobuf.internal::RepeatedPtrFieldWrapper::Clear
void Clear(Field *data) const override
Definition: reflection_internal.h:153
google::protobuf.internal::RepeatedPtrFieldMessageAccessor::Field
void Field
Definition: reflection_internal.h:336
google::protobuf.internal::RepeatedFieldWrapper::Size
int Size(const Field *data) const override
Definition: reflection_internal.h:92
google::protobuf.internal::RepeatedPtrFieldWrapper::Size
int Size(const Field *data) const override
Definition: reflection_internal.h:146
google::protobuf.internal::RepeatedFieldWrapper::Set
void Set(Field *data, int index, const Value *value) const override
Definition: reflection_internal.h:102
google::protobuf::RepeatedPtrField::RemoveLast
void RemoveLast()
Definition: repeated_field.h:2045
google::protobuf.internal::RepeatedPtrFieldMessageAccessor::ConvertToT
void ConvertToT(const Value *value, Message *result) const override
Definition: reflection_internal.h:351
google::protobuf.internal::RepeatedPtrFieldWrapper::ConvertToT
virtual void ConvertToT(const Value *value, T *result) const =0
google::protobuf.internal::RepeatedPtrFieldMessageAccessor::New
Message * New(const Value *value) const override
Definition: reflection_internal.h:348
google::protobuf.internal::MapFieldAccessor::Set
void Set(Field *data, int index, const Value *value) const override
Definition: reflection_internal.h:219
google::protobuf.internal::RepeatedFieldAccessor
Definition: reflection.h:301
google::protobuf.internal::RandomAccessRepeatedFieldAccessor
Definition: reflection_internal.h:44
google::protobuf.internal::RepeatedFieldPrimitiveAccessor::Field
void Field
Definition: reflection_internal.h:268
google::protobuf.internal::RepeatedFieldWrapper::~RepeatedFieldWrapper
~RepeatedFieldWrapper()=default
size
#define size
Definition: glcorearb.h:2944
repeated_field.h
google::protobuf.internal::MapFieldAccessor::Clear
void Clear(Field *data) const override
Definition: reflection_internal.h:216
google::protobuf.internal::RepeatedFieldWrapper::Get
const Value * Get(const Field *data, int index, Value *scratch_space) const override
Definition: reflection_internal.h:95
google::protobuf::RepeatedPtrField::Swap
void Swap(RepeatedPtrField *other)
Definition: repeated_field.h:2176
google::protobuf.internal::RepeatedFieldPrimitiveAccessor::ConvertFromT
const Value * ConvertFromT(const T &value, Value *scratch_space) const override
Definition: reflection_internal.h:287
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::CopyIterator
Iterator * CopyIterator(const Field *data, const Iterator *iterator) const override
Definition: reflection_internal.h:52
position
intern position
Definition: array.c:487
google::protobuf.internal::MapFieldAccessor::Swap
void Swap(Field *data, const internal::RepeatedFieldAccessor *other_mutator, Field *other_data) const override
Definition: reflection_internal.h:233
GOOGLE_CHECK
#define GOOGLE_CHECK(EXPRESSION)
Definition: logging.h:153
google::protobuf::RepeatedField::RemoveLast
void RemoveLast()
Definition: repeated_field.h:1257
google::protobuf::RepeatedPtrField::SwapElements
void SwapElements(int index1, int index2)
Definition: repeated_field.h:2189
i
int i
Definition: gmock-matchers_test.cc:764
google::protobuf::RepeatedPtrField::size
int size() const
Definition: repeated_field.h:2009
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::PositionToIterator
static Iterator * PositionToIterator(intptr_t position)
Definition: reflection_internal.h:78
google::protobuf.internal::RepeatedPtrFieldStringAccessor::ConvertFromT
const Value * ConvertFromT(const std::string &value, Value *scratch_space) const override
Definition: reflection_internal.h:327
google::protobuf::Message
Definition: src/google/protobuf/message.h:205
google::protobuf::RepeatedField::Set
void Set(int index, const Element &value)
Definition: repeated_field.h:1213
google::protobuf.internal::RepeatedFieldAccessor::Add
virtual void Add(Field *data, const Value *value) const =0
google::protobuf.internal::RepeatedPtrFieldWrapper::New
virtual T * New(const Value *value) const =0
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::EqualsIterator
bool EqualsIterator(const Field *data, const Iterator *a, const Iterator *b) const override
Definition: reflection_internal.h:60
google::protobuf.internal::RepeatedPtrFieldMessageAccessor::ConvertFromT
const Value * ConvertFromT(const Message &value, Value *scratch_space) const override
Definition: reflection_internal.h:354
google::protobuf.internal::MapFieldAccessor::MapFieldAccessor
MapFieldAccessor()
Definition: reflection_internal.h:204
google::protobuf.internal::MapFieldAccessor::RemoveLast
void RemoveLast(Field *data) const override
Definition: reflection_internal.h:227
google::protobuf.internal::RepeatedFieldWrapper::SwapElements
void SwapElements(Field *data, int index1, int index2) const override
Definition: reflection_internal.h:111
google::protobuf.internal::RepeatedFieldPrimitiveAccessor::Swap
void Swap(Field *data, const internal::RepeatedFieldAccessor *other_mutator, Field *other_data) const override
Definition: reflection_internal.h:274
size
GLsizeiptr size
Definition: glcorearb.h:2943
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::DeleteIterator
void DeleteIterator(const Field *data, Iterator *iterator) const override
Definition: reflection_internal.h:64
google::protobuf::RepeatedField::size
int size() const
Definition: repeated_field.h:1140
google::protobuf::RepeatedPtrField::Clear
void Clear()
Definition: repeated_field.h:2135
google::protobuf.internal::RepeatedFieldWrapper::ConvertFromT
virtual const Value * ConvertFromT(const T &value, Value *scratch_space) const =0
google::protobuf.internal::RepeatedFieldAccessor::Clear
virtual void Clear(Field *data) const =0
google::protobuf.internal::RepeatedPtrFieldMessageAccessor::RepeatedPtrFieldMessageAccessor
RepeatedPtrFieldMessageAccessor()
Definition: reflection_internal.h:340
data
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: glcorearb.h:2879
reflection.h
google::protobuf.internal::RepeatedFieldAccessor::Get
virtual const Value * Get(const Field *data, int index, Value *scratch_space) const =0
google::protobuf.internal::RepeatedPtrFieldWrapper::~RepeatedPtrFieldWrapper
~RepeatedPtrFieldWrapper()=default
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::IteratorToPosition
static intptr_t IteratorToPosition(const Iterator *iterator)
Definition: reflection_internal.h:75
google::protobuf.internal::RepeatedPtrFieldStringAccessor::Field
void Field
Definition: reflection_internal.h:297
google::protobuf.internal::RepeatedFieldWrapper
Definition: reflection_internal.h:86
google::protobuf.internal::RandomAccessRepeatedFieldAccessor::AdvanceIterator
Iterator * AdvanceIterator(const Field *data, Iterator *iterator) const override
Definition: reflection_internal.h:56
google::protobuf.internal::MapFieldAccessor::Size
int Size(const Field *data) const override
Definition: reflection_internal.h:209
google::protobuf::RepeatedField::Swap
void Swap(RepeatedField *other)
Definition: repeated_field.h:1342
internal
Definition: any.pb.h:40
google::protobuf.internal::MapFieldBase
Definition: map_field.h:69
google::protobuf.internal::MapFieldAccessor::GetRepeatedField
static const RepeatedFieldType * GetRepeatedField(const Field *data)
Definition: reflection_internal.h:241
Field
Definition: type.pb.h:416
google::protobuf.internal::RepeatedFieldWrapper::Add
void Add(Field *data, const Value *value) const override
Definition: reflection_internal.h:105
value
GLsizei const GLfloat * value
Definition: glcorearb.h:3093
google::protobuf.internal::MapFieldAccessor
Definition: reflection_internal.h:202
google::protobuf.internal::RepeatedPtrFieldWrapper::RepeatedFieldType
RepeatedPtrField< T > RepeatedFieldType
Definition: reflection_internal.h:173
google::protobuf.internal::RepeatedPtrFieldWrapper::SwapElements
void SwapElements(Field *data, int index1, int index2) const override
Definition: reflection_internal.h:167
google::protobuf.internal::RepeatedPtrFieldWrapper::RemoveLast
void RemoveLast(Field *data) const override
Definition: reflection_internal.h:164
google::protobuf.internal::RepeatedPtrFieldMessageAccessor::Value
void Value
Definition: reflection_internal.h:337
google::protobuf.internal::MapFieldAccessor::ConvertToEntry
virtual void ConvertToEntry(const Value *value, Message *result) const
Definition: reflection_internal.h:254
google::protobuf.internal::RepeatedFieldPrimitiveAccessor::ConvertToT
T ConvertToT(const Value *value) const override
Definition: reflection_internal.h:284
google::protobuf.internal::RepeatedPtrFieldWrapper::Set
void Set(Field *data, int index, const Value *value) const override
Definition: reflection_internal.h:156
google::protobuf.internal::RepeatedPtrFieldWrapper::MutableRepeatedField
static RepeatedFieldType * MutableRepeatedField(Field *data)
Definition: reflection_internal.h:177
index
GLuint index
Definition: glcorearb.h:3055
a
GLboolean GLboolean GLboolean GLboolean a
Definition: glcorearb.h:3228
google::protobuf::RepeatedPtrField::AddAllocated
void AddAllocated(Element *value)
Definition: repeated_field.h:2204
google
Definition: data_proto2_to_proto3_util.h:11
google::protobuf::RepeatedField::SwapElements
void SwapElements(int index1, int index2)
Definition: repeated_field.h:1361
google::protobuf.internal::RepeatedFieldPrimitiveAccessor::Value
void Value
Definition: reflection_internal.h:269
google::protobuf.internal::RepeatedFieldWrapper::RemoveLast
void RemoveLast(Field *data) const override
Definition: reflection_internal.h:108


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:58