Ion
|
VectorDataContainer is a special kind of DataContainer that is backed by an AllocVector. More...
#include "vectordatacontainer.h"
Public Types | |
typedef std::function< void(void *data_to_delete)> | Deleter |
Generic delete function. More... | |
Public Member Functions | |
VectorDataContainer (bool is_wipeable) | |
const AllocVector< T > & | GetVector () const |
Returns a const reference to the vector backing this instance. More... | |
AllocVector< T > * | GetMutableVector () |
Returns a pointer to the vector backing this instance. More... | |
bool | IsWipeable () const |
Returns the is_wipeable setting passed to the constructor. More... | |
template<typename T > | |
const T * | GetData () const |
Returns a const data pointer. More... | |
const void * | GetData () const |
Default GetData() returns a const void pointer. More... | |
template<typename T > | |
T * | GetMutableData () const |
Returns a non-const data pointer. More... | |
void | WipeData () |
Informs the DataContainer that the data is no longer needed and can be deleted. More... | |
void | AddReceiver (Notifier *receiver) |
Adds a Notifier to be notified. More... | |
void | RemoveReceiver (Notifier *receiver) |
Removes a Notifier to be notified. More... | |
size_t | GetReceiverCount () const |
Returns the number of Notifiers that will be notified. More... | |
const AllocatorPtr & | GetAllocator () const |
Returns the Allocator that was used for the instance. More... | |
const AllocatorPtr & | GetNonNullAllocator () const |
Return our allocator, or the default allocator if the instance was declared on the stack. More... | |
const AllocatorPtr & | GetAllocatorForLifetime (AllocationLifetime lifetime) const |
Convenience function that returns the Allocator to use to allocate an object with a specific lifetime. More... | |
void * | operator new (size_t size) |
The standard no-parameter new operator uses the default Allocator. More... | |
void * | operator new (size_t size, AllocationLifetime lifetime) |
This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime. More... | |
void * | operator new (size_t size, const AllocatorPtr &allocator) |
This overloaded version of the new operator takes the Allocator to use directly as a parameter. More... | |
void * | operator new (size_t size, const AllocatorPtr &allocator, void *ptr) |
Special operator new for using placement new with Allocatables. More... | |
void * | operator new (size_t size, void *ptr) |
The placement new operator is defined conventionally. More... | |
void | operator delete (void *ptr) |
Define the delete operator to use specialized functions dealing with an Allocator. More... | |
void | operator delete (void *ptr, AllocationLifetime lifetime) |
Windows requires these (or it issues C4291 warnings). More... | |
void | operator delete (void *ptr, const AllocatorPtr &allocator) |
void | operator delete (void *ptr, void *ptr2) |
The placement delete operator does nothing, as usual. More... | |
int | GetRefCount () const |
GetRefCount() is part of the interface necessary for SharedPtr. More... | |
Static Public Member Functions | |
template<typename T > | |
static void | ArrayDeleter (void *data_to_delete) |
Generic deleters that perform the most common deletion operations. More... | |
template<typename T > | |
static void | PointerDeleter (void *data_to_delete) |
static void | AllocatorDeleter (AllocatorPtr allocator, void *data_to_delete) |
A deleter for data allocated by an Allocator. More... | |
template<typename T > | |
static DataContainerPtr | Create (T *data, const Deleter &data_deleter, bool is_wipeable, const AllocatorPtr &container_allocator) |
See class comment for documentation. More... | |
template<typename T > | |
static DataContainerPtr | CreateAndCopy (const T *data, size_t count, bool is_wipeable, const AllocatorPtr &container_and_data_allocator) |
See class comment for documentation. More... | |
template<typename T > | |
static DataContainerPtr | CreateOverAllocated (size_t count, const T *data, const AllocatorPtr &container_allocator) |
See class comment for documentation. More... | |
Protected Types | |
typedef WeakReferentPtr< Notifier > | NotifierPtr |
typedef AllocVector< NotifierPtr > | NotifierPtrVector |
Protected Member Functions | |
~VectorDataContainer () override | |
The destructor is protected because all base::Referent classes must have protected or private destructors. More... | |
const NotifierPtrVector & | GetReceivers () const |
Returns the set of Notifiers that will be notified. More... | |
void | Notify () const |
Notifies all contained Notifiers by calling their OnNotify(). More... | |
virtual void | OnNotify (const Notifier *notifier) |
Subclasses can override this to provide custom behavior on notifications. More... | |
VectorDataContainer is a special kind of DataContainer that is backed by an AllocVector.
Accessing its underlying AllocVector provides a mechanism for a DataContainer with resizeable storage. Note that unlike a regular DataContainer, a VectorDataContainer can be created directly, but is templated on the type of the data.
Definition at line 35 of file vectordatacontainer.h.
|
inherited |
Generic delete function.
Definition at line 77 of file datacontainer.h.
|
protectedinherited |
Definition at line 49 of file notifier.h.
|
protectedinherited |
Definition at line 50 of file notifier.h.
|
inlineexplicit |
Definition at line 37 of file vectordatacontainer.h.
|
inlineoverrideprotected |
The destructor is protected because all base::Referent classes must have protected or private destructors.
Definition at line 49 of file vectordatacontainer.h.
|
inherited |
Adds a Notifier to be notified.
Does nothing if the receiver is NULL or is already in the receiver vector.
Definition at line 25 of file notifier.cc.
|
inlinestaticinherited |
A deleter for data allocated by an Allocator.
The AllocatorPtr is passed by value so that a std::bind that invokes the deleter will hold a strong reference to it.
Definition at line 94 of file datacontainer.h.
References DCHECK, ion::base::Allocator::DeallocateMemory(), and ion::base::SharedPtr< T >::Get().
Referenced by ion::base::DataContainer::CreateAndCopy().
|
inlinestaticinherited |
Generic deleters that perform the most common deletion operations.
These deleters may all be passed to Create() (see above).
Definition at line 82 of file datacontainer.h.
|
inlinestaticinherited |
See class comment for documentation.
Definition at line 129 of file datacontainer.h.
|
inlinestaticinherited |
See class comment for documentation.
Definition at line 142 of file datacontainer.h.
References ion::base::Allocator::AllocateMemory(), ion::base::DataContainer::AllocatorDeleter(), ion::base::SharedPtr< T >::Get(), ion::base::Allocatable::GetAllocator(), ion::base::Allocator::GetAllocatorForLifetime(), ion::base::AllocationManager::GetDefaultAllocatorForLifetime(), kNullFunction, and ion::base::kShortTerm.
|
inlinestaticinherited |
See class comment for documentation.
Definition at line 170 of file datacontainer.h.
References kNullFunction.
|
inlineinherited |
Returns the Allocator that was used for the instance.
This will be NULL if the instance was declared on the stack or created with normal placement new.
Definition at line 68 of file allocatable.h.
References allocator_.
Referenced by ion::base::DataContainer::CreateAndCopy(), ion::text::DynamicFontImage::FindContainingImageDataIndex(), and ion::text::DynamicFontImage::FindImageDataIndex().
|
inlineinherited |
Convenience function that returns the Allocator to use to allocate an object with a specific lifetime.
Definition at line 78 of file allocatable.h.
References ion::base::Allocator::GetAllocatorForLifetime().
Referenced by ion::text::BasicBuilder::BuildVertexData(), ion::text::OutlineBuilder::BuildVertexData(), ion::gfxutils::ShaderManager::CreateShaderProgram(), ion::text::DynamicFontImage::FindContainingImageDataIndex(), ion::text::DynamicFontImage::FindImageDataIndex(), ion::gfx::Renderer::Renderer(), and ion::gfx::UpdateStateTable().
|
inlineinherited |
Returns a const data pointer.
Definition at line 104 of file datacontainer.h.
|
inlineinherited |
Default GetData() returns a const void pointer.
Definition at line 109 of file datacontainer.h.
|
inlineinherited |
Returns a non-const data pointer.
Definition at line 115 of file datacontainer.h.
References ion::port::ERROR, and LOG.
|
inline |
Returns a pointer to the vector backing this instance.
Definition at line 44 of file vectordatacontainer.h.
|
inlineinherited |
Return our allocator, or the default allocator if the instance was declared on the stack.
Definition at line 72 of file allocatable.h.
References allocator_, and ion::base::AllocationManager::GetNonNullAllocator().
|
inherited |
Returns the number of Notifiers that will be notified.
Definition at line 71 of file notifier.cc.
|
protectedinherited |
Returns the set of Notifiers that will be notified.
Definition at line 77 of file notifier.cc.
|
inlineinherited |
GetRefCount() is part of the interface necessary for SharedPtr.
Definition at line 34 of file shareable.h.
Referenced by ion::base::Notifier::RemoveReceiver().
|
inline |
Returns a const reference to the vector backing this instance.
Definition at line 41 of file vectordatacontainer.h.
|
inlineinherited |
Returns the is_wipeable setting passed to the constructor.
Definition at line 100 of file datacontainer.h.
|
protectedinherited |
Notifies all contained Notifiers by calling their OnNotify().
Any receivers that have been destroyed will be removed from the vector of receivers.
Definition at line 81 of file notifier.cc.
References ion::base::SharedPtr< T >::Get().
|
protectedvirtualinherited |
Subclasses can override this to provide custom behavior on notifications.
Definition at line 96 of file notifier.cc.
|
inlineinherited |
Define the delete operator to use specialized functions dealing with an Allocator.
Definition at line 109 of file allocatable.h.
|
inlineinherited |
Windows requires these (or it issues C4291 warnings).
Definition at line 112 of file allocatable.h.
|
inlineinherited |
Definition at line 113 of file allocatable.h.
|
inlineinherited |
The placement delete operator does nothing, as usual.
Definition at line 118 of file allocatable.h.
|
inlineinherited |
The standard no-parameter new operator uses the default Allocator.
Definition at line 84 of file allocatable.h.
|
inlineinherited |
This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime.
Definition at line 88 of file allocatable.h.
|
inlineinherited |
This overloaded version of the new operator takes the Allocator to use directly as a parameter.
If the Allocator pointer is NULL, this uses the default Allocator.
Definition at line 95 of file allocatable.h.
|
inlineinherited |
Special operator new for using placement new with Allocatables.
Definition at line 100 of file allocatable.h.
|
inlineinherited |
The placement new operator is defined conventionally.
Definition at line 105 of file allocatable.h.
|
inlinestaticinherited |
Definition at line 87 of file datacontainer.h.
|
inherited |
Removes a Notifier to be notified.
Does nothing if the receiver is NULL or not in the set of receivers.
Definition at line 38 of file notifier.cc.
References ion::base::Shareable::GetRefCount().
Referenced by ion::gfx::AttributeArray::~AttributeArray().
|
inherited |
Informs the DataContainer that the data is no longer needed and can be deleted.
It does this only if is_wipeable=true was passed to the constructor and there is a non-NULL deleter; otherwise, it has no effect.
Definition at line 39 of file datacontainer.cc.