4 #include <rudiments/private/new.h>
6 template<
class valuetype >
12 template<
class valuetype >
15 uint64_t incrementlength) {
16 init((initiallength)?initiallength:128,
17 (incrementlength)?incrementlength:32);
20 template<
class valuetype >
23 init(v.initial,v.extlength);
27 template<
class valuetype >
33 init(v.initial,v.extlength);
39 template<
class valuetype >
42 uint64_t incrementlength) {
45 initial=initiallength;
46 extlength=incrementlength;
47 extend(initiallength);
48 curext=extents.getFirst();
52 template<
class valuetype >
64 extlength=v.extlength;
67 for (uint64_t i=0; i<v.
getLength(); i++) {
87 curext=extents.getFirst();
88 for (uint64_t eind=0; eind<curind; eind++) {
89 curext=curext->getNext();
93 template<
class valuetype >
99 template<
class valuetype >
109 template<
class valuetype >
115 template<
class valuetype >
121 template<
class valuetype >
127 template<
class valuetype >
130 uint64_t inc=(extents.getLength())?extlength:initial;
131 while (this->length<length) {
132 valuetype *newext=
new valuetype[inc];
133 extents.append(newext);
134 this->length=this->length+inc;
139 template<
class valuetype >
147 curext=extents.getFirst();
151 uint64_t targetind=(index-initial+extlength)/extlength;
152 while (curind>targetind) {
153 curext=curext->getPrevious();
156 while (curind<targetind) {
157 curext=curext->getNext();
160 eind=initial+extlength*(curind-1);
164 return curext->getValue()[index-eind];
167 template<
class valuetype >
170 curext=extents.getFirst();
173 valuetype *ext=curext->getValue();
175 extents.remove(curext);
180 template<
class valuetype >
183 clear(initial,extlength);
186 template<
class valuetype >
189 uint64_t incrementlength) {
192 curext=extents.getLast();
193 while (curext!=extents.getFirst()) {
195 valuetype *ext=curext->getValue();
197 extents.remove(curext);
202 initial=initiallength;
203 extlength=incrementlength;
206 valuetype *ext=curext->getValue();
207 for (uint64_t i=0; i<initial; i++) {
209 new(&(ext[i])) valuetype;
Definition: dynamicarray.h:40
dynamicarray()
Definition: dynamicarrayinlines.h:8
uint64_t getLength() const
Definition: dynamicarrayinlines.h:123
void clear()
Definition: dynamicarrayinlines.h:182
~dynamicarray()
Definition: dynamicarrayinlines.h:95
dynamicarray< valuetype > & operator=(const dynamicarray< valuetype > &v)
Definition: dynamicarrayinlines.h:29
valuetype & operator[](uint64_t index)
Definition: dynamicarrayinlines.h:101
Definition: linkedlist.h:11