// Copyright 2017 The Chromium OS Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef _BSDIFF_LOGGING_H_ #define _BSDIFF_LOGGING_H_ #include <string.h> #include <iostream> #include <sstream> // Simple error logging macro to avoid dependencies in other base libraries. #define LOG(severity) LogMessage(__FILE__, __LINE__, #severity).stream() // A variant of LOG that also logs the current errno value. #define PLOG(severity) LogMessage(__FILE__, __LINE__, #severity, errno).stream() // A temporarily scoped object used by LOG & PLOG. class LogMessage { public: LogMessage(const char* file, unsigned int line, const char* severity); LogMessage(const char* file, unsigned int line, const char* severity, int error); ~LogMessage(); // Returns the stream associated with the message, the LogMessage performs // output when it goes out of scope. std::ostream& stream() { return stream_; } private: std::ostringstream stream_; int error_; // The saved errno value. }; #endif // _BSDIFF_LOGGING_H_