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_ */