diff options
Diffstat (limited to 'src/sys/consoleinterface.h')
-rw-r--r-- | src/sys/consoleinterface.h | 39 |
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 |