68 } APG_VECTOR_EXPORT_HDR;
83 void* vpReturn = NULL;
84 APG_VECTOR_CTX* spCtx;
92 spCtx = (APG_VECTOR_CTX*)
vpMemAlloc(vpMemCtx,
sizeof(APG_VECTOR_CTX));
96 memset((
void*)spCtx, 0,
sizeof(*spCtx));
97 spCtx->vpMemCtx = vpMemCtx;
98 spCtx->cpData = (
char*)
vpMemAlloc(vpMemCtx, uiElementSize * uiInitialAlloc);
107 spCtx->vpMemCtx = vpMemCtx;
108 spCtx->uiElementSize = uiElementSize;
109 spCtx->uiReserved = uiInitialAlloc;
112 spCtx->vpValidate = (
void*)spCtx;
113 vpReturn = (
void*)spCtx;
125 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
127 if(vpCtx && (spCtx->vpValidate == (
void*)spCtx))
130 spCtx->vpValidate = NULL;
131 vMemFree(spCtx->vpMemCtx, (
void*)spCtx->cpData);
132 vMemFree(spCtx->vpMemCtx, (
void*)spCtx);
143 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
144 return (spCtx && spCtx->vpValidate == (
void*)spCtx);
155 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
156 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
157 uiRet = spCtx->uiUsed * spCtx->uiElementSize;
170 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
171 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
172 uiRet = spCtx->uiUsed;
188 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
189 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
190 uiRet = spCtx->uiElementSize;
203 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
204 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
205 uiRet = spCtx->uiReallocations;
220 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
221 if(vpCtx && (spCtx->vpValidate == (
void*)spCtx))
240 void* vpReturn = NULL;
242 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
244 if(!(spCtx && spCtx->vpValidate == (
void*)spCtx)){
break;}
245 if(spCtx->uiUsed >= spCtx->uiReserved)
247 uiTest = uiGrow(spCtx, 1);
251 vpReturn = (
void*)(spCtx->cpData + (spCtx->uiUsed * spCtx->uiElementSize));
255 memcpy(vpReturn, vpElement, spCtx->uiElementSize);
278 void* vpReturn = NULL;
280 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
282 if(!(spCtx && spCtx->vpValidate == (
void*)spCtx)){
break;}
287 if((spCtx->uiUsed + uiCount) > spCtx->uiReserved)
289 uiTest = uiGrow(spCtx, uiCount);
293 vpReturn = (
void*)(spCtx->cpData + (spCtx->uiUsed * spCtx->uiElementSize));
297 memcpy(vpReturn, vpElement, uiCount * spCtx->uiElementSize);
299 spCtx->uiUsed += uiCount;
317 void* vpReturn = NULL;
318 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
319 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
324 vpReturn = (
void*)(spCtx->cpData + (spCtx->uiUsed * spCtx->uiElementSize));
343 void* vpReturn = NULL;
344 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
345 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
347 if(spCtx->uiUsed > 0){
348 if(spCtx->uiUsed > uiCount)
351 spCtx->uiUsed -= uiCount;
352 vpReturn = (
void*)(spCtx->cpData + (spCtx->uiUsed * spCtx->uiElementSize));
358 vpReturn = spCtx->cpData;
378 void* vpReturn = NULL;
379 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
380 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
381 if(!(spCtx->uiUsed == 0 || uiIndex >= spCtx->uiUsed)){
384 spCtx->uiUsed = uiIndex;
385 vpReturn = (
void*)(spCtx->cpData + uiIndex);
398 void* vpReturn = NULL;
399 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
400 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
403 vpReturn = (
void*)spCtx->cpData;
416 void* vpReturn = NULL;
417 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
418 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
421 vpReturn = (
void*)(spCtx->cpData + (spCtx->uiUsed - 1) * spCtx->uiElementSize);
435 void* vpReturn = NULL;
436 APG_VECTOR_CTX* spCtx = (APG_VECTOR_CTX*)vpCtx;
437 if(spCtx && spCtx->vpValidate == (
void*)spCtx){
438 if(uiIndex < spCtx->uiUsed)
440 vpReturn = (
void*)(spCtx->cpData + (uiIndex * spCtx->uiElementSize));
471 uiReserved = 2 * (spCtx->uiReserved + uiElements);
472 vpNewData =
vpMemRealloc(spCtx->vpMemCtx, (
void*)spCtx->cpData, spCtx->uiElementSize * uiReserved);
475 spCtx->cpData = (
char*)vpNewData;
476 spCtx->uiReserved = uiReserved;
477 ++spCtx->uiReallocations;