From 8003084ccf17b26e932b565cfc0bb30302af3dd7 Mon Sep 17 00:00:00 2001 From: Riley Beckett Date: Sat, 25 Oct 2025 01:30:14 -0400 Subject: array_dump macro is amazing --- array.c | 15 +++++++-------- array.h | 11 +++++++++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/array.c b/array.c index 86a5327..7bbd80b 100644 --- a/array.c +++ b/array.c @@ -1,6 +1,4 @@ -#include #include -#include #include "array.h" @@ -57,12 +55,13 @@ void* array_resize_(void* array, size_t item_size, size_t size) { void array_print(void* array) { array_info* info = &((array_info*)array)[-1]; - printf( "size: %lu\n" - "capacity: %lu\n" - "array: %p\n", - info->size, - info->capacity, - info->array); + fprintf(stderr, + "size: %lu\n" + "capacity: %lu\n" + "array: %p\n", + info->size, + info->capacity, + info->array); } void array_pop(void* array) { diff --git a/array.h b/array.h index 6ea74d7..852461c 100644 --- a/array.h +++ b/array.h @@ -1,6 +1,7 @@ #ifndef ARRAY_H_ #define ARRAY_H_ #include +#include #include typedef struct { @@ -77,4 +78,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"); \ + type* it__ = (array); type* end__ = (array) ? (array) + array_size(array) : NULL; \ + for (type* name; it__ < end__ ? (name = it__, true) : false; it__++) { \ + fprintf(stderr, fmt", ", __VA_ARGS__); \ + } \ + fprintf(stderr, "\b\b \n"); \ +} while (0) + #endif // ARRAY_H_ -- cgit v1.2.3