/** * @file iofactory.h * @brief Declaration of the IOFactory class. * @author Andreas Aardal Hanssen * @date 2002, 2003 */ #ifndef IOFACTORY_H_INCLUDED #define IOFACTORY_H_INCLUDED #include "iodevice.h" #include #include #include namespace Binc { class IOFactory { std::map> devices; public: static void addDevice(std::unique_ptr dev); static IOFactory &getInstance(); static IODevice &getClient(); static IODevice &getLogger(); }; } #define bincClient IOFactory::getClient() #if defined(DEBUG) // #define bincError if (false) std::cout #define bincError std::cerr // #define bincWarning if (false) std::cout #define bincWarning std::cerr #define bincDebug std::cerr // #define bincDebug if (false) std::cout #else #define bincError \ IOFactory::getLogger().setOutputLevel(IODevice::LogLevel::ErrorLevel); \ IOFactory::getLogger() #define bincWarning \ IOFactory::getLogger().setOutputLevel(IODevice::LogLevel::WarningLevel); \ IOFactory::getLogger() #define bincDebug \ IOFactory::getLogger().setOutputLevel(IODevice::LogLevel::DebugLevel); \ IOFactory::getLogger() #endif #define bincLog \ IOFactory::getLogger().setOutputLevel(IODevice::LogLevel::InfoLevel); \ IOFactory::getLogger() #endif