CoriEngine
Loading...
Searching...
No Matches
Macros.hpp
Go to the documentation of this file.
1#ifndef MACROS_H
2#define MACROS_H
3
4#define CORI_PLACEHOLDERS(x) PLACEHOLDER_SELECT(x)
5#define PLACEHOLDER_SELECT(x) PLACEHOLDER_IMPL_##x
6
7#define PLACEHOLDER_IMPL_1 std::placeholders::_1
8#define PLACEHOLDER_IMPL_2 std::placeholders::_2
9#define PLACEHOLDER_IMPL_3 std::placeholders::_3
10#define PLACEHOLDER_IMPL_4 std::placeholders::_4
11#define PLACEHOLDER_IMPL_5 std::placeholders::_5
12#define PLACEHOLDER_IMPL_6 std::placeholders::_6
13#define PLACEHOLDER_IMPL_7 std::placeholders::_7
14#define PLACEHOLDER_IMPL_8 std::placeholders::_8
15#define PLACEHOLDER_IMPL_9 std::placeholders::_9
16#define PLACEHOLDER_IMPL_10 std::placeholders::_10
17#define PLACEHOLDER_IMPL_11 std::placeholders::_11
18#define PLACEHOLDER_IMPL_12 std::placeholders::_12
19#define PLACEHOLDER_IMPL_13 std::placeholders::_13
20#define PLACEHOLDER_IMPL_14 std::placeholders::_14
21#define PLACEHOLDER_IMPL_15 std::placeholders::_15
22#define PLACEHOLDER_IMPL_16 std::placeholders::_16
23#define PLACEHOLDER_IMPL_17 std::placeholders::_17
24#define PLACEHOLDER_IMPL_18 std::placeholders::_18
25#define PLACEHOLDER_IMPL_19 std::placeholders::_19
26
27#define CORI_BIND_EVENT_FN(x, ...) std::bind(&x, this __VA_OPT__(,) __VA_ARGS__)
28
29#if defined(_WIN64)
30 #define PLATFORM_WINDOWS
31 #if defined(__MINGW64__)
32 #define PLATFORM_MINGW
33 #endif
34#else
35 #define PLATFORM_LINUX
36#endif
37
38#if defined(_MSC_VER)
39 #define COMPILER_MSVC
40
41#elif defined(__clang__)
42 #if defined(PLATFORM_WINDOWS) && !defined(PLATFORM_MINGW)
43 #define COMPILER_LLVM_WINDOWS
44 #elif defined(PLATFORM_WINDOWS) && defined(PLATFORM_MINGW)
45 #define COMPILER_CLANG_MINGW
46 #else
47 #define COMPILER_CLANG_LINUX
48 #endif
49#elif defined(__GNUC__)
50 #if defined(PLATFORM_WINDOWS) && defined(PLATFORM_MINGW)
51 #define COMPILER_GCC_MINGW
52 #else
53 #define COMPILER_GCC_LINUX
54 #endif
55#else
56 #error "Unsupported compiler"
57#endif
58
59#endif