doorbell
diff doorbelld/src/dynarr.h @ 2:d3f2a2b19504
doorbell server under construction
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sun, 13 Mar 2016 07:56:03 +0200 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/doorbelld/src/dynarr.h Sun Mar 13 07:56:03 2016 +0200 1.3 @@ -0,0 +1,38 @@ 1.4 +/* dynarr - dynamic resizable C array data structure 1.5 + * author: John Tsiombikas <nuclear@member.fsf.org> 1.6 + * license: public domain 1.7 + */ 1.8 +#ifndef DYNARR_H_ 1.9 +#define DYNARR_H_ 1.10 + 1.11 +void *dynarr_alloc(int elem, int szelem); 1.12 +void dynarr_free(void *da); 1.13 +void *dynarr_resize(void *da, int elem); 1.14 + 1.15 +int dynarr_empty(void *da); 1.16 +int dynarr_size(void *da); 1.17 + 1.18 +/* stack semantics */ 1.19 +void *dynarr_push(void *da, void *item); 1.20 +void *dynarr_pop(void *da); 1.21 + 1.22 + 1.23 +/* usage example: 1.24 + * ------------- 1.25 + * int *arr = dynarr_alloc(0, sizeof *arr); 1.26 + * 1.27 + * int x = 10; 1.28 + * arr = dynarr_push(arr, &x); 1.29 + * x = 5; 1.30 + * arr = dynarr_push(arr, &x); 1.31 + * x = 42; 1.32 + * arr = dynarr_push(arr, &x); 1.33 + * 1.34 + * for(i=0; i<dynarr_size(arr); i++) { 1.35 + * printf("%d\n", arr[i]); 1.36 + * } 1.37 + * dynarr_free(arr); 1.38 + */ 1.39 + 1.40 + 1.41 +#endif /* DYNARR_H_ */