From eab2e06169d2d6447f24f04ef04f1adc342c8aac Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 9 Jan 2017 09:10:09 +0100 Subject: COMMON: Enhanced debug channel checks. Now it is possible to enforce checking by specifying level -1, that is, debug level 11 will not turn it on. --- common/debug-channels.h | 2 +- common/debug.cpp | 8 ++++---- common/debug.h | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/common/debug-channels.h b/common/debug-channels.h index 1414a1053a..0fb8006803 100644 --- a/common/debug-channels.h +++ b/common/debug-channels.h @@ -117,7 +117,7 @@ public: /** * Test whether the given debug channel is enabled. */ - bool isDebugChannelEnabled(uint32 channel); + bool isDebugChannelEnabled(uint32 channel, bool enforce = false); private: typedef HashMap DebugChannelMap; diff --git a/common/debug.cpp b/common/debug.cpp index c61fc63dea..5db8990db8 100644 --- a/common/debug.cpp +++ b/common/debug.cpp @@ -110,9 +110,9 @@ void DebugManager::disableAllDebugChannels() { disableDebugChannel(i->_value.name); } -bool DebugManager::isDebugChannelEnabled(uint32 channel) { +bool DebugManager::isDebugChannelEnabled(uint32 channel, bool enforce) { // Debug level 11 turns on all special debug level messages - if (gDebugLevel == 11) + if (gDebugLevel == 11 && enforce == false) return true; else return (gDebugChannelsEnabled & channel) != 0; @@ -125,8 +125,8 @@ bool debugLevelSet(int level) { } bool debugChannelSet(int level, uint32 debugChannels) { - if (gDebugLevel != 11) - if (level > gDebugLevel || !(DebugMan.isDebugChannelEnabled(debugChannels))) + if (gDebugLevel != 11 || level == -1) + if ((level != -1 && level > gDebugLevel) || !(DebugMan.isDebugChannelEnabled(debugChannels, level == -1))) return false; return true; diff --git a/common/debug.h b/common/debug.h index 883a0bf29d..5ec37f2f1e 100644 --- a/common/debug.h +++ b/common/debug.h @@ -117,6 +117,7 @@ bool debugLevelSet(int level); /** * Returns true if the debug level and channel are active * + * @param level debug level to check against. If set to -1, only channel check is active * @see enableDebugChannel */ bool debugChannelSet(int level, uint32 debugChannels); -- cgit v1.2.3