Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
vec: use vec_foreach internally
Baptiste Daroussin committed 1 year ago
commit 0ffde040f0cc82b2444bfe8a746dff608f6ce0c6
parent ccb44f3
1 file changed +18 -18
modified libpkg/pkg/vec.h
@@ -17,19 +17,22 @@
#define vec_init(v) \
	memset((v), 0, sizeof(*(v)))

+
#define vec_foreach(list, __i) \
+
	for (size_t __i = 0; __i < (list).len; __i++)
+

#define vec_free(v) \
	do { \
		free((v)->d); \
		memset((v), 0, sizeof(*(v))); \
	} while (0)

-
#define vec_free_and_free(v, free_func)            \
-
	do {                                          \
-
		for (size_t _i=0; _i < (v)->len ; _i++) { \
-
			free_func((v)->d[_i]);          \
-
			(v)->d[_i] = NULL;   \
-
		}                                     \
-
		vec_free((v)); \
+
#define vec_free_and_free(v, free_func)        \
+
	do {                                   \
+
		vec_foreach(*(v), _i) {        \
+
			free_func((v)->d[_i]); \
+
			(v)->d[_i] = NULL;     \
+
		}                              \
+
		vec_free((v));                 \
	} while(0)

#define vec_first(v) \
@@ -41,13 +44,13 @@
#define vec_clear(v) \
	(v)->len = 0

-
#define vec_clear_and_free(v, free_func) \
-
	do {                                          \
-
		for (size_t _i=0; _i < (v)->len ; _i++) { \
-
			free_func((v)->d[_i]);          \
-
			(v)->d[_i] = NULL;   \
-
		}                                     \
-
		(v)->len = 0;                            \
+
#define vec_clear_and_free(v, free_func)       \
+
	do {                                   \
+
		vec_foreach(*(v), _i) {        \
+
			free_func((v)->d[_i]); \
+
			(v)->d[_i] = NULL;     \
+
		}                              \
+
		(v)->len = 0;                  \
	} while (0)

#define vec_push(v, _d)                                            \
@@ -70,7 +73,7 @@
#define vec_remove_and_free(v, cnt, free_func) \
	do {                                                    \
		free_func((v)->d[cnt]);                         \
-
		for (size_t _i = cnt; i < (v)->len -1; _i++) {  \
+
		vec_foreach(*(v), _i) {                         \
			(v)->d[_i] = (v)->d[_i + 1];            \
		}                                               \
		(v)->len--;                                     \
@@ -79,9 +82,6 @@
#define vec_len(v) \
	(v)->len

-
#define vec_foreach(list, __i) \
-
	for (size_t __i = 0; __i < (list).len; __i++)
-

typedef vec_t(char *) charv_t;
typedef vec_t(const char *) c_charv_t;
#endif