X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDebug.cxx;h=d9a56182e30bb7fcb0ff5bb45e77f96f129570ae;hb=6a7c2fbcb5bfc240a3b9875ad4836f5dc058e069;hp=e98811056dff0e3cb44d17f1d82be1df2c6ca7eb;hpb=8a640d0e343dc47346cc7a72cd76582b9b429610;p=gdcm.git diff --git a/src/gdcmDebug.cxx b/src/gdcmDebug.cxx index e9881105..d9a56182 100644 --- a/src/gdcmDebug.cxx +++ b/src/gdcmDebug.cxx @@ -3,12 +3,12 @@ Program: gdcm Module: $RCSfile: gdcmDebug.cxx,v $ Language: C++ - Date: $Date: 2004/07/19 11:51:26 $ - Version: $Revision: 1.3 $ + Date: $Date: 2005/06/24 10:55:58 $ + Version: $Revision: 1.25 $ 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.htm for details. + 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 @@ -16,107 +16,101 @@ =========================================================================*/ -#include #include "gdcmDebug.h" +#include +namespace gdcm +{ //----------------------------------------------------------------------------- -gdcmDebug gdcmDebug::debug; +// Warning message level to be displayed +static bool DebugFlag = false; +static bool DebugToFile = false; +static std::ofstream DebugFile; //----------------------------------------------------------------------------- -/** - * \brief constructor - * @param level debug level - */ -gdcmDebug::gdcmDebug(int level) +// Constructor / Destructor +Debug::Debug() { - DebugLevel = level; + } -/** - * \brief Accessor - * @param level Set the debug level - */ -void gdcmDebug::SetDebug(int level) +Debug::~Debug() { - DebugLevel = level; + if ( DebugFile.is_open() ) + DebugFile.close(); } +//----------------------------------------------------------------------------- +// Public /** - * \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) + * \brief Sets the debug flag + * @param flag Set the debug flag + */ +void Debug::SetDebugFlag (bool flag) { - if (Level > DebugLevel) - return ; - std::cerr << Msg1 << ' ' << Msg2 << std::endl; + DebugFlag = flag; } /** - * \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) + * \brief Gets the debug flag value + * @return debug flag value + */ +bool Debug::GetDebugFlag () { - if (!Test) - return; - std::cerr << Msg1 << ' ' << Msg2 << std::endl; - Exit(1); + return DebugFlag; } /** - * \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) + * \brief Accessor + * @param flag whether we want to redirect to file + */ +void Debug::SetDebugToFile (bool flag) { - std::cerr << Msg1 << ' ' << Msg2 << ' ' << Msg3 << std::endl; - Exit(1); + DebugToFile = flag; } /** - * \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) + * \brief Accessor to know whether debug info are redirected to file + */ +bool Debug::GetDebugToFile () { - if (Level > DebugLevel) - return ; - if (!Test) - std::cerr << Msg1 << ' ' << Msg2 << std::endl; + return DebugToFile; } /** - * \brief Exit - * @param a return code - */ -void gdcmDebug::Exit(int a) + * \brief Set the filename the debug stream should be redirect to + * 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) { -#ifdef __GNUC__ - std::exit(a); -#endif -#ifdef _MSC_VER - exit(a); // Found in #include -#endif + DebugToFile = true; // Just in case ... + DebugFlag = true; // Just in case ... + if ( DebugFile.is_open() ) + DebugFile.close(); + DebugFile.open( filename.c_str() ); } /** - * \brief Get the debug instance - * \return Reference to the debug instance + * \brief Internal use only. Allow us to retrieve the static from anywhere + * in gdcm code + * @return Debug file */ -gdcmDebug &gdcmDebug::GetReference() +std::ofstream &Debug::GetDebugFile () { - return gdcmDebug::debug; + return DebugFile; } +//----------------------------------------------------------------------------- +// Protected + +//----------------------------------------------------------------------------- +// Private + +//----------------------------------------------------------------------------- +// Print + +//----------------------------------------------------------------------------- +} // end namespace gdcm