rendered paste bodytypedef struct _vector { int numelem; int maxelem; void *elem[0];} VECTOR, *LPVECTOR;LPVECTOR VectorInit(unsigned int size) { LPVECTOR vect; vect = malloc(sizeof(VECTOR) + size * sizeof(void *)); vect->numelem = 0; vect->maxelem = size; return vect;}LPVECTOR VectorAdd(LPVECTOR vector, void *item) { if (!vector) vector = VectorInit(VECTOR_DEFAULT_SIZE); if (vector->numelem == vector->maxelem) { vector->maxelem <<= 1; vector = realloc(vector, vector->maxelem * sizeof(void *)); } vector->elem[vector->numelem] = item; vector->numelem++; return vector;}void VectorRemove(LPVECTOR vector, void *item) { int i, found = 0; if (!vector) return; for (i = 0; i != vector->numelem; i++) { if (found) vector->elem[i - 1] = vector->elem[i]; if (vector->elem[i] == item) { found = 1; vector->numelem--; } } #ifdef VECTOR_TRIM_ARRAYS if (vector->numelem < (vector->maxelem >> 2)) { vector->maxelem >>= 1; vector = realloc(vector, sizeof(VECTOR) + vector->maxelem * sizeof(void *)); } #endif}void VectorClear(LPVECTOR vector) { int i; if (!vector) return; for (i = 0; i != vector->numelem; i++) free(vector->elem[i]); vector->numelem = 0;}void VectorDelete(LPVECTOR vector) { int i; if (!vector) return; for (i = 0; i != vector->numelem; i++) free(vector->elem[i]); free(vector);}