File: debug.h

package info (click to toggle)
scummvm 2.9.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 450,268 kB
  • sloc: cpp: 4,297,604; asm: 28,322; python: 12,901; sh: 11,219; java: 8,477; xml: 7,843; perl: 2,633; ansic: 2,465; yacc: 1,670; javascript: 1,020; makefile: 933; lex: 578; awk: 275; objc: 82; sed: 11; php: 1
file content (170 lines) | stat: -rw-r--r-- 5,770 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
/* 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 3 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, see <http://www.gnu.org/licenses/>.
 *
 */

#ifndef COMMON_DEBUG_H
#define COMMON_DEBUG_H

#include "common/scummsys.h"

#ifdef DISABLE_TEXT_CONSOLE

inline void debug(const char *s, ...) {}
inline void debug(int level, const char *s, ...) {}
inline void debugN(const char *s, ...) {}
inline void debugN(int level, const char *s, ...) {}
inline void debugC(int level, uint32 debugChannels, const char *s, ...) {}
inline void debugC(uint32 debugChannels, const char *s, ...) {}
inline void debugCN(int level, uint32 debugChannels, const char *s, ...) {}
inline void debugCN(uint32 debugChannels, const char *s, ...) {}

#else

/**
 * @defgroup common_debug Debug functions
 * @ingroup common
 *
 * @brief  Functions for printing debug messages.
 * @{
 */

/**
 * Print a debug message to the text console (stdout).
 * Automatically appends a newline.
 */
void debug(MSVC_PRINTF const char *s, ...) GCC_PRINTF(1, 2);

/**
 * Print a debug message to the text console (stdout), but only if
 * the gDebugLevel equals at least the specified level.
 * As a rule of thumb, the more important the message, the lower the level.
 * Automatically appends a newline.
 */
void debug(int level, MSVC_PRINTF const char *s, ...) GCC_PRINTF(2, 3);

/**
 * Print a debug message to the text console (stdout).
 * Does not append a newline.
 */
void debugN(MSVC_PRINTF const char *s, ...) GCC_PRINTF(1, 2);

/**
 * Print a debug message to the text console (stdout), but only if
 * the gDebugLevel equals at least the specified level.
 * As a rule of thumb, the more important the message, the lower the level.
 * Does not append a newline.
 */
void debugN(int level, MSVC_PRINTF const char *s, ...) GCC_PRINTF(2, 3);

/**
 * Print a debug message to the text console (stdout), but only if
 * the gDebugLevel equals at least the specified level AND
 * if the specified special debug level is active.
 * As a rule of thumb, the more important the message, the lower the level.
 * Automatically appends a newline.
 * @see enableDebugChannel
 *
 * @param level         Debug level that must be active for the message to be printed.
 * @param debugChannels Bitfield of channels to check against.
 * @param s             Message to print.
 */
void debugC(int level, uint32 debugChannels, MSVC_PRINTF const char *s, ...) GCC_PRINTF(3, 4);

/**
 * Print a debug message to the text console (stdout), but only if
 * the gDebugLevel equals at least the specified level AND
 * if the specified special debug level is active.
 * As a rule of thumb, the more important the message, the lower the level.
 * Does not append a newline automatically.
 * @see enableDebugChannel
 *
 * @param level         Debug level that must be active for the message to be printed.
 * @param debugChannels Bitfield of channels to check against.
 * @param s             Message to print.
 *
 */
void debugCN(int level, uint32 debugChannels, MSVC_PRINTF const char *s, ...) GCC_PRINTF(3, 4);

/**
 * Print a debug message to the text console (stdout), but only if
 * the specified special debug level is active.
 * Automatically appends a newline.
 * @see enableDebugChannel
 *
 * @param debugChannels Bitfield of channels to check against.
 * @param s             Message to print.
 */
void debugC(uint32 debugChannels, MSVC_PRINTF const char *s, ...) GCC_PRINTF(2, 3);

/**
 * Print a debug message to the text console (stdout), but only if
 * the specified special debug level is active.
 * Does not append a newline automatically.
 * @see enableDebugChannel
 *
 * @param debugChannels Bitfield of channels to check against.
 * @param s             Message to print.
 */
void debugCN(uint32 debugChannels, MSVC_PRINTF const char *s, ...) GCC_PRINTF(2, 3);

#endif

/**
 * Check whether the debug level is set to the specified level.
 */
bool debugLevelSet(int level);

/**
 * Check whether the debug level and channel are active.
 *
 * @param level         Debug level to check against. If set to -1, only channel check is active.
 * @param debugChannels Bitfield of channels to check against.
 * @see enableDebugChannel
 */
bool debugChannelSet(int level, uint32 debugChannels);

/**
 * The debug level. Initially set to -1, indicating that no debug output
 * should be shown. Positive values usually imply that an increasing number of
 * debug output shall be generated. The higher the value, the more verbose the
 * information (although the exact semantics are up to the engines).
 */
extern int gDebugLevel;

/**
 * Specify whether to show only the debug channels and suppress
 * the non-channeled output.
 *
 * This option is useful when you want to have higher levels of channels
 * visible without the noise from other subsystems or OSystem.
 */
extern bool gDebugChannelsOnly;

/** Global constant for EventRecorder debug channel. */
enum GlobalDebugLevels {
	kDebugGlobalDetection = 100000,
	kDebugLevelEventRec,
	kDebugLevelMainGUI,
	kDebugLevelMacGUI,
};

/** @} */

#endif