GDCM 2.0.17
|
00001 /*========================================================================= 00002 00003 Program: GDCM (Grassroots DICOM). A DICOM library 00004 Module: $URL$ 00005 00006 Copyright (c) 2006-2010 Mathieu Malaterre 00007 All rights reserved. 00008 See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00015 #ifndef GDCMLEGACYMACRO_H 00016 #define GDCMLEGACYMACRO_H 00017 00018 #if !defined(GDCMTYPES_H) && !defined(SWIG) 00019 #error you need to include gdcmTypes.h instead 00020 #endif 00021 00022 #include "gdcmException.h" 00023 #include "gdcmTrace.h" 00024 00025 //---------------------------------------------------------------------------- 00026 // Setup legacy code policy. 00027 00028 // Define GDCM_LEGACY macro to mark legacy methods where they are 00029 // declared in their class. Example usage: 00030 // 00031 // // @deprecated Replaced by MyOtherMethod() as of GDCM 2.0. 00032 // GDCM_LEGACY(void MyMethod()); 00033 #if defined(GDCM_LEGACY_REMOVE) 00034 # define GDCM_LEGACY(method) 00035 #elif defined(GDCM_LEGACY_SILENT) || defined(SWIG) 00036 // Provide legacy methods with no warnings. 00037 # define GDCM_LEGACY(method) method; 00038 #else 00039 // Setup compile-time warnings for uses of deprecated methods if 00040 // possible on this compiler. 00041 # if defined(__GNUC__) && !defined(__INTEL_COMPILER) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) 00042 # define GDCM_LEGACY(method) method __attribute__((deprecated)); 00043 # elif defined(_MSC_VER) && _MSC_VER >= 1300 00044 # define GDCM_LEGACY(method) __declspec(deprecated) method; 00045 # else 00046 # define GDCM_LEGACY(method) method; 00047 # endif 00048 #endif 00049 00050 // Macros to create runtime deprecation warning messages in function 00051 // bodies. Example usage: 00052 // 00053 // #if !defined(GDCM_LEGACY_REMOVE) 00054 // void gdcm::MyClass::MyOldMethod() 00055 // { 00056 // GDCM_LEGACY_BODY(gdcm::MyClass::MyOldMethod, "GDCM 2.0"); 00057 // } 00058 // #endif 00059 // 00060 // #if !defined(GDCM_LEGACY_REMOVE) 00061 // void gdcm::MyClass::MyMethod() 00062 // { 00063 // GDCM_LEGACY_REPLACED_BODY(gdcm::MyClass::MyMethod, "GDCM 2.0", 00064 // gdcm::MyClass::MyOtherMethod); 00065 // } 00066 // #endif 00067 #if defined(GDCM_LEGACY_REMOVE) || defined(GDCM_LEGACY_SILENT) 00068 # define GDCM_LEGACY_BODY(method, version) 00069 # define GDCM_LEGACY_REPLACED_BODY(method, version, replace) 00070 #else 00071 # define GDCM_LEGACY_BODY(method, version) \ 00072 gdcmWarningMacro(#method " was deprecated for " version " and will be removed in a future version.") 00073 # define GDCM_LEGACY_REPLACED_BODY(method, version, replace) \ 00074 gdcmWarningMacro(#method " was deprecated for " version " and will be removed in a future version. Use " #replace " instead.") 00075 #endif 00076 00077 00078 #endif // GDCMLEGACYMACRO_H