X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDebug.cxx;h=ba0a2fa49c9915ae31dccb0620c54c8ddabdef95;hb=0e030c69b4fec60eaf0c92a6c1701a3e8de5e794;hp=d301a9bf69297b1e0129ffb682fcdc4e54f7ee2f;hpb=327dfe7647e3720b0f3125f9b19397cb9afc0ed3;p=gdcm.git diff --git a/src/gdcmDebug.cxx b/src/gdcmDebug.cxx index d301a9bf..ba0a2fa4 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/01/06 20:03:26 $ - Version: $Revision: 1.13 $ + Date: $Date: 2005/11/05 13:21:32 $ + Version: $Revision: 1.26 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -16,109 +16,126 @@ =========================================================================*/ -#include #include "gdcmDebug.h" +#include namespace gdcm { +//----------------------------------------------------------------------------- +// Warning message level to be displayed +static bool DebugFlag = false; +static bool WarningFlag = false; +static bool DebugToFile = false; +static std::ofstream DebugFile; //----------------------------------------------------------------------------- +// Constructor / Destructor +Debug::Debug() +{ + +} + +Debug::~Debug() +{ + if ( DebugFile.is_open() ) + DebugFile.close(); +} + +//----------------------------------------------------------------------------- +// Public /** - * \brief constructor - * @param level debug level + * \brief Sets both the debug flag and warning flag + * (both used for debugging purpose) + * @param flag Set the debug flag and warning flag */ -Debug::Debug(int level) +void Debug::SetDebugFlag (bool flag) { - DebugLevel = level; + // To help tracking a bug, both flags are necessary + DebugFlag = flag; + WarningFlag = flag; } /** - * \brief Accessor - * @param level Set the debug level + * \brief Gets the debug flag value + * (used to warn user when file contains some oddity) + * @return debug flag value */ -void Debug::SetDebug(int level) +bool Debug::GetDebugFlag () { - DebugLevel = level; + return DebugFlag; } /** - * \brief Verbose - * @param level level - * @param msg1 first message part - * @param msg2 second message part - */ -void Debug::Verbose(int level, const char *msg1, const char *msg2) + * \brief Sets the warning flag + * @param flag Set the warning flag + */ +void Debug::SetWarningFlag (bool flag) { - if (level > DebugLevel) - { - return ; - } - std::cerr << "gdcm::" << msg1 << ' ' << msg2 << std::endl << std::flush; + // Cannot unset Warning flag if Debug flag is on. + if (flag == false && DebugFlag == true) + return; + WarningFlag = flag; } /** - * \brief Error - * @param test test - * @param msg1 first message part - * @param msg2 second message part - */ -void Debug::Error(bool test, const char *msg1, const char *msg2) + * \brief Gets the warning flag value + * @return warning flag value + */ +bool Debug::GetWarningFlag () { - if (!test) - { - return; - } - std::cerr << "gdcm::" << msg1 << ' ' << msg2 << std::endl << std::flush; - Exit(1); + return WarningFlag; +} +/** + * \brief Accessor + * @param flag whether we want to redirect to file + */ +void Debug::SetDebugToFile (bool flag) +{ + DebugToFile = flag; } /** - * \brief Error - * @param msg1 first message part - * @param msg2 second message part - * @param msg3 Third message part - */ -void Debug::Error(const char *msg1, const char *msg2, - const char *msg3) + * \brief Accessor to know whether debug info are redirected to file + */ +bool Debug::GetDebugToFile () { - std::cerr << "gdcm::" << msg1 << ' ' << msg2 << ' ' << msg3 - << std::endl << std::flush; - Exit(1); + return DebugToFile; } /** - * \brief Assert - * @param level level - * @param test test - * @param msg1 first message part - * @param msg2 second message part - */ -void Debug::Assert(int level, bool test, const char *msg1, - const char *msg2) + * \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) { - if (level > DebugLevel) - { - return ; - } - if (!test) - { - std::cerr << "gdcm::" << msg1 << ' ' << msg2 - << std::endl << std::flush; - } + DebugToFile = true; // Just in case ... + DebugFlag = true; // Just in case ... + if ( DebugFile.is_open() ) + DebugFile.close(); + DebugFile.open( filename.c_str() ); } /** - * \brief Exit - * @param a return code + * \brief Internal use only. Allow us to retrieve the static from anywhere + * in gdcm code + * @return Debug file */ -void Debug::Exit(int a) +std::ofstream &Debug::GetDebugFile () { -#ifdef __GNUC__ - std::exit(a); -#endif -#if defined(_MSC_VER) || defined(__BORLANDC__) - exit(a); // Found in #include -#endif + return DebugFile; } +//----------------------------------------------------------------------------- +// Protected + +//----------------------------------------------------------------------------- +// Private + +//----------------------------------------------------------------------------- +// Print + +//----------------------------------------------------------------------------- } // end namespace gdcm