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
23/** Class containing a print function for diagnostics. */
24class Debug
25{
26 public:
27 enum DebugMask : uint64_t {
28 Quiet = 0x00'0000ULL,
29 Preprocessor = 0x00'0001ULL,
30 CommentCnv = 0x00'0002ULL,
31 CommentScan = 0x00'0004ULL,
32 Formula = 0x00'0008ULL,
33 PrintTree = 0x00'0010ULL,
34 Time = 0x00'0020ULL,
35 ExtCmd = 0x00'0040ULL,
36 Markdown = 0x00'0080ULL,
37 FilterOutput = 0x00'0100ULL,
38 Plantuml = 0x00'0200ULL,
39 FortranFixed2Free = 0x00'0400ULL,
40 Cite = 0x00'0800ULL,
41 NoLineNo = 0x00'1000ULL,
42 Rtf = 0x00'2000ULL,
43 Qhp = 0x00'4000ULL,
44 Tag = 0x00'8000ULL,
45 Alias = 0x01'0000ULL,
46 Entries = 0x02'0000ULL,
47 Sections = 0x04'0000ULL,
48 Stderr = 0x08'0000ULL,
49 Layout = 0x10'0000ULL,
50 Lex = 0x0000'FFFF'FF00'0000ULL, // all scanners combined
51 Lex_code = 0x0000'0000'0100'0000ULL,
52 Lex_commentcnv = 0x0000'0000'0200'0000ULL,
53 Lex_commentscan = 0x0000'0000'0400'0000ULL,
54 Lex_configimpl = 0x0000'0000'0800'0000ULL,
55 Lex_constexp = 0x0000'0000'1000'0000ULL,
56 Lex_declinfo = 0x0000'0000'2000'0000ULL,
57 Lex_defargs = 0x0000'0000'4000'0000ULL,
58 Lex_doctokenizer = 0x0000'0000'8000'0000ULL,
59 Lex_fortrancode = 0x0000'0001'0000'0000ULL,
60 Lex_fortranscanner= 0x0000'0002'0000'0000ULL,
61 Lex_lexcode = 0x0000'0004'0000'0000ULL,
62 Lex_lexscanner = 0x0000'0008'0000'0000ULL,
63 Lex_pre = 0x0000'0010'0000'0000ULL,
64 Lex_pycode = 0x0000'0020'0000'0000ULL,
65 Lex_pyscanner = 0x0000'0040'0000'0000ULL,
66 Lex_scanner = 0x0000'0080'0000'0000ULL,
67 Lex_sqlcode = 0x0000'0100'0000'0000ULL,
68 Lex_vhdlcode = 0x0000'0200'0000'0000ULL,
69 Lex_xml = 0x0000'0400'0000'0000ULL,
70 Lex_xmlcode = 0x0000'0800'0000'0000ULL
71 };
72 static void print(DebugMask mask,int prio,const char *fmt,...);
73
74 static bool setFlagStr(const QCString &label);
75 static void setFlag(const DebugMask mask);
76 static void clearFlag(const DebugMask mask);
77 static bool isFlagSet(const DebugMask mask);
78 static void printFlags();
79 static void setPriority(int p);
80
81 static void startTimer();
82 static double elapsedTime();
83
84 private:
86 static int curPrio;
87};
88
90{
91 public:
92 DebugLex(Debug::DebugMask mask,const char *lexName,const char *fileName);
93 ~DebugLex();
95 static void print(Debug::DebugMask mask,const char *state,const char *lexName,const char *fileName);
96 private:
97
99 QCString m_lexName;
100 QCString m_fileName;
101};
102
103
104#endif
Class containing a print function for diagnostics.
Definition debug.h:25
DebugMask
Definition debug.h:27
@ Lex_fortranscanner
Definition debug.h:60
@ Lex_doctokenizer
Definition debug.h:58
@ Lex
Definition debug.h:50
@ Rtf
Definition debug.h:42
@ NoLineNo
Definition debug.h:41
@ Lex_pre
Definition debug.h:63
@ Lex_defargs
Definition debug.h:57
@ Alias
Definition debug.h:45
@ Lex_pycode
Definition debug.h:64
@ Layout
Definition debug.h:49
@ Markdown
Definition debug.h:36
@ Lex_declinfo
Definition debug.h:56
@ Tag
Definition debug.h:44
@ Lex_lexscanner
Definition debug.h:62
@ FilterOutput
Definition debug.h:37
@ Lex_sqlcode
Definition debug.h:67
@ Lex_code
Definition debug.h:51
@ Lex_pyscanner
Definition debug.h:65
@ Cite
Definition debug.h:40
@ ExtCmd
Definition debug.h:35
@ Sections
Definition debug.h:47
@ PrintTree
Definition debug.h:33
@ Time
Definition debug.h:34
@ Quiet
Definition debug.h:28
@ Lex_xml
Definition debug.h:69
@ Stderr
Definition debug.h:48
@ Plantuml
Definition debug.h:38
@ Formula
Definition debug.h:32
@ Lex_commentcnv
Definition debug.h:52
@ Lex_vhdlcode
Definition debug.h:68
@ Lex_constexp
Definition debug.h:55
@ Lex_xmlcode
Definition debug.h:70
@ Lex_fortrancode
Definition debug.h:59
@ Lex_commentscan
Definition debug.h:53
@ Lex_lexcode
Definition debug.h:61
@ Qhp
Definition debug.h:43
@ Entries
Definition debug.h:46
@ Lex_configimpl
Definition debug.h:54
@ Preprocessor
Definition debug.h:29
@ Lex_scanner
Definition debug.h:66
@ CommentCnv
Definition debug.h:30
@ FortranFixed2Free
Definition debug.h:39
@ CommentScan
Definition debug.h:31
static void printFlags()
Definition debug.cpp:140
static DebugMask curMask
Definition debug.h:85
static void print(DebugMask mask, int prio, const char *fmt,...)
Definition debug.cpp:81
static void setPriority(int p)
Definition debug.cpp:130
static int curPrio
Definition debug.h:86
static void clearFlag(const DebugMask mask)
Definition debug.cpp:125
static bool isFlagSet(const DebugMask mask)
Definition debug.cpp:135
static double elapsedTime()
Definition debug.cpp:204
static void startTimer()
Definition debug.cpp:199
static bool setFlagStr(const QCString &label)
Definition debug.cpp:106
static void setFlag(const DebugMask mask)
Definition debug.cpp:120
DebugLex(Debug::DebugMask mask, const char *lexName, const char *fileName)
Definition debug.cpp:149
~DebugLex()
Definition debug.cpp:154
Debug::DebugMask m_mask
Definition debug.h:98
QCString m_fileName
Definition debug.h:100
static void print(Debug::DebugMask mask, const char *state, const char *lexName, const char *fileName)
Definition debug.cpp:159
QCString m_lexName
Definition debug.h:99
#define NON_COPYABLE(cls)
Macro to help implementing the rule of 5 for a non-copyable & movable class.
Definition construct.h:37