metaballs effect
[dosdemo] / src / dynarr.h
1 /* dynarr - dynamic resizable C array data structure
2  * author: John Tsiombikas <nuclear@member.fsf.org>
3  * license: public domain
4  */
5 #ifndef DYNARR_H_
6 #define DYNARR_H_
7
8 void *dynarr_alloc(int elem, int szelem);
9 void dynarr_free(void *da);
10 void *dynarr_resize(void *da, int elem);
11
12 int dynarr_empty(void *da);
13 int dynarr_size(void *da);
14
15 /* stack semantics */
16 void *dynarr_push(void *da, void *item);
17 void *dynarr_pop(void *da);
18
19
20 /* usage example:
21  * -------------
22  * int *arr = dynarr_alloc(0, sizeof *arr);
23  *
24  * int x = 10;
25  * arr = dynarr_push(arr, &x);
26  * x = 5;
27  * arr = dynarr_push(arr, &x);
28  * x = 42;
29  * arr = dynarr_push(arr, &x);
30  *
31  * for(i=0; i<dynarr_size(arr); i++) {
32  *     printf("%d\n", arr[i]);
33  *  }
34  *  dynarr_free(arr);
35  */
36
37
38 #endif  /* DYNARR_H_ */