Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/sys/consoleinterface.h')
-rw-r--r--src/sys/consoleinterface.h39
1 files changed, 26 insertions, 13 deletions
diff --git a/src/sys/consoleinterface.h b/src/sys/consoleinterface.h
index 33dc5b5..f874182 100644
--- a/src/sys/consoleinterface.h
+++ b/src/sys/consoleinterface.h
@@ -7,11 +7,11 @@
#ifndef __INCLUDED_SYS_CONSOLEINTERFACE_H__
#define __INCLUDED_SYS_CONSOLEINTERFACE_H__
-// project headers
-#include "sys/sys.h"
-
-// C++ headers
#include <iostream>
+#include <sstream>
+#include <deque>
+
+#include "sys/sys.h"
/// global define to send a message to the system console
#define con_print sys::ConsoleInterface::instance()->messagestream()
@@ -30,6 +30,8 @@
namespace sys
{
+const size_t MAXCONLINES = 2048;
+
/// interface for the client and server Console classes
class ConsoleInterface
{
@@ -40,27 +42,38 @@ public:
/// default destructor
virtual ~ConsoleInterface();
- /// stream to send normal messages too
- virtual std::ostream & messagestream() = 0;
+ /// stream to send normal messages to
+ std::ostream & messagestream();
- /// stream to send warning messages too
- virtual std::ostream & warningstream() = 0;
+ /// stream to send warning messages to
+ std::ostream & warningstream();
- /// stream to send error messages too
- virtual std::ostream & errorstream() = 0;
+ /// stream to send error messages to
+ std::ostream & errorstream();
- /// stream to send debug messages too
- virtual std::ostream & debugstream() = 0;
+ /// stream to send debug messages to
+ std::ostream & debugstream();
/// flush buffered messages
- virtual void flush() = 0;
+ virtual void flush();
+
+ /// turn ANSI color codes on or off
+ inline void set_ansi(bool ansi) { consoleinterface_ansi = ansi; }
/// a pointer to the current console instance
static ConsoleInterface *instance();
+protected:
+ std::deque<std::string> consoleinterface_text;
+ std::stringstream consoleinterface_buffer;
+
+ /// print a string to stdout with ansi color codes
+ void print_ansi(const char *line);
+
private:
/// console singleton
static ConsoleInterface *consoleinterface_instance;
+ bool consoleinterface_ansi;
};
} // namespace sys