From dff89dcae590315c6916bc24407f9c80dd74f049 Mon Sep 17 00:00:00 2001 From: justanothercatgirl Date: Sun, 19 May 2024 11:19:51 +0300 Subject: tobeamended --- include/utility.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'include/utility.h') diff --git a/include/utility.h b/include/utility.h index 4f264f0..85948cf 100644 --- a/include/utility.h +++ b/include/utility.h @@ -4,6 +4,8 @@ #define stringify(val) _stringify_helper(val) #define _stringify_helper(val) #val +#define string_concat_separator(first, ...) stringify(first) ";" string_concat_separator(__VA_ARGS__) + #define struct_member_size(type, member) sizeof(( (type*)0 )->member) typedef unsigned char byte; #define upper_2_power_32(number) (32 - __builtin_clz(number)) @@ -11,7 +13,7 @@ typedef unsigned char byte; typedef int(*qsort_cmp_t)(const void*, const void*); #define get_qsort_cmp(type) __qsort_cmps[sizeof(type)] -extern const qsort_cmp_t __qsort_cmps[]; +extern const qsort_cmp_t __qsort_cmps[64]; #ifdef UTILITY_EXPOSE_HELPERS #define _UTILITY_STATIC @@ -58,17 +60,26 @@ _UTILITY_STATIC int __default_long_cmp(const void* a, const void* b) { return 0; } +#ifdef __GNUC__ // cope #pragma GCC diagnostic ignored "-Woverride-init" // Is is meant to override it on different platforms -const qsort_cmp_t __qsort_cmps[] = { +const qsort_cmp_t __qsort_cmps[64] = { [sizeof(char)] = __default_char_cmp, [sizeof(short)] = __default_short_cmp, [sizeof(int)] = __default_int_cmp, [sizeof(long)] = __default_long_cmp, [sizeof(long long)] = __default_long_long_cmp, - [64] = 0, + [63] = 0, }; #pragma GCC diagnostic warning "-Woverride-init" +#else // not __GNUC__ +const qsort_cmp_t __qsort_cmps[64] = { + 0, + __default_char_cmp, __default_short_cmp, 0, __default_int_cmp, + 0, 0, 0, __default_long_long_cmp, +}; +#endif // __GNUC__ + #endif // UTILITY_IMPLEMENTATION -- cgit v1.2.3-70-g09d2