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>
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.
Base * next(void) const
Return next test.
Support algorithms and datastructures
Gecode toplevel namespace
IntPropLevel ba(IntPropLevel ipl)
Extract basic or advanced from propagation level.