Loading...
Searching...
No Matches
Go to the documentation of this file.
16#if !defined(BSONCXX_V1_DETAIL_MACROS_HPP)
17#define BSONCXX_V1_DETAIL_MACROS_HPP
20#define BSONCXX_PRIVATE_STRINGIFY(...) BSONCXX_PRIVATE_STRINGIFY_IMPL(__VA_ARGS__)
21#define BSONCXX_PRIVATE_STRINGIFY_IMPL(...) #__VA_ARGS__
24#define BSONCXX_PRIVATE_CONCAT(A, ...) BSONCXX_PRIVATE_CONCAT_IMPL(A, __VA_ARGS__)
25#define BSONCXX_PRIVATE_CONCAT_IMPL(A, ...) A##__VA_ARGS__
40#define BSONCXX_PRIVATE_PRAGMA(...) BSONCXX_PRIVATE_PRAGMA_IMPL(__VA_ARGS__)
43#define BSONCXX_PRIVATE_PRAGMA_IMPL(...) __pragma(__VA_ARGS__)
45#define BSONCXX_PRIVATE_PRAGMA_IMPL(...) _Pragma(BSONCXX_PRIVATE_STRINGIFY(__VA_ARGS__))
51#define BSONCXX_PRIVATE_FORCE_SEMICOLON static_assert(true, "")
68#define BSONCXX_PRIVATE_RETURNS(...) \
69 noexcept(noexcept(__VA_ARGS__))->decltype(__VA_ARGS__) { \
72 BSONCXX_PRIVATE_FORCE_SEMICOLON
80#if __cplusplus >= 201402L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L && _MSC_VER > 1910)
81#define BSONCXX_PRIVATE_CONSTEXPR_CXX14 constexpr
83#define BSONCXX_PRIVATE_CONSTEXPR_CXX14 inline
86#define BSONCXX_PRIVATE_IF_MSVC(...)
87#define BSONCXX_PRIVATE_IF_GCC(...)
88#define BSONCXX_PRIVATE_IF_CLANG(...)
89#define BSONCXX_PRIVATE_IF_GNU_LIKE(...) \
90 BSONCXX_PRIVATE_IF_GCC(__VA_ARGS__) \
91 BSONCXX_PRIVATE_IF_CLANG(__VA_ARGS__)
96 #undef BSONCXX_PRIVATE_IF_CLANG
97 #define BSONCXX_PRIVATE_IF_CLANG(...) __VA_ARGS__
99 #undef BSONCXX_PRIVATE_IF_GCC
100 #define BSONCXX_PRIVATE_IF_GCC(...) __VA_ARGS__
102#elif defined(_MSC_VER)
103 #undef BSONCXX_PRIVATE_IF_MSVC
104 #define BSONCXX_PRIVATE_IF_MSVC(...) __VA_ARGS__
118#define BSONCXX_PRIVATE_WARNINGS_DISABLE(Spec) \
119 BSONCXX_PRIVATE_CONCAT(BSONCXX_PRIVATE_WARNINGS_DISABLE_IMPL_FOR_, Spec) \
120 BSONCXX_PRIVATE_FORCE_SEMICOLON
123#define BSONCXX_PRIVATE_WARNINGS_PUSH() \
124 BSONCXX_PRIVATE_IF_GNU_LIKE(BSONCXX_PRIVATE_PRAGMA(GCC diagnostic push)) \
125 BSONCXX_PRIVATE_IF_MSVC(BSONCXX_PRIVATE_PRAGMA(warning(push))) \
126 BSONCXX_PRIVATE_FORCE_SEMICOLON
130#define BSONCXX_PRIVATE_WARNINGS_POP() \
131 BSONCXX_PRIVATE_IF_GNU_LIKE(BSONCXX_PRIVATE_PRAGMA(GCC diagnostic pop)) \
132 BSONCXX_PRIVATE_IF_MSVC(BSONCXX_PRIVATE_PRAGMA(warning(pop))) \
133 BSONCXX_PRIVATE_FORCE_SEMICOLON
135#define BSONCXX_PRIVATE_WARNINGS_DISABLE_IMPL_FOR_GCC(...) \
136 BSONCXX_PRIVATE_IF_GCC(BSONCXX_PRIVATE_PRAGMA(GCC diagnostic ignored __VA_ARGS__))
138#define BSONCXX_PRIVATE_WARNINGS_DISABLE_IMPL_FOR_Clang(...) \
139 BSONCXX_PRIVATE_IF_CLANG(BSONCXX_PRIVATE_PRAGMA(GCC diagnostic ignored __VA_ARGS__))
141#define BSONCXX_PRIVATE_WARNINGS_DISABLE_IMPL_FOR_GNU(...) \
142 BSONCXX_PRIVATE_WARNINGS_DISABLE_IMPL_FOR_GCC(__VA_ARGS__) \
143 BSONCXX_PRIVATE_WARNINGS_DISABLE_IMPL_FOR_Clang(__VA_ARGS__)
145#define BSONCXX_PRIVATE_WARNINGS_DISABLE_IMPL_FOR_MSVC(...) \
146 BSONCXX_PRIVATE_IF_MSVC(BSONCXX_PRIVATE_PRAGMA(warning(disable : __VA_ARGS__)))
148#define BSONCXX_PRIVATE_FWD(...) static_cast<decltype(__VA_ARGS__)&&>(__VA_ARGS__)
150#define BSONCXX_PRIVATE_UNREACHABLE \