4 #include <rudiments/private/rudimentsinlines.h>
5 #include <rudiments/private/new.h>
7 template<
class valuetype >
8 RUDIMENTS_TEMPLATE_INLINE
13 template<
class valuetype >
14 RUDIMENTS_TEMPLATE_INLINE
17 init((initialsize)?initialsize:128,(increment)?increment:32);
20 template<
class valuetype >
21 RUDIMENTS_TEMPLATE_INLINE
23 init(v.initial,v.extsize);
27 template<
class valuetype >
28 RUDIMENTS_TEMPLATE_INLINE
33 init(v.initial,v.extsize);
39 template<
class valuetype >
40 RUDIMENTS_TEMPLATE_INLINE
48 curext=extents.getFirst();
52 template<
class valuetype >
53 RUDIMENTS_TEMPLATE_INLINE
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 >
94 RUDIMENTS_TEMPLATE_INLINE
99 template<
class valuetype >
100 RUDIMENTS_TEMPLATE_INLINE
109 template<
class valuetype >
110 RUDIMENTS_TEMPLATE_INLINE
115 template<
class valuetype >
116 RUDIMENTS_TEMPLATE_INLINE
118 uint64_t inc=(extents.getLength())?extsize:initial;
119 while (this->size<size) {
120 valuetype *newext=
new valuetype[inc];
121 extents.append(newext);
122 this->size=this->size+inc;
127 template<
class valuetype >
128 RUDIMENTS_TEMPLATE_INLINE
135 curext=extents.getFirst();
139 uint64_t targetind=(index-initial+extsize)/extsize;
140 while (curind!=targetind) {
141 if (curind>targetind) {
142 curext=curext->getPrevious();
145 curext=curext->getNext();
149 eind=initial+extsize*(curind-1);
153 return curext->getValue()[index-eind];
156 template<
class valuetype >
157 RUDIMENTS_TEMPLATE_INLINE
159 curext=extents.getFirst();
162 valuetype *ext=curext->getValue();
164 extents.remove(curext);
169 template<
class valuetype >
170 RUDIMENTS_TEMPLATE_INLINE
174 curext=extents.getLast();
175 while (curext!=extents.getFirst()) {
177 valuetype *ext=curext->getValue();
179 extents.remove(curext);
184 valuetype *ext=curext->getValue();
185 for (uint64_t i=0; i<initial; i++) {
187 new(&(ext[i])) valuetype;
~dynamicarray()
Definition: dynamicarrayinlines.h:95
uint64_t getLength() const
Definition: dynamicarrayinlines.h:111
dynamicarray< valuetype > & operator=(const dynamicarray< valuetype > &v)
Definition: dynamicarrayinlines.h:29
Definition: linkedlist.h:11
valuetype & operator[](uint64_t index)
Definition: dynamicarrayinlines.h:101
Definition: dynamicarray.h:40
void clear()
Definition: dynamicarrayinlines.h:171
dynamicarray()
Definition: dynamicarrayinlines.h:9