triskele/include/triskeleDebug.hpp
Git Merciol f687310939 modifié : CMakeLists.txt
modifié :         CMakeListsOTB.txt
	modifié :         LICENSE
	modifié :         MakefileNoOTB
	modifié :         Readme.html
	modifié :         Readme.txt
	modifié :         include/Appli/Option.hpp
	modifié :         include/Appli/Selected.hpp
	modifié :         include/Appli/Selected.tpp
	modifié :         include/ArrayTree/ArrayTreeBuilder.hpp
	modifié :         include/ArrayTree/ArrayTreeBuilder.tpp
	modifié :         include/ArrayTree/Border.hpp
	modifié :         include/ArrayTree/Border.tpp
	modifié :         include/ArrayTree/GraphWalker.hpp
	modifié :         include/ArrayTree/GraphWalker.tpp
	modifié :         include/ArrayTree/Leader.hpp
	modifié :         include/ArrayTree/Leader.tpp
	modifié :         include/ArrayTree/Weight.hpp
	modifié :         include/ArrayTree/Weight.tpp
	modifié :         include/ArrayTree/triskeleArrayTreeBase.hpp
	modifié :         include/ArrayTree/triskeleArrayTreeBase.tpp
	modifié :         include/ArrayTree/triskeleSort.hpp
	modifié :         include/ArrayTree/triskeleSort.tpp
	modifié :         include/AttributeProfiles.hpp
	modifié :         include/AttributeProfiles.tpp
	modifié :         include/Attributes/AreaAttributes.hpp
	modifié :         include/Attributes/AreaAttributes.tpp
	modifié :         include/Attributes/AverageAttributes.hpp
	modifié :         include/Attributes/AverageAttributes.tpp
	modifié :         include/Attributes/MoIAttributes.hpp
	modifié :         include/Attributes/MoIAttributes.tpp
	modifié :         include/Attributes/SDAttributes.hpp
	modifié :         include/Attributes/SDAttributes.tpp
	modifié :         include/Attributes/WeightAttributes.hpp
	modifié :         include/Attributes/WeightAttributes.tpp
	modifié :         include/Attributes/XYAttributes.hpp
	modifié :         include/Attributes/XYAttributes.tpp
	modifié :         include/CompAttribute.hpp
	modifié :         include/CompAttribute.tpp
	modifié :         include/IImage.hpp
	modifié :         include/IImage.tpp
	modifié :         include/QuadTree/QuadTreeBuilder.hpp
	modifié :         include/Tree.hpp
	modifié :         include/Tree.tpp
	modifié :         include/TreeBuilder.hpp
	modifié :         include/TreeBuilder.tpp
	modifié :         include/TreeStats.hpp
	modifié :         include/TreeStats.tpp
	modifié :         include/XMLTree/XMLTreeBuilder.hpp
	modifié :         include/triskeleBase.hpp
	modifié :         include/triskeleBase.tpp
	modifié :         include/triskeleDealThreads.hpp
	modifié :         include/triskeleDealThreads.tpp
	modifié :         include/triskeleDebug.hpp
	modifié :         include/triskeleGdalGetType.hpp
	modifié :         otb-module.cmake
	modifié :         src/Appli/Option.cpp
	modifié :         src/Appli/Selected.cpp
	modifié :         src/ArrayTree/triskeleArrayTreeBase.cpp
	modifié :         src/CMakeLists.txt
	modifié :         src/IImage.cpp
	modifié :         src/PerfArrayTreeBuilder.cpp
	modifié :         src/QuadTree/QuadTreeBuilder.cpp
	modifié :         src/TestArrayTreeBuilder.cpp
	modifié :         src/Tree.cpp
	modifié :         src/TreeStats.cpp
	modifié :         src/XMLTree/XMLTreeBuilder.cpp
	modifié :         src/apGenerator.cpp
	modifié :         src/triskeleBase.cpp
	modifié :         src/triskeleDebug.cpp
2018-04-02 19:25:37 +02:00

108 lines
2.3 KiB
C++

#ifndef _TRISKELE_DEBUG_HPP
#define _TRISKELE_DEBUG_HPP
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <boost/date_time/posix_time/posix_time.hpp>
#ifdef ENABLE_SMART_LOG
#ifndef SMART_DEF_LOG
#define SMART_DEF_LOG(name, expr) DEF_LOG (name, expr)
#endif
#ifndef SMART_LOG
#define SMART_LOG(expr) LOG (expr)
#endif
#ifndef SMART_LOG_EXPR
#define SMART_LOG_EXPR(expr) {if (triskele::debug) {expr;} }
#endif
#else
#ifndef SMART_DEF_LOG
#define SMART_DEF_LOG(name, expr)
#endif
#ifndef SMART_LOG
#define SMART_LOG(expr)
#endif
#ifndef SMART_LOG_EXPR
#define SMART_LOG_EXPR(expr)
#endif
#endif
#ifdef DISABLE_LOG
#ifndef DEF_LOG
#define DEF_LOG(name, expr)
#endif
#ifndef LOG
#define LOG(expr) {}
#endif
#ifndef DEBUG
#define DEBUG(expr) {}
#endif
#else
#ifndef DEF_LOG
#define DEF_LOG(name, expr) ::triskele::Log log (name); { if (triskele::debug) cerr << expr << endl << flush; }
#endif
#ifndef LOG
#define LOG(expr) { if (triskele::debug) cerr << log << "| " << expr << endl << flush; }
#endif
#ifndef DEBUG
#define DEBUG(expr) { if (triskele::debug) cerr << expr << endl << flush; }
#endif
#endif
namespace triskele {
extern bool debug;
using namespace std;
// =======================================
inline std::string getLocalTimeStr () {
using namespace boost::posix_time;
using namespace std;
ptime now = second_clock::second_clock::local_time ();
stringstream ss;
auto date = now.date ();
auto time = now.time_of_day ();
ss << setfill ('0') << "["
<< setw (2) << static_cast<int> (date.month ()) << "/" << setw (2) << date.day ()
<< "] " << setw (2)
<< time.hours () << ":" << setw (2) << time.minutes ();
return ss.str();
}
// ========================================
using namespace std;
class Log {
static unsigned int indent;
string functName;
public:
Log (const string &functName) : functName (functName) { ++indent; if (triskele::debug) cerr << *this << "> "; }
~Log () { if (triskele::debug) cerr << *this << "<" << endl << flush; --indent; }
friend inline ostream &operator << (ostream &out, const Log &log) {
return out << getLocalTimeStr () << setw (3) << setw ((log.indent % 20)*2) << "" << log.functName;
}
};
// ========================================
}//namespace triskele
#endif //_TRISKELE_DEBUG_HPP