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