aboutsummaryrefslogtreecommitdiff
path: root/array.h
diff options
context:
space:
mode:
authorRiley Beckett <rbeckettvt@gmail.com>2025-10-31 11:10:09 -0400
committerJack Jamison <jackqjamison@gmail.com>2025-11-06 19:45:03 -0500
commitbe810b73641073c12c0fcfb273508c235eca4b65 (patch)
tree3e1d0671adc1a94e27fb3239537e752e8cb10bd1 /array.h
parent34a6051bd2da964f1080bc40544341455c832707 (diff)
fix array_add_many and reindent things
Diffstat (limited to 'array.h')
-rw-r--r--array.h64
1 files changed, 33 insertions, 31 deletions
diff --git a/array.h b/array.h
index ad6ec06..edffedf 100644
--- a/array.h
+++ b/array.h
@@ -22,52 +22,54 @@ void* array_resize_(void* array, size_t item_size, size_t size);
#define array_size(array) (((array_info*)(array))[-1].size)
#define array_new(type, size) ((type*)(array_new_(sizeof(type), size)->array))
-#define array_free(array) do { \
- free(((array_info*)(array)) - 1); \
- (array) = NULL; \
+#define array_free(array) do { \
+ free(((array_info*)(array)) - 1); \
+ (array) = NULL; \
} while (0)
-#define array_erase(array, index) do { \
- for (int __i = (index); __i < array_size((array)) - 1; __i++) \
- (array)[__i] = (array)[__i + 1]; \
- ((array_info*)(array))[-1].size--; \
+#define array_erase(array, index) do { \
+ for (int __i = (index); __i < array_size((array)) - 1; __i++) \
+ (array)[__i] = (array)[__i + 1]; \
+ ((array_info*)(array))[-1].size--; \
} while(0)
-#define array_erase_range(array, startinc, endinc) do { \
- for (int __i = (startinc); __i < array_size((array)) - ((endinc) - (startinc) + 1); __i++) \
- (array)[__i] = (array)[__i + ((endinc) - (startinc) + 1)]; \
- ((array_info*)(array))[-1].size -= ((endinc) - (startinc) + 1); \
+#define array_erase_range(array, startinc, endinc) do { \
+ for (int __i = (startinc); __i < array_size((array)) - ((endinc) - (startinc) + 1); __i++) \
+ (array)[__i] = (array)[__i + ((endinc) - (startinc) + 1)]; \
+ ((array_info*)(array))[-1].size -= ((endinc) - (startinc) + 1); \
} while(0)
#define array_insert(array, index, value) do { \
+ size_t __idx = (index); \
void* __temp = array_resize_((array), sizeof(*(array)), array_size(array) + 1); \
(array) = __temp; \
- for (int __i = array_size((array)) - 1; __i > (index); __i--) \
+ for (int __i = array_size((array)) - 1; __i > (__idx); __i--) \
(array)[__i] = (array)[__i - 1]; \
- (array)[(index)] = value; \
+ (array)[(__idx)] = value; \
} while(0)
#define array_insert_many(array, index, values, len) do { \
+ size_t __idx = (index); \
void* __temp = array_resize_((array), sizeof(*(array)), array_size(array) + len); \
- (array) = __temp; \
- for (int __i = array_size((array)) - 1; __i > (index) + len - 1; __i--) \
+ (array) = __temp; \
+ for (int __i = array_size((array)) - 1; __i > (__idx) + len - 1; __i--) \
(array)[__i] = (array)[__i - len]; \
- memcpy(&array[(index)], (values), len * sizeof(*(array))); \
+ memcpy(&array[(__idx)], (values), len * sizeof(*(array))); \
} while (0)
#define array_insert_str(array, index, values) array_insert_many((array), (index), (values), strlen(values))
-#define array_add_many(array, index, values, len) do { \
- void* __temp = array_resize_((array), sizeof(*(array)), array_size(array) + len); \
- (array) = __temp; \
- memcpy(&array[array_size((array)) - 1], (values), len * sizeof(*(array))); \
+#define array_add_many(array, values, len) do { \
+ void* __temp = array_resize_((array), sizeof(*(array)), array_size(array) + (len)); \
+ (array) = __temp; \
+ memcpy(&(array[array_size((array)) - (len)]), (values), (len) * sizeof(*(array))); \
} while (0)
-#define array_add_str(array, index, values) array_add_many((array), (index), (values), strlen(values))
+#define array_add_str(array, values) array_add_many((array), (values), strlen(values))
-#define array_resize(array, size) do { \
- void* __temp = array_resize_((array), sizeof(*(array)), size); \
- (array) = __temp; \
+#define array_resize(array, size) do { \
+ void* __temp = array_resize_((array), sizeof(*(array)), size); \
+ (array) = __temp; \
} while (0)
#define array_add(array, value) do { \
@@ -82,14 +84,14 @@ void* array_resize_(void* array, size_t item_size, size_t size);
type__* CONCAT(it__, __LINE__) = array__; type__* CONCAT(end__, __LINE__) = array__ ? array__ + array_size(array__) : NULL; \
for (type__* name__; (CONCAT(it__, __LINE__) < CONCAT(end__, __LINE__)) ? (name__ = CONCAT(it__, __LINE__), true) : false; CONCAT(it__, __LINE__)++)
-#define array_dump(array, type, name, fmt, ...) do { \
- array_print(array); \
- fprintf(stderr, "vals: {\n"); \
+#define array_dump(array, type, name, fmt, ...) do { \
+ array_print(array); \
+ fprintf(stderr, "vals: {\n"); \
type* it__ = (array); type* end__ = (array) ? (array) + array_size(array) : NULL; \
- for (type* name; it__ < end__ ? (name = it__, true) : false; it__++) { \
- fprintf(stderr, " "fmt",\n", __VA_ARGS__); \
- } \
- fprintf(stderr, "}\n"); \
+ for (type* name; it__ < end__ ? (name = it__, true) : false; it__++) { \
+ fprintf(stderr, " "fmt",\n", __VA_ARGS__); \
+ } \
+ fprintf(stderr, "}\n"); \
} while (0)
#endif // ARRAY_H_