Kaynağa Gözat

[da.h] Adding macro to define da

Vinicius Teshima 1 yıl önce
ebeveyn
işleme
afe4610cd1
1 değiştirilmiş dosya ile 15 ekleme ve 1 silme
  1. 15 1
      include/toolbox/da.h

+ 15 - 1
include/toolbox/da.h

@@ -3,6 +3,20 @@
 
 #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)			\
 	do {						\
 		da.cap = 16;				\
@@ -34,7 +48,7 @@
 #define DA_APPEND(da, item)						\
 	do {								\
 		if ( da.size == da.cap ) {				\
-			da.cap <<= 2;					\
+			da.cap *= 2;					\
 			da.items = realloc(da.items, da.cap * sizeof(*da.items)); \
 		}							\
 		da.items[da.size++] = item;				\