From 92ea8abb9e66eee0be8fa1b70dc23ed4374615d6 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Wed, 30 Apr 2014 22:18:00 +0200 Subject: [PATCH] [DEV] change log system --- exml/Node.cpp | 2 +- exml/Node.h | 2 +- exml/debug.cpp | 6 +++++- exml/debug.h | 48 ++++++++++++++++++++++++++++++++++++------------ 4 files changed, 43 insertions(+), 15 deletions(-) diff --git a/exml/Node.cpp b/exml/Node.cpp index 4e2c12e..e49167b 100644 --- a/exml/Node.cpp +++ b/exml/Node.cpp @@ -22,7 +22,7 @@ static bool isWhiteChar(char32_t _val) { return false; } -etk::CCout& exml::operator <<(etk::CCout& _os, const exml::filePos& _obj) { +std::ostream& exml::operator <<(std::ostream& _os, const exml::filePos& _obj) { _os << "(l="; _os << _obj.getLine(); _os << ",c="; diff --git a/exml/Node.h b/exml/Node.h index bb4f3cd..c474460 100644 --- a/exml/Node.h +++ b/exml/Node.h @@ -116,7 +116,7 @@ namespace exml { return m_line; }; }; - etk::CCout& operator <<(etk::CCout& _os, const filePos& _obj); + std::ostream& operator <<(std::ostream& _os, const filePos& _obj); class Node { public: diff --git a/exml/debug.cpp b/exml/debug.cpp index 0f0a661..7308ca6 100644 --- a/exml/debug.cpp +++ b/exml/debug.cpp @@ -8,4 +8,8 @@ #include -const char * g_exmlLibName = "exml "; +int32_t exml::getLogId(void) { + static int32_t g_val = etk::log::registerInstance("exml"); + return g_val; +} + diff --git a/exml/debug.h b/exml/debug.h index dfba521..fc76cd7 100644 --- a/exml/debug.h +++ b/exml/debug.h @@ -9,20 +9,44 @@ #ifndef __EXML_DEBUG_H__ #define __EXML_DEBUG_H__ -#include -#include +#include -extern const char * g_exmlLibName; +namespace exml { + int32_t getLogId(void); +}; +// TODO : Review this problem of multiple intanciation of "std::stringbuf sb" +#define EXML_BASE(info,data) \ + do { \ + if (info <= etk::log::getLevel(exml::getLogId())) { \ + std::stringbuf sb; \ + std::ostream tmpStream(&sb); \ + tmpStream << data; \ + etk::log::logStream(exml::getLogId(), info, __LINE__, __class__, __func__, tmpStream); \ + } \ + } while(0) -#define EXML_CRITICAL(data) ETK_CRITICAL(g_exmlLibName, data) -#define EXML_WARNING(data) ETK_WARNING(g_exmlLibName, data) -#define EXML_ERROR(data) ETK_ERROR(g_exmlLibName, data) -#define EXML_INFO(data) ETK_INFO(g_exmlLibName, data) -#define EXML_DEBUG(data) ETK_DEBUG(g_exmlLibName, data) -#define EXML_VERBOSE(data) ETK_VERBOSE(g_exmlLibName, data) -#define EXML_ASSERT(cond, data) ETK_ASSERT(g_exmlLibName, cond, data) -#define EXML_CHECK_INOUT(cond) ETK_CHECK_INOUT(g_exmlLibName, cond) -#define EXML_TODO(cond) ETK_TODO(g_exmlLibName, cond) +#define EXML_CRITICAL(data) EXML_BASE(1, data) +#define EXML_ERROR(data) EXML_BASE(2, data) +#define EXML_WARNING(data) EXML_BASE(3, data) +#ifdef DEBUG + #define EXML_INFO(data) EXML_BASE(4, data) + #define EXML_DEBUG(data) EXML_BASE(5, data) + #define EXML_VERBOSE(data) EXML_BASE(6, data) + #define EXML_TODO(data) EXML_BASE(4, "TODO : " << data) +#else + #define EXML_INFO(data) do { } while(false) + #define EXML_DEBUG(data) do { } while(false) + #define EXML_VERBOSE(data) do { } while(false) + #define EXML_TODO(data) do { } while(false) +#endif + +#define EXML_ASSERT(cond,data) \ + do { \ + if (!(cond)) { \ + EXML_CRITICAL(data); \ + assert(!#cond); \ + } \ + } while (0) #endif