21#ifndef Minisat_Alloc_h
22#define Minisat_Alloc_h
50 explicit RegionAllocator(
uint32_t start_cap = 1024*1024) : memory(NULL), sz(0), cap(0), wasted_(0){ capacity(start_cap); }
69 const T*
lea (
Ref r)
const {
assert(r >= 0 && r < sz);
return &memory[r]; }
70 Ref ael (
const T* t) {
assert((
void*)t >= (
void*)&memory[0] && (
void*)t < (
void*)&memory[sz-1]);
71 return (
Ref)(t - &memory[0]); }
74 if (to.memory != NULL)
::free(to.memory);
81 sz = cap = wasted_ = 0;
88void RegionAllocator<T>::capacity(
uint32_t min_cap)
90 if (cap >= min_cap)
return;
93 while (cap < min_cap){
98 uint32_t delta = ((cap >> 1) + (cap >> 3) + 2) & ~1;
105 throw OutOfMemoryException();
111 memory = (T*)xrealloc(memory,
sizeof(T)*cap);
#define ABC_NAMESPACE_CXX_HEADER_START
#define ABC_NAMESPACE_CXX_HEADER_END
void moveTo(RegionAllocator &to)
const T & operator[](Ref r) const
RegionAllocator(uint32_t start_cap=1024 *1024)
const T * lea(Ref r) const