@@ -5,7 +5,7 @@ int __print_enable_color = 1;
5
5
6
6
void __print_color (FILE * fd , int a ) {
7
7
if (!__print_enable_color ) return ;
8
- if (a == -1 ) fprintf ( fd , "\x1b(B\x1b[m" );
8
+ if (a == -1 ) fputs ( "\x1b(B\x1b[m" , fd );
9
9
else fprintf (fd , "\x1b[38;5;%im" , a );
10
10
}
11
11
@@ -14,15 +14,15 @@ void __print_color(FILE* fd, int a) {
14
14
int max_len = 16; \
15
15
int n = size/sizeof(T); \
16
16
T *m = va_arg(v, T*); \
17
- fprintf(fd, "["); \
17
+ fputc('[', fd); \
18
18
__print_color(fd, color); \
19
19
for (int i = 0; i < (n < max_len ? n : max_len); i++) { \
20
- if (i > 0) fprintf(fd, " "); \
20
+ if (i > 0) fputc(' ', fd); \
21
21
fprintf(fd, qual, m[i]); \
22
22
} \
23
23
__print_color(fd, __print_color_normal); \
24
- if (n > max_len) fprintf(fd, "..."); \
25
- fprintf(fd, "]" );
24
+ if (n > max_len) fputs( "...", fd); \
25
+ fputc(']', fd );
26
26
27
27
int __print_color_normal = -1 ; // -1 means default terminal foreground color
28
28
int __print_color_number = 4 ;
@@ -46,88 +46,107 @@ void __print_func (FILE *fd, int count, unsigned short types[], ...) {
46
46
for (int i = 0 ; i < count ; i ++ ) {
47
47
char type = types [i ] & 0x1F ;
48
48
char size = types [i ] >> 5 ;
49
- if (i > 0 ) fprintf ( fd , " " );
49
+ if (i > 0 ) fputc ( ' ' , fd );
50
50
fprintf (fd , "%i[%i]" , type , size );
51
51
}
52
- fprintf ( fd , "\n" );
52
+ fputc ( '\n' , fd );
53
53
#endif // __print_DEBUG
54
54
55
+ double d ;
56
+ char c ;
55
57
for (int i = 0 ; i < count ; i ++ ) {
56
- if (i > 0 ) fprintf ( fd , " " );
58
+ if (i > 0 ) fputc ( ' ' , fd );
57
59
char type = types [i ] & 0x1F ;
58
60
char size = types [i ] >> 5 ;
59
- if (type == 1 ) {
61
+ switch (type ) {
62
+ case 1 : {
60
63
__print_color (fd , __print_color_float );
61
- double d = va_arg (v , double );
64
+ d = va_arg (v , double );
62
65
fprintf (fd , "%'G" , d );
66
+ break ;
63
67
}
64
- else if ( type == 2 ) {
68
+ case 2 : {
65
69
__print_color (fd , __print_color_string );
66
- char c = va_arg (v , int );
70
+ c = va_arg (v , int );
67
71
fprintf (fd , "'%c'" , c ); __print_color (fd , __print_color_number );
68
72
fprintf (fd , "%i" , (int )c );
73
+ break ;
69
74
}
70
- else if ( type == 3 ) {
75
+ case 3 : {
71
76
__print_color (fd , __print_color_number );
72
- char c = va_arg (v , int );
77
+ c = va_arg (v , int );
73
78
fprintf (fd , "%i" , (unsigned char )c );
74
79
__print_color (fd , __print_color_normal );
75
- fprintf ( fd , "<" );
80
+ fputc ( '<' , fd );
76
81
__print_color (fd , __print_color_hex );
77
82
fprintf (fd , "0x%X" , (unsigned char )c );
78
83
__print_color (fd , __print_color_normal );
79
- fprintf (fd , ">" );
84
+ fputc ('>' , fd );
85
+ break ;
80
86
}
81
- else if ( type == 4 ) {
87
+ case 4 : {
82
88
__print_color (fd , __print_color_number );
83
89
fprintf (fd , "%'i" , va_arg (v , int ));
90
+ break ;
84
91
}
85
- else if ( type == 5 ) {
92
+ case 5 : {
86
93
__print_color (fd , __print_color_number );
87
94
fprintf (fd , "%'u" , va_arg (v , int ));
95
+ break ;
88
96
}
89
- else if ( type == 6 ) {
97
+ case 6 : {
90
98
__print_color (fd , __print_color_number );
91
99
fprintf (fd , "%'li" , va_arg (v , unsigned long ));
100
+ break ;
92
101
}
93
- else if ( type == 7 ) {
102
+ case 7 : {
94
103
__print_color (fd , __print_color_number );
95
104
fprintf (fd , "%'lu" , va_arg (v , long ));
105
+ break ;
96
106
}
97
- else if ( type == 8 ) {
107
+ case 8 : {
98
108
__print_color (fd , __print_color_string );
99
109
fprintf (fd , "\"%s\"" , va_arg (v , char * ));
110
+ break ;
100
111
}
101
- else if ( type == 9 ) {
112
+ case 9 : {
102
113
__print_color (fd , __print_color_normal );
103
114
fprintf (fd , "%s" , va_arg (v , char * ));
115
+ break ;
104
116
}
105
- else if ( type == 10 ) {
117
+ case 10 : {
106
118
__print_color (fd , __print_color_hex );
107
119
fprintf (fd , "%p" , va_arg (v , void * ));
120
+ break ;
108
121
}
109
- else if ( type == 11 ) {
122
+ case 11 : {
110
123
__print_array (fd , int , "%i" , __print_color_number );
124
+ break ;
111
125
}
112
- else if ( type == 12 ) {
126
+ case 12 : {
113
127
__print_array (fd , unsigned int , "%u" , __print_color_number );
128
+ break ;
114
129
}
115
- else if ( type == 13 ) {
130
+ case 13 : {
116
131
__print_array (fd , short , "%i" , __print_color_number );
132
+ break ;
117
133
}
118
- else if ( type == 14 ) {
134
+ case 14 : {
119
135
__print_array (fd , unsigned short , "%i" , __print_color_number );
136
+ break ;
120
137
}
121
- else if ( type == 15 ) {
138
+ case 15 : {
122
139
__print_array (fd , char * , "\"%s\"" , __print_color_string );
140
+ break ;
123
141
}
124
- else {
125
- fprintf (fd , "print: unsupported type (of size %i)\n" , size ); break ;
142
+ default :
143
+ fprintf (fd , "print: unsupported type (of size %i)\n" , size );
144
+ break ;
126
145
}
127
146
}
128
147
va_end (v );
129
148
__print_color (fd , -1 );
130
- fprintf ( fd , "\n" );
149
+ fputc ( '\n' , fd );
131
150
}
132
151
133
152
#define __print_typeid (a ) \
0 commit comments