1 #ifndef UGDK_DEBUG_LOG_H_
2 #define UGDK_DEBUG_LOG_H_
11 #define LOG_LEVELS(ACTION) \
32 #define CASE_LOG(X) case X: return #X;
41 void RawLog(
LogLevel,
const std::string& owner,
const std::string& message);
46 template<
typename T,
typename... Ts>
52 template<
typename... Ts>
53 void Log(
LogLevel level,
const std::string& owner, Ts&&... ts) {
56 RawLog(level, owner, ss.str());
59 template<
typename... Ts>
62 Log(level, owner, std::forward<Ts>(ts)...);
71 template<
typename... Ts>
75 Log(level, owner, std::forward<Ts>(ts)...);
84 #endif // UGDK_DEBUG_LOG_H_
#define LIST(X)
Through macro wizardy(tm), fill the LogLevel enum.
Definition: log.h:22
void DebugConditionalLog(bool assertion, LogLevel level, const std::string &owner, Ts &&...ts)
If assertion is false, run the DebugLog command.
Definition: log.h:72
LogLevel
Definition: log.h:23
void InsertToStream(std::stringstream &ss)
Definition: log.h:44
void DebugLog(LogLevel level, const std::string &owner, Ts &&...ts)
Definition: log.h:60
void Log(LogLevel level, const std::string &owner, Ts &&...ts)
Definition: log.h:53
Definition: animation.h:11
#define LOG_LEVELS(ACTION)
These are the log levels.
Definition: log.h:11
void RawLog(LogLevel, const std::string &owner, const std::string &message)
#define CASE_LOG(X)
Definition: log.h:32
const char * ConvertLogToString(LogLevel level)
Definition: log.h:33