You.i Engine
YiPreprocessorMacros.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_PREPROCESSOR_MACROS_H_
3 #define _YI_PREPROCESSOR_MACROS_H_
4 
10 #if defined(DOXY)
11 
24 #define YI_MAKE_VARIADIC_MACRO(fn,...)
25 
26 #else
27 
28 #define YI_EXPAND_ARGUMENTS(x) x
29 #define YI_MAKE_VARIADIC_MACRO(fn,...) YI_EXPAND_ARGUMENTS(YI_MAKE_VARIADIC_MACRO_N(fn, ##__VA_ARGS__, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)(__VA_ARGS__))
30 #define YI_MAKE_VARIADIC_MACRO_N(fn, n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, n21, n22, n23, n24, n25, n26, n27, n28, n29, n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n42, n43, n44, n45, n46, n47, n48, n49, n50, n51, n52, n53, n54, n55, n56, n57, n58, n59, n60, n61, n, ...) fn##n
31 
32 #endif
33 
34 
35 
36 #if defined(DOXY)
37 
48 #define YI_STRINGIFY(x)
49 
50 #else
51 
52 #define YI_STRINGIFY_INNER(x) #x
53 #define YI_STRINGIFY(x) YI_STRINGIFY_INNER(x)
54 
55 #endif
56 
57 
58 #if defined(DOXY)
59 
68 #define YI_CONCATENATE
69 
70 #else
71 
72 #define YI_CONCATENATE_INNER(x, y) x ## y
73 #define YI_CONCATENATE(x, y) YI_CONCATENATE_INNER(x, y)
74 
75 #endif
76 
77 
78 #if defined(DOXY)
79 
89 #define YI_STATIC_ASSERT(EXPRESSION, MSG)
90 
91 #else
92 
93 #define YI_STATIC_ASSERT(EXPRESSION, MSG) static_assert((EXPRESSION), YI_STRINGIFY(MSG))
94 
95 #endif
96 
97 
98 #if defined(DOXY)
99 
108 #define YI_WARNING(MSG)
109 
118 #define YI_ERROR(MSG)
119 
120 #else
121 
122 #if defined(_MSC_VER)
123 #define YI_PRAGMA(x) __pragma(x)
124 #define YI_WARNING(MSG) YI_PRAGMA(message(__FILE__ "(" YI_STRINGIFY(__LINE__) ") : warning c0000:" MSG))
125 #define YI_ERROR(MSG) YI_PRAGMA(message(__FILE__ "(" YI_STRINGIFY(__LINE__) ") : error c0000:" MSG))
126 #else
127 #define YI_PRAGMA(x) _Pragma(#x)
128 #define YI_WARNING(MSG) YI_PRAGMA(GCC warning MSG)
129 #define YI_ERROR(MSG) YI_PRAGMA(GCC error MSG)
130 #endif
131 
132 #endif
133 
134 
135 
147 #define YI_ENSURE_STRING_LITERAL(x) "" x ""
148 
149 
152 #endif