aboutsummaryrefslogtreecommitdiff
path: root/include/u.h
diff options
context:
space:
mode:
authorNicholas <nbnoll@eml.cc>2021-11-12 16:59:46 -0800
committerNicholas <nbnoll@eml.cc>2021-11-12 16:59:46 -0800
commit0369b1505b019becfb74ccd9c82f9f7700af377a (patch)
tree2aee8181da2e419d882cae1d5a3ff5a2c45bcc93 /include/u.h
parentce05175372a9ddca1a225db0765ace1127a39293 (diff)
chore: error->int
Diffstat (limited to 'include/u.h')
-rw-r--r--include/u.h130
1 files changed, 93 insertions, 37 deletions
diff --git a/include/u.h b/include/u.h
index 3cf3c7b..cf5f53c 100644
--- a/include/u.h
+++ b/include/u.h
@@ -1,64 +1,120 @@
#pragma once
-// ------------------------------------------------------------------------
-// Freestanding headers
-
-#include <stdarg.h>
-#include <stdint.h>
-#include <stddef.h>
-#include <stdbool.h>
-#include <float.h>
-#include <limits.h>
+#include <bits.h>
// ------------------------------------------------------------------------
-// Modern type aliases
+// types
-typedef char byte;
-typedef unsigned char ubyte, uchar;
-typedef signed char sbyte, schar;
+/* useful aliases */
+typedef char byte;
+typedef signed char schar, sbyte;
+typedef unsigned char uchar, ubyte;
+typedef signed short sshort;
typedef unsigned short ushort;
-typedef signed short sshort;
-typedef unsigned int uint;
-typedef signed int sint;
+typedef signed int sint;
+typedef unsigned int uint;
+typedef signed long slong;
typedef unsigned long ulong;
-typedef signed long slong;
-typedef unsigned long ulong;
-typedef signed long slong;
+typedef long long vlong;
+typedef unsigned long long uvlong;
+typedef signed long long svlong;
-typedef long long vlong;
-typedef unsigned long long uvlong;
-typedef signed long long svlong;
+typedef _Bool bool;
-typedef uint8_t uint8;
-typedef uint16_t uint16;
-typedef uint32_t uint32;
-typedef uint64_t uint64;
+/* fixed width */
+typedef signed INT8 int8;
+typedef signed INT16 int16;
+typedef signed INT32 int32;
+typedef signed INT64 int64;
-typedef int8_t int8;
-typedef int16_t int16;
-typedef int32_t int32;
-typedef int64_t int64;
+typedef unsigned INT8 uint8;
+typedef unsigned INT16 uint16;
+typedef unsigned INT32 uint32;
+typedef unsigned INT64 uint64;
-typedef float float32;
-typedef double float64;
+typedef uint32 rune;
-typedef uintptr_t uintptr;
-typedef intptr_t intptr;
+/* pointer address */
+typedef ADDR intptr;
+typedef unsigned ADDR uintptr;
-typedef int error;
+#undef INT8
+#undef INT16
+#undef INT32
+#undef INT64
+#undef ADDR
-#define nil NULL
+// ------------------------------------------------------------------
+// global constants
+
+#define true 1
+#define false 0
+#define nil ((void*)0)
+
+/* limits */
+#define CHAR_BIT 8
+#define SCHAR_MIN (-128)
+#define SCHAR_MAX 127
+#define UCHAR_MAX 255
+
+#if '\xff' > 0
+# define CHAR_MIN 0
+# define CHAR_MAX UCHAR_MAX
+#else
+# define CHAR_MIN SCHAR_MIN
+# define CHAR_MAX SCHAR_MAX
+#endif
+
+#define SHRT_MIN (-1-0x7fff)
+#define SHRT_MAX 0x7fff
+#define USHRT_MAX 0xffff
+#define INT_MIN (-1-0x7fffffff)
+#define INT_MAX 0x7fffffff
+#define UINT_MAX 0xffffffffU
+#define LONG_MIN (-LONG_MAX-1)
+#define ULONG_MAX (2UL*LONG_MAX+1)
+#define LLONG_MIN (-LLONG_MAX-1)
+#define LLONG_MAX 0x7fffffffffffffffLL
+#define ULLONG_MAX (2ULL*LLONG_MAX+1)
+
+#define INT8_MIN (-1-0x7f)
+#define INT16_MIN (-1-0x7fff)
+#define INT32_MIN (-1-0x7fffffff)
+#define INT64_MIN (-1-0x7fffffffffffffff)
+
+#define INT8_MAX (0x7f)
+#define INT16_MAX (0x7fff)
+#define INT32_MAX (0x7fffffff)
+#define INT64_MAX (0x7fffffffffffffff)
+
+#define UINT8_MAX (0xff)
+#define UINT16_MAX (0xffff)
+#define UINT32_MAX (0xffffffffu)
+#define UINT64_MAX (0xffffffffffffffffu)
+
+#define PATH_MAX 4096
// ------------------------------------------------------------------
-// Global macros
+// global macros
+
+/* offsets */
+#define offsetof(t, d) __builtin_offsetof(t, d)
+
+/* variable arguments */
+#define va_start(v,a) __builtin_va_start(v,a)
+#define va_end(v) __builtin_va_end(v)
+#define va_arg(v,t) __builtin_va_arg(v,t)
+#define va_copy(d,s) __builtin_va_copy(d,s)
+/* array helpers */
#define arrlen(Array) (sizeof(Array) / sizeof((Array)[0]))
#define arrend(Array) ((Array) + arrlen(Array))
+/* simple thresholding */
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
#define CLAMP(x, lo, hi) (((x) < (lo)) ? (lo) : (((x) > (hi)) ? (hi) : (x)))