5 #define COMPAT_NO_MOD_IS_XONOTIC
8 #ifndef QCC_SUPPORT_ACCUMULATE
10 #define QCC_SUPPORT_ACCUMULATE
14 #ifndef QCC_SUPPORT_NIL
16 #define QCC_SUPPORT_NIL
20 #ifndef QCC_SUPPORT_INT
23 #define stoi(s) stof(s)
24 #define stob(s) stof(s)
25 #define itos(i) ftos(i)
27 #define stoi(s) ((int) stof(s))
28 #define stob(s) ((bool) stof(s))
29 #define itos(i) ftos(i)
32 #define FOREACH_ARRAY(arr, start, end, cond, body) do { \
33 for (int i = start; i < end; ++i) { \
34 const noref entity it = arr[i]; \
39 #define FOREACH_LIST(list, next, cond, body) do { \
41 for (entity it = list##_first; it; (it = it.next, ++i)) { \
46 #define FOREACH(list, cond, body) FOREACH_LIST(list, enemy, cond, body)
49 #define OVERLOAD(F, ...) F##_##__VA_COUNT__(__VA_ARGS__)
51 #define OVERLOAD_(F,_9,_8,_7,_6,_5,_4,_3,_2,_1,n,...) F##_##n
52 #define OVERLOAD(F, ...) OVERLOAD_(F,__VA_ARGS__,9,8,7,6,5,4,3,2,1)(__VA_ARGS__)
55 #define LAMBDA(...) { __VA_ARGS__ ; }
57 #define MAP(f, ...) OVERLOAD(MAP, f, __VA_ARGS__)
58 #define MAP_2(f, it) f(it)
59 #define MAP_3(f, it, ...) f(it)MAP_2(f, __VA_ARGS__)
60 #define MAP_4(f, it, ...) f(it)MAP_3(f, __VA_ARGS__)
61 #define MAP_5(f, it, ...) f(it)MAP_4(f, __VA_ARGS__)
62 #define MAP_6(f, it, ...) f(it)MAP_5(f, __VA_ARGS__)
63 #define MAP_7(f, it, ...) f(it)MAP_6(f, __VA_ARGS__)
64 #define MAP_8(f, it, ...) f(it)MAP_7(f, __VA_ARGS__)
65 #define MAP_9(f, it, ...) f(it)MAP_8(f, __VA_ARGS__)
66 #define MAP_10(f, it, ...) f(it)MAP_9(f, __VA_ARGS__)
67 #define MAP_11(f, it, ...) f(it)MAP_10(f, __VA_ARGS__)
68 #define MAP_12(f, it, ...) f(it)MAP_11(f, __VA_ARGS__)
69 #define MAP_13(f, it, ...) f(it)MAP_12(f, __VA_ARGS__)
70 #define MAP_14(f, it, ...) f(it)MAP_13(f, __VA_ARGS__)
71 #define MAP_15(f, it, ...) f(it)MAP_14(f, __VA_ARGS__)
72 #define MAP_16(f, it, ...) f(it)MAP_15(f, __VA_ARGS__)
73 #define MAP_17(f, it, ...) f(it)MAP_16(f, __VA_ARGS__)
74 #define MAP_18(f, it, ...) f(it)MAP_17(f, __VA_ARGS__)
75 #define MAP_19(f, it, ...) f(it)MAP_18(f, __VA_ARGS__)
76 #define MAP_20(f, it, ...) f(it)MAP_19(f, __VA_ARGS__)
78 #define IDENTITY(it) it
80 #define UNWORDS(...) MAP(IDENTITY, __VA_ARGS__)
82 #define APPLY(f, ...) f(__VA_ARGS__)
85 #define SV(f, ...) f(__VA_ARGS__)
91 #define CL(f, ...) f(__VA_ARGS__)
96 #define IF(cond, f, ...) cond(f, __VA_ARGS__)
98 #define GET(name) name##get
99 #define GETTER(type, name) type GET(name)() { return name; }
101 #define BIT(n) (1 << (n))
102 #ifndef BRANCHLESS_BITSET
103 #define BITSET(var, mask, flag) (flag ? (var) | (mask) : (var) &~ (mask))
105 #define BITSET(var, mask, flag) ((var) ^ (-(flag) ^ (var)) & (mask))