Ion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ion::base::VectorDataContainer< T > Class Template Reference

VectorDataContainer is a special kind of DataContainer that is backed by an AllocVector. More...

#include "vectordatacontainer.h"

Inheritance diagram for ion::base::VectorDataContainer< T >:
Collaboration diagram for ion::base::VectorDataContainer< T >:

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 TGetData () const
 Returns a const data pointer. More...
 
const void * GetData () const
 Default GetData() returns a const void pointer. More...
 
template<typename T >
TGetMutableData () 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 AllocatorPtrGetAllocator () const
 Returns the Allocator that was used for the instance. More...
 
const AllocatorPtrGetNonNullAllocator () const
 Return our allocator, or the default allocator if the instance was declared on the stack. More...
 
const AllocatorPtrGetAllocatorForLifetime (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< NotifierNotifierPtr
 
typedef AllocVector< NotifierPtrNotifierPtrVector
 

Protected Member Functions

 ~VectorDataContainer () override
 The destructor is protected because all base::Referent classes must have protected or private destructors. More...
 
const NotifierPtrVectorGetReceivers () 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...
 

Detailed Description

template<typename T>
class ion::base::VectorDataContainer< T >

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.

Member Typedef Documentation

typedef std::function<void(void* data_to_delete)> ion::base::DataContainer::Deleter
inherited

Generic delete function.

Definition at line 77 of file datacontainer.h.

Definition at line 49 of file notifier.h.

Definition at line 50 of file notifier.h.

Constructor & Destructor Documentation

template<typename T >
ion::base::VectorDataContainer< T >::VectorDataContainer ( bool  is_wipeable)
inlineexplicit

Definition at line 37 of file vectordatacontainer.h.

template<typename T >
ion::base::VectorDataContainer< T >::~VectorDataContainer ( )
inlineoverrideprotected

The destructor is protected because all base::Referent classes must have protected or private destructors.

Definition at line 49 of file vectordatacontainer.h.

Member Function Documentation

void ion::base::Notifier::AddReceiver ( Notifier receiver)
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.

static void ion::base::DataContainer::AllocatorDeleter ( AllocatorPtr  allocator,
void *  data_to_delete 
)
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().

template<typename T >
static void ion::base::DataContainer::ArrayDeleter ( void *  data_to_delete)
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.

template<typename T >
static DataContainerPtr ion::base::DataContainer::Create ( T data,
const Deleter data_deleter,
bool  is_wipeable,
const AllocatorPtr container_allocator 
)
inlinestaticinherited

See class comment for documentation.

Definition at line 129 of file datacontainer.h.

template<typename T >
static DataContainerPtr ion::base::DataContainer::CreateAndCopy ( const T data,
size_t  count,
bool  is_wipeable,
const AllocatorPtr container_and_data_allocator 
)
inlinestaticinherited
template<typename T >
static DataContainerPtr ion::base::DataContainer::CreateOverAllocated ( size_t  count,
const T data,
const AllocatorPtr container_allocator 
)
inlinestaticinherited

See class comment for documentation.

Definition at line 170 of file datacontainer.h.

References kNullFunction.

const AllocatorPtr& ion::base::Allocatable::GetAllocator ( ) const
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().

template<typename T >
const T* ion::base::DataContainer::GetData ( ) const
inlineinherited

Returns a const data pointer.

Definition at line 104 of file datacontainer.h.

const void* ion::base::DataContainer::GetData ( ) const
inlineinherited

Default GetData() returns a const void pointer.

Definition at line 109 of file datacontainer.h.

template<typename T >
T* ion::base::DataContainer::GetMutableData ( ) const
inlineinherited

Returns a non-const data pointer.

Definition at line 115 of file datacontainer.h.

References ion::port::ERROR, and LOG.

template<typename T >
AllocVector<T>* ion::base::VectorDataContainer< T >::GetMutableVector ( )
inline

Returns a pointer to the vector backing this instance.

Definition at line 44 of file vectordatacontainer.h.

const AllocatorPtr& ion::base::Allocatable::GetNonNullAllocator ( ) const
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().

size_t ion::base::Notifier::GetReceiverCount ( ) const
inherited

Returns the number of Notifiers that will be notified.

Definition at line 71 of file notifier.cc.

const Notifier::NotifierPtrVector & ion::base::Notifier::GetReceivers ( ) const
protectedinherited

Returns the set of Notifiers that will be notified.

Definition at line 77 of file notifier.cc.

int ion::base::Shareable::GetRefCount ( ) const
inlineinherited

GetRefCount() is part of the interface necessary for SharedPtr.

Definition at line 34 of file shareable.h.

Referenced by ion::base::Notifier::RemoveReceiver().

template<typename T >
const AllocVector<T>& ion::base::VectorDataContainer< T >::GetVector ( ) const
inline

Returns a const reference to the vector backing this instance.

Definition at line 41 of file vectordatacontainer.h.

bool ion::base::DataContainer::IsWipeable ( ) const
inlineinherited

Returns the is_wipeable setting passed to the constructor.

Definition at line 100 of file datacontainer.h.

void ion::base::Notifier::Notify ( ) const
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().

void ion::base::Notifier::OnNotify ( const Notifier notifier)
protectedvirtualinherited

Subclasses can override this to provide custom behavior on notifications.

Definition at line 96 of file notifier.cc.

void ion::base::Allocatable::operator delete ( void *  ptr)
inlineinherited

Define the delete operator to use specialized functions dealing with an Allocator.

Definition at line 109 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
AllocationLifetime  lifetime 
)
inlineinherited

Windows requires these (or it issues C4291 warnings).

Definition at line 112 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
const AllocatorPtr allocator 
)
inlineinherited

Definition at line 113 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
void *  ptr2 
)
inlineinherited

The placement delete operator does nothing, as usual.

Definition at line 118 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size)
inlineinherited

The standard no-parameter new operator uses the default Allocator.

Definition at line 84 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
AllocationLifetime  lifetime 
)
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.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator 
)
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.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator,
void *  ptr 
)
inlineinherited

Special operator new for using placement new with Allocatables.

Definition at line 100 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
void *  ptr 
)
inlineinherited

The placement new operator is defined conventionally.

Definition at line 105 of file allocatable.h.

template<typename T >
static void ion::base::DataContainer::PointerDeleter ( void *  data_to_delete)
inlinestaticinherited

Definition at line 87 of file datacontainer.h.

void ion::base::Notifier::RemoveReceiver ( Notifier receiver)
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().

void ion::base::DataContainer::WipeData ( )
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.


The documentation for this class was generated from the following file: