OnixS C++ Fenics UST BIMP Market Data Handler  1.1.0
API documentation
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 #include <OnixS/FenicsUST/MarketData/Bimp/CompilerDetection.h>
23 
24 # if defined(ONIXS_FENICSUST_BIMP_COMPILER_CXX_NOEXCEPT) && ONIXS_FENICSUST_BIMP_COMPILER_CXX_NOEXCEPT
25 # define ONIXS_FENICSUST_BIMP_NOTHROW noexcept
26 # else
27 # define ONIXS_FENICSUST_BIMP_NOTHROW throw()
28 # endif
29 
30 # if defined(ONIXS_FENICSUST_BIMP_COMPILER_CXX_EXPLICIT_CONVERSIONS) && ONIXS_FENICSUST_BIMP_COMPILER_CXX_EXPLICIT_CONVERSIONS
31 # define ONIXS_FENICSUST_BIMP_EXPLICIT explicit
32 #else
33 # define ONIXS_FENICSUST_BIMP_EXPLICIT
34 #endif
35 
36 #if defined (__GNUC__)
37 # if (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
38 # define ONIXS_FENICSUST_BIMP_GCC_CXX11
39 # endif
40 #endif
41 
42 
43 # if defined(ONIXS_FENICSUST_BIMP_COMPILER_CXX_CONSTEXPR) && ONIXS_FENICSUST_BIMP_COMPILER_CXX_CONSTEXPR
44 # define ONIXS_FENICSUST_BIMP_CONST_OR_CONSTEXPR constexpr
45 #else
46 # define ONIXS_FENICSUST_BIMP_CONST_OR_CONSTEXPR const
47 #endif
48 
49 #if defined(__GNUC__)
50 # define ONIXS_FENICSUST_BIMP_CHECK_EXPECT(exp,c) (__builtin_expect((exp), (c)))
51 #else
52 # define ONIXS_FENICSUST_BIMP_CHECK_EXPECT(exp,c) ((exp))
53 #endif
54 
55 #if defined(__GNUC__)
56 #define ONIXS_FENICSUST_BIMP_HOT_PATH __attribute__((hot))
57 #define ONIXS_FENICSUST_BIMP_COLD_PATH __attribute__((noinline,cold))
58 #else
59 #define ONIXS_FENICSUST_BIMP_HOT_PATH
60 #define ONIXS_FENICSUST_BIMP_COLD_PATH
61 #endif
62 
63 #if !defined(ONIXS_FENICSUST_BIMP_NORETURN)
64 # if defined(_MSC_VER)
65 # define ONIXS_FENICSUST_BIMP_NORETURN __declspec(noreturn)
66 # elif defined(__GNUC__)
67 # define ONIXS_FENICSUST_BIMP_NORETURN __attribute__ ((__noreturn__))
68 # elif defined(__has_cpp_attribute)
69 # if __has_cpp_attribute(noreturn)
70 # define ONIXS_FENICSUST_BIMP_NORETURN [[noreturn]]
71 # endif
72 # endif
73 #endif
74 
75 #if !defined(ONIXS_FENICSUST_BIMP_NORETURN)
76 # define BOOST_NO_NORETURN
77 # define ONIXS_FENICSUST_BIMP_NORETURN
78 #endif