/*****************************************************************************\
* *
* Koala's C-Lists *
* Implementation *
* *
\*****************************************************************************/
/* Copyright (c) 1996 Colas Nahaboo, http://www.inria.fr/koala/colas */
/* a KCList is a simple implementaion of dynamic lists in C, array style
*/
#include "kclist.h"
KCList
KCListNew()
{
KCList kclist = (KCList) malloc(sizeof(struct _KCList));
kclist->size = 0;
kclist->list = (void **) malloc(1);
return kclist;
}
KCList
KCListNewN(size)
int size;
{
KCList kclist = (KCList) malloc(sizeof(struct _KCList));
kclist->size = size;
kclist->list = (void **) malloc(size *sizeof(void *));
return kclist;
}
void
KCListFree(kclist)
KCList kclist;
{
free(kclist->list);
free(kclist);
}
void
KCListFreeWithElements(kclist)
KCList kclist;
{
void **ptr = kclist->list;
void **end = ptr + kclist->size;
while (ptr < end)
free(*ptr++);
KCListFree(kclist);
}
void
KCListFreeWithElementsOrNulls(kclist)
KCList kclist;
{
void **ptr = kclist->list;
void **end = ptr + kclist->size;
while (ptr < end) {
if (*ptr)
free(*ptr);
ptr++;
}
KCListFree(kclist);
}
unsigned int
KCListAppend(kclist, element)
KCList kclist;
void *element;
{
kclist->list = (void **) realloc(kclist->list,
++(kclist->size) * sizeof(void *));
kclist->list[kclist->size - 1] = element;
return kclist->size;
}
syntax highlighted by Code2HTML, v. 0.9.1