-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdebug.c
81 lines (73 loc) · 1.87 KB
/
debug.c
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
#include "lib/str.h"
#include "lib/stralloc.h"
#include "lib/strarray.h"
#include "lib/strlist.h"
#include "lib/set.h"
const char* debug_nl = "\n";
void
debug_byte(const char* name, const char* x, size_t n) {
buffer_puts(buffer_2, name);
buffer_puts(buffer_2, ": ");
buffer_put(buffer_2, x, n);
buffer_putsflush(buffer_2, debug_nl);
}
void
debug_int(const char* name, int i) {
buffer_puts(buffer_2, name);
buffer_puts(buffer_2, ": ");
buffer_putlong(buffer_2, i);
buffer_putnlflush(buffer_2);
}
void
debug_long(const char* name, long value) {
buffer_puts(buffer_2, name);
buffer_puts(buffer_2, ": ");
buffer_putlong(buffer_2, value);
buffer_putnlflush(buffer_2);
}
void
debug_str(const char* name, const char* s) {
buffer_puts(buffer_2, name);
buffer_puts(buffer_2, s ? ": '" : ": ");
buffer_puts(buffer_2, s ? s : "NULL");
buffer_putsflush(buffer_2, s ? "'\n" : "\n");
}
void
debug_sa(const char* name, stralloc* sa) {
buffer_puts(buffer_2, name);
buffer_puts(buffer_2, ": ");
buffer_putsa(buffer_2, sa);
buffer_putnlflush(buffer_2);
}
void
debug_sl(const char* name, const strlist* l, const char* sep) {
size_t pos, n;
const char* x;
buffer_puts(buffer_2, name);
buffer_puts(buffer_2, ":\n ");
strlist_foreach(l, x, n) {
if(n)
buffer_puts(buffer_2, sep);
buffer_puts(buffer_2, "#");
buffer_putulong(buffer_2, n++);
buffer_puts(buffer_2, ": ");
buffer_put(buffer_2, x, n);
}
buffer_putnlflush(buffer_2);
}
void
debug_strarray(const char* name, const strarray* stra) {
char** p;
size_t n = 0;
buffer_puts(buffer_2, name);
buffer_puts(buffer_2, ":\n ");
strarray_foreach(stra, p) {
if(n)
buffer_puts(buffer_2, ", ");
buffer_puts(buffer_2, "#");
buffer_putulong(buffer_2, n++);
buffer_puts(buffer_2, ": ");
buffer_puts(buffer_2, *p ? *p : "(null)");
}
buffer_putnlflush(buffer_2);
}