/* common/console.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_CONSOLE_H__ #define __INCLUDED_COMMON_CONSOLE_H__ // project headers #include "common/common.h" // C++ headers #include /// global define to send a message to the system console #define con_print common::Console::instance()->messagestream() /// global define to send a warning message to the system console #define con_warn common::Console::instance()->warningstream() #ifdef HAVE_DEBUG_MESSAGES /// global define to send a debug message to the system console #define con_debug common::Console::instance()->debugstream() #else #define con_debug if (0) *(std::ostream*)(0) #endif namespace common { /// interface for a console object that writes messages on the screen class Console { public: /// default constructor Console(); /// default destructor virtual ~Console(); /// 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 implementation static Console *instance(); private: /// console singleton static Console *console_instance; } ; // class Console } // namespace common #endif // __INCLUDED_COMMON_CONSOLE_H__