36 #ifndef ARRAYREUSE_OBJECT_H
37 #define ARRAYREUSE_OBJECT_H
83 int arraysAddedPerAlloc;
89 int initArraysAddedPerAlloc;
117 store.push_back(
new T [count * arrayLength]);
118 for (
int i = 0; i < count; ++i)
119 refStore.push_back(&store.back()[i * arrayLength]);
121 allocArrays += count;
130 for (
int i = 0; i < (int) store.size(); ++i)
delete [] store[i];
156 initialize(alngth, acnt, acnt, 8, acnt + acnt);
176 initialize(alngth, iacnt, acnt, 8, iacnt + acnt);
201 int rsrvstr,
int rsrvrefstr)
203 initialize(alngth, iacnt, acnt, rsrvstr, rsrvrefstr);
218 if (refStore.size() == 0) add(arraysAddedPerAlloc);
220 T* a = refStore.back();
242 for (
int i = 0; i < (int) store.size(); ++i)
244 j < ((i == 0) ? initArraysAddedPerAlloc : arraysAddedPerAlloc); ++j)
246 refStore.push_back(&store[i][j * arrayLength]);
254 void resetIfRequired()
256 if ((
int) refStore.size() != allocArrays) reset();
274 void initialize(
int alngth,
int acnt)
276 initialize(alngth, acnt, acnt, 8, acnt + acnt);
296 void initialize(
int alngth,
int iacnt,
int acnt)
298 initialize(alngth, iacnt, acnt, 8, iacnt + acnt);
322 void initialize(
int alngth,
int iacnt,
int acnt,
323 int rsrvstr,
int rsrvrefstr)
331 arrayLength = alngth;
332 arraysAddedPerAlloc = acnt;
333 initArraysAddedPerAlloc = iacnt;
334 store.reserve(rsrvstr);
335 refStore.reserve(rsrvrefstr);
349 int getUsedArrayCount()
const
351 return allocArrays - (int) refStore.size();
358 int getUnusedArrayCount()
const
360 return (
int) refStore.size();
373 #endif // ARRAYREUSE_OBJECT_H