-#include <iostream>
+/*=========================================================================
+
+ Program: gdcm
+ Module: $RCSfile: gdcmDebug.cxx,v $
+ Language: C++
+ Date: $Date: 2005/01/13 22:30:11 $
+ 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
+ http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+
#include "gdcmDebug.h"
+#include <iostream>
-/**
- * \ingroup Globals
- * \brief Instance of debugging utility.
- */
-gdcmDebug dbg;
+namespace gdcm
+{
+/// warning message level to be displayed
+static bool DebugFlag = false;
+static bool DebugToFile = false;
+static std::ofstream DebugFile;
+//-----------------------------------------------------------------------------
/**
- * \ingroup gdcmDebug
- * \brief constructor
- * @param level debug level
+ * \brief Accessor
+ * @param flag Set the debug flag
*/
-gdcmDebug::gdcmDebug(int level) {
- DebugLevel = level;
+void Debug::SetDebugFlag (bool flag)
+{
+ DebugFlag = flag;
}
/**
- * \ingroup gdcmDebug
* \brief Accessor
- * @param level Set the debug level
+ * @param level Get the debug flag
*/
-void gdcmDebug::SetDebug(int level) {
- DebugLevel = level;
+bool Debug::GetDebugFlag ()
+{
+ return DebugFlag;
}
/**
- * \ingroup gdcmDebug
- * \brief Verbose
- * @param Level level
- * @param Msg1 first message part
- * @param Msg2 second message part
- */
-void gdcmDebug::Verbose(int Level, const char * Msg1, const char * Msg2) {
- if (Level > DebugLevel)
- return ;
- std::cerr << Msg1 << ' ' << Msg2 << std::endl;
+ * \brief Accessor
+ * @param flag Set the debug flag to redirect to file
+ */
+void Debug::SetDebugToFile (bool flag)
+{
+ DebugToFile = flag;
}
/**
- * \ingroup gdcmDebug
- * \brief Error
- * @param Test test
- * @param Msg1 first message part
- * @param Msg2 second message part
- */
-void gdcmDebug::Error( bool Test, const char * Msg1, const char * Msg2) {
- if (!Test)
- return;
- std::cerr << Msg1 << ' ' << Msg2 << std::endl;
- Exit(1);
+ * \brief Accessor
+ * @param level Get the debug flag to redirect to file
+ */
+bool Debug::GetDebugToFile ()
+{
+ return DebugToFile;
}
/**
- * \ingroup gdcmDebug
- * \brief Error
- * @param Msg1 first message part
- * @param Msg2 second message part
- * @param Msg3 Third message part
- */
-void gdcmDebug::Error(const char* Msg1, const char* Msg2,
- const char* Msg3) {
- std::cerr << Msg1 << ' ' << Msg2 << ' ' << Msg3 << std::endl;
- Exit(1);
+ * \brief Accessor
+ * @param flag Set the debug flag to redirect to file
+ * Absolutely nothing is check. You have to pass in
+ * a correct filename
+ */
+void Debug::SetDebugFilename (std::string const& filename)
+{
+ DebugToFile = true; // Just in case ...
+ DebugFlag = true; // Just in case ...
+ DebugFile.open( filename.c_str() );
}
-/**
- * \ingroup gdcmDebug
- * \brief Assert
- * @param Level level
- * @param Test test
- * @param Msg1 first message part
- * @param Msg2 second message part
- */
- void gdcmDebug::Assert(int Level, bool Test,
- const char * Msg1, const char * Msg2) {
- if (Level > DebugLevel)
- return ;
- if (!Test)
- std::cerr << Msg1 << ' ' << Msg2 << std::endl;
+std::ofstream & Debug::GetDebugFile ()
+{
+ return DebugFile;
}
-/**
- * \ingroup gdcmDebug
- * \brief Exit
- * @param a return code
- */
-void gdcmDebug::Exit(int a) {
-#ifdef __GNUC__
- std::exit(a);
-#endif
-#ifdef _MSC_VER
- exit(a); // Found in #include <stdlib.h>
-#endif
-}
+} // end namespace gdcm
+
+