|
@@ -3,6 +3,20 @@
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
|
|
+#define DA_DEF_STRUCT(type, name) \
|
|
|
|
|
+ struct name { \
|
|
|
|
|
+ type *items; \
|
|
|
|
|
+ size_t size; \
|
|
|
|
|
+ size_t cap; \
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+#define DA_DEF_STRUCT_ITEM(type, name) \
|
|
|
|
|
+ struct { \
|
|
|
|
|
+ type *items; \
|
|
|
|
|
+ size_t size; \
|
|
|
|
|
+ size_t cap; \
|
|
|
|
|
+ } name
|
|
|
|
|
+
|
|
|
#define DA_CREATE(da, item_size) \
|
|
#define DA_CREATE(da, item_size) \
|
|
|
do { \
|
|
do { \
|
|
|
da.cap = 16; \
|
|
da.cap = 16; \
|
|
@@ -34,7 +48,7 @@
|
|
|
#define DA_APPEND(da, item) \
|
|
#define DA_APPEND(da, item) \
|
|
|
do { \
|
|
do { \
|
|
|
if ( da.size == da.cap ) { \
|
|
if ( da.size == da.cap ) { \
|
|
|
- da.cap <<= 2; \
|
|
|
|
|
|
|
+ da.cap *= 2; \
|
|
|
da.items = realloc(da.items, da.cap * sizeof(*da.items)); \
|
|
da.items = realloc(da.items, da.cap * sizeof(*da.items)); \
|
|
|
} \
|
|
} \
|
|
|
da.items[da.size++] = item; \
|
|
da.items[da.size++] = item; \
|