From 6a10122858cb388b61b65208a84f1be9d2bfb9e8 Mon Sep 17 00:00:00 2001 From: Quinn Date: Wed, 18 Jun 2025 13:24:04 +0200 Subject: [PATCH] define some more utility functionality --- src/error.h | 21 ++++++++++----------- src/util/macro.h | 9 +++++++++ src/util/types.h | 9 +++++++++ 3 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 src/util/macro.h create mode 100644 src/util/types.h diff --git a/src/error.h b/src/error.h index 55cc82c..c5a4430 100644 --- a/src/error.h +++ b/src/error.h @@ -5,18 +5,17 @@ #if __INCLUDE_LEVEL__ > 0 #include #include + +#include "util/macro.h" #endif -#define ERROR_STR_PRE(v) #v -#define ERROR_STR(v) ERROR_STR_PRE(v) +#define debug(s, ...) printf("\033[95m" __FILE__ ":" MACRO_STR2(__LINE__) ": [DBG]: " s "\033[0m\n", ##__VA_ARGS__) +#define info(s, ...) printf(__FILE__ ":" MACRO_STR2(__LINE__) ": [INF]: " s "\n", ##__VA_ARGS__) +#define warn(s, ...) fprintf(stderr, "\033[93m" __FILE__ ":" MACRO_STR2(__LINE__) ": [WAR]: " s "\033[0m\n", ##__VA_ARGS__) +#define error(s, ...) fprintf(stderr, "\033[91m" __FILE__ ":" MACRO_STR2(__LINE__) ": [ERR]: " s "\033[0m\n", ##__VA_ARGS__) -#define debug(s, ...) printf("\033[95m" __FILE__ ":" ERROR_STR(__LINE__) ": [DBG]: " s "\033[0m\n", ##__VA_ARGS__) -#define info(s, ...) printf(__FILE__ ":" ERROR_STR(__LINE__) ": [INF]: " s "\n", ##__VA_ARGS__) -#define warn(s, ...) fprintf(stderr, "\033[93m" __FILE__ ":" ERROR_STR(__LINE__) ": [WAR]: " s "\033[0m\n", ##__VA_ARGS__) -#define error(s, ...) fprintf(stderr, "\033[91m" __FILE__ ":" ERROR_STR(__LINE__) ": [ERR]: " s "\033[0m\n", ##__VA_ARGS__) - -#define fatal(s, ...) \ - do { \ - printf("\033[101m" __FILE__ ":" ERROR_STR(__LINE__) ": [FAT]: " s "\033[0m\n", ##__VA_ARGS__); \ - exit(1); \ +#define fatal(s, ...) \ + do { \ + printf("\033[101m" __FILE__ ":" MACRO_STR2(__LINE__) ": [FAT]: " s "\033[0m\n", ##__VA_ARGS__); \ + exit(1); \ } while (0) diff --git a/src/util/macro.h b/src/util/macro.h new file mode 100644 index 0000000..d3f99fb --- /dev/null +++ b/src/util/macro.h @@ -0,0 +1,9 @@ +// Copyright (c) 2025 Quinn +// Licensed under the MIT Licence. See LICENSE for details +#pragma once + +#define MACRO_WIDTH(t) (sizeof(t) * 8) // gets the bit width of a type +#define MACRO_CAT(x, y) x##y // concatenate two macro variables together +#define MACRO_CAT2(x, y) MACRO_CAT(x, y) // concatenate two macro variables together +#define MACRO_STR(v) #v // for converting macro variable into a string +#define MACRO_STR2(v) MACRO_STR(v) // for a recursive string generation diff --git a/src/util/types.h b/src/util/types.h new file mode 100644 index 0000000..a43edc7 --- /dev/null +++ b/src/util/types.h @@ -0,0 +1,9 @@ +// Copyright (c) 2025 Quinn +// Licensed under the MIT Licence. See LICENSE for details +#pragma once + +/* integer types */ +typedef unsigned int uint; // ≥16 bit unsigned integer +typedef unsigned long ulong; // ≥32 bit unsigned integer +typedef signed long long llong; // ≥64 bit signed integer +typedef unsigned long long ullong; // ≥64 bit unsigned integer