4 #define EVAL(...) EVAL1(EVAL1(EVAL1(__VA_ARGS__)))
5 #define EVAL1(...) EVAL2(EVAL2(EVAL2(__VA_ARGS__)))
6 #define EVAL2(...) EVAL3(EVAL3(EVAL3(__VA_ARGS__)))
7 #define EVAL3(...) EVAL4(EVAL4(EVAL4(__VA_ARGS__)))
8 #define EVAL4(...) EVAL5(EVAL5(EVAL5(__VA_ARGS__)))
9 #define EVAL5(...) __VA_ARGS__
12 #define OVERLOAD(F, ...) P99_IF_EMPTY(__VA_ARGS__)(P99_PASTE2(F, _00)())(P99_PASTE3(F, _, P00_NARG(__VA_ARGS__))(__VA_ARGS__))
13 #define OVERLOAD_(F, ...) P99_IF_EMPTY(__VA_ARGS__)(P99_PASTE2(F, _00)())(P99_PASTE3(F, _, P00_NARG(__VA_ARGS__))(__VA_ARGS__))
15 #define EVAL(...) __VA_ARGS__
17 #define OVERLOAD_(F, ...) F##_##__VA_COUNT__(__VA_ARGS__)
18 #define OVERLOAD(F, ...) F##_##__VA_COUNT__(__VA_ARGS__)
22 #define etof(e) num_for_edict(e)
23 #define ftoe(i) entitybyindex(i)
25 #define etof(e) num_for_edict(e)
26 #define ftoe(i) edict_num(i)
31 #define GET(name) name##get
32 #define GETTER(type, name) type GET(name)() { return name; }
33 #define PROPERTY(type, name) type name; GETTER(type, name)
34 #define LAMBDA(...) { __VA_ARGS__; }
36 // With block may not contain continue or break
37 #define WITH(type, name, value, block) \
40 type __with_save = (name); \