/** Adapted from code (c) 2023 Pedro Falcato, with permission. * Originally licensed under BSD-2-Clause-Patent. */ #if defined (__LP64__) #define __LIMITS_64BIT #endif #define CHAR_BIT 8 #define SCHAR_MIN -128 #define SCHAR_MAX 127 #define UCHAR_MAX 255 #if '\xff' < 0 /* char is signed */ # define CHAR_MIN SCHAR_MIN # define CHAR_MAX SCHAR_MAX #else /* char is unsigned */ # define CHAR_MIN 0 # define CHAR_MAX UCHAR_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 #ifdef __LIMITS_64BIT # define LONG_MAX 0x7fffffffffffffffL # define LONG_MIN (-1 - 0x7fffffffffffffffL) # define ULONG_MAX 0xffffffffffffffffUL #else # define LONG_MAX 0x7fffffffL # define LONG_MIN (-1 - 0x7fffffffL) # define ULONG_MAX 0xffffffffUL #endif #define LLONG_MIN (-1 - 0x7fffffffffffffffLL) #define LLONG_MAX 0x7fffffffffffffffLL #define ULLONG_MAX 0xffffffffffffffffULL