20 #ifndef HL_OBSTACKHEAP_H 21 #define HL_OBSTACKHEAP_H 30 template <
int ChunkSize,
class SuperHeap>
43 m_chkSize = ChunkSize;
66 inline void reset (
const int chkSize)
80 inline void *
grow (
size_t sz) {
86 if (newCurrent ==
NULL)
90 if (deleteChunk !=
NULL) {
91 SuperHeap::free (deleteChunk);
136 inline void free (
void * ptr) {
145 SuperHeap::free (pch);
196 bool c3 = ((
char *) currentChunk <= currentChunk->getLimit());
204 return (c1 && c2 && c3 && c4 && c5 && c6);
214 :
_pastEnd ((char *) (this + 1) + sz),
238 void * ptr = SuperHeap::malloc (
sizeof(
ChunkHeader) + allocSize);
252 size_t new_size = obj_size + sz + (obj_size >> 3) + 100;
269 if (newChunk ==
NULL) {
274 memcpy ((
char *) (newChunk + 1),
currentBase, obj_size);
279 if (deleteChunk !=
NULL) {
280 SuperHeap::free (deleteChunk);
ChunkHeader * currentChunk
void reset(const int chkSize)
ChunkHeader * copyToNew(size_t sz)
ChunkHeader * makeChunk(ChunkHeader *ch, size_t sz)