OnixS C++ CME MDP Conflated TCP Handler
1.3.1
API Documentation
Home
Contents
Namespaces
Classes
Files
File List
File Members
OnixS
CME
ConflatedTCP
Compiler.h
Go to the documentation of this file.
1
/*
2
* Copyright Onix Solutions Limited [OnixS]. All rights reserved.
3
*
4
* This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
5
* and international copyright treaties.
6
*
7
* Access to and use of the software is governed by the terms of the applicable ONIXS Software
8
* Services Agreement (the Agreement) and Customer end user license agreements granting
9
* a non-assignable, non-transferable and non-exclusive license to use the software
10
* for it's own data processing purposes under the terms defined in the Agreement.
11
*
12
* Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
13
* of this source code or associated reference material to any other location for further reproduction
14
* or redistribution, and any amendments to this copyright notice, are expressly prohibited.
15
*
16
* Any reproduction or redistribution for sale or hiring of the Software not in accordance with
17
* the terms of the Agreement is a violation of copyright law.
18
*/
19
20
#pragma once
21
22
#if !(defined(ONIXS_CONFLATEDTCP_DOXYGEN) && ONIXS_CONFLATEDTCP_DOXYGEN)
23
24
#include <
OnixS/CME/ConflatedTCP/CompilerDetection.h
>
25
26
#if defined(__GNUC__)
27
#define ONIXS_CONFLATEDTCP_MAY_ALIAS __attribute__((__may_alias__))
28
#else
29
#define ONIXS_CONFLATEDTCP_MAY_ALIAS
30
#endif
31
32
// https://bugzilla.redhat.com/show_bug.cgi?id=702984
33
#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 4)
34
#define ONIXS_CONFLATEDTCP_GCC44_SPURIOUS_WARNING_TURNAROUND ONIXS_CONFLATEDTCP_MAY_ALIAS
35
#else
36
#define ONIXS_CONFLATEDTCP_GCC44_SPURIOUS_WARNING_TURNAROUND
37
#endif
38
39
40
# if defined(ONIXS_CONFLATEDTCP_COMPILER_CXX_NOEXCEPT) && ONIXS_CONFLATEDTCP_COMPILER_CXX_NOEXCEPT
41
# define ONIXS_CONFLATEDTCP_NOTHROW noexcept
42
# else
43
# define ONIXS_CONFLATEDTCP_NOTHROW throw()
44
# endif
45
46
# if defined(ONIXS_CONFLATEDTCP_COMPILER_CXX_NOEXCEPT) && ONIXS_CONFLATEDTCP_COMPILER_CXX_NOEXCEPT
47
# define ONIXS_CONFLATEDTCP_CHECK_NOTHROW(equation) ONIXS_CONFLATEDTCP_STATIC_ASSERT(noexcept((equation)))
48
# else
49
# define ONIXS_CONFLATEDTCP_CHECK_NOTHROW(equation) ONIXS_CONFLATEDTCP_STATIC_ASSERT((true))
50
# endif
51
52
# if defined(ONIXS_CONFLATEDTCP_COMPILER_CXX_EXPLICIT_CONVERSIONS) && ONIXS_CONFLATEDTCP_COMPILER_CXX_EXPLICIT_CONVERSIONS
53
# define ONIXS_CONFLATEDTCP_EXPLICIT explicit
54
#else
55
# define ONIXS_CONFLATEDTCP_EXPLICIT
56
#endif
57
58
#if (__cplusplus >= 201103L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L)
59
# define ONIXS_CONFLATEDTCP_CXX11
60
#endif
61
62
#if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
63
# define ONIXS_CONFLATEDTCP_CXX17
64
#endif
65
66
# if defined(ONIXS_CONFLATEDTCP_COMPILER_CXX_CONSTEXPR) && ONIXS_CONFLATEDTCP_COMPILER_CXX_CONSTEXPR
67
# define ONIXS_CONFLATEDTCP_CONST_OR_CONSTEXPR constexpr
68
#else
69
# define ONIXS_CONFLATEDTCP_CONST_OR_CONSTEXPR const
70
#endif
71
72
#if defined(__GNUC__)
73
# define ONIXS_CONFLATEDTCP_CHECK_EXPECT(exp,c) (__builtin_expect((exp), (c)))
74
#else
75
# define ONIXS_CONFLATEDTCP_CHECK_EXPECT(exp,c) ((exp))
76
#endif
77
78
#if !defined(ONIXS_CONFLATEDTCP_NORETURN)
79
# if defined(_MSC_VER)
80
# define ONIXS_CONFLATEDTCP_NORETURN __declspec(noreturn)
81
# elif defined(__GNUC__)
82
# define ONIXS_CONFLATEDTCP_NORETURN __attribute__ ((__noreturn__))
83
# elif defined(__has_cpp_attribute)
84
# if __has_cpp_attribute(noreturn)
85
# define ONIXS_CONFLATEDTCP_NORETURN [[noreturn]]
86
# endif
87
# endif
88
#endif
89
90
#if !defined(ONIXS_CONFLATEDTCP_NORETURN)
91
# define ONIXS_CONFLATEDTCP_NORETURN
92
#endif
93
94
95
#if !defined(ONIXS_CONFLATEDTCP_NODISCARD)
96
# if defined(_MSC_VER)
97
# define ONIXS_CONFLATEDTCP_NODISCARD _Check_return_
98
# elif defined(__GNUC__)
99
# define ONIXS_CONFLATEDTCP_NODISCARD __attribute__((warn_unused_result))
100
# elif defined(__has_cpp_attribute)
101
# if __has_cpp_attribute(nodiscard)
102
# define ONIXS_CONFLATEDTCP_NODISCARD [[nodiscard]]
103
# endif
104
# endif
105
#endif
106
107
#if !defined(ONIXS_CONFLATEDTCP_NODISCARD)
108
# define ONIXS_CONFLATEDTCP_NODISCARD
109
#endif
110
111
#if defined(__GNUC__)
112
# define ONIXS_CONFLATEDTCP_UNUSED __attribute__((__unused__))
113
#else
114
# define ONIXS_CONFLATEDTCP_UNUSED
115
#endif
116
117
#if defined(__GNUC__)
118
# define ONIXS_CONFLATEDTCP_HOTPATH __attribute__((hot))
119
# define ONIXS_CONFLATEDTCP_COLDPATH __attribute__((cold))
120
#else
121
# define ONIXS_CONFLATEDTCP_COLDPATH
122
# define ONIXS_CONFLATEDTCP_HOTPATH
123
#endif
124
125
126
#if defined(__GNUC__)
127
# define ONIXS_CONFLATEDTCP_LIKELY(cond) (__builtin_expect((static_cast<bool>((cond))), true))
128
# define ONIXS_CONFLATEDTCP_UNLIKELY(cond) (__builtin_expect((static_cast<bool>((cond))), false))
129
#else
130
# if defined(__has_cpp_attribute)
131
# if __has_cpp_attribute(unlikely)
132
# define ONIXS_CONFLATEDTCP_UNLIKELY(cond) ((cond)) [[unlikely]]
133
# define ONIXS_CONFLATEDTCP_LIKELY(cond) ((cond)) [[likely]]
134
# endif
135
# endif
136
#endif
137
138
#if !defined(ONIXS_CONFLATEDTCP_LIKELY)
139
# define ONIXS_CONFLATEDTCP_LIKELY(cond) ((cond))
140
#endif
141
142
#if !defined(ONIXS_CONFLATEDTCP_UNLIKELY)
143
# define ONIXS_CONFLATEDTCP_UNLIKELY(cond) ((cond))
144
#endif
145
146
#if defined(__GNUC__) && !defined(__clang__)
147
# define ONIXS_CONFLATEDTCP_PURE __attribute__((pure))
148
#else
149
# define ONIXS_CONFLATEDTCP_PURE
150
#endif
151
152
#if defined (ONIXS_CONFLATEDTCP_CXX11)
153
# define ONIXS_CONFLATEDTCP_HAS_TYPE_TRAITS
154
#endif
155
156
#if defined(ONIXS_CONFLATEDTCP_CXX17)
157
# define ONIXS_CONFLATEDTCP_HAS_STRING_VIEW
158
#endif
159
160
#if defined(ONIXS_CONFLATEDTCP_CXX11)
161
# define ONIXS_CONFLATEDTCP_HAS_GATEWAY_EMULATOR
162
#endif
163
164
#define ONIXS_CONFLATEDTCP_DEFAULT {}
165
166
#if defined NDEBUG
167
# define ONIXS_CONFLATEDTCP_ASSERT(CHECK) void(0)
168
#else
169
# if !defined(ONIXS_CONFLATEDTCP_CXX11)
170
# define ONIXS_CONFLATEDTCP_ASSERT(CHECK) (assert((CHECK)))
171
# else
172
# define ONIXS_CONFLATEDTCP_ASSERT(CHECK) \
173
((CHECK) ? void(0) : []() {assert(!#CHECK);}())
174
# endif
175
#endif
176
177
#if defined(__clang__)
178
#define ONIXS_CONFLATEDTCP_PADDING(size) __attribute__((__unused__)) Byte padding##__LINE__[size]
179
#else
180
#define ONIXS_CONFLATEDTCP_PADDING(size) Byte padding##__LINE__[size]
181
#endif
182
183
#define ONIXS_CONFLATEDTCP_HARDWARE_DESTRUCTIVE_INTERFACE_SIZE (64)
184
185
#else //#if !(defined(ONIXS_DOXYGEN) && ONIXS_DOXYGEN)
186
187
#define ONIXS_CONFLATEDTCP_EXPORTED
188
#define ONIXS_CONFLATEDTCP_GCC44_SPURIOUS_WARNING_TURNAROUND
189
#define ONIXS_CONFLATEDTCP_NOTHROW noexcept
190
#define ONIXS_CONFLATEDTCP_EXPLICIT explicit
191
#define ONIXS_CONFLATEDTCP_CONST_OR_CONSTEXPR constexpr
192
#define ONIXS_CONFLATEDTCP_CONSTEXPR constexpr
193
#define ONIXS_CONFLATEDTCP_OVERRIDE override
194
#define ONIXS_CONFLATEDTCP_FINAL final
195
#define ONIXS_CONFLATEDTCP_COMPILER_CXX_NULLPTR nullptr
196
197
#define ONIXS_CONFLATEDTCP_NORETURN
198
#define ONIXS_CONFLATEDTCP_NODISCARD
199
200
#define ONIXS_CONFLATEDTCP_HOTPATH
201
#define ONIXS_CONFLATEDTCP_COLDPATH
202
#define ONIXS_CONFLATEDTCP_PURE
203
204
#define ONIXS_CONFLATEDTCP_HAS_TYPE_TRAITS
205
#define ONIXS_CONFLATEDTCP_HAS_STRING_VIEW
206
207
#define ONIXS_CONFLATEDTCP_HAS_GATEWAY_EMULATOR
208
209
#define ONIXS_CONFLATEDTCP_COMPILER_CXX_ALIAS_TEMPLATES 1
210
#define ONIXS_CONFLATEDTCP_COMPILER_CXX_RVALUE_REFERENCES 1
211
#define ONIXS_CONFLATEDTCP_CXX11
212
213
#endif
CompilerDetection.h