/*
 * This file has been automatically generated by the jrl-cmakemodules.
 * Please see https://github.com/jrl-umi3218/jrl-cmakemodules/blob/master/deprecated.hh.cmake for details.
*/

#ifndef COAL_DEPRECATED_HH
# define COAL_DEPRECATED_HH

// Define a suffix which can be used to tag a type, a function or a a
// variable as deprecated (i.e. it will emit a warning when using it).
//
// Tagging a function as deprecated:
//  void foo () COAL_DEPRECATED;
//
// Tagging a type as deprecated:
//  class Foo {};
//  typedef Foo Bar COAL_DEPRECATED;
//
// Tagging a variable as deprecated:
//  int a COAL_DEPRECATED = 0;
//
// The use of a macro is required as this is /not/ a standardized
// feature of C++ language or preprocessor, even if most of the
// compilers support it.
# if defined(__cplusplus) && (__cplusplus >= 201402L)
#  define COAL_DEPRECATED [[deprecated]]
#  define COAL_DEPRECATED_MESSAGE(message) [[deprecated(#message)]]
# elif defined(__GNUC__) || defined(__clang__)
#  define COAL_DEPRECATED __attribute__ ((deprecated))
#  define COAL_DEPRECATED_MESSAGE(message) __attribute__ (( deprecated(#message) ))
# else
#  if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
#   define COAL_DEPRECATED __declspec (deprecated)
#   define COAL_DEPRECATED_MESSAGE(message) __declspec ( deprecated(#message) )
#  else
// If the compiler is not recognized, drop the feature.
#   define COAL_DEPRECATED /* nothing */
#   define COAL_DEPRECATED_MESSAGE(message)
#  endif // __MSVC__
# endif // __cplusplus

# if defined(__GNUC__) || defined(__clang__)
#  ifndef COAL_PRAGMA
#   define COAL_PRAGMA(X) _Pragma(#X)
#  endif
#  define COAL_DEPRECATED_HEADER(MSG) COAL_PRAGMA(GCC warning MSG)
# elif defined(_MSC_VER) && !defined(__INTEL_COMPILER)
#  define COAL_STRINGIZE_(MSG) #MSG
#  define COAL_STRINGIZE(MSG) COAL_STRINGIZE_(MSG)
#  define COAL_DEPRECATED_HEADER(MSG) \
    __pragma(message(__FILE__ "(" COAL_STRINGIZE(__LINE__) ") : Warning: " MSG))
# else
#  define COAL_DEPRECATED_HEADER(MSG)
# endif

#endif //! COAL_DEPRECATED_HH
