Doxygen
Loading...
Searching...
No Matches
debug.h
Go to the documentation of this file.
1
/******************************************************************************
2
*
3
* Copyright (C) 1997-2020 by Dimitri van Heesch.
4
*
5
* Permission to use, copy, modify, and distribute this software and its
6
* documentation under the terms of the GNU General Public License is hereby
7
* granted. No representations are made about the suitability of this software
8
* for any purpose. It is provided "as is" without express or implied warranty.
9
* See the GNU General Public License for more details.
10
*
11
* Documents produced by Doxygen are derivative works derived from the
12
* input used in their production; they are not affected by this license.
13
*
14
*/
15
16
#ifndef DEBUG_H
17
#define DEBUG_H
18
19
#include <cstdint>
20
#include "
qcstring.h
"
21
#include "
construct.h
"
22
#include "
message.h
"
23
24
/** Class containing a print function for diagnostics. */
25
class
Debug
26
{
27
public
:
28
enum
DebugMask
: uint64_t {
29
Quiet
= 0x00'0000ULL,
30
Preprocessor
= 0x00'0001ULL,
31
CommentCnv
= 0x00'0002ULL,
32
CommentScan
= 0x00'0004ULL,
33
Formula
= 0x00'0008ULL,
34
PrintTree
= 0x00'0010ULL,
35
Time
= 0x00'0020ULL,
36
ExtCmd
= 0x00'0040ULL,
37
Markdown
= 0x00'0080ULL,
38
FilterOutput
= 0x00'0100ULL,
39
Plantuml
= 0x00'0200ULL,
40
FortranFixed2Free
= 0x00'0400ULL,
41
Cite
= 0x00'0800ULL,
42
NoLineNo
= 0x00'1000ULL,
43
Rtf
= 0x00'2000ULL,
44
Qhp
= 0x00'4000ULL,
45
Tag
= 0x00'8000ULL,
46
Alias
= 0x01'0000ULL,
47
Entries
= 0x02'0000ULL,
48
Sections
= 0x04'0000ULL,
49
Stderr
= 0x08'0000ULL,
50
Layout
= 0x10'0000ULL,
51
Lex
= 0x0000'FFFF'FF00'0000ULL,
// all scanners combined
52
Lex_code
= 0x0000'0000'0100'0000ULL,
53
Lex_commentcnv
= 0x0000'0000'0200'0000ULL,
54
Lex_commentscan
= 0x0000'0000'0400'0000ULL,
55
Lex_configimpl
= 0x0000'0000'0800'0000ULL,
56
Lex_constexp
= 0x0000'0000'1000'0000ULL,
57
Lex_declinfo
= 0x0000'0000'2000'0000ULL,
58
Lex_defargs
= 0x0000'0000'4000'0000ULL,
59
Lex_doctokenizer
= 0x0000'0000'8000'0000ULL,
60
Lex_fortrancode
= 0x0000'0001'0000'0000ULL,
61
Lex_fortranscanner
= 0x0000'0002'0000'0000ULL,
62
Lex_lexcode
= 0x0000'0004'0000'0000ULL,
63
Lex_lexscanner
= 0x0000'0008'0000'0000ULL,
64
Lex_pre
= 0x0000'0010'0000'0000ULL,
65
Lex_pycode
= 0x0000'0020'0000'0000ULL,
66
Lex_pyscanner
= 0x0000'0040'0000'0000ULL,
67
Lex_scanner
= 0x0000'0080'0000'0000ULL,
68
Lex_sqlcode
= 0x0000'0100'0000'0000ULL,
69
Lex_vhdlcode
= 0x0000'0200'0000'0000ULL,
70
Lex_xml
= 0x0000'0400'0000'0000ULL,
71
Lex_xmlcode
= 0x0000'0800'0000'0000ULL
72
};
73
static
void
print_
(
DebugMask
mask,
int
prio, fmt::string_view
fmt
, fmt::format_args args);
74
75
template
<
typename
...Args>
76
static
void
print
(
DebugMask
mask,
int
prio,fmt::format_string<Args...>
fmt
, Args&&... args)
77
{
78
print_
(mask,prio,
fmt
,fmt::make_format_args(args...));
79
}
80
81
static
bool
setFlagStr
(
const
QCString
&label);
82
static
void
setFlag
(
const
DebugMask
mask);
83
static
void
clearFlag
(
const
DebugMask
mask);
84
static
bool
isFlagSet
(
const
DebugMask
mask);
85
static
void
printFlags
();
86
static
void
setPriority
(
int
p);
87
88
static
void
startTimer
();
89
static
double
elapsedTime
();
90
91
private
:
92
static
DebugMask
curMask
;
93
static
int
curPrio
;
94
};
95
96
class
DebugLex
97
{
98
public
:
99
DebugLex
(
Debug::DebugMask
mask,
const
char
*lexName,
const
char
*fileName);
100
~DebugLex
();
101
NON_COPYABLE
(
DebugLex
)
102
static
void
print
(
Debug::DebugMask
mask,
const
char
*state,
const
char
*lexName,
const
char
*fileName);
103
private
:
104
105
Debug::DebugMask
m_mask
;
106
QCString
m_lexName
;
107
QCString
m_fileName
;
108
};
109
110
111
#endif
Debug
Class containing a print function for diagnostics.
Definition
debug.h:26
Debug::DebugMask
DebugMask
Definition
debug.h:28
Debug::Lex_fortranscanner
@ Lex_fortranscanner
Definition
debug.h:61
Debug::Lex_doctokenizer
@ Lex_doctokenizer
Definition
debug.h:59
Debug::Lex
@ Lex
Definition
debug.h:51
Debug::Rtf
@ Rtf
Definition
debug.h:43
Debug::NoLineNo
@ NoLineNo
Definition
debug.h:42
Debug::Lex_pre
@ Lex_pre
Definition
debug.h:64
Debug::Lex_defargs
@ Lex_defargs
Definition
debug.h:58
Debug::Alias
@ Alias
Definition
debug.h:46
Debug::Lex_pycode
@ Lex_pycode
Definition
debug.h:65
Debug::Layout
@ Layout
Definition
debug.h:50
Debug::Markdown
@ Markdown
Definition
debug.h:37
Debug::Lex_declinfo
@ Lex_declinfo
Definition
debug.h:57
Debug::Tag
@ Tag
Definition
debug.h:45
Debug::Lex_lexscanner
@ Lex_lexscanner
Definition
debug.h:63
Debug::FilterOutput
@ FilterOutput
Definition
debug.h:38
Debug::Lex_sqlcode
@ Lex_sqlcode
Definition
debug.h:68
Debug::Lex_code
@ Lex_code
Definition
debug.h:52
Debug::Lex_pyscanner
@ Lex_pyscanner
Definition
debug.h:66
Debug::Cite
@ Cite
Definition
debug.h:41
Debug::ExtCmd
@ ExtCmd
Definition
debug.h:36
Debug::Sections
@ Sections
Definition
debug.h:48
Debug::PrintTree
@ PrintTree
Definition
debug.h:34
Debug::Time
@ Time
Definition
debug.h:35
Debug::Quiet
@ Quiet
Definition
debug.h:29
Debug::Lex_xml
@ Lex_xml
Definition
debug.h:70
Debug::Stderr
@ Stderr
Definition
debug.h:49
Debug::Plantuml
@ Plantuml
Definition
debug.h:39
Debug::Formula
@ Formula
Definition
debug.h:33
Debug::Lex_commentcnv
@ Lex_commentcnv
Definition
debug.h:53
Debug::Lex_vhdlcode
@ Lex_vhdlcode
Definition
debug.h:69
Debug::Lex_constexp
@ Lex_constexp
Definition
debug.h:56
Debug::Lex_xmlcode
@ Lex_xmlcode
Definition
debug.h:71
Debug::Lex_fortrancode
@ Lex_fortrancode
Definition
debug.h:60
Debug::Lex_commentscan
@ Lex_commentscan
Definition
debug.h:54
Debug::Lex_lexcode
@ Lex_lexcode
Definition
debug.h:62
Debug::Qhp
@ Qhp
Definition
debug.h:44
Debug::Entries
@ Entries
Definition
debug.h:47
Debug::Lex_configimpl
@ Lex_configimpl
Definition
debug.h:55
Debug::Preprocessor
@ Preprocessor
Definition
debug.h:30
Debug::Lex_scanner
@ Lex_scanner
Definition
debug.h:67
Debug::CommentCnv
@ CommentCnv
Definition
debug.h:31
Debug::FortranFixed2Free
@ FortranFixed2Free
Definition
debug.h:40
Debug::CommentScan
@ CommentScan
Definition
debug.h:32
Debug::printFlags
static void printFlags()
Definition
debug.cpp:137
Debug::curMask
static DebugMask curMask
Definition
debug.h:92
Debug::setPriority
static void setPriority(int p)
Definition
debug.cpp:127
Debug::curPrio
static int curPrio
Definition
debug.h:93
Debug::clearFlag
static void clearFlag(const DebugMask mask)
Definition
debug.cpp:122
Debug::isFlagSet
static bool isFlagSet(const DebugMask mask)
Definition
debug.cpp:132
Debug::print
static void print(DebugMask mask, int prio, fmt::format_string< Args... > fmt, Args &&... args)
Definition
debug.h:76
Debug::elapsedTime
static double elapsedTime()
Definition
debug.cpp:201
Debug::startTimer
static void startTimer()
Definition
debug.cpp:196
Debug::setFlagStr
static bool setFlagStr(const QCString &label)
Definition
debug.cpp:103
Debug::print_
static void print_(DebugMask mask, int prio, fmt::string_view fmt, fmt::format_args args)
Definition
debug.cpp:81
Debug::setFlag
static void setFlag(const DebugMask mask)
Definition
debug.cpp:117
DebugLex::DebugLex
DebugLex(Debug::DebugMask mask, const char *lexName, const char *fileName)
Definition
debug.cpp:146
DebugLex::~DebugLex
~DebugLex()
Definition
debug.cpp:151
DebugLex::m_mask
Debug::DebugMask m_mask
Definition
debug.h:105
DebugLex::m_fileName
QCString m_fileName
Definition
debug.h:107
DebugLex::print
static void print(Debug::DebugMask mask, const char *state, const char *lexName, const char *fileName)
Definition
debug.cpp:156
DebugLex::m_lexName
QCString m_lexName
Definition
debug.h:106
QCString
This is an alternative implementation of QCString.
Definition
qcstring.h:101
construct.h
NON_COPYABLE
#define NON_COPYABLE(cls)
Macro to help implementing the rule of 5 for a non-copyable & movable class.
Definition
construct.h:37
message.h
fmt
Definition
message.h:144
qcstring.h
src
debug.h
Generated by
1.14.0