-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdebug.h
136 lines (127 loc) · 3.56 KB
/
debug.h
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
#pragma once
//#define DEBUG_GENERAL_ENABLED
//#define DEBUG_CONSTRAINT_ENABLED
//#define DEBUG_COLLISION_ENABLED
//#define DEBUG_SIM_ENABLED
//#define DEBUG_FORCE_ENABLED
enum DebugType {DEBUG_GENERAL, DEBUG_COLLISION, DEBUG_CONSTRAINT, DEBUG_FIXEDPOINT, DEBUG_FORCE, DEBUG_PARTICLE, DEBUG_RENDERER, DEBUG_SIM, DEBUG_VECTOR};
#define DEBUG_ON (defined( DEBUG_GENERAL_ENABLED) || defined( DEBUG_COLLISION_ENABLED) || defined( DEBUG_FIXEDPOINT_ENABLED) || defined( DEBUG_FORCE_ENABLED) || defined( DEBUG_RENDERER_ENABLED) || defined( DEBUG_SIM_ENABLED) || defined( DEBUG_VECTOR_ENABLED) || defined( DEBUG_CONSTRAINT_ENABLED))
#if DEBUG_ON
#define debug(s, c) (debug_internal(s, c))
#define debugln(s, c) (debugln_internal(s, c))
#else
#define debug(s, c)
#define debugln(s, c)
#endif
inline void debug_internal(const String &string, const DebugType &debugType, const bool newLine = false) {
#if DEBUG_ON
switch (debugType) {
#ifdef DEBUG_GENERAL_ENABLED
case(DEBUG_GENERAL):
Serial.print(string);
if (newLine) {
Serial.println();
}
break;
#endif
#ifdef DEBUG_COLLISION_ENABLED
case(DEBUG_COLLISION):
Serial.print(string);
if (newLine) {
Serial.println();
}
break;
#endif
#ifdef DEBUG_FIXEDPOINT_ENABLED
case(DEBUG_FIXEDPOINT):
Serial.print(string);
if (newLine) {
Serial.println();
}
break;
#endif
#ifdef DEBUG_FORCE_ENABLED
case(DEBUG_FORCE):
Serial.print(string);
if (newLine) {
Serial.println();
}
break;
#endif
#ifdef DEBUG_RENDERER_ENABLED
case(DEBUG_RENDERER):
Serial.print(string);
if (newLine) {
Serial.println();
}
break;
#endif
#ifdef DEBUG_SIM_ENABLED
case(DEBUG_SIM):
Serial.print(string);
if (newLine) {
Serial.println();
}
break;
#endif
#ifdef DEBUG_VECTOR_ENABLED
case(DEBUG_VECTOR):
Serial.print(string);
if (newLine) {
Serial.println();
}
break;
#endif
#ifdef DEBUG_CONSTRAINT_ENABLED
case(DEBUG_CONSTRAINT):
Serial.print(string);
if (newLine) {
Serial.println();
}
break;
#endif
default:
break;
}
#endif
}
#ifndef FLOATING_POINT_MODE
inline void debug_internal(const float &floatVal, const DebugType &debugType) {
debug_internal(String(floatVal), debugType);
}
#endif
inline void debug_internal(const FixedPoint &fpVal, const DebugType &debugType) {
#if FIXED_SIZE == 64
debug_internal(format64(fpVal), debugType);
#else
debug_internal(String(fpVal), debugType);
#endif
}
#if FIXED_SIZE != 16
inline void debug_internal(const int &intVal, const DebugType &debugType) {
debug_internal(String(intVal), debugType);
}
#endif
inline void debugln_internal(const String &string, const DebugType &debugType) {
debug_internal(string, debugType, true);
}
#ifndef FLOATING_POINT_MODE
inline void debugln_internal(const float &floatVal, const DebugType &debugType) {
debug_internal(String(floatVal), debugType, true);
}
#endif
inline void debugln_internal(const FixedPoint &fpVal, const DebugType &debugType) {
#if FIXED_SIZE == 64
debug_internal(format64(fpVal), debugType, true);
#else
debug_internal(String(fpVal), debugType, true);
#endif
}
#if FIXED_SIZE != 16
inline void debugln_internal(const int &intVal, const DebugType &debugType) {
debug_internal(String(intVal), debugType, true);
}
#endif
inline void debugln_internal(const DebugType debugType) {
debug_internal("", debugType, true);
}