34 KF_IVector(
int p_ownselements,TYPE ** newdata,
int newsize,
35 int newindexoffset,
int newminimum,
int newmaximum,
37 :
KF_Vector<TYPE *>(NULL,newdata,newsize,newindexoffset,newminimum,newmaximum,
51 assert( index >= this->
minimum );
52 assert( index <= this->
maximum );
86 for (i=0;i<this->memsize;i++)
88 if (this->data[i] != NULL)
90 assert( i+this->indexoffset >= this->minimum);
91 assert( i+this->indexoffset <= this->maximum);
105 template <
class TYPE>
109 if (index < this->minimum)
return;
110 if (index > this->maximum)
return;
112 int mymemindex = index - this->indexoffset;
114 int newmin = INT_MAX;
115 int newmax = INT_MIN;
117 int newsize = this->maximum - index;
122 int newindexoffset = 10;
124 TYPE **newdata = (TYPE **) malloc((newsize + 2*newindexoffset ) *
sizeof( TYPE *) );
128 for (i=0;i<newindexoffset;i++)
130 newdata[i] = this->noelement;
132 for (i=newindexoffset;i<newsize+newindexoffset;i++)
134 newdata[i] = (TYPE *) this->data[mymemindex + 1 + i - newindexoffset] ;
135 if (newdata[i] != this->noelement)
137 int tmpindex = mymemindex + this->indexoffset + i - newindexoffset;
138 if (tmpindex < newmin)
140 if (tmpindex > newmax)
144 this->data[mymemindex + 1 + i - newindexoffset] = this->noelement;
147 for (i=newsize+newindexoffset;i<newsize+2*newindexoffset;i++)
149 newdata[i] = this->noelement;
156 assert(newcount == 0);
162 newmin - newindexoffset,newmin, newmax, newcount);
166 this->count = this->count - newcount;
167 if (this->count == 0)
174 int newmaximum = index;
175 while (newmaximum >= this->minimum &&
176 this->data[newmaximum - this->indexoffset] == this->noelement)
178 this->maximum = newmaximum;
192 template <
class TYPE>
196 if (index < this->minimum)
return;
197 if (index > this->maximum)
return;
199 int mymemindex = this->minimum - this->indexoffset;
201 int newmin = INT_MAX;
202 int newmax = INT_MIN;
203 int newsize = index - this->minimum + 1;
208 int newindexoffset = 10;
210 TYPE **newdata = (TYPE **) malloc((newsize + 2*newindexoffset ) *
sizeof( TYPE *) );
214 for (i=0;i<newindexoffset;i++)
216 newdata[i] = this->noelement;
218 for (i=newindexoffset;i<newsize+newindexoffset;i++)
220 newdata[i] = (TYPE *) this->data[mymemindex + i - newindexoffset] ;
221 if (newdata[i] != this->noelement)
223 int tmpindex = mymemindex + this->indexoffset + i - newindexoffset;
224 if (tmpindex < newmin)
226 if (tmpindex > newmax)
229 this->data[mymemindex + i - newindexoffset] = this->noelement;
232 for (i=newsize+newindexoffset;i<newsize+2*newindexoffset;i++)
234 newdata[i] = this->noelement;
241 assert(newcount == 0);
245 newmin - newindexoffset,newmin,newmax,newcount);
251 this->count = this->count - newcount;
252 if (this->count == 0)
260 int newminimum = index + 1;
261 while (newminimum <= this->maximum &&
262 this->data[newminimum - this->indexoffset] == this->noelement)
264 this->minimum = newminimum;