DART 6.13.2
Loading...
Searching...
No Matches
dart::common::MemoryAllocatorDebugger< T > Class Template Reference

#include <MemoryAllocatorDebugger.hpp>

Inheritance diagram for dart::common::MemoryAllocatorDebugger< T >:
dart::common::MemoryAllocator dart::common::Castable< MemoryAllocator >

Public Member Functions

template<typename... Args>
 MemoryAllocatorDebugger (Args &&... args)
 Constructor.
 
 ~MemoryAllocatorDebugger ()
 Destructor.
 
const std::string & getType () const override
 Returns type string.
 
void * allocate (size_t bytes) noexcept override
 Allocates size bytes of uninitialized storage.
 
void deallocate (void *pointer, size_t bytes) override
 Deallocates the storage referenced by the pointer p, which must be a pointer obtained by an earlier cal to allocate().
 
bool isEmpty () const
 Returns true if there is no memory allocated by the internal allocator.
 
bool hasAllocated (void *pointer, size_t size) const
 Returns true if a pointer is allocated by the internal allocator.
 
const T & getInternalAllocator () const
 Returns the internal allocator.
 
T & getInternalAllocator ()
 Returns the internal allocator.
 
void print (std::ostream &os=std::cout, int indent=0) const override
 Prints state of the memory allocator.
 
template<typename T >
T * allocateAs (size_t n=1) noexcept
 Allocates object(s) without calling the constructor.
 
template<typename T , typename... Args>
T * construct (Args &&... args) noexcept
 Allocates uninitialized storage and constructs an object of type T to the allocated storage.
 
template<typename T , typename... Args>
T * constructAt (void *pointer, Args &&... args)
 
template<typename T , typename... Args>
T * constructAt (T *pointer, Args &&... args)
 
template<typename T >
void destroy (T *object) noexcept
 Calls the destructor of the object and deallocate the storage.
 
bool is () const
 Returns true if the types of this Base and the template parameter (a base class) are identical.
 
const Derived * as () const
 Casts to pointer of Derived if Base is its base class.
 
Derived * as ()
 Casts to pointer of Derived if Base is its base class.
 
const Derived & asRef () const
 Casts to reference of Derived if Base is its base class. UB otherwise.
 
Derived & asRef ()
 Casts to reference of Derived if Base is its base class. UB otherwise.
 

Static Public Member Functions

static const std::string & getStaticType ()
 Returns type string.
 
static MemoryAllocatorGetDefault ()
 Returns the default memory allocator.
 

Private Member Functions

const MemoryAllocatorbase () const
 Casts to Base const-reference.
 
MemoryAllocatorbase ()
 Casts to Base reference.
 

Private Attributes

mInternalAllocator
 
size_t mSize = 0
 
size_t mPeak = 0
 
std::unordered_map< void *, size_t > mMapPointerToSize
 
std::mutex mMutex
 

Constructor & Destructor Documentation

◆ MemoryAllocatorDebugger()

template<typename T >
template<typename... Args>
dart::common::MemoryAllocatorDebugger< T >::MemoryAllocatorDebugger ( Args &&...  args)

Constructor.

◆ ~MemoryAllocatorDebugger()

Destructor.

Member Function Documentation

◆ allocate()

template<typename T >
void * dart::common::MemoryAllocatorDebugger< T >::allocate ( size_t  bytes)
overridevirtualnoexcept

Allocates size bytes of uninitialized storage.

Parameters
[in]bytesThe byte size to allocate sotrage for.
Returns
On success, the pointer to the beginning of newly allocated memory.
On failure, a null pointer

Implements dart::common::MemoryAllocator.

◆ allocateAs()

template<typename T >
T * dart::common::MemoryAllocator::allocateAs ( size_t  n = 1)
noexceptinherited

Allocates object(s) without calling the constructor.

This is identical to static_cast<T*>(allocate(n * sizeof(T))).

Parameters
[in]nThe number of objects to allocate.

◆ as() [1/2]

Derived * dart::common::Castable< MemoryAllocator >::as ( )
inherited

Casts to pointer of Derived if Base is its base class.

Returns nullptr otherwise.

◆ as() [2/2]

const Derived * dart::common::Castable< MemoryAllocator >::as ( ) const
inherited

Casts to pointer of Derived if Base is its base class.

Returns nullptr otherwise.

◆ asRef() [1/2]

Derived & dart::common::Castable< MemoryAllocator >::asRef ( )
inherited

Casts to reference of Derived if Base is its base class. UB otherwise.

◆ asRef() [2/2]

const Derived & dart::common::Castable< MemoryAllocator >::asRef ( ) const
inherited

Casts to reference of Derived if Base is its base class. UB otherwise.

◆ base() [1/2]

MemoryAllocator & dart::common::Castable< MemoryAllocator >::base ( )
privateinherited

Casts to Base reference.

◆ base() [2/2]

const MemoryAllocator & dart::common::Castable< MemoryAllocator >::base ( ) const
privateinherited

Casts to Base const-reference.

◆ construct()

template<typename T , typename... Args>
T * dart::common::MemoryAllocator::construct ( Args &&...  args)
noexceptinherited

Allocates uninitialized storage and constructs an object of type T to the allocated storage.

Template Parameters
TThe object type to construct.
Args...The argument types to pass to the object constructor.
Parameters
[in]argsThe constructor arguments to use.

◆ constructAt() [1/2]

template<typename T , typename... Args>
T * dart::common::MemoryAllocator::constructAt ( T *  pointer,
Args &&...  args 
)
inherited

◆ constructAt() [2/2]

template<typename T , typename... Args>
T * dart::common::MemoryAllocator::constructAt ( void *  pointer,
Args &&...  args 
)
inherited

◆ deallocate()

template<typename T >
void dart::common::MemoryAllocatorDebugger< T >::deallocate ( void *  pointer,
size_t  bytes 
)
overridevirtual

Deallocates the storage referenced by the pointer p, which must be a pointer obtained by an earlier cal to allocate().

Parameters
[in]pointerPointer obtained from allocate().
[in]bytesThe bytes of the allocated memory.

Implements dart::common::MemoryAllocator.

◆ destroy()

template<typename T >
void dart::common::MemoryAllocator::destroy ( T *  object)
noexceptinherited

Calls the destructor of the object and deallocate the storage.

◆ GetDefault()

MemoryAllocator & dart::common::MemoryAllocator::GetDefault ( )
staticinherited

Returns the default memory allocator.

◆ getInternalAllocator() [1/2]

template<typename T >
T & dart::common::MemoryAllocatorDebugger< T >::getInternalAllocator ( )

Returns the internal allocator.

◆ getInternalAllocator() [2/2]

template<typename T >
const T & dart::common::MemoryAllocatorDebugger< T >::getInternalAllocator ( ) const

Returns the internal allocator.

◆ getStaticType()

template<typename T >
const std::string & dart::common::MemoryAllocatorDebugger< T >::getStaticType ( )
static

Returns type string.

◆ getType()

template<typename T >
const std::string & dart::common::MemoryAllocatorDebugger< T >::getType ( ) const
overridevirtual

Returns type string.

Implements dart::common::MemoryAllocator.

◆ hasAllocated()

template<typename T >
bool dart::common::MemoryAllocatorDebugger< T >::hasAllocated ( void *  pointer,
size_t  size 
) const

Returns true if a pointer is allocated by the internal allocator.

◆ is()

bool dart::common::Castable< MemoryAllocator >::is ( ) const
inherited

Returns true if the types of this Base and the template parameter (a base class) are identical.

This function is a syntactic sugar, which is identical to: (getType() == ShapeType::getStaticType()).

Example code:

if (shape->is<Sphere>())
std::cout << "The shape type is sphere!\n";

◆ isEmpty()

template<typename T >
bool dart::common::MemoryAllocatorDebugger< T >::isEmpty ( ) const

Returns true if there is no memory allocated by the internal allocator.

◆ print()

template<typename T >
void dart::common::MemoryAllocatorDebugger< T >::print ( std::ostream &  os = std::cout,
int  indent = 0 
) const
overridevirtual

Prints state of the memory allocator.

Reimplemented from dart::common::MemoryAllocator.

Member Data Documentation

◆ mInternalAllocator

template<typename T >
T dart::common::MemoryAllocatorDebugger< T >::mInternalAllocator
private

◆ mMapPointerToSize

template<typename T >
std::unordered_map<void*, size_t> dart::common::MemoryAllocatorDebugger< T >::mMapPointerToSize
private

◆ mMutex

template<typename T >
std::mutex dart::common::MemoryAllocatorDebugger< T >::mMutex
mutableprivate

◆ mPeak

template<typename T >
size_t dart::common::MemoryAllocatorDebugger< T >::mPeak = 0
private

◆ mSize

template<typename T >
size_t dart::common::MemoryAllocatorDebugger< T >::mSize = 0
private