Go to the documentation of this file.
18 #ifndef viskores_Deprecated_h
19 #define viskores_Deprecated_h
24 #define VISKORES_DEPRECATED_MAKE_MESSAGE(...) \
26 VISKORES_DEPRECATED_MAKE_MESSAGE_IMPL(__VA_ARGS__, "", viskores::internal::NullType{}))
27 #define VISKORES_DEPRECATED_MAKE_MESSAGE_IMPL(version, message, ...) \
28 message " Deprecated in version " #version "."
70 #ifndef VISKORES_DEPRECATED_ATTRIBUTE_SUPPORTED
74 #elif __cplusplus >= 201402L && !defined(VISKORES_GCC)
79 #define VISKORES_DEPRECATED_ATTRIBUTE_SUPPORTED
81 #elif defined(VISKORES_GCC)
86 #define VISKORES_DEPRECATED_ATTRIBUTE_SUPPORTED
89 #elif defined(__has_cpp_attribute)
91 #if __has_cpp_attribute(deprecated)
93 #define VISKORES_DEPRECATED_ATTRIBUTE_SUPPORTED
94 #endif // __has_cpp_attribute(deprecated)
96 #elif defined(VISKORES_MSVC) && (_MSC_VER >= 1920)
98 #define VISKORES_DEPRECATED_ATTRIBUTE_SUPPORTED
100 #endif // no known compiler support for [[deprecated]]
102 #endif // VISKORES_DEPRECATED_ATTRIBUTE_SUPPORTED check
111 #ifndef VISKORES_DEPRECATED_SUPPRESS_SUPPORTED
113 #if defined(VISKORES_GCC) || defined(VISKORES_CLANG)
115 #define VISKORES_DEPRECATED_SUPPRESS_SUPPORTED
116 #define VISKORES_DEPRECATED_SUPPRESS_BEGIN \
117 _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
118 #define VISKORES_DEPRECATED_SUPPRESS_END _Pragma("GCC diagnostic pop")
120 #elif defined(VISKORES_MSVC)
122 #define VISKORES_DEPRECATED_SUPPRESS_SUPPORTED
123 #define VISKORES_DEPRECATED_SUPPRESS_BEGIN __pragma(warning(push)) __pragma(warning(disable : 4996))
124 #define VISKORES_DEPRECATED_SUPPRESS_END __pragma(warning(pop))
131 #define VISKORES_DEPRECATED_SUPPRESS_BEGIN
132 #define VISKORES_DEPRECATED_SUPPRESS_END
136 #endif // VISKORES_DEPRECATED_SUPPRESS_SUPPORTED check
138 #if !defined(VISKORES_DEPRECATED_SUPPRESS_BEGIN) || !defined(VISKORES_DEPRECATED_SUPPRESS_END)
139 #error VISKORES_DEPRECATED_SUPPRESS macros not properly defined.
144 #if defined(VISKORES_DEPRECATED_ATTRIBUTE_SUPPORTED) && \
145 defined(VISKORES_DEPRECATED_SUPPRESS_SUPPORTED)
147 #define VISKORES_DEPRECATED(...) [[deprecated(VISKORES_DEPRECATED_MAKE_MESSAGE(__VA_ARGS__))]]
152 #define VISKORES_DEPRECATED(...) \
153 __attribute__((deprecated(VISKORES_DEPRECATED_MAKE_MESSAGE(__VA_ARGS__))))
156 #define VISKORES_DEPRECATED(...)
159 #endif // viskores_Deprecated_h