OnixS C++ CME MDP Premium Market Data Handler  5.8.9
API Documentation
Bootstrap.h
Go to the documentation of this file.
1 // Copyright Onix Solutions Limited [OnixS]. All rights reserved.
2 //
3 // This software owned by Onix Solutions Limited [OnixS] and is
4 // protected by copyright law and international copyright treaties.
5 //
6 // Access to and use of the software is governed by the terms of the applicable
7 // OnixS Software Services Agreement (the Agreement) and Customer end user license
8 // agreements granting a non-assignable, non-transferable and non-exclusive license
9 // to use the software for it's own data processing purposes under the terms defined
10 // in the Agreement.
11 //
12 // Except as otherwise granted within the terms of the Agreement, copying or
13 // reproduction of any part of this source code or associated reference material
14 // to any other location for further reproduction or redistribution, and any
15 // amendments to this copyright notice, are expressly prohibited.
16 //
17 // Any reproduction or redistribution for sale or hiring of the Software not in
18 // accordance with the terms of the Agreement is a violation of copyright law.
19 //
20 
21 #pragma once
22 
23 #include <cstddef>
24 #include <cassert>
25 
26 #include <OnixS/CME/MDH/Export.h>
27 #include <OnixS/CME/MDH/Compiler.h>
28 
29 #if defined(_MSC_VER)
30 # define ONIXS_CMEMDH_EXPORTED_DECL(entity, typeName) entity ONIXS_CMEMDH_EXPORTED typeName
31 #else
32 # define ONIXS_CMEMDH_EXPORTED_DECL(entity, typeName) entity typeName
33 #endif
34 
35 #define ONIXS_CMEMDH_EXPORTED_CLASS_DECL(typeName) ONIXS_CMEMDH_EXPORTED_DECL(class, typeName)
36 #define ONIXS_CMEMDH_EXPORTED_STRUCT_DECL(typeName) ONIXS_CMEMDH_EXPORTED_DECL(struct, typeName)
37 #define ONIXS_CMEMDH_INTERNAL_CLASS_DECL(typeName) class typeName
38 #define ONIXS_CMEMDH_INTERNAL_STRUCT_DECL(typeName) struct typeName
39 
40 #if defined(ONIXS_CMEMDH_LTWT_AS_EXPORTED)
41 # define ONIXS_CMEMDH_LTWT ONIXS_CMEMDH_EXPORTED
42 # define ONIXS_CMEMDH_LTWT_EXPORTED /* Nothing */
43 # define ONIXS_CMEMDH_LTWT_CLASS_DECL(name) ONIXS_CMEMDH_EXPORTED_CLASS_DECL(name)
44 # define ONIXS_CMEMDH_LTWT_STRUCT_DECL(name) ONIXS_CMEMDH_EXPORTED_STRUCT_DECL(name)
45 #else
46 # define ONIXS_CMEMDH_LTWT /* Nothing */
47 # define ONIXS_CMEMDH_LTWT_EXPORTED ONIXS_CMEMDH_EXPORTED
48 # define ONIXS_CMEMDH_LTWT_CLASS_DECL(name) class name
49 # define ONIXS_CMEMDH_LTWT_STRUCT_DECL(name) struct name
50 #endif // ONIXS_CMEMDH_LTWT_AS_EXPORTED
51 
52 // Structure packing.
53 #define ONIXS_CMEMDH_TO_STR(entity) #entity
54 
55 #if defined(_MSC_VER)
56 # define ONIXS_CMEMDH_DATA_PACKING_BEGIN(alignment) __pragma(pack(push, alignment))
57 # define ONIXS_CMEMDH_DATA_PACKING_END __pragma(pack(pop))
58 #elif defined(__GNUC__) && (__GNUC__ >= 3)
59 # define ONIXS_CMEMDH_DATA_PACKING_BEGIN(alignment) _Pragma(ONIXS_CMEMDH_TO_STR(pack(push, alignment)))
60 # define ONIXS_CMEMDH_DATA_PACKING_END _Pragma("pack(pop)")
61 #else
62 # error Compiler toolset is not (yet) supported. Please contact support@onixs.biz for further assistance.
63 #endif
64 
65 // A few decorations for better source-code crafting.
66 // clang-format off
67 #define ONIXS_CMEMDH_NAMESPACE_BEGIN namespace OnixS { namespace CME { namespace MDH {
68 #define ONIXS_CMEMDH_NAMESPACE_END }}}
69 
70 #define ONIXS_CMEMDHFIX_NAMESPACE_BEGIN namespace OnixS { namespace CME { namespace MDH { namespace FIX {
71 #define ONIXS_CMEMDHFIX_NAMESPACE_END }}}}
72 // clang-format on