YAGE  v0.3.1
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 /* ----------------------------------------------------------------------------
2  * logmessage.h
3  *
4  * Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com>
5  * MIT License, see LICENSE file for more details.
6  * ----------------------------------------------------------------------------
7  */
8 
9 #ifndef YAGE_CORE_LOGMESSAGE_H
10 #define YAGE_CORE_LOGMESSAGE_H
11 
12 #include <memory>
13 #include <sstream>
14 #include <string>
15 
16 namespace yage
17 {
18 
19 class Logger;
20 
22 {
23 public:
24  ~LogMessage();
25 
26  LogMessage(const LogMessage &msg) = delete;
27 
28  LogMessage &operator=(const LogMessage &msg) = delete;
29  LogMessage &operator=(LogMessage &&msg) = delete;
30 
31  template <typename T>
32  LogMessage &operator<<(const T &value);
33 
34  LogMessage &operator<<(std::ostream &(*fn)(std::ostream &os));
35 
36  struct Meta {
37  std::string fileName;
38  int lineNo;
39  };
40 
41 private:
42  friend class Logger;
43 
44  std::ostringstream buffer_;
47 
48  LogMessage(Logger *owner, const std::string &fileName_i, int lineNum_i);
49  LogMessage(LogMessage &&msg);
50 };
51 
52 /* -----------------------------------------------------------------------------
53  * Template definitions
54  * -----------------------------------------------------------------------------
55  */
56 
57 template <typename T>
59 {
60  buffer_ << value;
61  return *this;
62 }
63 
64 } // namespace yage
65 
66 #endif
int lineNo
Definition: logmessage.h:38
Definition: logmessage.h:21
Meta meta_
Definition: logmessage.h:46
LogMessage & operator<<(const T &value)
Definition: logmessage.h:58
std::ostringstream buffer_
Definition: logmessage.h:44
std::string fileName
Definition: logmessage.h:37
LogMessage(const LogMessage &msg)=delete
Definition: logger.h:24
LogMessage & operator=(const LogMessage &msg)=delete
Definition: logmessage.h:36
Logger * owner_
Definition: logmessage.h:45