/usr/include/globjects/base/LogMessageBuilder.h is in libglobjects-dev 1.1.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | #pragma once
#include <iosfwd>
#include <string>
#include <vector>
#include <array>
#include <memory>
#include <iomanip>
#include <globjects/globjects_api.h>
#include <globjects/base/LogMessageLevel.h>
namespace globjects
{
template <typename T>
class ref_ptr;
class AbstractLogHandler;
/** \brief Builds a LogMessage from different kinds of primitive types.
The LogMessageBuilder is usually created by one of the global functions
log, debug, warning, error or fatal. It works similar to streams and
accepts a number of different types which will be converted to strings
automatically. When it goes out of scope, it creates a LogMessage from
all streamed objects and sends it to the log handler.
Typical usage of the LogMessageBuilder:
\code{.cpp}
warning() << "This is warning number " << 3;
\endcode
\see logging.h
\see LogMessage
\see setLoggingHandler
\see setVerbosityLevel
\see info
\see debug
\see warning
\see critical
*/
class GLOBJECTS_API LogMessageBuilder
{
public:
// These types are unspecified by the C++ standard -> we need to query the compiler specific types
using PrecisionManipulator = decltype(std::setprecision(0));
using FillManipulator = decltype(std::setfill('0'));
using WidthManipulator = decltype(std::setw(0));
public:
LogMessageBuilder(LogMessageLevel level, AbstractLogHandler * handler);
LogMessageBuilder(const LogMessageBuilder & builder);
virtual ~LogMessageBuilder();
LogMessageBuilder & operator<<(const char * c);
LogMessageBuilder & operator<<(const std::string & str);
LogMessageBuilder & operator<<(bool b);
LogMessageBuilder & operator<<(char c);
LogMessageBuilder & operator<<(int i);
LogMessageBuilder & operator<<(float f);
LogMessageBuilder & operator<<(double d);
LogMessageBuilder & operator<<(long double d);
LogMessageBuilder & operator<<(unsigned u);
LogMessageBuilder & operator<<(long l);
LogMessageBuilder & operator<<(long long l);
LogMessageBuilder & operator<<(unsigned long ul);
LogMessageBuilder & operator<<(unsigned char uc);
LogMessageBuilder & operator<<(const void * pointer);
// manipulators
LogMessageBuilder & operator<<(std::ostream & (*manipulator)(std::ostream&));
LogMessageBuilder & operator<<(PrecisionManipulator manipulator);
LogMessageBuilder & operator<<(FillManipulator manipulator);
#ifndef _MSC_VER
// in Windows PrecisionManipulator = WidthManipulator
LogMessageBuilder & operator<<(WidthManipulator manipulator);
#endif
// globjects base objects
template <typename T>
LogMessageBuilder & operator<<(const ref_ptr<T> & ref_pointer);
// pointers
template <typename T>
LogMessageBuilder & operator<<(const T * pointer);
// array types
template <typename T>
LogMessageBuilder & operator<<(const std::vector<T> & vector);
template <typename T, std::size_t Count>
LogMessageBuilder & operator<<(const std::array<T, Count> & array);
protected:
LogMessageLevel m_level;
AbstractLogHandler * m_handler;
std::shared_ptr<std::stringstream> m_stream;
};
} // namespace globjects
#include <globjects/base/LogMessageBuilder.inl>
|