00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __MYGUI_LOG_STREAM_H__
00024 #define __MYGUI_LOG_STREAM_H__
00025
00026 #include "MyGUI_Prerequest.h"
00027 #include <fstream>
00028 #include <iostream>
00029 #include <string>
00030
00031 namespace MyGUI
00032 {
00033
00034 class MYGUI_EXPORT LogStream
00035 {
00036 friend class LogManager;
00037
00038 public:
00039 struct LogStreamEnd { };
00040
00041 public:
00042 LogStream& operator<<(const LogStreamEnd& _endl);
00043
00044 template <typename T>
00045 inline LogStream& operator<<(T _value)
00046 {
00047 if (getSTDOutputEnabled()) std::cout << _value;
00048 if (mStream.is_open()) mStream << _value;
00049 return *this;
00050 }
00051
00052 const std::string& getFileName() const { return mFileName; }
00053
00054 private:
00055 LogStream();
00056 ~LogStream();
00057
00058 LogStream(const std::string& _file);
00059
00060 void start(const std::string& _section, const std::string& _level);
00061
00062 bool getSTDOutputEnabled();
00063
00064 void lock() const { }
00065 void release() const { }
00066
00067 private:
00068 std::ofstream mStream;
00069 std::string mFileName;
00070 };
00071
00072 }
00073
00074 #endif // __MYGUI_LOG_STREAM_H__