diff options
Diffstat (limited to 'src/sys/consoleinterface.h')
-rw-r--r-- | src/sys/consoleinterface.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/sys/consoleinterface.h b/src/sys/consoleinterface.h new file mode 100644 index 0000000..e0228ae --- /dev/null +++ b/src/sys/consoleinterface.h @@ -0,0 +1,59 @@ +/* + 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 <iostream> + +/// 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() + +#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 debug messages too + virtual std::ostream & debugstream() = 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__ + |