Nugget
|
#include <fixed_pool.h>
Public Types | |
enum | { kBucketCount = bucketCount + 1 , kBucketsSize = bucketCount * sizeof(void*) , kNodeSize = nodeSize , kNodeCount = nodeCount , kNodesSize = nodeCount * nodeSize , kBufferSize = kNodesSize + ((nodeAlignment > 1) ? nodeSize-1 : 0) + nodeAlignmentOffset , kNodeAlignment = nodeAlignment , kNodeAlignmentOffset = nodeAlignmentOffset , kAllocFlagBuckets = 0x00400000 } |
typedef type_select< bEnableOverflow, fixed_pool_with_overflow< OverflowAllocator >, fixed_pool >::type | pool_type |
typedef fixed_hashtable_allocator< bucketCount, nodeSize, nodeCount, nodeAlignment, nodeAlignmentOffset, bEnableOverflow, OverflowAllocator > | this_type |
typedef OverflowAllocator | overflow_allocator_type |
Public Member Functions | |
fixed_hashtable_allocator (void *pNodeBuffer) | |
fixed_hashtable_allocator (void *pNodeBuffer, const overflow_allocator_type &allocator) | |
fixed_hashtable_allocator (void *pNodeBuffer, void *pBucketBuffer) | |
fixed_hashtable_allocator (void *pNodeBuffer, void *pBucketBuffer, const overflow_allocator_type &allocator) | |
fixed_hashtable_allocator (const this_type &x) | |
fixed_hashtable_allocator & | operator= (const fixed_hashtable_allocator &x) |
void * | allocate (size_t n, int flags=0) |
void * | allocate (size_t n, size_t alignment, size_t offset, int flags=0) |
void | deallocate (void *p, size_t) |
bool | can_allocate () const |
void | reset (void *pNodeBuffer) |
const char * | get_name () const |
void | set_name (const char *pName) |
const overflow_allocator_type & | get_overflow_allocator () const |
overflow_allocator_type & | get_overflow_allocator () |
void | set_overflow_allocator (const overflow_allocator_type &allocator) |
void | copy_overflow_allocator (const this_type &x) |
Protected Attributes | |
pool_type | mPool |
void * | mpBucketBuffer |
Provides a base class for fixed hashtable allocations. To consider: Have this inherit from fixed_node_allocator.
Template parameters: bucketCount The fixed number of hashtable buckets to provide. nodeCount The number of objects the pool contains. nodeAlignment The alignment of the objects to allocate. nodeAlignmentOffset The alignment offset of the objects to allocate. bEnableOverflow Whether or not we should use the overflow heap if our object pool is exhausted. OverflowAllocator Overflow allocator, which is only used if bEnableOverflow == true. Defaults to the global heap.
|
inline |
Note that we are copying x.mpHead and mpBucketBuffer to our own fixed_pool. See the discussion above in fixed_node_allocator for important information about this.