OnixS C++ CME MDP Streamlined Market Data Handler  1.2.0
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 
24 #include <OnixS/CME/Streamlined/Export.h>
25 
26 // Exporting services.
27 
28 #if defined (_MSC_VER)
29 
30 // Qualifiers for public/exported entities.
31 
32 #define \
33  ONIXS_CMESTREAMLINEDMDH_EXPORTED_DECL(entity, typeName) \
34  entity ONIXS_CMESTREAMLINEDMDH_EXPORTED typeName
35 
36 #define \
37  ONIXS_CMESTREAMLINEDMDH_INTERNAL_DECL(entity, typeName) \
38  entity ONIXS_CMESTREAMLINEDMDH_INTERNAL typeName
39 
40 #else
41 
42 #define \
43  ONIXS_CMESTREAMLINEDMDH_EXPORTED_DECL(entity, typeName) \
44  entity typeName
45 
46 #define \
47  ONIXS_CMESTREAMLINEDMDH_INTERNAL_DECL(entity, typeName) \
48  entity typeName
49 
50 #endif // Toolset selector.
51 
52 // Common part of export-related decorations.
53 
54 #define \
55  ONIXS_CMESTREAMLINEDMDH_EXPORTED_CLASS_DECL(typeName) \
56  ONIXS_CMESTREAMLINEDMDH_EXPORTED_DECL(class, typeName)
57 
58 #define \
59  ONIXS_CMESTREAMLINEDMDH_EXPORTED_STRUCT_DECL(typeName) \
60  ONIXS_CMESTREAMLINEDMDH_EXPORTED_DECL(struct, typeName)
61 
62 #define \
63  ONIXS_CMESTREAMLINEDMDH_EXPORTED_CLASS \
64  class ONIXS_CMESTREAMLINEDMDH_EXPORTED
65 
66 #define \
67  ONIXS_CMESTREAMLINEDMDH_EXPORTED_STRUCT \
68  struct ONIXS_CMESTREAMLINEDMDH_EXPORTED
69 
70 #define \
71  ONIXS_CMESTREAMLINEDMDH_INTERNAL_CLASS_DECL(typeName) \
72  ONIXS_CMESTREAMLINEDMDH_INTERNAL_DECL(class, typeName)
73 
74 #define \
75  ONIXS_CMESTREAMLINEDMDH_INTERNAL_STRUCT_DECL(typeName) \
76  ONIXS_CMESTREAMLINEDMDH_INTERNAL_DECL(struct, typeName)
77 
78 #define \
79  ONIXS_CMESTREAMLINEDMDH_INTERNAL_CLASS \
80  class ONIXS_CMESTREAMLINEDMDH_INTERNAL
81 
82 #define \
83  ONIXS_CMESTREAMLINEDMDH_INTERNAL_STRUCT \
84  struct ONIXS_CMESTREAMLINEDMDH_INTERNAL
85 
86 #if defined (ONIXS_CMESTREAMLINEDMDH_LTWT_AS_EXPORTED)
87 
88 #define \
89  ONIXS_CMESTREAMLINEDMDH_LTWT_CLASS \
90  ONIXS_CMESTREAMLINEDMDH_EXPORTED_CLASS
91 
92 #define \
93  ONIXS_CMESTREAMLINEDMDH_LTWT_STRUCT \
94  ONIXS_CMESTREAMLINEDMDH_EXPORTED_STRUCT
95 
96 #define \
97  ONIXS_CMESTREAMLINEDMDH_LTWT_EXPORTED \
98  /* Nothing */
99 
100 #define \
101  ONIXS_CMESTREAMLINEDMDH_LTWT_CLASS_DECL(name) \
102  ONIXS_CMESTREAMLINEDMDH_EXPORTED_CLASS_DECL(name)
103 
104 #define \
105  ONIXS_CMESTREAMLINEDMDH_LTWT_STRUCT_DECL(name) \
106  ONIXS_CMESTREAMLINEDMDH_EXPORTED_STRUCT_DECL(name)
107 
108 #else
109 
110 #define \
111  ONIXS_CMESTREAMLINEDMDH_LTWT_CLASS \
112  class
113 
114 #define \
115  ONIXS_CMESTREAMLINEDMDH_LTWT_STRUCT \
116  struct
117 
118 #define \
119  ONIXS_CMESTREAMLINEDMDH_LTWT_EXPORTED \
120  ONIXS_CMESTREAMLINEDMDH_EXPORTED
121 
122 #define \
123  ONIXS_CMESTREAMLINEDMDH_LTWT_CLASS_DECL(name) \
124  class name
125 
126 #define \
127  ONIXS_CMESTREAMLINEDMDH_LTWT_STRUCT_DECL(name) \
128  struct name
129 
130 #endif // ONIXS_CMESTREAMLINEDMDH_LTWT_AS_EXPORTED
131 
132 // Structure packing.
133 
134 #define \
135  ONIXS_CMESTREAMLINEDMDH_TO_STR(entity) \
136  #entity
137 
138 #if defined (_MSC_VER)
139 
140 #define \
141  ONIXS_CMESTREAMLINEDMDH_DATA_PACKING_BEGIN(alignment) \
142  __pragma(pack(push, alignment))
143 
144 #define \
145  ONIXS_CMESTREAMLINEDMDH_DATA_PACKING_END \
146  __pragma(pack(pop))
147 
148 #elif defined (__GNUC__) && (__GNUC__ >= 3)
149 
150 #define \
151  ONIXS_CMESTREAMLINEDMDH_DATA_PACKING_BEGIN(alignment) \
152  _Pragma(ONIXS_CMESTREAMLINEDMDH_TO_STR(pack(push, alignment)))
153 
154 #define \
155  ONIXS_CMESTREAMLINEDMDH_DATA_PACKING_END \
156  _Pragma("pack(pop)")
157 
158 #else
159 
160 #error \
161  Compiler toolset is not (yet) supported. \
162  Please contact support@onixs.biz for further assistance.
163 
164 #endif
165 
166 // A few decorations for better source-code crafting.
167 
168 #define \
169  ONIXS_CMESTREAMLINEDMDH_NAMESPACE_BEGIN \
170  namespace OnixS { namespace CME { namespace Streamlined { namespace MDH {
171 
172 #define \
173  ONIXS_CMESTREAMLINEDMDH_NAMESPACE_END \
174  }}}}
175 
176 #define \
177  STD_NAMESPACE_BEGIN \
178  namespace std {
179 
180 #define \
181  STD_NAMESPACE_END \
182  }