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;
+}