OnixS C++ B3 Binary UMDF Market Data Handler  1.3.0
API documentation
ABI.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/B3/MarketData/UMDF/Export.h>
24 
25 #if defined (_MSC_VER)
26 #define ONIXS_B3_UMDF_MD_API_DECL(typeKind, typeName) \
27 typeKind ONIXS_B3_UMDF_MD_API typeName
28 
29 #define ONIXS_B3_UMDF_MD_THROWABLE
30 #else
31 #define ONIXS_B3_UMDF_MD_API_DECL(typeKind, typeName) \
32 typeKind typeName
33 
34 #define ONIXS_B3_UMDF_MD_THROWABLE ONIXS_B3_UMDF_MD_API
35 #endif
36 
37 #define ONIXS_B3_UMDF_MD_EXPORTED ONIXS_B3_UMDF_MD_API
38 
39 // Common part of export-related decorations.
40 
41 #define \
42  ONIXS_B3_UMDF_MD_EXPORTED_CLASS_DECL(typeName) \
43  ONIXS_B3_UMDF_MD_EXPORTED_DECL(class, typeName)
44 
45 #define \
46  ONIXS_B3_UMDF_MD_EXPORTED_STRUCT_DECL(typeName) \
47  ONIXS_B3_UMDF_MD_EXPORTED_DECL(struct, typeName)
48 
49 #define \
50  ONIXS_B3_UMDF_MD_EXPORTED_CLASS \
51  class ONIXS_B3_UMDF_MD_EXPORTED
52 
53 #define \
54  ONIXS_B3_UMDF_MD_EXPORTED_STRUCT \
55  struct ONIXS_B3_UMDF_MD_EXPORTED
56 
57 #define \
58  ONIXS_B3_UMDF_MD_INTERNAL_CLASS_DECL(typeName) \
59  class typeName
60 
61 #define \
62  ONIXS_B3_UMDF_MD_INTERNAL_STRUCT_DECL(typeName) \
63  struct typeName
64 
65 #if defined (ONIXS_B3_UMDF_MD_LTWT_AS_EXPORTED)
66 
67 #define \
68  ONIXS_B3_UMDF_MD_LTWT_CLASS \
69  ONIXS_B3_UMDF_MD_EXPORTED_CLASS
70 
71 #define \
72  ONIXS_B3_UMDF_MD_LTWT_STRUCT \
73  ONIXS_B3_UMDF_MD_EXPORTED_STRUCT
74 
75 #define \
76  ONIXS_B3_UMDF_MD_LTWT_EXPORTED \
77  /* Nothing */
78 
79 #define \
80  ONIXS_B3_UMDF_MD_LTWT_CLASS_DECL(name) \
81  ONIXS_B3_UMDF_MD_EXPORTED_CLASS_DECL(name)
82 
83 #define \
84  ONIXS_B3_UMDF_MD_LTWT_STRUCT_DECL(name) \
85  ONIXS_B3_UMDF_MD_EXPORTED_STRUCT_DECL(name)
86 
87 #else
88 
89 #define \
90  ONIXS_B3_UMDF_MD_LTWT_CLASS \
91  class ONIXS_B3_UMDF_MD_GCC44_SPURIOUS_WARNING_TURNAROUND
92 
93 #define \
94  ONIXS_B3_UMDF_MD_LTWT_STRUCT \
95  struct ONIXS_B3_UMDF_MD_GCC44_SPURIOUS_WARNING_TURNAROUND
96 
97 #define \
98  ONIXS_B3_UMDF_MD_LTWT_EXPORTED \
99  ONIXS_B3_UMDF_MD_EXPORTED
100 
101 #define \
102  ONIXS_B3_UMDF_MD_LTWT_CLASS_DECL(name) \
103  class ONIXS_B3_UMDF_MD_GCC44_SPURIOUS_WARNING_TURNAROUND name
104 
105 #define \
106  ONIXS_B3_UMDF_MD_LTWT_STRUCT_DECL(name) \
107  struct ONIXS_B3_UMDF_MD_GCC44_SPURIOUS_WARNING_TURNAROUND name
108 
109 #endif // ONIXS_B3_UMDF_MD_LTWT_AS_EXPORTED
110 
111 // Structure packing.
112 
113 #define \
114  ONIXS_B3_UMDF_MD_TO_STR(entity) \
115  #entity
116 
117 #if defined (_MSC_VER)
118 
119 #define \
120  ONIXS_B3_UMDF_MD_DATA_PACKING_BEGIN(alignment) \
121  __pragma(pack(push, alignment))
122 
123 #define \
124  ONIXS_B3_UMDF_MD_DATA_PACKING_END \
125  __pragma(pack(pop))
126 
127 #elif defined (__GNUC__) && (__GNUC__ >= 3)
128 
129 #define \
130  ONIXS_B3_UMDF_MD_DATA_PACKING_BEGIN(alignment) \
131  _Pragma(ONIXS_B3_UMDF_MD_TO_STR(pack(push, alignment)))
132 
133 #define \
134  ONIXS_B3_UMDF_MD_DATA_PACKING_END \
135  _Pragma("pack(pop)")
136 
137 #else
138 
139 #error \
140  Compiler toolset is not (yet) supported. \
141  Please contact support@onixs.biz for further assistance.
142 
143 #endif
144 
145 #define \
146  ONIXS_B3_UMDF_MD_MESSAGING_NAMESPACE_BEGIN \
147  namespace OnixS { namespace B3 { namespace MarketData { namespace UMDF { namespace Messaging {
148 
149 
150 #define \
151  ONIXS_B3_UMDF_MD_MESSAGING_NAMESPACE_END \
152  }}}}}
153 
154 
155 #define \
156  ONIXS_B3_UMDF_MD_NAMESPACE_BEGIN \
157  namespace OnixS { namespace B3 { namespace MarketData { namespace UMDF {
158 
159 
160 #define \
161  ONIXS_B3_UMDF_MD_NAMESPACE_END \
162  }}}}
163 
164 #define ONIXS_B3_UMDF_MD_MESSAGING OnixS::B3::MarketData::UMDF::Messaging