class RepeatedPtrFieldBase

Defined at line 124 of file ../../third_party/protobuf/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;

using Movable = ...;

static Type*(*)(Arena*) GetNewFunc();

static void GetArena(Type* value);

static Type* New(Arena* arena);

static Type* New(Arena* arena, Type

&

&

value);

static Type* NewFromPrototype(const Type* prototype, Arena* arena);

static void Delete(Type*, Arena* arena);

static void Clear(Type*);

static void Merge(const Type

&

from, Type* to);

// Only needs to be implemented if SpaceUsedExcludingSelf() is called.

static int SpaceUsedLong(const Type

&

);

};

Public Methods

MessageLite * AddMessage (const MessageLite * 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.

template <>
void MergeFrom<google::protobuf::MessageLite> (const RepeatedPtrFieldBase & from)

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<std::string> (const RepeatedPtrFieldBase & from)

Appends all `std::string` values from `from` to this instance.

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 252 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
void Clear ()

Defined at line 265 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename T>
void MergeFrom (const RepeatedPtrFieldBase & from)

Appends all message values from `from` to this instance.

Defined at line 276 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

void InternalSwap (RepeatedPtrFieldBase *__restrict rhs)

Defined at line 287 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

bool PrepareForParse ()

Returns true if there are no preallocated elements in the array.

Defined at line 296 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

void AddAllocatedForParse (void * value)

Similar to `AddAllocated` but faster.

Pre-condition: PrepareForParse() is true.

Defined at line 301 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <>
void MergeFrom<google::protobuf::Message> (const RepeatedPtrFieldBase & from)

Defined at line 767 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

Protected Methods

void DestroyProtos ()
void CloseGap (int start, int num)
void RepeatedPtrFieldBase ()

Defined at line 140 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

void RepeatedPtrFieldBase (Arena * arena)

Defined at line 145 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

void RepeatedPtrFieldBase (const RepeatedPtrFieldBase & )

Defined at line 151 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

RepeatedPtrFieldBase & operator= (const RepeatedPtrFieldBase & )

Defined at line 152 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

void ~RepeatedPtrFieldBase ()

Defined at line 154 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

bool empty ()

Defined at line 162 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

int size ()

Defined at line 163 of file ../../third_party/protobuf/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 170 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
const Value<TypeHandler> & at (int index)

Defined at line 173 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
Value<TypeHandler> & at (int index)

Defined at line 180 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
Value<TypeHandler> * Mutable (int index)

Defined at line 187 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
Value<TypeHandler> * Add ()

Defined at line 194 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler, typename std::enable_if<TypeHandler::Movable::value>::type* = nullptr>
void Add (Value<TypeHandler> && value)

Defined at line 204 of file ../../third_party/protobuf/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 220 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

bool NeedsDestroy ()

Defined at line 239 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
void RemoveLast ()

Defined at line 319 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
void CopyFrom (const RepeatedPtrFieldBase & other)

Defined at line 327 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

void *const * raw_data ()

Used for constructing iterators.

Defined at line 347 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

void ** raw_mutable_data ()

Defined at line 348 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
Value<TypeHandler> ** mutable_data ()

Defined at line 351 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
const Value<TypeHandler> *const * data ()

Defined at line 358 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
void Swap (RepeatedPtrFieldBase * other)

Defined at line 365 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

void SwapElements (int index1, int index2)

Defined at line 373 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
size_t SpaceUsedExcludingSelfLong ()

Defined at line 379 of file ../../third_party/protobuf/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 397 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
void AddAllocated (Value<TypeHandler> * value)

Defined at line 407 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
void UnsafeArenaAddAllocated (Value<TypeHandler> * value)

Defined at line 429 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
Value<TypeHandler> * ReleaseLast ()

Defined at line 457 of file ../../third_party/protobuf/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 475 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

int ClearedCount ()

Defined at line 492 of file ../../third_party/protobuf/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 496 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

template <typename TypeHandler>
void SwapFallback (RepeatedPtrFieldBase * other)

Defined at line 517 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

Arena * GetArena ()

Gets the Arena on which this RepeatedPtrField stores its elements.

Defined at line 535 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

size_t InternalGetArenaOffset (internal::InternalVisibility )

Defined at line 537 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

void Reserve (int capacity)
template <typename TypeHandler>
Value<TypeHandler> * copy (const Value<TypeHandler> * value)

Defined at line 339 of file ../../third_party/protobuf/src/google/protobuf/repeated_ptr_field.h

Friends

class LazyRepeatedPtrField
class SwapFieldHelper
class Reflection
template <typename T>
class ArenaOffsetHelper
class TcParser
template <typename T>
class WeakRepeatedPtrField
class AccessorHelper
class MergePartialFromCodedStreamHelper
class MapFieldTestPeer
class MapFieldBase
class ExtensionSet
template <typename T>
class InternalHelper