All pastes #2063865 Raw Edit

Miscellany

public c v1 · immutable
#2063865 ·published 2011-05-18 19:39 UTC
rendered paste body
typedef 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);}