CookMem 1.4.0
A C++ memory context / allocator
Loading...
Searching...
No Matches
cookmem::SimpleMemContext< Arena, Logger, TreeType, T > Class Template Reference

#include <context.h>

Inheritance diagram for cookmem::SimpleMemContext< Arena, Logger, TreeType, T >:
Collaboration diagram for cookmem::SimpleMemContext< Arena, Logger, TreeType, T >:

Public Types

typedef SimpleMemContainer< Arena, Logger > Container
 
typedef MemContext< Arena, Logger, TreeType, T > MemCtx
 
typedef MemCtx::size_type size_type
 
typedef MemCtx::difference_type difference_type
 
typedef MemCtx::value_type value_type
 
typedef MemCtx::pointer pointer
 
typedef MemCtx::const_pointer const_pointer
 
- Public Types inherited from cookmem::MemContext< Arena, Logger, TreeType, T >
typedef MemContext< Arena, Logger, TreeType, T > MemCtx
 
typedef MemPool< Arena, Logger, TreeType, T > Pool
 
typedef Pool::size_type size_type
 
typedef Pool::difference_type difference_type
 
typedef Pool::value_type value_type
 
typedef Pool::pointer pointer
 
typedef Pool::const_pointer const_pointer
 

Public Member Functions

 SimpleMemContext (std::uint8_t paddingSize=DEFAULT_PADDING_SIZE)
 
 SimpleMemContext (SimpleMemContext &other, bool shareArena)
 
- Public Member Functions inherited from cookmem::MemContext< Arena, Logger, TreeType, T >
 MemContext (Arena &arena, Logger &logger, std::uint8_t paddingSize=DEFAULT_PADDING_SIZE)
 
 MemContext (MemCtx &other)
 
T * allocate (size_type size)
 
T * allocateAligned (size_type size, size_type alignment)
 
T * reallocate (T *ptr, size_type size)
 
T * callocate (size_type num, size_type size)
 
void deallocate (T *ptr, size_type size=0)
 
void validate ()
 
bool contains (T *ptr, bool checkUsed=false)
 
size_type getSize (T *ptr)
 
void releaseAll ()
 
void releaseAllToSystem ()
 
size_type getFootprintLimit () const
 
void setFootprintLimit (size_type footprintLimit)
 
size_type getFootprint () const
 
size_type getMaxFootprint () const
 
void setTrimEmptySegmentsInterval (size_type interval)
 
size_type getTrimEmptySegmentsInterval () const
 
void setImmediateReleaseThreshold (size_type threshold)
 
size_type getImmediateReleaseThreshold () const
 
bool isStoringExactSize () const
 
void setStoringExactSize (bool b)
 
bool isPadding () const
 
std::uint8_t getPaddingSize () const
 
std::uint8_t getPaddingByte () const
 
void setPaddingByte (std::uint8_t paddingByte)
 
Arena & getArena ()
 
Logger & getLogger ()
 
Pool & getPool ()
 

Detailed Description

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
class cookmem::SimpleMemContext< Arena, Logger, TreeType, T >

A basic memory context that creates a MemPool using self-contained arena and logger.

This class is mostly used in cases when arena or logger both have default constructors.

Member Typedef Documentation

◆ const_pointer

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
typedef MemCtx::const_pointer cookmem::SimpleMemContext< Arena, Logger, TreeType, T >::const_pointer

const pointer type

◆ Container

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
typedef SimpleMemContainer<Arena, Logger> cookmem::SimpleMemContext< Arena, Logger, TreeType, T >::Container

The type that holds the arena and the logger.

◆ difference_type

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
typedef MemCtx::difference_type cookmem::SimpleMemContext< Arena, Logger, TreeType, T >::difference_type

pointer difference type

◆ MemCtx

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
typedef MemContext<Arena, Logger, TreeType, T> cookmem::SimpleMemContext< Arena, Logger, TreeType, T >::MemCtx

The type of the base memory context.

◆ pointer

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
typedef MemCtx::pointer cookmem::SimpleMemContext< Arena, Logger, TreeType, T >::pointer

pointer type

◆ size_type

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
typedef MemCtx::size_type cookmem::SimpleMemContext< Arena, Logger, TreeType, T >::size_type

size type

◆ value_type

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
typedef MemCtx::value_type cookmem::SimpleMemContext< Arena, Logger, TreeType, T >::value_type

value type

Constructor & Destructor Documentation

◆ SimpleMemContext() [1/2]

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
cookmem::SimpleMemContext< Arena, Logger, TreeType, T >::SimpleMemContext ( std::uint8_t  paddingSize = DEFAULT_PADDING_SIZE)
inline

Constructor.

Parameters
paddingSizethe number of padding bytes (0 to MAX_PADDING_SIZE) added after each allocation to detect out-of-bounds writes.

◆ SimpleMemContext() [2/2]

template<class Arena = MmapArena, class Logger = NoActionMemLogger, class TreeType = PtrRBTree, class T = void>
cookmem::SimpleMemContext< Arena, Logger, TreeType, T >::SimpleMemContext ( SimpleMemContext< Arena, Logger, TreeType, T > &  other,
bool  shareArena 
)
inline

Create a new, empty memory context with the same padding size as another context. No memory is copied, and the new context has its own logger.

Parameters
otherthe other memory context.
shareArenatrue to obtain segments from the arena of the other context. false to use the arena of the new context.

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