Github User Fetcher
1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
preprocess.h
Go to the documentation of this file.
1
/*
2
* The MIT License (MIT)
3
*
4
* Copyright © 2015-2016 Franklin "Snaipe" Mathieu <http://snai.pe/>
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to deal
8
* in the Software without restriction, including without limitation the rights
9
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
* copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in
14
* all copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
* THE SOFTWARE.
23
*/
24
#ifndef CRITERION_PREPROCESS_H_
25
#define CRITERION_PREPROCESS_H_
26
27
#define CR_NOOP do {} while (0)
28
29
#ifdef __cplusplus
30
# define CR_NOTHROW throw ()
31
#else
32
# define CR_NOTHROW
33
#endif
34
35
#define CR_EXPAND(x) x
36
#define CR_IDENTITY(...) __VA_ARGS__
37
#define CR_EMPTY()
38
#define CR_DEFER(x) x CR_EMPTY()
39
#define CR_OBSTRUCT(...) __VA_ARGS__ CR_DEFER(CR_EMPTY)()
40
41
#define CR_EAT(...) __VA_ARGS__
42
43
#define CRI_DEFER1(x) CR_DEFER(x)
44
#define CRI_DEFER2(x) CR_DEFER(CRI_DEFER1)(x)
45
#define CRI_DEFER3(x) CR_DEFER(CRI_DEFER2)(x)
46
#define CRI_DEFER4(x) CR_DEFER(CRI_DEFER3)(x)
47
48
#define CRI_OBSTRUCT1(...) __VA_ARGS__ CRI_DEFER4(CR_EMPTY)()
49
#define CRI_OBSTRUCT2(...) __VA_ARGS__ CRI_DEFER4(CRI_OBSTRUCT1)()
50
#define CRI_OBSTRUCT3(...) __VA_ARGS__ CRI_DEFER4(CRI_OBSTRUCT2)()
51
#define CRI_OBSTRUCT_N(...) __VA_ARGS__ CRI_DEFER4(CRI_OBSTRUCT3)()
52
53
#define CR_EVAL(...) CR_EVAL1(CR_EVAL1(CR_EVAL1(CR_EVAL1(__VA_ARGS__))))
54
#define CR_EVAL1(...) CR_EVAL2(CR_EVAL2(CR_EVAL2(CR_EVAL2(__VA_ARGS__))))
55
#define CR_EVAL2(...) CR_EVAL3(CR_EVAL3(CR_EVAL3(CR_EVAL3(__VA_ARGS__))))
56
#define CR_EVAL3(...) CR_IDENTITY(__VA_ARGS__)
57
58
#define CR_STR(...) CR_EXPAND(CR_STR_(__VA_ARGS__))
59
#define CR_STR_(...) #__VA_ARGS__
60
61
#define CR_VA_TAIL(...) CR_EXPAND(CR_VA_TAIL_HELPER(CR_VA_TAIL_SELECT(__VA_ARGS__), __VA_ARGS__))
62
63
#define CR_VA_TAIL_HELPER(N, ...) CR_EXPAND(CR_VA_TAIL_HELPER_(N, __VA_ARGS__))
64
#define CR_VA_TAIL_HELPER_(N, ...) CR_EXPAND(CR_VA_TAIL_HELPER_ ## N(__VA_ARGS__))
65
#define CR_VA_TAIL_HELPER_1(Head)
66
#define CR_VA_TAIL_HELPER_2(Head, ...) __VA_ARGS__
67
68
#define CR_VA_HEAD(...) CR_EXPAND(CR_VA_HEAD_HELPER(CR_VA_TAIL_SELECT(__VA_ARGS__), __VA_ARGS__))
69
70
#define CR_VA_HEAD_HELPER(N, ...) CR_EXPAND(CR_VA_HEAD_HELPER_(N, __VA_ARGS__))
71
#define CR_VA_HEAD_HELPER_(N, ...) CR_EXPAND(CR_VA_HEAD_HELPER_ ## N(__VA_ARGS__))
72
#define CR_VA_HEAD_HELPER_1(Head) Head
73
#define CR_VA_HEAD_HELPER_2(Head, ...) Head
74
75
#define CR_VA_TAIL_SELECT(...) \
76
CR_EXPAND(CR_VA_TAIL_SELECT64(__VA_ARGS__, \
77
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
78
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
79
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
80
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
81
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
82
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
83
2, 2, 1, _))
84
85
#define CR_VA_TAIL_SELECT64( \
86
_01, _02, _03, _04, _05, _06, _07, _08, _09, _10, \
87
_11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \
88
_21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \
89
_31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \
90
_41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \
91
_51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \
92
_61, _62, _63, X, ...) X
93
94
#define CR_CONCAT_E(A, B) CR_CONCAT(CR_EXPAND(A), CR_EXPAND(B))
95
#define CR_CONCAT(A, B) CR_CONCAT2(A, B)
96
#define CR_CONCAT2(A, B) CR_CONCAT3(A, B)
97
#define CR_CONCAT3(A, B) A ## B
98
99
#define CRI_IF_DEFINED__(M, N) M ## N
100
#define CRI_IF_DEFINED_(M, N) CRI_IF_DEFINED__(M, N)
101
#define CRI_IF_DEFINED(M, Then, ThenParams, Else, ElseParams) CRI_IF_DEFINED_(CRI_IF_DEFINED_, CR_VA_TAIL_SELECT(M))(Then, ThenParams, Else, ElseParams)
102
#define CRI_IF_DEFINED_1(Then, ThenParams, Else, ElseParams) CRI_DEFER2(Else) ElseParams
103
#define CRI_IF_DEFINED_2(Then, ThenParams, Else, ElseParams) CRI_DEFER2(Then) ThenParams
104
105
#define CRI_IF_DEFINED_NODEFER__(M, N) M ## N
106
#define CRI_IF_DEFINED_NODEFER_(M, N) CRI_IF_DEFINED_NODEFER__(M, N)
107
#define CRI_IF_DEFINED_NODEFER(M, Then, ThenParams, Else, ElseParams) CRI_IF_DEFINED_NODEFER_(CRI_IF_DEFINED_NODEFER_, CR_VA_TAIL_SELECT(M))(Then, ThenParams, Else, ElseParams)
108
#define CRI_IF_DEFINED_NODEFER_1(Then, ThenParams, Else, ElseParams) Else ElseParams
109
#define CRI_IF_DEFINED_NODEFER_2(Then, ThenParams, Else, ElseParams) Then ThenParams
110
111
#endif
/* !CRITERION_PREPROCESS_H_ */
nix
store
2xpcmdrzviw89gzpf8p7l7691wk51i89-criterion-2.4.2-dev
include
criterion
internal
preprocess.h
Generated by
1.10.0