Mercurial > ~dholland > hg > ag > index.cgi
diff help2html/array.h @ 0:13d2b8934445
Import AnaGram (near-)release tree into Mercurial.
author | David A. Holland |
---|---|
date | Sat, 22 Dec 2007 17:52:45 -0500 |
parents | |
children | 60b08b68c750 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/help2html/array.h Sat Dec 22 17:52:45 2007 -0500 @@ -0,0 +1,38 @@ +#include <assert.h> + +/* treat as opaque */ +struct array { + void **v; + unsigned num, max; +}; + +struct array *array_create(void); +void array_init(struct array *a); +void array_cleanup(struct array *a); +void array_destroy(struct array *a); + +unsigned array_num(const struct array *a); +void *array_get(const struct array *a, unsigned ix); +void array_set(struct array *a, unsigned ix, void *ptr); +unsigned array_add(struct array *a, void *ptr); +void array_setsize(struct array *a, unsigned newsize); + +/* compact, removing any null elements */ +void array_nonulls(struct array *a); + +/* x and y are pointers that were placed in the array */ +void array_sort(struct array *a, int (*f)(void *x, void *y)); + +extern inline unsigned array_num(const struct array *a) { + return a->num; +} + +extern inline void *array_get(const struct array *a, unsigned ix) { + assert(ix < a->num); + return a->v[ix]; +} + +extern inline void array_set(struct array *a, unsigned ix, void *ptr) { + assert(ix < a->num); + a->v[ix] = ptr; +}