-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpreprocessor.hpp
More file actions
37 lines (36 loc) · 2.85 KB
/
preprocessor.hpp
File metadata and controls
37 lines (36 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#pragma once
#define CPPP_NOTHING
#define CPPP_APPEND_SPACE(...) __VA_ARGS__ CPPP_NOTHING
#define CPPP_THIS(...) __VA_ARGS__
#define CPPP_PARSE_THIS_1(...) CPPP_THIS(CPPP_THIS(__VA_ARGS__))
#define CPPP_PARSE_THIS_2(...) CPPP_PARSE_THIS_1(CPPP_PARSE_THIS_1(__VA_ARGS__))
#define CPPP_PARSE_THIS_4(...) CPPP_PARSE_THIS_2(CPPP_PARSE_THIS_2(__VA_ARGS__))
#define CPPP_PARSE_THIS_8(...) CPPP_PARSE_THIS_4(CPPP_PARSE_THIS_4(__VA_ARGS__))
#define CPPP_PARSE_THIS_16(...) CPPP_PARSE_THIS_8(CPPP_PARSE_THIS_8(__VA_ARGS__))
#define CPPP_PARSE_THIS_32(...) CPPP_PARSE_THIS_16(CPPP_PARSE_THIS_16(__VA_ARGS__))
#define CPPP_PARSE_THIS_64(...) CPPP_PARSE_THIS_32(CPPP_PARSE_THIS_32(__VA_ARGS__))
#define CPPP_PARSE_THIS_128(...) CPPP_PARSE_THIS_64(CPPP_PARSE_THIS_64(__VA_ARGS__))
#define CPPP_PARSE_THIS_256(...) CPPP_PARSE_THIS_128(CPPP_PARSE_THIS_128(__VA_ARGS__))
#define CPPP_PARSE_THIS_512(...) CPPP_PARSE_THIS_256(CPPP_PARSE_THIS_256(__VA_ARGS__))
#define CPPP_PARSE_THIS_1024(...) CPPP_PARSE_THIS_512(CPPP_PARSE_THIS_512(__VA_ARGS__))
#define CPPP_PARSE_THIS_2048(...) CPPP_PARSE_THIS_1024(CPPP_PARSE_THIS_1024(__VA_ARGS__))
#define CPPP_PARSE_THIS_4096(...) CPPP_PARSE_THIS_2048(CPPP_PARSE_THIS_2048(__VA_ARGS__))
#define CPPP_PARSE_THIS_8192(...) CPPP_PARSE_THIS_4096(CPPP_PARSE_THIS_4096(__VA_ARGS__))
#define CPPP_PARSE_THIS_16384(...) CPPP_PARSE_THIS_8192(CPPP_PARSE_THIS_8192(__VA_ARGS__))
#define CPPP_PARSE_THIS_32768(...) CPPP_PARSE_THIS_16384(CPPP_PARSE_THIS_16384(__VA_ARGS__))
#define CPPP_PARSE_THIS_65536(...) CPPP_PARSE_THIS_32768(CPPP_PARSE_THIS_32768(__VA_ARGS__))
#define CPPP_PARSE_THIS_131072(...) CPPP_PARSE_THIS_65536(CPPP_PARSE_THIS_65536(__VA_ARGS__))
#define CPPP_PARSE_THIS_262144(...) CPPP_PARSE_THIS_131072(CPPP_PARSE_THIS_131072(__VA_ARGS__))
#define CPPP_PARSE_THIS_524288(...) CPPP_PARSE_THIS_262144(CPPP_PARSE_THIS_262144(__VA_ARGS__))
#define CPPP_PARSE_THIS_1048576(...) CPPP_PARSE_THIS_524288(CPPP_PARSE_THIS_524288(__VA_ARGS__))
#define CPPP_PARSE_THIS_2097152(...) CPPP_PARSE_THIS_1048576(CPPP_PARSE_THIS_1048576(__VA_ARGS__))
#define CPPP_PARSE_THIS_4194304(...) CPPP_PARSE_THIS_2097152(CPPP_PARSE_THIS_2097152(__VA_ARGS__))
#define CPPP_PARSE_THIS_8388608(...) CPPP_PARSE_THIS_4194304(CPPP_PARSE_THIS_4194304(__VA_ARGS__))
#define CPPP_PARSE_THIS_16777216(...) CPPP_PARSE_THIS_8388608(CPPP_PARSE_THIS_8388608(__VA_ARGS__))
#define CPPP_PARSE_THIS_33554432(...) CPPP_PARSE_THIS_16777216(CPPP_PARSE_THIS_16777216(__VA_ARGS__))
#define CPPP_PARSE_THIS(...) CPPP_PARSE_THIS_1024(__VA_ARGS__)
#define CPPP_PARSE_THIS_MAX(...) CPPP_PARSE_THIS_33554432(__VA_ARGS__)
#define CPPP___name_FOR_EACH() CPPP__FOR_EACH
#define CPPP__FOR_EACH(fn,u,...) fn(u) __VA_OPT__(,CPPP_APPEND_SPACE(CPPP___name_FOR_EACH)()(fn,__VA_ARGS__))
#define CPPP_FOR_EACH(fn,...) CPPP_PARSE_THIS(CPPP__FOR_EACH(fn,__VA_ARGS__))
#define CPPP_FOR_EACH_MAX(fn,...) CPPP_PARSE_THIS_MAX(CPPP__FOR_EACH(fn,__VA_ARGS__))