OnixS C++ ICE Binary Order Entry Handler 1.0.0
API Documentation
Loading...
Searching...
No Matches
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#pragma once
20
21#include <cstdint>
23
24#if defined (ONIXS_ICEBOE_COMPILER_IS_MSVC)
25#define ONIXS_ICEBOE_API_DECL(typeKind, typeName) typeKind ONIXS_ICEBOE_EXPORTED typeName
26#else
27#define ONIXS_ICEBOE_API_DECL(typeKind, typeName) typeKind typeName
28#endif
29
30// Common part of export-related decorations.
31
32#define \
33 ONIXS_ICEBOE_EXPORTED_CLASS_DECL(typeName) \
34 ONIXS_ICEBOE_EXPORTED_DECL(class, typeName)
35
36#define \
37 ONIXS_ICEBOE_EXPORTED_STRUCT_DECL(typeName) \
38 ONIXS_ICEBOE_EXPORTED_DECL(struct, typeName)
39
40#define \
41 ONIXS_ICEBOE_EXPORTED_CLASS \
42 class ONIXS_ICEBOE_EXPORTED
43
44#define \
45 ONIXS_ICEBOE_EXPORTED_STRUCT \
46 struct ONIXS_ICEBOE_EXPORTED
47
48#define \
49 ONIXS_ICEBOE_INTERNAL_CLASS_DECL(typeName) \
50 class typeName
51
52#define \
53 ONIXS_ICEBOE_INTERNAL_STRUCT_DECL(typeName) \
54 struct typeName
55
56#if defined(ONIXS_ICEBOE_COMPILER_IS_GNU)
57# define ONIXS_ICEBOE_DIAG_PUSH ONIXS_ICEBOE_PRAGMA(GCC diagnostic push)
58# define ONIXS_ICEBOE_DIAG_POP ONIXS_ICEBOE_PRAGMA(GCC diagnostic pop)
59#elif defined(ONIXS_ICEBOE_COMPILER_IS_MSVC)
60# define ONIXS_ICEBOE_DIAG_PUSH ONIXS_ICEBOE_PRAGMA(warning(push))
61# define ONIXS_ICEBOE_DIAG_POP ONIXS_ICEBOE_PRAGMA(warning(pop))
62#else
63# define ONIXS_ICEBOE_DIAG_PUSH
64# define ONIXS_ICEBOE_DIAG_POP
65#endif
66
67#if defined(ONIXS_ICEBOE_COMPILER_IS_GNU) && (ONIXS_CURRENT_CXX_STD < 201402L) && defined(__INCLUDE_LEVEL__) && (__INCLUDE_LEVEL__ > 0)
68# define ONIXS_ICEBOE_SILENCE_PUBLIC_HEADER ONIXS_ICEBOE_PRAGMA(GCC system_header)
69#else
70# define ONIXS_ICEBOE_SILENCE_PUBLIC_HEADER
71#endif
72
73#if defined(ONIXS_ICEBOE_COMPILER_IS_GNU) && (__GNUC__ == 8) && !defined(NDEBUG)
74# define ONIXS_ICEBOE_SILENCE_TYPE_LIMITS ONIXS_ICEBOE_PRAGMA(GCC diagnostic ignored "-Wtype-limits")
75#else
76# define ONIXS_ICEBOE_SILENCE_TYPE_LIMITS
77#endif
78
79#if defined(ONIXS_ICEBOE_COMPILER_IS_MSVC)
80# define ONIXS_ICEBOE_SILENCE_DLLEXPORT ONIXS_ICEBOE_PRAGMA(warning(disable : 4275 4251))
81#else
82# define ONIXS_ICEBOE_SILENCE_DLLEXPORT
83#endif
84
85#define ONIXS_ICEBOE_SILENCE_BEGIN \
86 ONIXS_ICEBOE_SILENCE_PUBLIC_HEADER \
87 ONIXS_ICEBOE_DIAG_PUSH \
88 ONIXS_ICEBOE_SILENCE_TYPE_LIMITS \
89 ONIXS_ICEBOE_SILENCE_DLLEXPORT
90
91#define ONIXS_ICEBOE_SILENCE_END \
92 ONIXS_ICEBOE_DIAG_POP
93
94#define ONIXS_ICEBOE_NAMESPACE_BEGIN \
95 ONIXS_ICEBOE_SILENCE_BEGIN \
96 namespace OnixS { namespace ICE { namespace BOE {
97
98#define ONIXS_ICEBOE_NAMESPACE_END \
99 ONIXS_ICEBOE_SILENCE_END \
100 }}}
101
102#define ONIXS_ICEBOE_MESSAGING_NAMESPACE_BEGIN \
103 ONIXS_ICEBOE_NAMESPACE_BEGIN \
104 namespace Messaging {
105
106#define ONIXS_ICEBOE_MESSAGING_NAMESPACE_END \
107 ONIXS_ICEBOE_NAMESPACE_END \
108 }
109
110#define ONIXS_ICEBOE_MESSAGING_TAGBASED_NAMESPACE_BEGIN ONIXS_ICEBOE_MESSAGING_NAMESPACE_BEGIN namespace TagBased {
111#define ONIXS_ICEBOE_MESSAGING_TAGBASED_NAMESPACE_END ONIXS_ICEBOE_MESSAGING_NAMESPACE_END }
112
113#define ONIXS_ICEBOE_NAMESPACE OnixS::ICE::BOE
114#define ONIXS_ICEBOE_MESSAGING_NAMESPACE ONIXS_ICEBOE_NAMESPACE::Messaging