/[usata]/usata2/src/log.hpp
ViewVC logotype

Diff of /usata2/src/log.hpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by Descender, Sun Dec 26 02:59:35 2004 UTC revision 1.3 by skunix, Sun Dec 26 07:50:33 2004 UTC
# Line 10  Line 10 
10  // http://www.fsf.org/licenses/gpl.html.  // http://www.fsf.org/licenses/gpl.html.
11  //  //
12  // $Log$  // $Log$
13    // Revision 1.3  2004/12/26 07:50:33  skunix
14    // fixed Stream error, added a buffered Stream2 class, and added Level prefixing
15    //
16  // Revision 1.2  2004/12/26 02:59:35  Descender  // Revision 1.2  2004/12/26 02:59:35  Descender
17    //
18  // log::Target: change access of destructor to protected  // log::Target: change access of destructor to protected
19  // log::Stream: change type of parameter 'server' for constructor to pointer, remove unused constructor  // log::Stream: change type of parameter 'server' for constructor to pointer, remove unused constructor
20  //  //
# Line 69  namespace usata Line 73  namespace usata
73                          void                          void
74                          set_level(int level);                          set_level(int level);
75    
76                            void
77                            set_prefix(int level, const std::string& prefix);
78    
79                          void                          void
80                          log(int level, const std::string& message);                          log(int level, const std::string& message);
81    
# Line 115  namespace usata Line 122  namespace usata
122                          {}                          {}
123                  };                  };
124    
125                    
126                    class Stream2
127                    {
128                    public:
129                            Stream2(int level = Level::INFO, Server*pServer=&::usata::log::server)
130                            :m_server(pServer),m_level(level){};
131                            void    set_level(int level){m_level=level;}
132                            template <typename T>
133                            friend Stream2&
134                            operator << (Stream2& log, T data);
135                            void commit();
136                    private:
137                            Server  *m_server;
138                            int m_level;
139                            std::stringstream buf;
140                    };
141                  class Stream                  class Stream
142                  {                  {
143                  public:                  public:
144                                    
145                          Stream(Server *server, int level = Level::INFO)                          Stream(Server *server, int level = Level::INFO)
146                                  : m_server(server)                                  : m_server(server), m_level(level)
147                          {}                          {}
148    
149                          ~Stream()                          ~Stream()
# Line 134  namespace usata Line 157  namespace usata
157    
158                          template <typename T>                          template <typename T>
159                          friend Stream&                          friend Stream&
160                          operator << (Stream& log, T data)                          operator << (Stream& log, T data);
                         {  
                                 log.m_server->log(log.m_level, boost::lexical_cast<std::string>(data));  
                         }  
161    
162                  private:                  private:
163    
164                          Server *m_server;                          Server *m_server;
165                          int     m_level;                          int     m_level;
166                  };                  };
167                    template <typename T>
168                    Stream& operator<<(Stream&log,T data)
169                    {
170                            log.m_server->log(log.m_level, boost::lexical_cast<std::string>(data));
171                            return log;
172                    }
173    
174                    template <typename T>
175                    Stream2& operator<<(Stream2&log,T data)
176                    {
177                            log.buf << data;
178                            return log;
179                    }
180    
181                  // Stream manipulators                  // Stream manipulators
182    
183                  struct StreamSetLevel { int level; };                  struct StreamSetLevel { int level; };
184                    struct EndLog{};
185                  inline Stream&                  inline Stream&
186                  operator << (Stream& log, const StreamSetLevel& manip)                  operator << (Stream& log, const StreamSetLevel& manip)
187                  {                  {
# Line 156  namespace usata Line 189  namespace usata
189                          return log;                          return log;
190                  }                  }
191    
192                    inline Stream2&
193                    operator << (Stream2& log, const StreamSetLevel&manip)
194                    {
195                            log.set_level(manip.level);
196                            return log;
197                    }
198    
199                    inline Stream2&
200                    operator << (Stream2&log, const EndLog&)
201                    {
202                            log.commit();
203                            return log;
204                    }
205    
206                  StreamSetLevel set_level(int level);                  StreamSetLevel set_level(int level);
207    
208          } // namespace log          } // namespace log

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26