Program: gdcm
Module: $RCSfile: gdcmDebug.cxx,v $
Language: C++
- Date: $Date: 2005/06/24 10:55:58 $
- Version: $Revision: 1.25 $
+ Date: $Date: 2005/11/28 16:50:32 $
+ Version: $Revision: 1.29 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
=========================================================================*/
#include "gdcmDebug.h"
+#include "gdcmCommandManager.h"
+
#include <iostream>
namespace gdcm
{
//-----------------------------------------------------------------------------
// Warning message level to be displayed
-static bool DebugFlag = false;
-static bool DebugToFile = false;
-static std::ofstream DebugFile;
+const int Debug::LINE_LENGTH = 79;
+
+bool Debug::DebugFlag = false;
+bool Debug::WarningFlag = false;
+bool Debug::OutputToFile = false;
+
+std::ofstream Debug::OutputFileStream;
+std::ostream &Debug::StandardStream = std::cerr;
//-----------------------------------------------------------------------------
// Constructor / Destructor
Debug::Debug()
{
-
}
Debug::~Debug()
{
- if ( DebugFile.is_open() )
- DebugFile.close();
+ if ( OutputFileStream.is_open() )
+ OutputFileStream.close();
}
//-----------------------------------------------------------------------------
// Public
/**
- * \brief Sets the debug flag
- * @param flag Set the debug flag
+ * \brief Sets both the debug flag and warning flag
+ * (both used for debugging purpose)
+ * @param flag Set the debug flag and warning flag
*/
void Debug::SetDebugFlag (bool flag)
{
- DebugFlag = flag;
+ // To help tracking a bug, both flags are necessary
+ DebugFlag = flag;
+ WarningFlag = flag;
}
/**
- * \brief Gets the debug flag value
- * @return debug flag value
+ * \brief Sets the warning flag
+ * @param flag Set the warning flag
*/
-bool Debug::GetDebugFlag ()
+void Debug::SetWarningFlag (bool flag)
{
- return DebugFlag;
+ // Cannot unset Warning flag if Debug flag is on.
+ if (flag == false && DebugFlag == true)
+ return;
+ WarningFlag = flag;
}
/**
* \brief Accessor
* @param flag whether we want to redirect to file
*/
-void Debug::SetDebugToFile (bool flag)
+void Debug::SetOutputToFile (bool flag)
{
- DebugToFile = flag;
+ OutputToFile = flag;
}
/**
* \brief Accessor to know whether debug info are redirected to file
*/
-bool Debug::GetDebugToFile ()
+bool Debug::GetOutputToFile ()
{
- return DebugToFile;
+ return OutputToFile;
}
/**
* Absolutely nothing is check. You have to pass in
* a correct filename
*/
-void Debug::SetDebugFilename (std::string const &filename)
+void Debug::SetOutputFileName (std::string const &filename)
{
- DebugToFile = true; // Just in case ...
+ OutputToFile = true; // Just in case ...
DebugFlag = true; // Just in case ...
- if ( DebugFile.is_open() )
- DebugFile.close();
- DebugFile.open( filename.c_str() );
+ if ( OutputFileStream.is_open() )
+ OutputFileStream.close();
+ OutputFileStream.open( filename.c_str() );
}
/**
* in gdcm code
* @return Debug file
*/
-std::ofstream &Debug::GetDebugFile ()
+std::ostream &Debug::GetOutput ()
{
- return DebugFile;
+ if(OutputToFile)
+ return OutputFileStream;
+ else
+ return StandardStream;
+}
+
+void Debug::SendToOutput(unsigned int type,std::string const &msg,const Base *object)
+{
+ bool executed=false;
+ if( type != CMD_DEBUG && type != CMD_ASSERT )
+ executed=CommandManager::ExecuteCommandConst(object,type,msg);
+
+ if(!executed)
+ GetOutput() << Command::GetCommandAsString(type) << ": " << msg;
}
//-----------------------------------------------------------------------------