globjects  1.0.0.000000000000
Strict OpenGL objects wrapper.
Loading...
Searching...
No Matches
LogMessageBuilder.h
Go to the documentation of this file.
1
2#pragma once
3
4#include <iosfwd>
5#include <string>
6#include <vector>
7#include <array>
8#include <memory>
9#include <iomanip>
10
11#include <globjects/globjects_api.h>
13
14
15namespace globjects
16{
17
18
19template <typename T>
20class ref_ptr;
21
22class AbstractLogHandler;
23
48class GLOBJECTS_API LogMessageBuilder
49{
50public:
51 // These types are unspecified by the C++ standard -> we need to query the compiler specific types
52 using PrecisionManipulator = decltype(std::setprecision(0));
53 using FillManipulator = decltype(std::setfill('0'));
54 using WidthManipulator = decltype(std::setw(0));
55
56public:
60
61 LogMessageBuilder & operator<<(const char * c);
62 LogMessageBuilder & operator<<(const std::string & str);
68 LogMessageBuilder & operator<<(long double d);
72 LogMessageBuilder & operator<<(unsigned long ul);
73 LogMessageBuilder & operator<<(unsigned char uc);
74 LogMessageBuilder & operator<<(const void * pointer);
75
76 // manipulators
77 LogMessageBuilder & operator<<(std::ostream & (*manipulator)(std::ostream&));
80#ifndef _MSC_VER
81 // in Windows PrecisionManipulator = WidthManipulator
83#endif
84
85 // globjects base objects
86 template <typename T>
87 LogMessageBuilder & operator<<(const ref_ptr<T> & ref_pointer);
88
89 // pointers
90 template <typename T>
91 LogMessageBuilder & operator<<(const T * pointer);
92
93 // array types
94 template <typename T>
95 LogMessageBuilder & operator<<(const std::vector<T> & vector);
96 template <typename T, std::size_t Count>
97 LogMessageBuilder & operator<<(const std::array<T, Count> & array);
98
99protected:
102 std::shared_ptr<std::stringstream> m_stream;
103};
104
105
106} // namespace globjects
107
108
109#include <globjects/base/LogMessageBuilder.inl>
Abstract interface to handle LogMessages.
Definition AbstractLogHandler.h:24
Builds a LogMessage from different kinds of primitive types.
Definition LogMessageBuilder.h:49
LogMessageBuilder & operator<<(std::ostream &(*manipulator)(std::ostream &))
LogMessageBuilder & operator<<(unsigned char uc)
decltype(std::setw(0)) WidthManipulator
Definition LogMessageBuilder.h:54
LogMessageBuilder & operator<<(const std::string &str)
LogMessageBuilder & operator<<(FillManipulator manipulator)
LogMessageBuilder & operator<<(long l)
LogMessageBuilder & operator<<(double d)
LogMessageBuilder(const LogMessageBuilder &builder)
LogMessageBuilder & operator<<(const std::vector< T > &vector)
LogMessageBuilder & operator<<(const ref_ptr< T > &ref_pointer)
LogMessageBuilder & operator<<(char c)
LogMessageBuilder & operator<<(long long l)
LogMessageBuilder & operator<<(float f)
LogMessageBuilder & operator<<(unsigned u)
LogMessageBuilder & operator<<(const char *c)
LogMessageBuilder & operator<<(const std::array< T, Count > &array)
LogMessageBuilder & operator<<(PrecisionManipulator manipulator)
LogMessageBuilder & operator<<(const void *pointer)
LogMessageBuilder & operator<<(int i)
LogMessageBuilder & operator<<(WidthManipulator manipulator)
LogMessageLevel m_level
Definition LogMessageBuilder.h:100
LogMessageBuilder & operator<<(bool b)
decltype(std::setfill( '0')) FillManipulator
Definition LogMessageBuilder.h:53
AbstractLogHandler * m_handler
Definition LogMessageBuilder.h:101
decltype(std::setprecision(0)) PrecisionManipulator
Definition LogMessageBuilder.h:52
LogMessageBuilder & operator<<(const T *pointer)
LogMessageBuilder & operator<<(unsigned long ul)
std::shared_ptr< std::stringstream > m_stream
Definition LogMessageBuilder.h:102
LogMessageBuilder(LogMessageLevel level, AbstractLogHandler *handler)
LogMessageBuilder & operator<<(long double d)
The ref_ptr class provides the interface for a reference pointer.
Definition ref_ptr.h:33
Contains all the classes that wrap OpenGL functionality.
LogMessageLevel
Definition LogMessageLevel.h:10