Avoid giving arguments by value for log.

This commit is contained in:
Arkaran99 2014-09-27 22:56:27 +02:00
parent 67bc9acbe0
commit d9a95aae09
3 changed files with 14 additions and 12 deletions

View file

@ -11,13 +11,13 @@ using namespace Log;
LogManager *gLogManager = nullptr; LogManager *gLogManager = nullptr;
u32 LogMessage::size() u32 LogMessage::size() const
{ {
//1 byte for NULL terminator //1 byte for NULL terminator
return (u32)(sizeof(LogMessage::size_type) + sizeof(LogType) + sizeof(LogSeverity) + sizeof(std::string::value_type) * mText.size() + 1); return (u32)(sizeof(LogMessage::size_type) + sizeof(LogType) + sizeof(LogSeverity) + sizeof(std::string::value_type) * mText.size() + 1);
} }
void LogMessage::serialize(char *output) void LogMessage::serialize(char *output) const
{ {
LogMessage::size_type size = this->size(); LogMessage::size_type size = this->size();
memcpy(output, &size, sizeof(LogMessage::size_type)); memcpy(output, &size, sizeof(LogMessage::size_type));
@ -60,7 +60,7 @@ LogChannel::LogChannel(const std::string& name) :
, mLogLevel(Warning) , mLogLevel(Warning)
{} {}
void LogChannel::log(LogMessage msg) void LogChannel::log(const LogMessage &msg)
{ {
std::lock_guard<std::mutex> lock(mListenerLock); std::lock_guard<std::mutex> lock(mListenerLock);
for (auto &listener : mListeners) for (auto &listener : mListeners)
@ -82,7 +82,7 @@ void LogChannel::removeListener(std::shared_ptr<LogListener> listener)
struct CoutListener : LogListener struct CoutListener : LogListener
{ {
void log(LogMessage msg) void log(const LogMessage &msg)
{ {
std::cerr << msg.mText << std::endl; std::cerr << msg.mText << std::endl;
} }
@ -103,13 +103,15 @@ struct FileListener : LogListener
} }
} }
void log(LogMessage msg) void log(const LogMessage &msg)
{ {
std::string text = msg.mText;
if (mPrependChannelName) if (mPrependChannelName)
{ {
msg.mText.insert(0, gTypeNameTable[static_cast<u32>(msg.mType)].mName); text.insert(0, gTypeNameTable[static_cast<u32>(msg.mType)].mName);
} }
mFile.Write(msg.mText); mFile.Write(text);
} }
}; };

View file

@ -61,15 +61,15 @@ namespace Log
LogSeverity mServerity; LogSeverity mServerity;
std::string mText; std::string mText;
u32 size(); u32 size() const;
void serialize(char *output); void serialize(char *output) const;
static LogMessage deserialize(char *input, u32* size_out=nullptr); static LogMessage deserialize(char *input, u32* size_out=nullptr);
}; };
struct LogListener struct LogListener
{ {
virtual ~LogListener() {}; virtual ~LogListener() {};
virtual void log(LogMessage msg) = 0; virtual void log(const LogMessage &msg) = 0;
}; };
struct LogChannel struct LogChannel
@ -78,7 +78,7 @@ namespace Log
LogChannel(const std::string& name); LogChannel(const std::string& name);
LogChannel(LogChannel& other) = delete; LogChannel(LogChannel& other) = delete;
LogChannel& operator = (LogChannel& other) = delete; LogChannel& operator = (LogChannel& other) = delete;
void log(LogMessage msg); void log(const LogMessage &msg);
void addListener(std::shared_ptr<LogListener> listener); void addListener(std::shared_ptr<LogListener> listener);
void removeListener(std::shared_ptr<LogListener> listener); void removeListener(std::shared_ptr<LogListener> listener);
std::string name; std::string name;

View file

@ -97,7 +97,7 @@ struct wxWriter : Log::LogListener
} }
//put message into the log buffer //put message into the log buffer
void log(Log::LogMessage msg) void log(const Log::LogMessage &msg)
{ {
u8 logLevel = Ini.HLELogLvl.GetValue(); u8 logLevel = Ini.HLELogLvl.GetValue();
if (msg.mType != Log::TTY && logLevel != 0) if (msg.mType != Log::TTY && logLevel != 0)