Advertisement
Guest User

Untitled

a guest
Jul 29th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1.  
  2. #pragma once
  3. #ifndef OS_LOG_H_
  4. #define OS_LOG_H_
  5.  
  6. #include <ostream>
  7. #include <sstream>
  8.  
  9. namespace Engine {
  10. namespace OS {
  11.    
  12. class Log {
  13. public:
  14.     enum MessageType {
  15.         MESSAGE_DEBUG,
  16.         MESSAGE_INFO,
  17.         MESSAGE_WARNING,
  18.         MESSAGE_ERROR,
  19.     };
  20.  
  21.     class Streamer : public std::ostream {
  22.     public:
  23.         Streamer(MessageType messageType);
  24.         ~Streamer();
  25.  
  26.     private:
  27.         class StringBuffer: public std::stringbuf {
  28.         public:
  29.             StringBuffer(MessageType messageType);
  30.             ~StringBuffer();
  31.             virtual int sync();
  32.  
  33.         private:
  34.             MessageType mMessageType;
  35.         };
  36.     };
  37.  
  38.     static void createInstance();
  39.  
  40.     static Streamer debug;
  41.     static Streamer info;
  42.     static Streamer warning;
  43.     static Streamer error;
  44.  
  45. private:
  46.     void writeMessage(const std::string& message, MessageType type);
  47.     void writeDebug(const std::string& message);
  48.     void writeInfo(const std::string& message);
  49.     void writeWarning(const std::string& message);
  50.     void writeError(const std::string& message);
  51.  
  52.     static Log *instance;
  53.  
  54. protected:
  55.     Log();
  56.    
  57. };
  58.  
  59. }
  60. }
  61.  
  62. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement