logmask.h
来自「日志类封装日志类封装日志类封装日志类封装日志类封装日志类封装」· C头文件 代码 · 共 88 行
H
88 行
/*============================================================================. | Copyright (C) 2006 Gareth Buxton | |----------------------------------------------------------------------------| | LogPlusPlus is free software; you can redistribute it and/or | | modify it under the terms of the GNU Lesser General Public | | License as published by the Free Software Foundation; either | | version 2.1 of the License, or (at your option) any later version. | | | | LogPlusPlus is distributed in the hope that it will be useful, | | but WITHOUT ANY WARRANTY; without even the implied warranty of | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | | Lesser General Public License for more details. | | | | You should have received a copy of the GNU Lesser General Public | | License along with this library; if not, write to the Free Software | | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | '============================================================================*/#ifndef _LPP_LOGMASK_H_#define _LPP_LOGMASK_H_#include <bitset>#include <liblpp/Types.h>#include <liblpp/LogFlag.h>#include <liblpp/LogLevel.h>//=============================================================================LPP_NAMESPACE_BEGIN//=============================================================================/** * Log and masked ostreams each maintain a * LogMask object. The LogMask is a bitset that * is used to determine whether or not to output * an info message arriving at a given LogLevel. **/class LogMask: public std::bitset<LOG_MASK_SIZE>{public: LogMask(); LogMask(unsigned int ui); LogMask(const std::string&); LogMask(const LogMask& logMask); virtual ~LogMask(); inline LogMask& operator=(const LogMask& logMask) { // Safer... //std::bitset<LOG_MASK_SIZE>::operator=(logMask); //return (*this); // Faster?? return static_cast<LogMask&>(std::bitset<LOG_MASK_SIZE>::operator=(logMask)); } inline void apply(const LogMask &logMask, const ModType& modType) { switch(modType) { case REPLACE: (*this) = logMask; break; case AND: (*this) &= logMask; break; case IOR: (*this) |= logMask; break; case EOR: (*this) ^= logMask; break; case NAND: (*this) &= ~logMask; break; default: (*this) = logMask; } } inline bool operator()(const LogFlag& flag) const { return !(*this & flag).any(); } std::string toString(); static LogMask levelToMask(const LogLevel& logLevel);};//=============================================================================LPP_NAMESPACE_END//=============================================================================#endif /*_LPP_LOGMASK_H_*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?