#include <hoardsuperblockheader.h>
Public Member Functions | |
HoardSuperblockHeader (size_t sz, size_t bufferSize) | |
void * | malloc (void) |
void | free (void *ptr) |
void | clear (void) |
INLINE void * | normalize (void *ptr) const |
Returns the actual start of the object. | |
size_t | getSize (void *ptr) const |
size_t | getObjectSize (void) const |
int | getTotalObjects (void) const |
int | getObjectsFree (void) const |
HeapType * | getOwner (void) const |
void | setOwner (HeapType *o) |
bool | isValid (void) const |
HoardSuperblock< LockType, SuperblockSize, HeapType > * | getNext (void) const |
HoardSuperblock< LockType, SuperblockSize, HeapType > * | getPrev (void) const |
void | setNext (HoardSuperblock< LockType, SuperblockSize, HeapType > *n) |
void | setPrev (HoardSuperblock< LockType, SuperblockSize, HeapType > *p) |
void | lock (void) |
void | unlock (void) |
Private Types | |
enum | { MAGIC_NUMBER = 0xcafed00d } |
Private Member Functions | |
MALLOC_FUNCTION INLINE void * | reapAlloc (void) |
MALLOC_FUNCTION INLINE void * | freeListAlloc (void) |
Private Attributes | |
const size_t | _magicNumber |
A magic number used to verify validity of this header. | |
const size_t | _objectSize |
The object size. | |
const bool | _objectSizeIsPowerOfTwo |
True iff size is a power of two. | |
const int | _totalObjects |
Total objects in the superblock. | |
LockType | _theLock |
The lock. | |
HeapType * | _owner |
The owner of this superblock. | |
HoardSuperblock< LockType, SuperblockSize, HeapType > * | _prev |
The preceding superblock in a linked list. | |
HoardSuperblock< LockType, SuperblockSize, HeapType > * | _next |
The succeeding superblock in a linked list. | |
int | _reapableObjects |
The number of objects available to be 'reap'ed. | |
int | _objectsFree |
The number of objects available for (re)use. | |
char * | _start |
The start of reap allocation. | |
char * | _position |
The cursor into the buffer following the header. | |
FreeSLList | _freeList |
The list of freed objects. | |
union { | |
char _dchar | |
short _dshort | |
int _dint | |
long _dlong | |
float _dfloat | |
double _ddouble | |
long double _dldouble | |
}; |
anonymous enum [private] |
Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::HoardSuperblockHeader | ( | size_t | sz, | |
size_t | bufferSize | |||
) | [inline] |
void Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::clear | ( | void | ) | [inline] |
void Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::free | ( | void * | ptr | ) | [inline] |
MALLOC_FUNCTION INLINE void* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::freeListAlloc | ( | void | ) | [inline, private] |
HoardSuperblock<LockType, SuperblockSize, HeapType>* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::getNext | ( | void | ) | const [inline] |
int Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::getObjectsFree | ( | void | ) | const [inline] |
size_t Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::getObjectSize | ( | void | ) | const [inline] |
HeapType* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::getOwner | ( | void | ) | const [inline] |
HoardSuperblock<LockType, SuperblockSize, HeapType>* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::getPrev | ( | void | ) | const [inline] |
size_t Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::getSize | ( | void * | ptr | ) | const [inline] |
int Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::getTotalObjects | ( | void | ) | const [inline] |
bool Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::isValid | ( | void | ) | const [inline] |
void Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::lock | ( | void | ) | [inline] |
void* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::malloc | ( | void | ) | [inline] |
INLINE void* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::normalize | ( | void * | ptr | ) | const [inline] |
Returns the actual start of the object.
MALLOC_FUNCTION INLINE void* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::reapAlloc | ( | void | ) | [inline, private] |
void Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::setNext | ( | HoardSuperblock< LockType, SuperblockSize, HeapType > * | n | ) | [inline] |
void Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::setOwner | ( | HeapType * | o | ) | [inline] |
void Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::setPrev | ( | HoardSuperblock< LockType, SuperblockSize, HeapType > * | p | ) | [inline] |
void Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::unlock | ( | void | ) | [inline] |
union { ... } [private] |
char Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_dchar |
double Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_ddouble |
float Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_dfloat |
int Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_dint |
long double Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_dldouble |
long Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_dlong |
short Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_dshort |
FreeSLList Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_freeList [private] |
The list of freed objects.
const size_t Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_magicNumber [private] |
A magic number used to verify validity of this header.
HoardSuperblock<LockType, SuperblockSize, HeapType>* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_next [private] |
The succeeding superblock in a linked list.
int Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_objectsFree [private] |
The number of objects available for (re)use.
const size_t Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_objectSize [private] |
The object size.
const bool Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_objectSizeIsPowerOfTwo [private] |
True iff size is a power of two.
HeapType* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_owner [private] |
The owner of this superblock.
char* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_position [private] |
The cursor into the buffer following the header.
HoardSuperblock<LockType, SuperblockSize, HeapType>* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_prev [private] |
The preceding superblock in a linked list.
int Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_reapableObjects [private] |
The number of objects available to be 'reap'ed.
char* Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_start [private] |
The start of reap allocation.
LockType Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_theLock [private] |
The lock.
const int Hoard::HoardSuperblockHeader< LockType, SuperblockSize, HeapType >::_totalObjects [private] |
Total objects in the superblock.