14 #ifndef RESIZEARRAYRAW_H 15 #define RESIZEARRAYRAW_H 22 #if !(defined(__NVCC__) || defined(NAMD_NVCC) || defined(__HIPCC__)) 24 #define ResizeArrayGrowthFactor 1.5 25 #define ResizeArrayMinSize 8 41 unsigned char *varray;
49 void resizeRaw(
int size) {
50 if (size <= allocSize)
return;
70 unsigned char *tmpv =
new unsigned char[size*
sizeof(Elem)+63];
84 Elem *tmpa = (Elem *)(tmpv+63 - (((
long)(tmpv+63))&(63L)));
85 if (arraySize) memcpy((
void *)tmpa, (
void *)array,
sizeof(Elem)*arraySize);
87 if (allocSize)
delete[] varray;
99 inline int size(
void)
const {
return arraySize; }
100 inline Elem &operator[](
int index)
const {
return array[index]; }
104 inline int bufSize(
void)
const {
return allocSize; }
109 array((Elem *)0), varray((unsigned char *)0), arraySize(0), allocSize(0) { }
112 ResizeArrayRaw( Elem * *
const array,
int arraySize,
int allocSize) {
113 if (allocSize < arraySize) allocSize = arraySize;
114 this->allocSize = allocSize;
115 this->arraySize = arraySize;
116 varray = (
unsigned char *)*array;
117 this->array = (Elem *)*array;
126 resizeRaw(rar.size());
128 memcpy((
void*)array, (
void*)rar.array,
sizeof(Elem)*rar.size());
129 arraySize = rar.size();
135 void resize(
int size) {
138 if (size < arraySize) {
139 for (i=size; i<arraySize; i++) {
142 }
else if (size > arraySize) {
144 for (i=arraySize; i<size; i++) {
145 new ((
void *)&array[i]) Elem;
153 for (
int i=0; i < arraySize; i++) {
168 inline void del(
int index,
int number) {
171 for (
int i=index; i < index+number; i++) {
176 memmove((
void *)(array+index),
177 (
void *)(array+index+number),
178 (arraySize-number-index)*
sizeof(Elem));
189 inline void ins(
const Elem &e,
int index) {
191 if (index < arraySize) {
192 resizeRaw(arraySize+1);
194 memmove((
void *)(array+index+1),
195 (
void *)(array+index),
196 (arraySize-index)*
sizeof(Elem));
203 new((
void *)&array[index]) Elem;
207 if (index > arraySize) {
208 for (Elem *tmp = array+arraySize; tmp < array+index; tmp++) {
209 new ((
void *)tmp) Elem;
217 inline int find(
const Elem &e)
const {
218 for (
int i=0; i<arraySize; i++) {
219 if (array[i] == e)
return i;
226 #endif // RESIZEARRAYRAW_H
#define ResizeArrayMinSize
#define ResizeArrayGrowthFactor