aboutsummaryrefslogtreecommitdiffstats
path: root/include/utility.h
diff options
context:
space:
mode:
authorjustanothercatgirl <sotov2070@gmail.com>2024-06-19 14:17:30 +0300
committerjustanothercatgirl <sotov2070@gmail.com>2024-06-19 14:17:30 +0300
commitb2df541c5d0dc00368754fd35e0af2341d1458eb (patch)
treee657b490c7b97814120026f1112fa1a7265d5a10 /include/utility.h
parentdff89dcae590315c6916bc24407f9c80dd74f049 (diff)
moved all containers to a single header "container.h"
TODO: add linked list, hash map and other shit like this to the header
Diffstat (limited to 'include/utility.h')
-rw-r--r--include/utility.h87
1 files changed, 0 insertions, 87 deletions
diff --git a/include/utility.h b/include/utility.h
deleted file mode 100644
index 85948cf..0000000
--- a/include/utility.h
+++ /dev/null
@@ -1,87 +0,0 @@
-#ifndef JUSTANOTHERCATGIRL_HEADERS_UTILITY
-#define JUSTANOTHERCATGIRL_HEADERS_UTILITY
-
-#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))
-#define upper_2_power_64(number) (64 - __builtin_clzl(number))
-
-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[64];
-
-#ifdef UTILITY_EXPOSE_HELPERS
- #define _UTILITY_STATIC
- int __default_char_cmp(const void* a, const void* b);
- int __default_short_cmp(const void* a, const void* b);
- int __default_int_cmp(const void* a, const void* b);
- int __default_long_cmp(const void* a, const void* b);
- int __default_long_long_cmp(const void* a, const void* b);
-#else
- #define _UTILITY_STATIC static
-#endif // UTILITY_EXPOSE_HELPERS
-
-
-#ifdef UTILITY_IMPLEMENTATION
-
-_UTILITY_STATIC int __default_char_cmp(const void* a, const void* b) {
- char x = *(char*)a, y = *(char*)b;
- if (x < y) return -1;
- if (x > y) return 1;
- return 0;
-}
-_UTILITY_STATIC int __default_short_cmp(const void* a, const void* b) {
- short x = *(short*)a, y = *(short*)b;
- if (x < y) return -1;
- if (x > y) return 1;
- return 0;
-}
-_UTILITY_STATIC int __default_int_cmp(const void* a, const void* b) {
- int x = *(int*)a, y = *(int*)b;
- if (x < y) return -1;
- if (x > y) return 1;
- return 0;
-}
-_UTILITY_STATIC int __default_long_long_cmp(const void* a, const void* b) {
- long long x = *(long long*)a, y = *(long long*)b;
- if (x < y) return -1;
- if (x > y) return 1;
- return 0;
-}
-_UTILITY_STATIC int __default_long_cmp(const void* a, const void* b) {
- long x = *(long*)a, y = *(long*)b;
- if (x < y) return -1;
- if (x > y) return 1;
- 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[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,
- [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
-
-
-#endif //JUSTANOTHERCATGIRL_HEADERS_UTILITY