forked from dueca/dueca
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdebprint.h.in
More file actions
117 lines (96 loc) · 2.45 KB
/
debprint.h.in
File metadata and controls
117 lines (96 loc) · 2.45 KB
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
/* ------------------------------------------------------------------ */
/* item : debprint.h.in
made by : Rene van Paassen
date : 180214
category : header file
description : Helper for debug printing, not for production
changes : 180214 first version
language : C++
copyright : (c) 2018, 2020 TUDelft-AE-C&S
copyright : (c) 2022 René van Paassen
license : EUPL-1.2
*/
/** @file debprint.h
Debug print is activated through CMake define flag BUILD_DEBPRINT
In a source file using debug print, 4 levels may defined
- DEB (or DEB0)
- DEB1
- DEB2
- DEB3
The define DEBPRINTLEVEL controls the activated levels. Set to -1
to disable for the file, then 0, 1, 2, 3 for activating the different
DEB# macros.
Accompanying file undebprint.h is needed for headers, it removes the
debprint defines, so that each source file can select its own level
of debugging.
*/
#ifndef BUILD_FEXCEPT
/** Floating point exceptions code */
#cmakedefine BUILD_FEXCEPT
#endif
#ifndef BUILD_DEBPRINT
/** DEBUG code */
#cmakedefine BUILD_DEBPRINT
#endif
#ifdef DEBDEF
#error "Multiple use of debprint.h, close off a previous file with undebprint.h"
#endif
#ifdef BUILD_DEBPRINT
// by default, enable only DEB(A)
#ifndef DEBPRINTLEVEL
#define DEBPRINTLEVEL 0
#endif
// remember debug header is defined, and use as flag in code
#define DEBDEF
#else
// when in production, disable all
#ifdef DEBPRINTLEVEL
#undef DEBPRINTLEVEL
#endif
#define DEBPRINTLEVEL -1
#endif
#ifndef DEB0
# if DEBPRINTLEVEL >= 0
# define DEB0(A) std::cerr << A << std::endl;
# else
# define DEB0(A)
# endif
#else
# error "DEB0 defined outside debprint.h"
#endif
#ifndef DEB
# if DEBPRINTLEVEL >= 0
# define DEB(A) std::cerr << A << std::endl;
# else
# define DEB(A)
# endif
#else
# error "DEB defined outside debprint.h"
#endif
#ifndef DEB1
# if DEBPRINTLEVEL >= 1
# define DEB1(A) std::cerr << A << std::endl;
# else
# define DEB1(A)
# endif
#else
# error "DEB1 defined outside debprint.h"
#endif
#ifndef DEB2
# if DEBPRINTLEVEL >= 2
# define DEB2(A) std::cerr << A << std::endl;
# else
# define DEB2(A)
# endif
#else
# error "DEB2 defined outside debprint.h"
#endif
#ifndef DEB3
# if DEBPRINTLEVEL >= 3
# define DEB3(A) std::cerr << A << std::endl;
# else
# define DEB3(A)
# endif
#else
# error "DEB3 defined outside debprint.h"
#endif