Add the fmt library (#4065)

* Replaces AppendVPrintf with fmt::sprintf
* fmt::ArgList now used as a type safe alternative to varargs.
* Removed SIZE_T_FMT compatibility macros. fmt::sprintf is fully portable and supports %zu.
* Adds FLOG functions to log with fmt's native formatting style.
This commit is contained in:
peterbell10
2018-01-03 17:41:16 +00:00
committed by GitHub
parent 68fc28857f
commit 757231cc6e
83 changed files with 407 additions and 490 deletions
+55 -24
View File
@@ -63,11 +63,18 @@ void cLogger::LogSimple(AString a_Message, eLogLevel a_LogLevel)
void cLogger::Log(const char * a_Format, eLogLevel a_LogLevel, va_list a_ArgList)
void cLogger::LogPrintf(const char * a_Format, eLogLevel a_LogLevel, fmt::ArgList a_ArgList)
{
AString Message;
AppendVPrintf(Message, a_Format, a_ArgList);
LogSimple(Message, a_LogLevel);
LogSimple(Printf(a_Format, a_ArgList), a_LogLevel);
}
void cLogger::LogFormat(const char * a_Format, eLogLevel a_LogLevel, fmt::ArgList a_ArgList)
{
LogSimple(fmt::format(a_Format, a_ArgList), a_LogLevel);
}
@@ -110,48 +117,72 @@ void cLogger::DetachListener(cListener * a_Listener)
////////////////////////////////////////////////////////////////////////////////
// Global functions
void LOG(const char * a_Format, ...)
void FLOG(const char * a_Format, fmt::ArgList a_ArgList)
{
va_list argList;
va_start(argList, a_Format);
cLogger::GetInstance().Log(a_Format, cLogger::llRegular, argList);
va_end(argList);
cLogger::GetInstance().LogFormat(a_Format, cLogger::llRegular, a_ArgList);
}
void LOGINFO(const char * a_Format, ...)
void FLOGINFO(const char * a_Format, fmt::ArgList a_ArgList)
{
va_list argList;
va_start(argList, a_Format);
cLogger::GetInstance().Log( a_Format, cLogger::llInfo, argList);
va_end(argList);
cLogger::GetInstance().LogFormat( a_Format, cLogger::llInfo, a_ArgList);
}
void LOGWARNING(const char * a_Format, ...)
void FLOGWARNING(const char * a_Format, fmt::ArgList a_ArgList)
{
va_list argList;
va_start(argList, a_Format);
cLogger::GetInstance().Log( a_Format, cLogger::llWarning, argList);
va_end(argList);
cLogger::GetInstance().LogFormat( a_Format, cLogger::llWarning, a_ArgList);
}
void LOGERROR(const char * a_Format, ...)
void FLOGERROR(const char * a_Format, fmt::ArgList a_ArgList)
{
va_list argList;
va_start(argList, a_Format);
cLogger::GetInstance().Log( a_Format, cLogger::llError, argList);
va_end(argList);
cLogger::GetInstance().LogFormat( a_Format, cLogger::llError, a_ArgList);
}
void LOG(const char * a_Format, fmt::ArgList a_ArgList)
{
cLogger::GetInstance().LogPrintf(a_Format, cLogger::llRegular, a_ArgList);
}
void LOGINFO(const char * a_Format, fmt::ArgList a_ArgList)
{
cLogger::GetInstance().LogPrintf( a_Format, cLogger::llInfo, a_ArgList);
}
void LOGWARNING(const char * a_Format, fmt::ArgList a_ArgList)
{
cLogger::GetInstance().LogPrintf( a_Format, cLogger::llWarning, a_ArgList);
}
void LOGERROR(const char * a_Format, fmt::ArgList a_ArgList)
{
cLogger::GetInstance().LogPrintf( a_Format, cLogger::llError, a_ArgList);
}