44 template<
class T,
class A,
int blocksize = 512>
83 template<
class T,
class A,
int blocksize = 512>
91 static void operator delete(
void*);
96 template<
class T,
class A,
int blocksize>
99 b =
static_cast<Block*
>(a.ralloc(
sizeof(Block)));
101 n = &b->b[blocksize];
102 _size =
sizeof(Block);
105 template<
class T,
class A,
int blocksize>
108 while (b !=
nullptr) {
109 Block* f = b; b = b->next;
110 a.rfree(f,
sizeof(Block));
114 template<
class T,
class A,
int blocksize>
120 template<
class T,
class A,
int blocksize>
129 template<
class T,
class A,
int blocksize>
131 BlockAllocator<T,A,blocksize>::allocate(
void) {
133 Block* nb =
static_cast<Block*
>(a.ralloc(
sizeof(Block)));
134 nb->next = b; b = nb;
135 n = &nb->b[blocksize];
136 _size +=
sizeof(Block);
139 template<
class T,
class A,
int blocksize>
147 template<
class T,
class A,
int blocksize>
152 template<
class T,
class A,
int blocksize>
156 template<
class T,
class A,
int blocksize>
Manage memory organized into block lists (allocator).
A & allocator(void)
Return allocator used.
~BlockAllocator(void)
Free all allocated blocks.
size_t size(void) const
Return size of memory required by allocator.
BlockAllocator(A &a)
Initialize.
T * operator()(void)
Return memory of size required by T.
Client for block allocator of type T.
Support algorithms and datastructures
Gecode toplevel namespace
IntPropLevel ba(IntPropLevel ipl)
Extract basic or advanced from propagation level.