#include <ResizeArrayRaw.h>
Public Member Functions | |
| int | size (void) const |
| Elem & | operator[] (int index) const |
| ResizeArrayRaw (void) | |
| ResizeArrayRaw (const ResizeArrayRaw< Elem > &rar) | |
| ResizeArrayRaw (Elem **const array, int arraySize, int allocSize) | |
| ~ResizeArrayRaw (void) | |
| void | setResizeParams (int min, float growth) |
| ResizeArrayRaw< Elem > & | operator= (const ResizeArrayRaw< Elem > &rar) |
| void | resize (int size) |
| int | del (int index, int number) |
| void | ins (const Elem &e, int index) |
| int | find (const Elem &e) |
Friends | |
| class | ResizeArray<Elem> |
| class | SortableResizeArray<Elem> |
| class | ResizeArrayIter<Elem> |
|
||||||||||
|
Definition at line 84 of file ResizeArrayRaw.h. 00084 : 00085 array((Elem *)0), varray((unsigned char *)0), arraySize(0), allocSize(0) { 00086 growthFactor = GrowthFactor; 00087 minSize = MinSize; 00088 }
|
|
||||||||||
|
Definition at line 91 of file ResizeArrayRaw.h. 00091 : 00092 array((Elem *)0), varray((unsigned char *)0), arraySize(0), allocSize(0) { 00093 growthFactor = rar.growthFactor; 00094 minSize = rar.minSize; 00095 // We want rar.size() slots, but no constructor run on the elements 00096 resizeRaw(rar.size()); 00097 CmiMemcpy((void*)array, (void*)rar.array, sizeof(Elem)*rar.size()); 00098 arraySize = rar.size(); 00099 }
|
|
||||||||||||||||||||
|
Definition at line 102 of file ResizeArrayRaw.h. 00102 {
00103 if (allocSize < arraySize) allocSize = arraySize;
00104 this->allocSize = allocSize;
00105 this->arraySize = arraySize;
00106 varray = (unsigned char *)*array;
00107 this->array = (Elem *)*array;
00108 *array = 0;
00109 growthFactor = GrowthFactor;
00110 minSize = MinSize;
00111 }
|
|
||||||||||
|
Definition at line 113 of file ResizeArrayRaw.h. 00113 {
00114 for (int i=0; i < size(); i++) {
00115 array[i].~Elem();
00116 }
00117 delete[] varray;
00118 }
|
|
||||||||||||||||
|
Definition at line 161 of file ResizeArrayRaw.h. Referenced by ResizeArray< AngleElem >::del(). 00161 {
00162 int i;
00163
00164 // Fix up number to delete if deletes off end of array
00165 if (index >= arraySize)
00166 number=0; // for inline sake, don't have multiple returns
00167 else if (index+number-1 > arraySize) {
00168 number = index-arraySize+1;
00169 }
00170
00171 // Destruct objects to be deleted
00172 for (i=index; i < index+number; i++) {
00173 array[i].~Elem();
00174 }
00175
00176 // Shift down
00177 memmove((void *)(array+index),
00178 (void *)(array+index+number),
00179 (arraySize-number-index)*sizeof(Elem));
00180
00181 // fixup size of array
00182 arraySize -= number;
00183 return(number);
00184 }
|
|
||||||||||
|
Definition at line 217 of file ResizeArrayRaw.h. Referenced by ResizeArray< AngleElem >::find(). 00217 {
00218 for (int i=0; i<arraySize; i++)
00219 if (array[i] == e) return i;
00220 return -1;
00221 }
|
|
||||||||||||||||
|
Definition at line 190 of file ResizeArrayRaw.h. Referenced by ResizeArray< AngleElem >::add(), and ResizeArray< AngleElem >::insert(). 00190 {
00191 // Size array depending if index is in current array or reaches beyond.
00192 if (index < arraySize) {
00193 resizeRaw(arraySize+1);
00194 // Shift up
00195 memmove((void *)(array+index+1),
00196 (void *)(array+index),
00197 (arraySize-index)*sizeof(Elem));
00198 } else {
00199 resizeRaw(index+1);
00200 }
00201
00202 // Write in new element via assignment - allows any refcounting
00203 // etc. to take place correctly!
00204 new((void *)&array[index]) Elem;
00205 array[index] = e;
00206
00207 // Take care of fill and setting correct arraySize
00208 if (index > arraySize) {
00209 for (Elem *tmp = array+arraySize; tmp < array+index; tmp++) {
00210 new ((void *)tmp) Elem;
00211 }
00212 arraySize = index+1;
00213 } else
00214 arraySize++;
00215 }
|
|
||||||||||
|
Definition at line 129 of file ResizeArrayRaw.h. 00129 {
00130 growthFactor = rar.growthFactor;
00131 minSize = rar.minSize;
00132
00133 // Clean up this array
00134 resize(0);
00135 resizeRaw(rar.size());
00136
00137 CmiMemcpy((void*)array, (void*)rar.array, sizeof(Elem)*rar.size());
00138 arraySize = rar.size();
00139 return *this;
00140 }
|
|
||||||||||
|
Definition at line 81 of file ResizeArrayRaw.h. 00081 { return array[index]; }
|
|
||||||||||
|
Definition at line 145 of file ResizeArrayRaw.h. Referenced by ResizeArray< AngleElem >::resize(), and ResizeArray< AngleElem >::ResizeArray(). 00145 {
00146 int i;
00147
00148 if (size < arraySize) {
00149 for (i=size; i<arraySize; i++) {
00150 array[i].~Elem();
00151 }
00152 } else if (size > arraySize) {
00153 resizeRaw(size);
00154 for (i=arraySize; i<size; i++) {
00155 new ((void *)&array[i]) Elem;
00156 }
00157 }
00158 arraySize = size;
00159 }
|
|
||||||||||||||||
|
Definition at line 122 of file ResizeArrayRaw.h. 00122 {
00123 minSize = min;
00124 growthFactor = growth;
00125 }
|
|
||||||||||
|
Definition at line 80 of file ResizeArrayRaw.h. Referenced by ResizeArray< AngleElem >::add(), ResizeArrayRaw< AngleElem >::operator=(), ResizeArrayRaw< AngleElem >::ResizeArrayRaw(), and ResizeArray< AngleElem >::size(). 00080 { return arraySize; }
|
|
|||||
|
Definition at line 76 of file ResizeArrayRaw.h. |
|
|||||
|
Definition at line 78 of file ResizeArrayRaw.h. |
|
|||||
|
Definition at line 77 of file ResizeArrayRaw.h. |
1.3.9.1