X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fdynarr.h;fp=src%2Fdynarr.h;h=e5283054f1ea714bd466b64be00f2f47f1501b4f;hb=134c9e63e9a7602cd2e0a3c05557edb0c9753c74;hp=0000000000000000000000000000000000000000;hpb=157a4056159e45cd61e9427e126807aaa8bd3d9a;p=dosdemo diff --git a/src/dynarr.h b/src/dynarr.h new file mode 100644 index 0000000..e528305 --- /dev/null +++ b/src/dynarr.h @@ -0,0 +1,38 @@ +/* dynarr - dynamic resizable C array data structure + * author: John Tsiombikas + * license: public domain + */ +#ifndef DYNARR_H_ +#define DYNARR_H_ + +void *dynarr_alloc(int elem, int szelem); +void dynarr_free(void *da); +void *dynarr_resize(void *da, int elem); + +int dynarr_empty(void *da); +int dynarr_size(void *da); + +/* stack semantics */ +void *dynarr_push(void *da, void *item); +void *dynarr_pop(void *da); + + +/* usage example: + * ------------- + * int *arr = dynarr_alloc(0, sizeof *arr); + * + * int x = 10; + * arr = dynarr_push(arr, &x); + * x = 5; + * arr = dynarr_push(arr, &x); + * x = 42; + * arr = dynarr_push(arr, &x); + * + * for(i=0; i