doorbell

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