From 889807e0b9b88890a9c6734e054da5edf23e59d9 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 --- egami/debug.cpp | 5 ++++- egami/debug.h | 48 ++++++++++++++++++++++++++++++++++++------------ 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/egami/debug.cpp b/egami/debug.cpp index 507cd2e..0673ca1 100644 --- a/egami/debug.cpp +++ b/egami/debug.cpp @@ -8,4 +8,7 @@ #include -const char * egamiLibName = "egami "; +int32_t egami::getLogId(void) { + static int32_t g_val = etk::log::registerInstance("egami"); + return g_val; +} diff --git a/egami/debug.h b/egami/debug.h index b474b67..3da215b 100644 --- a/egami/debug.h +++ b/egami/debug.h @@ -9,20 +9,44 @@ #ifndef __EGAMI_DEBUG_H__ #define __EGAMI_DEBUG_H__ -#include -#include +#include -extern const char * egamiLibName; +namespace egami { + int32_t getLogId(void); +}; +// TODO : Review this problem of multiple intanciation of "std::stringbuf sb" +#define EGAMI_BASE(info,data) \ + do { \ + if (info <= etk::log::getLevel(egami::getLogId())) { \ + std::stringbuf sb; \ + std::ostream tmpStream(&sb); \ + tmpStream << data; \ + etk::log::logStream(egami::getLogId(), info, __LINE__, __class__, __func__, tmpStream); \ + } \ + } while(0) -#define EGAMI_CRITICAL(data) ETK_CRITICAL(egamiLibName, data) -#define EGAMI_WARNING(data) ETK_WARNING(egamiLibName, data) -#define EGAMI_ERROR(data) ETK_ERROR(egamiLibName, data) -#define EGAMI_INFO(data) ETK_INFO(egamiLibName, data) -#define EGAMI_DEBUG(data) ETK_DEBUG(egamiLibName, data) -#define EGAMI_VERBOSE(data) ETK_VERBOSE(egamiLibName, data) -#define EGAMI_ASSERT(cond,data) ETK_ASSERT(egamiLibName, cond, data) -#define EGAMI_CHECK_INOUT(cond) ETK_CHECK_INOUT(egamiLibName, cond) -#define EGAMI_TODO(cond) ETK_TODO(egamiLibName, cond) +#define EGAMI_CRITICAL(data) EGAMI_BASE(1, data) +#define EGAMI_ERROR(data) EGAMI_BASE(2, data) +#define EGAMI_WARNING(data) EGAMI_BASE(3, data) +#ifdef DEBUG + #define EGAMI_INFO(data) EGAMI_BASE(4, data) + #define EGAMI_DEBUG(data) EGAMI_BASE(5, data) + #define EGAMI_VERBOSE(data) EGAMI_BASE(6, data) + #define EGAMI_TODO(data) EGAMI_BASE(4, "TODO : " << data) +#else + #define EGAMI_INFO(data) do { } while(false) + #define EGAMI_DEBUG(data) do { } while(false) + #define EGAMI_VERBOSE(data) do { } while(false) + #define EGAMI_TODO(data) do { } while(false) +#endif + +#define EGAMI_ASSERT(cond,data) \ + do { \ + if (!(cond)) { \ + EGAMI_CRITICAL(data); \ + assert(!#cond); \ + } \ + } while (0) #endif