YAGE  v0.1.4.0
Yet Another Game Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
logmessage.h
Go to the documentation of this file.
1 
9 #ifndef YAGE_CORE_LOGMESSAGE_H
10 #define YAGE_CORE_LOGMESSAGE_H
11 
12 #include <memory>
13 #include <sstream>
14 #include <string>
15 
16 #include "loglevel.h"
17 
18 namespace yage
19 {
20 
21 class Logger;
22 
24 {
25 public:
26  ~LogMessage();
27 
28  LogMessage(const LogMessage &msg) = delete;
29 
30  LogMessage &operator=(const LogMessage &msg) = delete;
31  LogMessage &operator=(LogMessage &&msg) = delete;
32 
33  template <typename T>
34  LogMessage &operator<<(const T &value);
35 
36  LogMessage &operator<<(std::ostream &(*fn)(std::ostream &os));
37 
38  struct Meta {
40  std::string fileName;
41  int line;
42  };
43 
44 private:
45  friend class Logger;
46 
47  std::ostringstream buffer_;
48  Logger *owner_;
49  Meta meta_;
50 
51  LogMessage(Logger *owner, LogLevel level, const std::string &file_name,
52  int line_num);
53  LogMessage(LogMessage &&msg);
54 };
55 
56 /* -----------------------------------------------------------------------------
57  * Template definitions
58  * -----------------------------------------------------------------------------
59  */
60 
61 template <typename T>
63 {
64  buffer_ << value;
65  return *this;
66 }
67 
68 } // namespace yage
69 
70 #endif
Definition: logmessage.h:23
LogLevel
Different log levels that can be assigned to each message sent to the Logger.
Definition: loglevel.h:20
LogMessage & operator<<(const T &value)
Definition: logmessage.h:62
std::string fileName
Definition: logmessage.h:40
LogMessage(const LogMessage &msg)=delete
int line
Definition: logmessage.h:41
LogLevel level
Definition: logmessage.h:39
Definition: logger.h:24
LogMessage & operator=(const LogMessage &msg)=delete
Definition: logmessage.h:38