From b0a43ea5758f982325ec172685ab1da93cdcb6a7 Mon Sep 17 00:00:00 2001 From: Frank Celler Date: Thu, 19 Dec 2013 16:27:02 +0100 Subject: [PATCH] added move constructor --- lib/Logger/LoggerStream.cpp | 25 +++++++++++++++++++------ lib/Logger/LoggerStream.h | 7 ++++++- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/Logger/LoggerStream.cpp b/lib/Logger/LoggerStream.cpp index 3bfac01018..3e6644fae8 100644 --- a/lib/Logger/LoggerStream.cpp +++ b/lib/Logger/LoggerStream.cpp @@ -136,21 +136,34 @@ LoggerStream::LoggerStream (LoggerData::Info const& info) : } //////////////////////////////////////////////////////////////////////////////// -/// @brief copy constructor +/// @brief move or copy constructor //////////////////////////////////////////////////////////////////////////////// -LoggerStream::LoggerStream (LoggerStream const& copy) : - _stream(new stringstream(copy._stream->str())), _info(copy._info) { +#if defined(_MSC_VER) + +LoggerStream::LoggerStream (LoggerStream&& copy) : + _stream(copy._stream), _info(copy._info) { + copy._stream = 0; } +#else + +LoggerStream::LoggerStream (LoggerStream const& copy) : + _stream(copy._stream), _info(copy._info) { +} + +#endif + //////////////////////////////////////////////////////////////////////////////// /// @brief destructs a logger stream //////////////////////////////////////////////////////////////////////////////// LoggerStream::~LoggerStream () { - computeInfo(_info); - - Logger::output(static_cast (_stream)->str(), _info); + if (_stream != 0) { + computeInfo(_info); + Logger::output(static_cast (_stream)->str(), _info); + delete _stream; + } } //////////////////////////////////////////////////////////////////////////////// diff --git a/lib/Logger/LoggerStream.h b/lib/Logger/LoggerStream.h index c5c278133f..2cb928c4f6 100644 --- a/lib/Logger/LoggerStream.h +++ b/lib/Logger/LoggerStream.h @@ -51,6 +51,7 @@ namespace triagens { class LoggerStream { LoggerStream& operator= (LoggerStream const&); + LoggerStream (LoggerStream const&); //////////////////////////////////////////////////////////////////////////////// /// @} @@ -80,10 +81,14 @@ namespace triagens { LoggerStream (LoggerData::Info const&); //////////////////////////////////////////////////////////////////////////////// -/// @brief copy constructor +/// @brief move or copy constructor //////////////////////////////////////////////////////////////////////////////// +#if defined(_MSC_VER) + LoggerStream (LoggerStream&&); +#else LoggerStream (LoggerStream const&); +#endif //////////////////////////////////////////////////////////////////////////////// /// @brief destructs a logger stream