X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fpokey%2Farray.c;fp=src%2Fpokey%2Farray.c;h=9946ad179a800c75e46946c562dc30d7ed26cf73;hb=04d33be4bd102de67bb6dba5c449e12fea0db4d2;hp=0000000000000000000000000000000000000000;hpb=b0a676988a8da3120e64ef0e1a4ea4c28b1511e1;p=tinc diff --git a/src/pokey/array.c b/src/pokey/array.c new file mode 100644 index 00000000..9946ad17 --- /dev/null +++ b/src/pokey/array.c @@ -0,0 +1,45 @@ +#include +#include + +#include "myalloc.h" +#include "array.h" + +void *array_add(array_t *array, void *element) +{ + if(!array) + return NULL; + + if(array->allocated == 0) + { + array->allocated = 4; + array->data = xcalloc(array->allocated, sizeof(void*)); + array->elements = 0; + } + + if(array->elements >= array->allocated - 1) + { + int newalloc; + + newalloc = array->allocated << 1; + array->data = xrealloc(array->data, newalloc * sizeof(void*)); + array->allocated = newalloc; + } + + array->data[array->elements] = element; + array->elements++; + return element; +} + +array_t *array_create(void) +{ + array_t *r; + + r = xcalloc(1, sizeof(*r)); + return r; +} + +void array_free(array_t *array) +{ + free(array->data); + free(array); +}