From 6c8446cddb37df732fc9e5fc21f98e31968ce634 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Fri, 1 Feb 2008 19:34:47 +0000 Subject: interface cleanup --- src/common/consoleinterface.h | 59 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/common/consoleinterface.h (limited to 'src/common/consoleinterface.h') diff --git a/src/common/consoleinterface.h b/src/common/consoleinterface.h new file mode 100644 index 0000000..ec77e1d --- /dev/null +++ b/src/common/consoleinterface.h @@ -0,0 +1,59 @@ +/* + common/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_COMMON_CONSOLEINTERFACE_H__ +#define __INCLUDED_COMMON_CONSOLEINTERFACE_H__ + +// project headers +#include "common/common.h" + +// C++ headers +#include + +/// global define to send a message to the system console +#define con_print common::ConsoleInterface::instance()->messagestream() +/// global define to send a warning message to the system console +#define con_warn common::ConsoleInterface::instance()->warningstream() + +#ifdef HAVE_DEBUG_MESSAGES +/// global define to send a debug message to the system console +#define con_debug common::ConsoleInterface::instance()->debugstream() +#else +#define con_debug if (0) *(std::ostream*)(0) +#endif + +namespace common { + +/// common 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 common + +#endif // __INCLUDED_COMMON_CONSOLEINTERFACE_H__ + -- cgit v1.2.3