-
Notifications
You must be signed in to change notification settings - Fork 0
/
tester.h
133 lines (116 loc) · 2.23 KB
/
tester.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
#include <stdio.h>
/* global variables */
static unsigned int debug_count;
static unsigned int debug_indent;
static char debug_flag;
/* debug functions */
/* 디버그 기능을 켠다. */
void d_on(void)
{
debug_flag = 1;
}
/* 디버그 기능을 끈다. */
void d_off(void)
{
debug_flag = 0;
}
/* 보기 펀하도록 indent를 출력한다. */
static void printi(void)
{
int i;
for (i = 1; i < debug_indent; i++)
printf(" | ");
printf(" ");
}
/* 함수의 맨 앞에 사용. */
void d_call(const char * str)
{
if (debug_flag)
{
debug_indent++;
printi();
printf("\e[1;32m[%s called...]\e[0m\n", str);
}
}
/* 함수가 반환되기 직전에 사용. */
void d_ret(const char * str)
{
if (debug_flag)
{
printi();
printf("\e[1;32m[%s returning...]\e[0m\n", str);
debug_indent--;
}
}
/* "DEBUG POINT"와 deb() 호출 횟수를 출력한다. */
void d_num(void)
{
if (debug_flag)
{
printi();
printf("* DEBUG POINT .......... (%d)\n", ++debug_count);
}
}
/* deb() 호출 횟수를 출력한다. */
int d_cnt(void)
{
return debug_count;
}
/* 입력받은 문자열을 '*'과 함께 출력한다. */
void d_msg(const char * str)
{
if (debug_flag)
{
printi();
printf("* \e[1;31m%s\n\e[0m", str);
}
}
/* 입력받은 문자열을 '@'와 함께 출력한다. */
void d_alt(const char * str)
{
if (debug_flag)
{
printi();
printf("@ \e[1;33m%s\n\e[0m", str);
}
}
/* 입력받은 문자열과 정수값을 출력한다. */
void d_prt(const char * str, long long num)
{
if (debug_flag)
{
printi();
printf("* \e[1;31m%s: \e[0m%lld\n", str, num);
}
}
/* 입력받은 문자열과 포인터값을 출력한다. */
void d_prtp(const char * str, void * ptr)
{
if (debug_flag)
{
printi();
printf("* \e[1;31m%s: \e[0m%p\n", str, ptr);
}
}
/* 입력받은 문자열 둘을 출력한다. */
void d_str(const char * str1, const char * str2)
{
if (debug_flag)
{
printi();
printf("* \e[1;31m%s: \e[0m%s\n", str1, str2);
}
}
/* 'c'를 입력할 때까지 Busy waiting을 수행한다. */
void d_brk(void)
{
if (debug_flag)
{
char c;
printi();
printf("* BREAK POINT\n");
printi();
printf("* ");
while ((c = getchar()) != 'c') ;
}
}