OnixS C++ CME MDP Premium Market Data Handler 5.9.0
API Documentation
Loading...
Searching...
No Matches
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
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