From 970745e60c41286ff2dc1a448a5e6c39e4581671 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Tue, 4 May 2010 11:59:22 +0000 Subject: Move DebugChannel related code to new header svn-id: r48935 --- common/debug-channels.h | 132 ++++++++++++++++++++++++++++++++++++++++++++++++ common/debug.cpp | 1 + common/debug.h | 99 +----------------------------------- common/system.h | 1 + 4 files changed, 135 insertions(+), 98 deletions(-) create mode 100644 common/debug-channels.h (limited to 'common') diff --git a/common/debug-channels.h b/common/debug-channels.h new file mode 100644 index 0000000000..445d0e0261 --- /dev/null +++ b/common/debug-channels.h @@ -0,0 +1,132 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef COMMON_DEBUG_CHANNELS_H +#define COMMON_DEBUG_CHANNELS_H + +#include "common/scummsys.h" + +#include "common/hashmap.h" +#include "common/hash-str.h" +#include "common/list.h" +#include "common/singleton.h" +#include "common/str.h" + + +namespace Common { + +// TODO: Find a better name for this +class DebugManager : public Singleton { +public: + + struct DebugChannel { + DebugChannel() : channel(0), enabled(false) {} + DebugChannel(uint32 c, const String &n, const String &d) + : name(n), description(d), channel(c), enabled(false) {} + + String name; + String description; + + uint32 channel; + bool enabled; + }; + + /** + * Adds a debug channel. + * + * A debug channel is considered roughly similar to what our debug levels described by + * gDebugLevel try to achieve: + * + * Debug channels should only affect the display of additional debug output, based on + * their state. That is if they are enabled, channel specific debug messages should + * be shown. If they are disabled on the other hand, those messages will be hidden. + * + * @see gDebugLevel. + * + * Note that we have debug* functions which depend both on the debug level set and + * specific debug channels. Those functions will only show output, when *both* criteria + * are satisfied. + * + * @param channel the channel flag (should be OR-able i.e. first one should be 1 then 2, 4, etc.) + * @param name the option name which is used in the debugger/on the command line to enable + * this special debug level (case will be ignored) + * @param description the description which shows up in the debugger + * @return true on success false on failure + */ + bool addDebugChannel(uint32 channel, const String &name, const String &description); + + /** + * Resets all engine specific debug channels. + */ + void clearAllDebugChannels(); + + /** + * Enables an debug channel. + * + * @param name the name of the debug channel to enable + * @return true on success, false on failure + */ + bool enableDebugChannel(const String &name); + + /** + * Disables an debug channel. + * + * @param name the name of the debug channel to disable + * @return true on success, false on failure + */ + bool disableDebugChannel(const String &name); + + + + typedef List DebugChannelList; + + /** + * Lists all engine specific debug channels. + * + * @return returns an array with all debug channels + */ + DebugChannelList listDebugChannels(); + + + /** + * Test whether the given debug channel is enabled. + */ + bool isDebugChannelEnabled(uint32 channel); + +private: + typedef HashMap DebugChannelMap; + + DebugChannelMap gDebugChannels; + uint32 gDebugChannelsEnabled; + + friend class Singleton; + DebugManager() : gDebugChannelsEnabled(0) {} +}; + +/** Shortcut for accessing the debug manager. */ +#define DebugMan Common::DebugManager::instance() + +} // End of namespace Common + +#endif diff --git a/common/debug.cpp b/common/debug.cpp index 30f4534f56..116c0d0d56 100644 --- a/common/debug.cpp +++ b/common/debug.cpp @@ -23,6 +23,7 @@ */ #include "common/debug.h" +#include "common/debug-channels.h" #include "common/util.h" #include // For va_list etc. diff --git a/common/debug.h b/common/debug.h index b70b838fab..784b3454b5 100644 --- a/common/debug.h +++ b/common/debug.h @@ -26,108 +26,11 @@ #define COMMON_DEBUG_H #include "common/scummsys.h" -#include "common/singleton.h" +#include "common/debug-channels.h" #include "common/textconsole.h" -#include "common/list.h" -#include "common/str.h" - -#include "common/hashmap.h" -#include "common/hash-str.h" - namespace Common { -// TODO: Find a better name for this -class DebugManager : public Singleton { -public: - - struct DebugChannel { - DebugChannel() : channel(0), enabled(false) {} - DebugChannel(uint32 c, const String &n, const String &d) - : name(n), description(d), channel(c), enabled(false) {} - - String name; - String description; - - uint32 channel; - bool enabled; - }; - - /** - * Adds a debug channel. - * - * A debug channel is considered roughly similar to what our debug levels described by - * gDebugLevel try to achieve: - * - * Debug channels should only affect the display of additional debug output, based on - * their state. That is if they are enabled, channel specific debug messages should - * be shown. If they are disabled on the other hand, those messages will be hidden. - * - * @see gDebugLevel. - * - * Note that we have debug* functions which depend both on the debug level set and - * specific debug channels. Those functions will only show output, when *both* criteria - * are satisfied. - * - * @param channel the channel flag (should be OR-able i.e. first one should be 1 then 2, 4, etc.) - * @param name the option name which is used in the debugger/on the command line to enable - * this special debug level (case will be ignored) - * @param description the description which shows up in the debugger - * @return true on success false on failure - */ - bool addDebugChannel(uint32 channel, const String &name, const String &description); - - /** - * Resets all engine specific debug channels. - */ - void clearAllDebugChannels(); - - /** - * Enables an debug channel. - * - * @param name the name of the debug channel to enable - * @return true on success, false on failure - */ - bool enableDebugChannel(const String &name); - - /** - * Disables an debug channel. - * - * @param name the name of the debug channel to disable - * @return true on success, false on failure - */ - bool disableDebugChannel(const String &name); - - - - typedef List DebugChannelList; - - /** - * Lists all engine specific debug channels. - * - * @return returns an array with all debug channels - */ - DebugChannelList listDebugChannels(); - - - /** - * Test whether the given debug channel is enabled. - */ - bool isDebugChannelEnabled(uint32 channel); - -private: - typedef HashMap DebugChannelMap; - - DebugChannelMap gDebugChannels; - uint32 gDebugChannelsEnabled; - - friend class Singleton; - DebugManager() : gDebugChannelsEnabled(0) {} -}; - -/** Shortcut for accessing the debug manager. */ -#define DebugMan Common::DebugManager::instance() - /** * Set the output formatter used by debug() and related functions. */ diff --git a/common/system.h b/common/system.h index ca006950e3..76689bf381 100644 --- a/common/system.h +++ b/common/system.h @@ -29,6 +29,7 @@ #include "common/scummsys.h" #include "common/noncopyable.h" #include "common/rect.h" +#include "common/list.h" // For OSystem::getSupportedFormats() #include "graphics/pixelformat.h" -- cgit v1.2.3