OnixS C++ Eurex T7 Market and Reference Data (EMDI, MDI, RDI, EOBI) Handlers
16.1.0
API documentation
Home
Contents
Namespaces
Classes
Files
File List
File Members
include
OnixS
Eurex
MarketData
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
#pragma once
20
21
#include <sstream>
22
23
#if defined (_MSC_VER)
24
# define ONIXS_EUREX_EMDI_COMPILER_INFO ("MSVS")
25
#elif __GNUC__
26
inline
27
std::string compilerInfo()
28
{
29
std::stringstream ss;
30
ss <<
"gcc "
<< __VERSION__ <<
", std="
<< __cplusplus;
31
return
ss.str();
32
}
33
# define ONIXS_EUREX_EMDI_COMPILER_INFO (compilerInfo())
34
#else
35
# define ONIXS_EUREX_EMDI_COMPILER_INFO ("Unknown")
36
#endif
37
38
39
#if !(defined(ONIXS_EUREX_EMDI_DOXYGEN) && ONIXS_EUREX_EMDI_DOXYGEN)
40
41
#include <OnixS/Eurex/MarketData/CompilerDetection.h>
42
43
#if defined(_MSC_VER) && defined(_MSVC_LANG)
44
# define ONIXS_CURRENT_CXX_STD _MSVC_LANG
45
#else
46
# define ONIXS_CURRENT_CXX_STD __cplusplus
47
#endif
48
49
# if defined(ONIXS_EUREX_EMDI_CXX11)
50
# if (ONIXS_CURRENT_CXX_STD < 201103L)
51
# error C++11 was targeted during the OnixS SDK compilation but is not detected now
52
# endif
53
# endif
54
55
# if defined(ONIXS_EUREX_EMDI_CXX14)
56
# if (ONIXS_CURRENT_CXX_STD < 201402L)
57
# error C++14 was targeted during the OnixS SDK compilation but is not detected now
58
# endif
59
# endif
60
61
# if defined(ONIXS_EUREX_EMDI_CXX17)
62
# if (ONIXS_CURRENT_CXX_STD < 201703L)
63
# error C++17 was targeted during the OnixS SDK compilation but is not detected now
64
# endif
65
# endif
66
67
# if defined(ONIXS_EUREX_EMDI_CXX20)
68
# if !(ONIXS_CURRENT_CXX_STD > 201703L)
69
# error C++20 was targeted during the OnixS SDK compilation but is not detected now
70
# endif
71
# endif
72
73
# if defined(ONIXS_EUREX_EMDI_COMPILER_IS_GNU) | defined(ONIXS_EUREX_EMDI_COMPILER_IS_Clang)
74
# define ONIXS_EUREX_EMDI_COMPILER_IS_GNU_or_Clang
75
# endif
76
77
# if defined(ONIXS_EUREX_EMDI_COMPILER_IS_GNU_or_Clang)
78
79
# define ONIXS_EUREX_EMDI_LIKELY(cond) (__builtin_expect((static_cast<bool>((cond))), true))
80
# define ONIXS_EUREX_EMDI_UNLIKELY(cond) (__builtin_expect((static_cast<bool>((cond))), false))
81
# define ONIXS_EUREX_EMDI_UNUSED __attribute__((__unused__))
82
# define ONIXS_EUREX_EMDI_MAY_ALIAS __attribute__((__may_alias__))
83
# define ONIXS_EUREX_EMDI_HOTPATH __attribute__((hot))
84
# define ONIXS_EUREX_EMDI_COLDPATH __attribute__((noinline,cold))
85
# define ONIXS_EUREX_EMDI_NORETURN __attribute__ ((__noreturn__))
86
# define ONIXS_EUREX_EMDI_NODISCARD __attribute__((warn_unused_result))
87
# define ONIXS_EUREX_EMDI_PURE
88
89
#elif defined(ONIXS_EUREX_EMDI_COMPILER_IS_MSVC)
90
91
# define ONIXS_EUREX_EMDI_LIKELY(cond) ((cond))
92
# define ONIXS_EUREX_EMDI_UNLIKELY(cond) ((cond))
93
# define ONIXS_EUREX_EMDI_PURE
94
# define ONIXS_EUREX_EMDI_UNUSED
95
# define ONIXS_EUREX_EMDI_MAY_ALIAS
96
# define ONIXS_EUREX_EMDI_HOTPATH
97
# define ONIXS_EUREX_EMDI_COLDPATH
98
# define ONIXS_EUREX_EMDI_NORETURN __declspec(noreturn)
99
# define ONIXS_EUREX_EMDI_NODISCARD _Check_return_
100
101
#else
102
# error Unsupported compiler
103
#endif
104
105
#if defined(ONIXS_EUREX_EMDI_CXX11)
106
107
# define ONIXS_EUREX_EMDI_NOEXCEPT noexcept
108
# define ONIXS_EUREX_EMDI_EXPLICIT explicit
109
# define ONIXS_EUREX_EMDI_CONST_OR_CONSTEXPR constexpr
110
# define ONIXS_EUREX_EMDI_FINAL final
111
# define ONIXS_EUREX_EMDI_OVERRIDE override
112
# define ONIXS_EUREX_EMDI_CONSTEXPR constexpr
113
# define ONIXS_EUREX_EMDI_NULLPTR nullptr
114
# define ONIXS_EUREX_EMDI_DELETED_FUNCTION = delete
115
# define ONIXS_EUREX_EMDI_STATIC_ASSERT(X) static_assert(X, #X)
116
# define ONIXS_EUREX_EMDI_STATIC_ASSERT_MSG(X, MSG) static_assert(X, MSG)
117
# define ONIXS_EUREX_EMDI_ALIGNAS(X) alignas(X)
118
# define ONIXS_EUREX_EMDI_DEFAULT =default
119
120
#else
121
122
# define ONIXS_EUREX_EMDI_NOEXCEPT throw()
123
# define ONIXS_EUREX_EMDI_EXPLICIT
124
# define ONIXS_EUREX_EMDI_CONST_OR_CONSTEXPR const
125
# define ONIXS_EUREX_EMDI_FINAL
126
# define ONIXS_EUREX_EMDI_OVERRIDE
127
# define ONIXS_EUREX_EMDI_CONSTEXPR
128
# define ONIXS_EUREX_EMDI_DELETED_FUNCTION
129
# define ONIXS_EUREX_EMDI_DEFAULT {}
130
131
132
# if defined ONIXS_EUREX_EMDI_COMPILER_IS_GNU_or_Clang
133
# define ONIXS_EUREX_EMDI_NULLPTR __null
134
# else
135
# define ONIXS_EUREX_EMDI_NULLPTR 0
136
# endif
137
138
139
# define ONIXS_EUREX_EMDI_STATIC_ASSERT_JOIN(X, Y) ONIXS_EUREX_EMDI_STATIC_ASSERT_JOIN_IMPL(X, Y)
140
# define ONIXS_EUREX_EMDI_STATIC_ASSERT_JOIN_IMPL(X, Y) X##Y
141
template
<
bool
>
struct
ONIXS_ILINK3StaticAssert
;
142
template
<>
struct
ONIXS_ILINK3StaticAssert
<true>{};
143
# define ONIXS_EUREX_EMDI_STATIC_ASSERT(X) enum { ONIXS_EUREX_EMDI_STATIC_ASSERT_JOIN(ONIXS_ILINK3StaticAssertEnum, __LINE__) = sizeof(ONIXS_ILINK3StaticAssert<X>) }
144
# define ONIXS_EUREX_EMDI_STATIC_ASSERT_MSG(X, MSG) enum { ONIXS_EUREX_EMDI_STATIC_ASSERT_JOIN(ONIXS_ILINK3StaticAssertEnum, __LINE__) = sizeof(ONIXS_ILINK3StaticAssert<X>) }
145
146
147
# if defined ONIXS_EUREX_EMDI_COMPILER_IS_GNU_or_Clang
148
# define ONIXS_EUREX_EMDI_ALIGNAS(X) __attribute__ ((__aligned__(X)))
149
# elif defined ONIXS_EUREX_EMDI_COMPILER_IS_MSVC
150
# define ONIXS_EUREX_EMDI_ALIGNAS(X) __declspec(align(X))
151
# else
152
# define ONIXS_EUREX_EMDI_ALIGNAS(X)
153
# endif
154
155
#endif
156
157
#if defined NDEBUG
158
# define ONIXS_EUREX_EMDI_ASSERT(CHECK) static_cast<void>((CHECK))
159
#else
160
#if defined (ONIXS_EUREX_EMDI_CXX11)
161
# define ONIXS_EUREX_EMDI_ASSERT(CHECK) ((CHECK) ? void(0) : []() {assert(!#CHECK);}())
162
# else
163
# define ONIXS_EUREX_EMDI_ASSERT(CHECK) (assert((CHECK)))
164
# endif
165
#endif
166
167
#if defined (ONIXS_EUREX_EMDI_CXX11)
168
# define ONIXS_EUREX_EMDI_HAS_TYPE_TRAITS
169
#endif
170
171
#define ONIXS_EUREX_EMDI_HARDWARE_DESTRUCTIVE_INTERFACE_SIZE (64)
172
173
#else //#if !(defined(ONIXS_DOXYGEN) && ONIXS_DOXYGEN)
174
175
#define ONIXS_EUREX_EMDI_EXPORTED
176
#define ONIXS_EUREX_EMDI_NOEXCEPT noexcept
177
#define ONIXS_EUREX_EMDI_EXPLICIT explicit
178
#define ONIXS_EUREX_EMDI_CONST_OR_CONSTEXPR constexpr
179
#define ONIXS_EUREX_EMDI_CONSTEXPR constexpr
180
#define ONIXS_EUREX_EMDI_OVERRIDE override
181
#define ONIXS_EUREX_EMDI_FINAL final
182
#define ONIXS_EUREX_EMDI_NULLPTR nullptr
183
184
#define ONIXS_EUREX_EMDI_NORETURN
185
#define ONIXS_EUREX_EMDI_NODISCARD
186
187
#define ONIXS_EUREX_EMDI_HOTPATH
188
#define ONIXS_EUREX_EMDI_COLDPATH
189
#define ONIXS_EUREX_EMDI_PURE
190
191
#define ONIXS_EUREX_EMDI_HAS_TYPE_TRAITS
192
193
#define ONIXS_EUREX_EMDI_HAS_GATEWAY_EMULATOR
194
195
#define ONIXS_EUREX_EMDI_CXX11
196
#define ONIXS_EUREX_EMDI_CXX14
197
#define ONIXS_EUREX_EMDI_CXX17
198
#define ONIXS_EUREX_EMDI_CXX20
199
200
201
#define ONIXS_EUREX_EMDI_UNUSED
202
#define ONIXS_EUREX_EMDI_DEFAULT =default
203
204
#endif
ONIXS_ILINK3StaticAssert
Definition:
Compiler.h:141