]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/lib/functional.qh
Merge branch 'master' into terencehill/tooltips_cleanup
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / functional.qh
1 #ifndef FUNCTIONAL_H
2 #define FUNCTIONAL_H
3
4 #define MAP(f, ...) EVAL(OVERLOAD(MAP, f, __VA_ARGS__))
5 #define MAP_2(f, it) f(it)
6 #define MAP_3(f, it, ...) f(it)MAP_2(f, __VA_ARGS__)
7 #define MAP_4(f, it, ...) f(it)MAP_3(f, __VA_ARGS__)
8 #define MAP_5(f, it, ...) f(it)MAP_4(f, __VA_ARGS__)
9 #define MAP_6(f, it, ...) f(it)MAP_5(f, __VA_ARGS__)
10 #define MAP_7(f, it, ...) f(it)MAP_6(f, __VA_ARGS__)
11 #define MAP_8(f, it, ...) f(it)MAP_7(f, __VA_ARGS__)
12 #define MAP_9(f, it, ...) f(it)MAP_8(f, __VA_ARGS__)
13 #define MAP_10(f, it, ...) f(it)MAP_9(f, __VA_ARGS__)
14 #define MAP_11(f, it, ...) f(it)MAP_10(f, __VA_ARGS__)
15 #define MAP_12(f, it, ...) f(it)MAP_11(f, __VA_ARGS__)
16 #define MAP_13(f, it, ...) f(it)MAP_12(f, __VA_ARGS__)
17 #define MAP_14(f, it, ...) f(it)MAP_13(f, __VA_ARGS__)
18 #define MAP_15(f, it, ...) f(it)MAP_14(f, __VA_ARGS__)
19 #define MAP_16(f, it, ...) f(it)MAP_15(f, __VA_ARGS__)
20 #define MAP_17(f, it, ...) f(it)MAP_16(f, __VA_ARGS__)
21 #define MAP_18(f, it, ...) f(it)MAP_17(f, __VA_ARGS__)
22 #define MAP_19(f, it, ...) f(it)MAP_18(f, __VA_ARGS__)
23 #define MAP_20(f, it, ...) f(it)MAP_19(f, __VA_ARGS__)
24
25 #define IDENTITY(it) it
26
27 #define UNWORDS(...) MAP(IDENTITY, __VA_ARGS__)
28
29 #define APPLY(f, ...) f(__VA_ARGS__)
30
31 #ifdef SVQC
32     #define SV(f, ...) f(__VA_ARGS__)
33 #else
34     #define SV(f, ...)
35 #endif
36
37 #ifdef CSQC
38     #define CL(f, ...) f(__VA_ARGS__)
39 #else
40     #define CL(f, ...)
41 #endif
42
43 #define IF(cond, f, ...) cond(f, __VA_ARGS__)
44
45 #endif