89#if defined(ARCH_ARM64) || defined(__aarch64__) || defined(ARCH_X64) || defined(__x86_64__)
102typedef __SIZE_TYPE__
size_t;
107#if defined ( __cplusplus) || defined (__STDC_LIMIT_MACROS)
110#define INT8_MIN (-128)
111#define INT16_MIN (-32768)
112#define INT32_MIN (-2147483647 - 1)
113#define INT64_MIN (-9223372036854775807LL - 1)
116#define INT16_MAX 32767
117#define INT32_MAX 2147483647
118#define INT64_MAX 9223372036854775807LL
120#define UINT8_MAX 0xff
121#define UINT16_MAX 0xffff
122#define UINT32_MAX 0xffffffff
123#define UINT64_MAX 0xffffffffffffffffULL
126#define INT_LEAST8_MIN INT8_MIN
127#define INT_LEAST16_MIN INT16_MIN
128#define INT_LEAST32_MIN INT32_MIN
129#define INT_LEAST64_MIN INT64_MIN
131#define INT_LEAST8_MAX INT8_MAX
132#define INT_LEAST16_MAX INT16_MAX
133#define INT_LEAST32_MAX INT32_MAX
134#define INT_LEAST64_MAX INT64_MAX
136#define UINT_LEAST8_MAX UINT8_MAX
137#define UINT_LEAST16_MAX UINT16_MAX
138#define UINT_LEAST32_MAX UINT32_MAX
139#define UINT_LEAST64_MAX UINT64_MAX
142#define INT_FAST8_MIN INT8_MIN
143#define INT_FAST16_MIN INT16_MIN
144#define INT_FAST32_MIN INT32_MIN
145#define INT_FAST64_MIN INT64_MIN
147#define INT_FAST8_MAX INT8_MAX
148#define INT_FAST16_MAX INT16_MAX
149#define INT_FAST32_MAX INT32_MAX
150#define INT_FAST64_MAX INT64_MAX
152#define UINT_FAST8_MAX UINT8_MAX
153#define UINT_FAST16_MAX UINT16_MAX
154#define UINT_FAST32_MAX UINT32_MAX
155#define UINT_FAST64_MAX UINT64_MAX
159#define INTPTR_MIN INT32_MIN
160#define INTPTR_MAX INT32_MAX
161#define UINTPTR_MAX UINT32_MAX
164#define INTMAX_MIN INT64_MIN
165#define INTMAX_MAX INT64_MAX
166#define UINTMAX_MAX UINT64_MAX
169#define PTRDIFF_MIN INT32_MIN
170#define PTRDIFF_MAX INT32_MAX
172#define SIG_ATOMIC_MIN INT32_MIN
173#define SIG_ATOMIC_MAX INT32_MAX
175#if defined(ARCH_ARM64) || defined(__aarch64__) || defined(ARCH_X64) || defined(__x86_64__)
176#define SIZE_MAX UINT64_MAX
178#define SIZE_MAX UINT32_MAX
183#define WCHAR_MAX ((wchar_t)-1)
190#define WINT_MAX ((wint_t)-1)
196#if !defined ( __cplusplus) || defined __STDC_LIMIT_MACROS
200#define INT8_C(val) ((int8_t) + (val))
201#define UINT8_C(val) ((uint8_t) + (val##U))
202#define INT16_C(val) ((int16_t) + (val))
203#define UINT16_C(val) ((uint16_t) + (val##U))
205#define INT32_C(val) val##L
206#define UINT32_C(val) val##UL
207#define INT64_C(val) val##LL
208#define UINT64_C(val) val##ULL
211#define INTMAX_C(val) INT64_C(val)
212#define UINTMAX_C(val) UINT64_C(val)
224 return (T)((
size_t)p1 + offset);
226 template <
class T,
class U> T
mem_after(U* p1)
233#define RAW_OFFSET(type, x, offset) (type)((size_t)x + offset)
234#define RAW_DIFF(p1,p2) ((intptr_t)p1 - (intptr_t)p2)
235#define MEM_AFTER(type, p) ((type)(&(p)[1]))
237#define DIV_ROUND_UP(x, y) \
240#define ALIGN_UP(x, y) (DIV_ROUND_UP(x,y)*y)
243#define do_div(n, base) { \
244 uint64_t __base = (base); \
245 uint64_t __rem = n % __base; \
251#define clamp_t(type, val, lo, hi) \
252 ((type)(val) < (type)(lo) ? (type)(lo) : ((type)(val) > (type)(hi)? (type)(hi) : (type)(val)))
255 if ((x > 0) == (divisor > 0))
256 return (x + divisor / 2) / divisor;
258 return (x - divisor / 2) / divisor;
262 return (x + divisor / 2) / divisor;
266 if ((x > 0) == (divisor > 0))
267 return (x + divisor / 2) / divisor;
269 return (x - divisor / 2) / divisor;
274 return (x + divisor / 2) / divisor;
277#define DIV_ROUND_CLOSEST(x, divisor) _Generic((x), \
278 int64_t: div_round_closest_s64, \
279 uint64_t: div_round_closest_u64, \
280 int32_t: div_round_closest_s32, \
281 uint32_t: div_round_closest_u32, \
282 default: div_round_closest_s32 \
285#define CLAMP(val, lo, hi) ((val) < (lo) ? (lo) : ((val) > (hi) ? (hi) : (val)))
287#define ABS(x) ((x) < 0 ? -(x) : (x))
long long int_least64_t
Definition stdint.h:73
int intptr_t
Definition stdint.h:93
uint64_t size_t
Definition stdint.h:104
unsigned short uint16_t
Definition stdint.h:50
unsigned char uint_fast8_t
Definition stdint.h:81
unsigned uint32_t
Definition stdint.h:52
int int32_t
Definition stdint.h:51
uint8_t uint8
Definition stdint.h:56
unsigned int uint_fast32_t
Definition stdint.h:85
int int_least32_t
Definition stdint.h:71
unsigned char BOOL
Definition stdint.h:37
unsigned int uintptr_t
Definition stdint.h:94
unsigned long long uintmax_t
Definition stdint.h:99
int64_t int64
Definition stdint.h:63
short int_least16_t
Definition stdint.h:69
long long int_fast64_t
Definition stdint.h:86
long long int64_t
Definition stdint.h:53
int int_fast32_t
Definition stdint.h:84
unsigned long long uint_least64_t
Definition stdint.h:74
int16_t int16
Definition stdint.h:61
short int16_t
Definition stdint.h:49
int8_t int8
Definition stdint.h:60
unsigned long long uint64_t
Definition stdint.h:54
unsigned uint_least32_t
Definition stdint.h:72
unsigned short uint_fast16_t
Definition stdint.h:83
unsigned char uint_least8_t
Definition stdint.h:68
unsigned long long uint_fast64_t
Definition stdint.h:87
int32_t int32
Definition stdint.h:62
unsigned char uint8_t
Definition stdint.h:48
uint64_t uint64
Definition stdint.h:59
uint16_t uint16
Definition stdint.h:57
long long intmax_t
Definition stdint.h:98
uint32_t uint32
Definition stdint.h:58
unsigned short uint_least16_t
Definition stdint.h:70
signed char int_least8_t
Definition stdint.h:67
signed char int8_t
Definition stdint.h:47
char int_fast8_t
Definition stdint.h:80
short int_fast16_t
Definition stdint.h:82
std::ptrdiff_t raw_diff(T p1, T p2)
Definition Common.hpp:26
T raw_offset(U p1, std::ptrdiff_t offset)
Definition Common.hpp:41
T mem_after(T p1)
Definition Common.hpp:58
int int32_t
Definition acefiex.h:160
unsigned int uint32_t
Definition acefiex.h:163
COMPILER_DEPENDENT_INT64 int64_t
Definition acefiex.h:164
short int int16_t
Definition acefiex.h:159
unsigned char uint8_t
Definition acefiex.h:161
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
unsigned short int uint16_t
Definition acefiex.h:162
signed char int8_t
Definition acefiex.h:158