| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #ifndef DA_H
- #define DA_H
- #include <stdlib.h>
- #define DA_CREATE(da, item_size) \
- do { \
- da.cap = 16; \
- da.size = 0; \
- da.items = calloc(da.cap, item_size); \
- } while(0)
- #define DA_DESTROY(da) \
- do { \
- free(da.items); \
- } while(0)
- #define DA_CLEAR(da) \
- do { \
- da.size = 0; \
- } while(0)
- #define DA_DELETE(da, index) \
- do { \
- if ( index > da.size ) { \
- break; \
- } \
- for ( size_t i = index; i < da.size - 1; ++i ) { \
- da.items[i] = da.items[i+1]; \
- } \
- --da.size; \
- } while(0)
- #define DA_APPEND(da, item) \
- do { \
- if ( da.size == da.cap ) { \
- da.cap <<= 2; \
- da.items = realloc(da.items, da.cap * sizeof(*da.items)); \
- } \
- da.items[da.size++] = item; \
- } while(0)
- #endif
|