/* sys/consoleinterface.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2. */ #ifndef __INCLUDED_SYS_CONSOLEINTERFACE_H__ #define __INCLUDED_SYS_CONSOLEINTERFACE_H__ #include #include #include #include "sys/sys.h" /// global define to send a message to the system console #define con_print sys::ConsoleInterface::instance()->messagestream() /// global define to send a warning message to the system console #define con_warn sys::ConsoleInterface::instance()->warningstream() /// global define to send an error message to the system console #define con_error sys::ConsoleInterface::instance()->errorstream() #ifdef HAVE_DEBUG_MESSAGES /// global define to send a debug message to the system console #define con_debug sys::ConsoleInterface::instance()->debugstream() #else #define con_debug if (0) *(std::ostream*)(0) #endif namespace sys { const size_t MAXCONLINES = 2048; /// interface for the client and server Console classes class ConsoleInterface { public: /// default constructor ConsoleInterface(); /// default destructor virtual ~ConsoleInterface(); /// stream to send normal messages to std::ostream & messagestream(); /// stream to send warning messages to std::ostream & warningstream(); /// stream to send error messages to std::ostream & errorstream(); /// stream to send debug messages to std::ostream & debugstream(); /// flush buffered messages virtual void flush(); /// resize the console (ncurses stub) virtual void resize(); /// 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(); /// enable or disable rcon void buffer_rcon(bool enable = true); /// return the console inputbuffer inline std::stringstream & buffer() { return consoleinterface_buffer; } inline bool rcon() { return consoleinterface_rcon; } protected: std::deque 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; bool consoleinterface_rcon; }; } // namespace sys #endif // __INCLUDED_SYS_CONSOLEINTERFACE_H__