/*
*
* Copyright (C) 2021, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: ofstd
*
* Author: Jan Schlamelcher
*
* Purpose: Marking functions as deprecated that shall no longer be used
*
*/
#ifndef OFDEPREC_H
#define OFDEPREC_H
#ifdef DOXYGEN
/*! @file ofdeprec.h
* @brief Defines macros for marking functions as deprecated
* @details #include "dcmtk/ofstd/ofdeprec.h"
*/
/*! @brief A macro for marking a function as deprecated.
* @details
*
Example
* @code{.cpp}
* OFdeprecated void myFunction() {...}
* @endcode
* @details
* If the compiler supports function deprecation, using this macro will lead
* to a diagnostic message being emitted whenever the marked function is
* used.
*/
#define OFdeprecated
/*! @brief A macro for marking a function as deprecated with a custom message.
* @param MESSAGE the message to print as part of the diagnostic output.
* @details
* Example
* @code{.cpp}
* OFdeprecated_msg("use myNewFunction() instead") void myFunction() {...}
* void myNewFunction() {...}
* @endcode
* @details
* If the compiler supports function deprecation with a custom message, using
* this macro will lead to a diagnostic message including the custom message
* being emitted whenever the marked function is used.
* If the compiler does not support custom messages, it will fall back to
* OFdeprecated.
*/
#define OFdeprecated_msg(MESSAGE)
#else // DOXYGEN
#ifdef HAVE_CXX14_DEPRECATED_ATTRIBUTE
#define OFdeprecated [[deprecated]]
#elif defined(HAVE_ATTRIBUTE_DEPRECATED)
#define OFdeprecated __attribute__((deprecated))
#elif defined(HAVE_DECLSPEC_DEPRECATED)
#define OFdeprecated __declspec(deprecated)
#else
#define OFdeprecated
#endif
#ifdef HAVE_CXX14_DEPRECATED_ATTRIBUTE_MSG
#define OFdeprecated_msg(MESSAGE) [[deprecated(#MESSAGE)]]
#elif defined(HAVE_ATTRIBUTE_DEPRECATED_MSG)
#define OFdeprecated_msg(MESSAGE) __attribute__((deprecated(#MESSAGE)))
#elif defined(HAVE_DECLSPEC_DEPRECATED_MSG)
#define OFdeprecated_msg(MESSAGE) __declspec(deprecated(#MESSAGE))
#else
#define OFdeprecated_msg(MESSAGE) OFdeprecated
#endif
#endif // NOT DOXYGEN
#endif // OFDEPREC_H