class RepeatedPtrFieldBase
Defined at line 194 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
This is the common base class for RepeatedPtrFields. It deals only in void*
pointers. Users should not use this interface directly.
The methods of this interface correspond to the methods of RepeatedPtrField,
but may have a template argument called TypeHandler. Its signature is:
class TypeHandler {
public:
using Type = MyType;
static Type*(*)(Arena*) GetNewFunc();
static Type*(*)(Arena*) GetNewFromPrototypeFunc(const Type* prototype);
static Arena* GetArena(Type* value);
static Type* New(Arena* arena, Type
&
&
value);
static void Delete(Type*);
static void Clear(Type*);
// Only needs to be implemented if SpaceUsedExcludingSelf() is called.
static int SpaceUsedLong(const Type
&
);
static const Type
&
default_instance();
};
Public Methods
template <typename TypeHandler>
const Value<TypeHandler> & Get (int index)
The next few methods are public so that they can be called from generated
code when implicit weak fields are used, but they should never be called by
application code.
Defined at line 341 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * AddFromPrototype (Arena * arena, const Value<TypeHandler> * prototype)
Creates and adds an element using the given prototype, without introducing
a link-time dependency on the concrete message type.
Pre-condition: `prototype` must not be nullptr.
Defined at line 362 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
auto GetAdderFromPrototype (const Value<TypeHandler> * prototype)
As above, but returns a callable that caches useful information that can be
reused between add calls.
Defined at line 373 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * AddFromClassData (Arena * arena, const ClassData * class_data)
Creates and adds an element using the given ClassData, without introducing
a link-time dependency on the concrete message type. This is generally
faster and should be preferred over the equivalent `AddFromPrototype()` if
the caller already has or can get the `ClassData`, and especially if
elements are added repeatedly.
Pre-condition: `class_data` must not be nullptr.
Defined at line 390 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
void Clear ()
Defined at line 399 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename T>
void MergeFrom (const RepeatedPtrFieldBase & from, Arena * arena)
Appends all message values from `from` to this instance.
Defined at line 418 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void InternalSwap (RepeatedPtrFieldBase *__restrict rhs)
Defined at line 427 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename T,typename CopyElementFn,typename CreateAndMergeFn>
void MergeFromInternal (const RepeatedPtrFieldBase &from,Arena *arena,CopyElementFn &©_fn,CreateAndMergeFn &&create_and_merge_fn)
template <typename T, typename CopyElementFn>
void MergeFromInternal (const RepeatedPtrFieldBase &from,Arena *arena,CopyElementFn &©_fn)
bool PrepareForParse ()
Returns true if there are no preallocated elements in the array.
Defined at line 437 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void AddAllocatedForParse (void * value, Arena * arena)
Similar to `AddAllocated` but faster.
Pre-condition: PrepareForParse() is true.
Defined at line 444 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <>
void MergeFrom<google::protobuf::MessageLite> (const RepeatedPtrFieldBase & from, Arena * arena)
Appends all message values from `from` to this instance using the abstract
message interface. This overload is used in places like reflection and
other locations where the underlying type is unavailable
template <>
void MergeFrom<google::protobuf::Message> (const RepeatedPtrFieldBase & from, Arena * arena)
Defined at line 899 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <>
void MergeFrom<std::string> (const RepeatedPtrFieldBase & from, Arena * arena)
Appends all `std::string` values from `from` to this instance.
Protected Methods
void CloseGap (int start, int num)
void RepeatedPtrFieldBase ()
Defined at line 208 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void RepeatedPtrFieldBase (InternalMetadataOffset offset)
Defined at line 210 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void RepeatedPtrFieldBase (const RepeatedPtrFieldBase & )
Defined at line 213 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
RepeatedPtrFieldBase & operator= (const RepeatedPtrFieldBase & )
Defined at line 214 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void ~RepeatedPtrFieldBase ()
Defined at line 216 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
bool empty ()
Defined at line 226 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
int size ()
Defined at line 227 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
int Capacity ()
Returns the size of the buffer with pointers to elements.
Note:
* prefer `SizeAtCapacity()` to `size() == Capacity()`;
* prefer `AllocatedSizeAtCapacity()` to `allocated_size() == Capacity()`.
Defined at line 234 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
const Value<TypeHandler> & at (int index)
Defined at line 237 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> & at (int index)
Defined at line 244 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * Mutable (int index)
Defined at line 251 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * Add (Arena * arena)
Defined at line 257 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * Add (Arena * arena, Value<TypeHandler> && value)
Defined at line 262 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * Add (Arena * arena, const Value<TypeHandler> & value)
Defined at line 275 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void DestroyProtos ()
Pre-condition: NeedsDestroy() returns true.
template <typename TypeHandler, typename... Args>
Value<TypeHandler> * Emplace (Arena * arena, Args &&... args)
Defined at line 288 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
void Destroy ()
Must be called from destructor.
Pre-condition: NeedsDestroy() returns true.
Defined at line 306 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
bool NeedsDestroy ()
Defined at line 326 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
void RemoveLast ()
Defined at line 465 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
void CopyFrom (const RepeatedPtrFieldBase & other, Arena * arena)
Defined at line 473 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * copy (const Value<TypeHandler> * value)
Defined at line 486 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void *const * raw_data ()
Used for constructing iterators.
Defined at line 491 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void ** raw_mutable_data ()
Defined at line 492 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> ** mutable_data ()
Defined at line 495 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
const Value<TypeHandler> *const * data ()
Defined at line 502 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
void Swap (Arena *arena,RepeatedPtrFieldBase *other,Arena *other_arena)
Defined at line 509 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void SwapElements (int index1, int index2)
Defined at line 520 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
size_t SpaceUsedExcludingSelfLong ()
Defined at line 528 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * AddFromCleared ()
Like Add(), but if there are no cleared objects to use, returns nullptr.
Defined at line 546 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
void AddAllocated (Arena * arena, Value<TypeHandler> * value)
Defined at line 556 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
void UnsafeArenaAddAllocated (Arena * arena, Value<TypeHandler> * value)
Defined at line 578 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * ReleaseLast (Arena * arena)
Defined at line 609 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
Value<TypeHandler> * UnsafeArenaReleaseLast ()
Releases and returns the last element, but does not do out-of-arena copy.
Instead, just returns the raw pointer to the contained element in the
arena.
Defined at line 627 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
int ClearedCount ()
Defined at line 644 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
void AddAllocatedSlowWithCopy (Value<TypeHandler> *value,Arena *value_arena,Arena *my_arena)
Slowpath handles all cases, copying if necessary.
Defined at line 648 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
Arena * GetArena ()
Gets the Arena on which this RepeatedPtrField stores its elements.
Defined at line 679 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler, typename AddOne>
void ResizeImpl (int new_size, AddOne add_one)
Defined at line 1019 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
void ReserveWithArena (Arena * arena, int capacity)
template <typename TypeHandler>
void SwapFallbackWithTemp (Arena *arena,RepeatedPtrFieldBase *other,Arena *other_arena,RepeatedPtrFieldBase &temp)
Defined at line 973 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
template <typename TypeHandler>
void SwapFallback (Arena *arena,RepeatedPtrFieldBase *other,Arena *other_arena)
Defined at line 991 of file ../../third_party/protobuf/src/src/google/protobuf/repeated_ptr_field.h
Friends
class RustRepeatedMessageHelper
class SwapFieldHelper
class Reflection
template <typename T>
class InternalMetadataResolverOffsetHelper
class TcParser
template <typename T>
class WeakRepeatedPtrField
class AccessorHelper
class MergePartialFromCodedStreamHelper
class MapFieldTestPeer
class MapFieldBase
class ExtensionSet
template <typename T>
class InternalHelper
class Arena
class FieldWithArena
class RepeatedPtrFieldTest_UnsafeArenaAddAllocatedReleaseLastOnBaseField_Test
class RepeatedPtrFieldTest