IDS peak IPL v1.18.0
Loading...
Searching...
No Matches
peak_common_defines.h
Go to the documentation of this file.
1
5
6#pragma once
7
8// clang-format off
9#define PEAK_COMMON_CPP_STANDARD_14 201402L
10#define PEAK_COMMON_CPP_STANDARD_17 201702L
11// clang-format on
12
13#ifdef __has_c_attribute
14# define PEAK_COMMON_has_c_attribute(x) __has_c_attribute(x)
15#else
16# define PEAK_COMMON_has_c_attribute(x) 0
17#endif
18
19#if defined(__cplusplus)
20# define PEAK_COMMON_CPP_STANDARD __cplusplus
21#elif defined(_MSVC_LANG)
22# define PEAK_COMMON_CPP_STANDARD _MSVC_LANG
23#endif
24
25#if defined(_MSC_VER)
26# define PEAK_COMMON_BEGIN_DISABLE_DEPRECATED_WARNINGS __pragma(warning(push)) __pragma(warning(disable : 4'996))
27# define PEAK_COMMON_END_DISABLE_DEPRECATED_WARNINGS __pragma(warning(pop))
28#elif defined(__clang__) || defined(__GNUC__)
29# define PEAK_COMMON_BEGIN_DISABLE_DEPRECATED_WARNINGS \
30 _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
31# define PEAK_COMMON_END_DISABLE_DEPRECATED_WARNINGS _Pragma("GCC diagnostic pop")
32#else
33# define PEAK_COMMON_BEGIN_DISABLE_DEPRECATED_WARNINGS
34# define PEAK_COMMON_END_DISABLE_DEPRECATED_WARNINGS
35#endif
36
37#if !defined(PEAK_COMMON_NO_WARN_DEPRECATED) \
38 && ((defined(PEAK_COMMON_CPP_STANDARD) && PEAK_COMMON_CPP_STANDARD >= PEAK_COMMON_CPP_STANDARD_14) \
39 || PEAK_COMMON_has_c_attribute(deprecated))
48# define PEAK_COMMON_DEPRECATED_MSG(MESSAGE) [[deprecated(MESSAGE)]]
49#elif !defined(PEAK_COMMON_NO_WARN_DEPRECATED) && (defined(__clang__) || defined(__GNUC__) || defined(__GNUG__))
50# define PEAK_COMMON_DEPRECATED_MSG(MESSAGE) __attribute__((deprecated(MESSAGE)))
51#else
52# define PEAK_COMMON_DEPRECATED_MSG(MESSAGE)
53#endif
54
55#if !defined(PEAK_COMMON_NO_WARN_DEPRECATED) && defined(PEAK_COMMON_CPP_STANDARD) \
56 && PEAK_COMMON_CPP_STANDARD >= PEAK_COMMON_CPP_STANDARD_17
65# define PEAK_COMMON_DEPRECATED_ENUM_MSG(MESSAGE) [[deprecated(MESSAGE)]]
66#elif !defined(PEAK_COMMON_NO_WARN_DEPRECATED) && (defined(__clang__) || defined(__GNUC__) || defined(__GNUG__))
67# define PEAK_COMMON_DEPRECATED_ENUM_MSG(MESSAGE) __attribute__((deprecated(MESSAGE)))
68#else
69# define PEAK_COMMON_DEPRECATED_ENUM_MSG(MESSAGE)
70#endif
71
72#if (defined(PEAK_COMMON_CPP_STANDARD) && PEAK_COMMON_CPP_STANDARD >= PEAK_COMMON_CPP_STANDARD_17) \
73 || PEAK_COMMON_has_c_attribute(nodiscard)
82# define PEAK_COMMON_NO_DISCARD [[nodiscard]]
83#elif defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
84# define PEAK_COMMON_NO_DISCARD __attribute__((warn_unused_result))
85#elif defined(_MSC_VER)
86# include <sal.h>
87# define PEAK_COMMON_NO_DISCARD _Check_return_
88#else
89# define PEAK_COMMON_NO_DISCARD
90#endif
91
92#if (defined(PEAK_COMMON_CPP_STANDARD) && PEAK_COMMON_CPP_STANDARD >= PEAK_COMMON_CPP_STANDARD_17) \
93 || PEAK_COMMON_has_c_attribute(maybe_unused)
102# define PEAK_COMMON_MAYBE_UNUSED [[maybe_unused]]
103#elif defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)
104# define PEAK_COMMON_MAYBE_UNUSED __attribute__((unused))
105#else
106# define PEAK_COMMON_MAYBE_UNUSED
107#endif