X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src%2FgdcmDebug.cxx;h=3c712e7a0f2f1324db0339d15bc2d5b705ed086a;hb=713d0f3d28a6176fab6d57e031633061dc7354a7;hp=541f79fc35d01e49639e3b669179afe64f9a9f1b;hpb=7f62d92753e6a3e7f4f15093fb959dcb785d6c46;p=gdcm.git diff --git a/src/gdcmDebug.cxx b/src/gdcmDebug.cxx index 541f79fc..3c712e7a 100644 --- a/src/gdcmDebug.cxx +++ b/src/gdcmDebug.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDebug.cxx,v $ Language: C++ - Date: $Date: 2005/02/04 16:51:36 $ - Version: $Revision: 1.24 $ + Date: $Date: 2007/05/23 14:18:08 $ + Version: $Revision: 1.31 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -17,80 +17,109 @@ =========================================================================*/ #include "gdcmDebug.h" +#include "gdcmCommandManager.h" + #include -namespace gdcm +namespace GDCM_NAME_SPACE { //----------------------------------------------------------------------------- // 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::LogFlag = 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 or if LogFlag is on. + if (flag == false) + { + if (DebugFlag == true) + return; + if (LogFlag == true) + return; + } + WarningFlag = flag; +} + +/** + * \brief Sets the log flag + * @param flag Set the log flag + */ +void Debug::SetLogFlag (bool flag) +{ + // To log oddities, both flags are necessary + WarningFlag = flag; + LogFlag = 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 if debug info are redirected to file + * \brief Accessor to know whether debug info are redirected to file */ -bool Debug::GetDebugToFile () +bool Debug::GetOutputToFile () { - return DebugToFile; + return OutputToFile; } /** * \brief Set the filename the debug stream should be redirect to - * Settting a filename also set DebugToFile to true + * Settting a filename also sets DebugToFile to true * @param filename File to redirect debug info * 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 ... - DebugFlag = true; // Just in case ... - if( DebugFile.is_open() ) - DebugFile.close(); - DebugFile.open( filename.c_str() ); + OutputToFile = true; // Just in case ... + DebugFlag = true; // Just in case ... + if ( OutputFileStream.is_open() ) + OutputFileStream.close(); + OutputFileStream.open( filename.c_str() ); } /** @@ -98,9 +127,22 @@ void Debug::SetDebugFilename (std::string const &filename) * in gdcm code * @return Debug file */ -std::ofstream &Debug::GetDebugFile () +std::ostream &Debug::GetOutput () +{ + if(OutputToFile) + return OutputFileStream; + else + return StandardStream; +} + +void Debug::SendToOutput(unsigned int type,std::string const &msg,const Base *object) { - return DebugFile; + bool executed=false; + if( type != CMD_DEBUG && type != CMD_ASSERT ) + executed=CommandManager::ExecuteCommandConst(object,type,msg); + + if(!executed) + GetOutput() << Command::GetCommandAsString(type) << ": " << msg; } //-----------------------------------------------------------------------------