Line data Source code
1 : /*
2 : Minetest
3 : Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4 :
5 : This program is free software; you can redistribute it and/or modify
6 : it under the terms of the GNU Lesser General Public License as published by
7 : the Free Software Foundation; either version 2.1 of the License, or
8 : (at your option) any later version.
9 :
10 : This program is distributed in the hope that it will be useful,
11 : but WITHOUT ANY WARRANTY; without even the implied warranty of
12 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 : GNU Lesser General Public License for more details.
14 :
15 : You should have received a copy of the GNU Lesser General Public License along
16 : with this program; if not, write to the Free Software Foundation, Inc.,
17 : 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 : */
19 :
20 : #ifndef LOGOUTPUTBUFFER_HEADER
21 : #define LOGOUTPUTBUFFER_HEADER
22 :
23 : #include "log.h"
24 : #include <queue>
25 :
26 : class LogOutputBuffer : public ILogOutput
27 : {
28 : public:
29 1 : LogOutputBuffer(LogMessageLevel maxlev)
30 1 : {
31 1 : log_add_output(this, maxlev);
32 1 : }
33 1 : ~LogOutputBuffer()
34 2 : {
35 1 : log_remove_output(this);
36 1 : }
37 0 : virtual void printLog(const std::string &line)
38 : {
39 0 : m_buf.push(line);
40 0 : }
41 0 : std::string get()
42 : {
43 0 : if(empty())
44 0 : return "";
45 0 : std::string s = m_buf.front();
46 0 : m_buf.pop();
47 0 : return s;
48 : }
49 1166 : bool empty()
50 : {
51 1166 : return m_buf.empty();
52 : }
53 : private:
54 : std::queue<std::string> m_buf;
55 : };
56 :
57 : #endif
58 :
|