]> Creatis software - gdcm.git/blobdiff - src/gdcmDebug.h
Debug vs Warning
[gdcm.git] / src / gdcmDebug.h
index 2d9cc329a18da53e12799a9e73a43900c7cb4183..df9e02f831f4d412b1b43a710ae4c2454e46715a 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDebug.h,v $
   Language:  C++
-  Date:      $Date: 2005/08/22 18:11:34 $
-  Version:   $Revision: 1.41 $
+  Date:      $Date: 2005/11/05 13:21:32 $
+  Version:   $Revision: 1.47 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -21,6 +21,7 @@
 
 #include "gdcmCommon.h"
 
+#include <iostream>
 #include <sstream>
 #include <fstream>
 #include <assert.h>
@@ -50,23 +51,32 @@ public:
    Debug();
    ~Debug();
 
-   /// \brief This is a global flag that controls whether any debug, warning
-   ///        messages are displayed.
+   /// \brief This is a global flag that controls whether 
+   ///        both debug and warning messages are displayed. 
    static void SetDebugFlag (bool flag);
    static bool GetDebugFlag ();
    /// \brief Sets the Debug Flag to true
-   static void DebugOn  () { SetDebugFlag(true);  };
+   static void DebugOn  () { SetDebugFlag(true);  }
    /// \brief Sets the Debug Flag to false
-   static void DebugOff () { SetDebugFlag(false); };
+   static void DebugOff () { SetDebugFlag(false); }
+   
+   /// \brief This is a global flag that controls whether 
+   ///        warning messages are displayed.
+   static void SetWarningFlag (bool flag);
+   static bool GetWarningFlag ();
+   /// \brief Sets the Warning Flag to true
+   static void WarningOn  () { SetWarningFlag(true);  }
+   /// \brief Sets the Warning Flag to false
+   static void WarningOff () { SetWarningFlag(false); }   
 
    /// \brief This is a global flag that controls if debug are redirected
    ///        to a file or not
    static void SetDebugToFile (bool flag);
    static bool GetDebugToFile ();
    /// \brief Next debug messages will be sent in the debug file
-   static void DebugToFileOn  () { SetDebugToFile(true);  };
+   static void DebugToFileOn  () { SetDebugToFile(true);  }
    /// \brief Next debug messages will be sent in the standard output
-   static void DebugToFileOff () { SetDebugToFile(false); };
+   static void DebugToFileOff () { SetDebugToFile(false); }
 
    static void SetDebugFilename (std::string const &filename);
 
@@ -98,7 +108,7 @@ public:
 #endif //GDCM_COMPILER_HAS_FUNCTION
 
 /**
- * \brief   Debug
+ * \brief   Debug : To be used to help bug tracking developer
  * @param msg message part
  */
 #ifdef NDEBUG
@@ -110,9 +120,11 @@ public:
    {                                                        \
    std::ostringstream osmacro;                              \
    osmacro << "Debug: In " __FILE__ ", line " << __LINE__   \
-           << ", function " << GDCM_FUNCTION << '\n'        \
-           << "Last system error was: " << strerror(errno)  \
-           << '\n' << msg << "\n\n";                        \
+           << ", function " << GDCM_FUNCTION << '\n';       \
+   if( errno )                                              \
+     osmacro  << "Last system error was: " <<               \
+       strerror(errno) << '\n';                             \
+   osmacro << msg << "\n\n";                                \
    if( Debug::GetDebugToFile() )                            \
       Debug::GetDebugFile() << osmacro.str() << std::endl;  \
    else                                                     \
@@ -122,7 +134,7 @@ public:
 #endif //NDEBUG
 
 /**
- * \brief   Warning
+ * \brief   Warning : To be used to warn the user when some oddity occurs
  * @param msg message part
  */
 #ifdef NDEBUG
@@ -130,7 +142,7 @@ public:
 #else
 #define gdcmWarningMacro(msg)                               \
 {                                                           \
-   if( Debug::GetDebugFlag() )                              \
+   if( Debug::GetWarningFlag() )                            \
    {                                                        \
    std::ostringstream osmacro;                              \
    osmacro << "Warning: In " __FILE__ ", line " << __LINE__ \
@@ -145,7 +157,8 @@ public:
 #endif //NDEBUG
 
 /**
- * \brief   Error 
+ * \brief   Error : To be used when unecoverabale error occurs
+ *          at a 'deep' level. (don't use it if file is not ACR/DICOM!)
  * @param msg second message part 
  */
 #ifdef NDEBUG
@@ -165,7 +178,9 @@ public:
 #endif //NDEBUG
 
 /**
- * \brief   Assert 
+ * \brief   Assert : To be used when an *absolutely* impossible error occurs
+ *          No function should be allowed to stop the process instead of
+ *          warning the caller!
  * @param arg argument to test
  *        An easy solution to pass also a message is to do:
  *        gdcmAssertMacro( "my message" && 2 < 3 )