#ifndef GAP_H #define GAP_H typedef struct gap_array gap_array; gap_array* gap_init(int len); static void* gap_get(gap_array* gap, int index); static int gap_set(gap_array* gap, int index, void* ptr); void gap_destroy(gap_array* gap); int gap_remove_ptr(gap_array* gap, void* ptr, int len); /* Private declarations to allow inlining. * Don't assume my implementation. */ typedef struct gap_array { int len; /* Number of elements in array */ void** array; } gap_array; int gap_extend(gap_array* gap); static inline int __attribute__((unused)) gap_set(gap_array* gap, int index, void* ptr) { while (index >= gap->len) { int res = gap_extend(gap); if (res == -1) return -1; } gap->array[index] = ptr; return 0; } static inline void* __attribute__((unused)) gap_get(gap_array* gap, int index) { return gap->array[index]; } #endif