/* 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__ // project headers #include "sys/sys.h" // C++ headers #include /// 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 { /// interface for the client and server Console classes class ConsoleInterface { public: /// default constructor ConsoleInterface(); /// default destructor virtual ~ConsoleInterface(); /// stream to send normal messages too virtual std::ostream & messagestream() = 0; /// stream to send warning messages too virtual std::ostream & warningstream() = 0; /// stream to send error messages too virtual std::ostream & errorstream() = 0; /// stream to send debug messages too virtual std::ostream & debugstream() = 0; /// flush buffered messages virtual void flush() = 0; /// a pointer to the current console instance static ConsoleInterface *instance(); private: /// console singleton static ConsoleInterface *consoleinterface_instance; }; } // namespace sys #endif // __INCLUDED_SYS_CONSOLEINTERFACE_H__