]> Creatis software - gdcm.git/commitdiff
ENH: Adding a deprecation mechanism to gdcm via two MACRO and two config options
authormalaterre <malaterre>
Tue, 19 Jul 2005 14:43:46 +0000 (14:43 +0000)
committermalaterre <malaterre>
Tue, 19 Jul 2005 14:43:46 +0000 (14:43 +0000)
CMakeLists.txt
gdcmConfigure.h.in
src/gdcmCommon.h
src/gdcmDebug.h
src/gdcmFile.cxx
src/gdcmFile.h

index ec8a27d7256f13978d8391f3d46e385434fe1bc6..69b7167751fc03fb6dfc7c3b62eb444cab57ab3a 100644 (file)
@@ -16,6 +16,12 @@ SET(GDCM_DATA_DIR "/share/gdcm/" CACHE INTERNAL
   "Install location for data (relative to prefix).")
 MARK_AS_ADVANCED(GDCM_DATA_DIR)
 
+#-----------------------------------------------------------------------------
+# Provide compatibility options.
+OPTION(GDCM_LEGACY_REMOVE "Remove all legacy code completely." OFF)
+OPTION(GDCM_LEGACY_SILENT "Silence all legacy code messages." OFF)
+MARK_AS_ADVANCED(GDCM_LEGACY_REMOVE GDCM_LEGACY_SILENT)
+
 #-----------------------------------------------------------------------------
 # Build shared lib by default
 OPTION(GDCM_BUILD_SHARED_LIBS "Build GDCM with shared libraries." ON)
index 3a56d724fcd09a67fe5bde41c92f484c48a9805a..ecec6f130029eb4a49e6d81b6cd8189a198af0c9 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmConfigure.h.in,v $
   Language:  C++
-  Date:      $Date: 2005/06/07 14:41:46 $
-  Version:   $Revision: 1.16 $
+  Date:      $Date: 2005/07/19 14:43:46 $
+  Version:   $Revision: 1.17 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
 #define GDCM_BUILD_VERSION @GDCM_BUILD_VERSION@
 #define GDCM_VERSION "@GDCM_VERSION@"
 
+/*--------------------------------------------------------------------------*/
+/* GDCM deprecation mechanism                                               */
+#cmakedefine GDCM_LEGACY_REMOVE
+#cmakedefine GDCM_LEGACY_SILENT
+
 
 #endif
index c2a238506cc6a5ab3c3abc37fbd3a170a8cb53db..c78b0013aad88a360df4d47cfe2201a04120911c 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmCommon.h,v $
   Language:  C++
-  Date:      $Date: 2005/07/18 10:20:20 $
-  Version:   $Revision: 1.81 $
+  Date:      $Date: 2005/07/19 14:43:48 $
+  Version:   $Revision: 1.82 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -97,6 +97,8 @@ typedef  unsigned int        uint32_t;
 #include <iostream>
 #endif
 
+
+//-----------------------------------------------------------------------------
 /// \brief namespace for Grass root DiCoM
 namespace gdcm
 {
index 5f834ce192c8373a0fe8d7c96b14320020bc932e..85eda8b3cae08ec08fdc3d24982d99946ff3af16 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDebug.h,v $
   Language:  C++
-  Date:      $Date: 2005/06/21 14:05:06 $
-  Version:   $Revision: 1.35 $
+  Date:      $Date: 2005/07/19 14:43:48 $
+  Version:   $Revision: 1.36 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -190,4 +190,52 @@ public:
 }
 #endif //NDEBUG
 
+//-----------------------------------------------------------------------------
+//
+// Define GDCM_LEGACY macro to mark legacy methods where they are
+// declared in their class.  Example usage:
+//
+//   // @deprecated Replaced by MyOtherMethod() as of gdcm 2.0.
+//   GDCM_LEGACY(void MyMethod());
+#if defined(GDCM_LEGACY_REMOVE)
+  // Remove legacy methods completely.
+# define GDCM_LEGACY(method)
+#elif defined(GDCM_LEGACY_SILENT)
+  // Provide legacy methods with no warnings.
+# define GDCM_LEGACY(method) method
+#else
+  // Setup compile-time warnings for uses of deprecated methods if
+  // possible on this compiler.
+# if defined(__GNUC__) && !defined(__INTEL_COMPILER) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+#  define GDCM_LEGACY(method) method __attribute__((deprecated))
+# elif defined(_MSC_VER) && _MSC_VER >= 1300
+#  define GDCM_LEGACY(method) __declspec(deprecated) method
+# else
+#  define GDCM_LEGACY(method) method
+# endif
+#endif
+
+// Macros to create runtime deprecation warning messages in function
+// bodies.  Example usage:
+//
+//   void MyClass::MyOldMethod()
+//   {
+//     GDCM_LEGACY_BODY(MyClass::MyOldMethod, 2.0);
+//   }
+//
+//   void MyClass::MyMethod()
+//   {
+//     GDCM_LEGACY_REPLACED_BODY(MyClass::MyMethod, 5.0,
+//                               MyClass::MyOtherMethod);
+//   }
+#if defined(GDCM_LEGACY_REMOVE) || defined(GDCM_LEGACY_SILENT)
+# define GDCM_LEGACY_BODY(method, version)
+# define GDCM_LEGACY_REPLACED_BODY(method, version, replace)
+#else
+# define GDCM_LEGACY_BODY(method, version) \
+  gdcmWarningMacro(#method " was deprecated for gdcm" #version " and will be removed in a future version.")
+# define GDCM_LEGACY_REPLACED_BODY(method, version, replace) \
+  gdcmWarningMacro(#method " was deprecated for gdcm" #version " and will be removed in a future version.  Use " #replace " instead.")
+#endif
+
 #endif
index 214d8035162bb3cdb4828970230063a55e1cf02e..09a9e8fd1a932439fb442300e9a2f4d2b71b5047 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmFile.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/07/07 16:37:40 $
-  Version:   $Revision: 1.249 $
+  Date:      $Date: 2005/07/19 14:43:48 $
+  Version:   $Revision: 1.250 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -98,20 +98,6 @@ bool File::Load( )
 
     return DoTheLoadingJob( );   
 }
-/**
- * \brief   Loader. (DEPRECATED : not to break the API)
- * @param   fileName file to be open for parsing
- * @return false if file cannot be open or no swap info was found,
- *         or no tag was found.
- */
-bool File::Load( std::string const &fileName ) 
-{
-   SetFileName( fileName );
-   if ( ! this->Document::Load( ) )
-      return false;
-
-   return DoTheLoadingJob( );
-}
 
 /**
  * \brief   Does the Loading Job (internal use only)
@@ -1725,6 +1711,27 @@ void File::ReadAndSkipEncapsulatedBasicOffsetTable()
    }
 }
 
+// These are the deprecated method that one day should be removed (after the next release)
+#ifndef GDCM_LEGACY_REMOVE
+/**
+ * \brief   Loader. (DEPRECATED : not to break the API)
+ * @param   fileName file to be open for parsing
+ * @return false if file cannot be open or no swap info was found,
+ *         or no tag was found.
+ * @deprecated Use the Load() function instead
+ */
+bool File::Load( std::string const &fileName ) 
+{
+   GDCM_LEGACY_REPLACED_BODY(File::Load(std::string), "1.2",
+                             File::Load());
+   SetFileName( fileName );
+   if ( ! this->Document::Load( ) )
+      return false;
+
+   return DoTheLoadingJob( );
+}
+#endif
+
 //-----------------------------------------------------------------------------
 // Print
 
index 3c0d8a25b7f23c5c5e973390b2c9ab879c37f4d4..47abfd64896ada41316042fcbab3522ee4cae939 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmFile.h,v $
   Language:  C++
-  Date:      $Date: 2005/07/07 16:37:41 $
-  Version:   $Revision: 1.108 $
+  Date:      $Date: 2005/07/19 14:44:57 $
+  Version:   $Revision: 1.109 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -100,7 +100,7 @@ public:
    ~File();
 
    // Loading
-   bool Load( std::string const &filename );
+   GDCM_LEGACY(bool Load( std::string const &filename ));
    bool Load(); 
    // Standard values and informations contained in the header
    bool IsReadable();