Fixed issue #39 User defined types no longer streamable

This commit is contained in:
gabi 2015-01-28 00:53:16 +02:00
parent d071e5fcfa
commit 56ee7316e9
1 changed files with 75 additions and 8 deletions

View File

@ -23,7 +23,7 @@
/*************************************************************************/
#pragma once
#include <type_traits>
#include "../common.h"
#include "../logger.h"
#ifdef SPDLOG_CLOCK_COARSE
@ -70,11 +70,11 @@ public:
#ifndef SPDLOG_CLOCK_COARSE
_log_msg.time = log_clock::now();
#else
timespec ts;
::clock_gettime(CLOCK_REALTIME_COARSE, &ts);
_log_msg.time = std::chrono::time_point<log_clock, typename log_clock::duration>(
std::chrono::duration_cast<typename log_clock::duration>(
std::chrono::seconds(ts.tv_sec) + std::chrono::nanoseconds(ts.tv_nsec)));
timespec ts;
::clock_gettime(CLOCK_REALTIME_COARSE, &ts);
_log_msg.time = std::chrono::time_point<log_clock, typename log_clock::duration>(
std::chrono::duration_cast<typename log_clock::duration>(
std::chrono::seconds(ts.tv_sec) + std::chrono::nanoseconds(ts.tv_nsec)));
#endif
_callback_logger->_log_msg(_log_msg);
}
@ -96,18 +96,85 @@ public:
}
}
void write(const char* what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(const std::string& what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(int what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(unsigned int what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(long what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(unsigned long what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(long long what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(unsigned long long what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(double what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(long double what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(float what)
{
if (_enabled)
_log_msg.raw << what;
}
void write(char what)
{
if (_enabled)
_log_msg.raw << what;
}
template<typename T>
line_logger& operator<<(const T& what)
{
if (_enabled)
_log_msg.raw << what;
_log_msg.raw.write("{}", what);
return *this;
}