/*************************************************************************** * Copyright (C) 2009 by gempa GmbH * * * * All Rights Reserved. * * * * NOTICE: All information contained herein is, and remains * * the property of gempa GmbH and its suppliers, if any. The intellectual * * and technical concepts contained herein are proprietary to gempa GmbH * * and its suppliers. * * Dissemination of this information or reproduction of this material * * is strictly forbidden unless prior written permission is obtained * * from gempa GmbH. * ***************************************************************************/ #ifndef GEMPA_CAPS_LOG_H #define GEMPA_CAPS_LOG_H namespace Gempa { namespace CAPS { enum LogLevel { LL_UNDEFINED = 0, LL_ERROR, LL_WARNING, LL_NOTICE, LL_INFO, LL_DEBUG, LL_QUANTITY }; #define CAPS_LOG_MSG(LogLevel, ...) \ do {\ if ( Gempa::CAPS::LogHandler[LogLevel] != NULL )\ Gempa::CAPS::LogHandler[LogLevel](__VA_ARGS__);\ } while(0) #define CAPS_ERROR(...) CAPS_LOG_MSG(Gempa::CAPS::LL_ERROR, __VA_ARGS__) #define CAPS_WARNING(...) CAPS_LOG_MSG(Gempa::CAPS::LL_WARNING, __VA_ARGS__) #define CAPS_NOTICE(...) CAPS_LOG_MSG(Gempa::CAPS::LL_NOTICE, __VA_ARGS__) #define CAPS_INFO(...) CAPS_LOG_MSG(Gempa::CAPS::LL_INFO, __VA_ARGS__) #define CAPS_DEBUG(...) CAPS_LOG_MSG(Gempa::CAPS::LL_DEBUG, __VA_ARGS__) typedef void (*LogOutput)(const char *, ...); extern LogOutput LogHandler[LL_QUANTITY]; void SetLogHandler(LogLevel, LogOutput); } } #endif