Skip to content

Commit ef63fcf

Browse files
authored
C: Use hb_string_T in pretty print functions (marcoroth#746)
This PR changes the pretty print functions to make use of the new `hb_string_T` string representation
1 parent e4f4b71 commit ef63fcf

File tree

4 files changed

+69
-69
lines changed

4 files changed

+69
-69
lines changed

src/include/pretty_print.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
void pretty_print_indent(hb_buffer_T* buffer, size_t indent);
1212
void pretty_print_newline(size_t indent, size_t relative_indent, hb_buffer_T* buffer);
1313
void pretty_print_label(
14-
const char* name,
14+
hb_string_T name,
1515
size_t indent,
1616
size_t relative_indent,
1717
bool last_property,
@@ -20,7 +20,7 @@ void pretty_print_label(
2020

2121
void pretty_print_position_property(
2222
position_T* position,
23-
const char* name,
23+
hb_string_T name,
2424
size_t indent,
2525
size_t relative_indent,
2626
bool last_property,
@@ -30,8 +30,8 @@ void pretty_print_position_property(
3030
void pretty_print_location(location_T location, hb_buffer_T* buffer);
3131

3232
void pretty_print_property(
33-
const char* name,
34-
const char* value,
33+
hb_string_T name,
34+
hb_string_T value,
3535
size_t indent,
3636
size_t relative_indent,
3737
bool last_property,
@@ -40,33 +40,33 @@ void pretty_print_property(
4040

4141
void pretty_print_size_t_property(
4242
size_t value,
43-
const char* name,
43+
hb_string_T name,
4444
size_t indent,
4545
size_t relative_indent,
4646
bool last_property,
4747
hb_buffer_T* buffer
4848
);
4949

5050
void pretty_print_string_property(
51-
const char* string,
52-
const char* name,
51+
hb_string_T string,
52+
hb_string_T name,
5353
size_t indent,
5454
size_t relative_indent,
5555
bool last_property,
5656
hb_buffer_T* buffer
5757
);
5858

5959
void pretty_print_quoted_property(
60-
const char* name,
61-
const char* value,
60+
hb_string_T name,
61+
hb_string_T value,
6262
size_t indent,
6363
size_t relative_indent,
6464
bool last_property,
6565
hb_buffer_T* buffer
6666
);
6767

6868
void pretty_print_boolean_property(
69-
const char* name,
69+
hb_string_T name,
7070
bool value,
7171
size_t indent,
7272
size_t relative_indent,
@@ -76,15 +76,15 @@ void pretty_print_boolean_property(
7676

7777
void pretty_print_token_property(
7878
token_T* token,
79-
const char* name,
79+
hb_string_T name,
8080
size_t indent,
8181
size_t relative_indent,
8282
bool last_property,
8383
hb_buffer_T* buffer
8484
);
8585

8686
void pretty_print_array(
87-
const char* name,
87+
hb_string_T name,
8888
hb_array_T* array,
8989
size_t indent,
9090
size_t relative_indent,

src/pretty_print.c

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ void pretty_print_newline(const size_t indent, const size_t relative_indent, hb_
2626
}
2727

2828
void pretty_print_label(
29-
const char* name,
29+
hb_string_T name,
3030
const size_t indent,
3131
const size_t relative_indent,
3232
const bool last_property,
@@ -41,50 +41,50 @@ void pretty_print_label(
4141
hb_buffer_append(buffer, "├── ");
4242
}
4343

44-
hb_buffer_append(buffer, name);
44+
hb_buffer_append_string(buffer, name);
4545
hb_buffer_append(buffer, ": ");
4646
}
4747

4848
void pretty_print_quoted_property(
49-
const char* name,
50-
const char* value,
49+
hb_string_T name,
50+
hb_string_T value,
5151
const size_t indent,
5252
const size_t relative_indent,
5353
const bool last_property,
5454
hb_buffer_T* buffer
5555
) {
56-
hb_string_T quoted = quoted_string(hb_string(value));
57-
pretty_print_property(name, quoted.data, indent, relative_indent, last_property, buffer);
56+
hb_string_T quoted = quoted_string(value);
57+
pretty_print_property(name, quoted, indent, relative_indent, last_property, buffer);
5858
free(quoted.data);
5959
}
6060

6161
void pretty_print_boolean_property(
62-
const char* name,
62+
hb_string_T name,
6363
bool value,
6464
const size_t indent,
6565
const size_t relative_indent,
6666
const bool last_property,
6767
hb_buffer_T* buffer
6868
) {
69-
pretty_print_property(name, value ? "true" : "false", indent, relative_indent, last_property, buffer);
69+
pretty_print_property(name, hb_string(value ? "true" : "false"), indent, relative_indent, last_property, buffer);
7070
}
7171

7272
void pretty_print_property(
73-
const char* name,
74-
const char* value,
73+
hb_string_T name,
74+
hb_string_T value,
7575
const size_t indent,
7676
const size_t relative_indent,
7777
const bool last_property,
7878
hb_buffer_T* buffer
7979
) {
8080
pretty_print_label(name, indent, relative_indent, last_property, buffer);
81-
hb_buffer_append(buffer, value);
81+
hb_buffer_append_string(buffer, value);
8282
hb_buffer_append(buffer, "\n");
8383
}
8484

8585
void pretty_print_size_t_property(
8686
size_t value,
87-
const char* name,
87+
hb_string_T name,
8888
const size_t indent,
8989
const size_t relative_indent,
9090
const bool last_property,
@@ -100,21 +100,21 @@ void pretty_print_size_t_property(
100100
}
101101

102102
void pretty_print_array(
103-
const char* name,
103+
hb_string_T name,
104104
hb_array_T* array,
105105
const size_t indent,
106106
const size_t relative_indent,
107107
const bool last_property,
108108
hb_buffer_T* buffer
109109
) {
110110
if (array == NULL) {
111-
pretty_print_property(name, "∅", indent, relative_indent, last_property, buffer);
111+
pretty_print_property(name, hb_string("∅"), indent, relative_indent, last_property, buffer);
112112

113113
return;
114114
}
115115

116116
if (hb_array_size(array) == 0) {
117-
pretty_print_property(name, "[]", indent, relative_indent, last_property, buffer);
117+
pretty_print_property(name, hb_string("[]"), indent, relative_indent, last_property, buffer);
118118

119119
return;
120120
}
@@ -178,7 +178,7 @@ void pretty_print_location(location_T location, hb_buffer_T* buffer) {
178178

179179
void pretty_print_position_property(
180180
position_T* position,
181-
const char* name,
181+
hb_string_T name,
182182
const size_t indent,
183183
const size_t relative_indent,
184184
const bool last_property,
@@ -204,7 +204,7 @@ void pretty_print_position_property(
204204

205205
void pretty_print_token_property(
206206
token_T* token,
207-
const char* name,
207+
hb_string_T name,
208208
const size_t indent,
209209
const size_t relative_indent,
210210
const bool last_property,
@@ -227,26 +227,26 @@ void pretty_print_token_property(
227227
}
228228

229229
void pretty_print_string_property(
230-
const char* string,
231-
const char* name,
230+
hb_string_T string,
231+
hb_string_T name,
232232
const size_t indent,
233233
const size_t relative_indent,
234234
const bool last_property,
235235
hb_buffer_T* buffer
236236
) {
237-
const char* value = "∅";
237+
hb_string_T value = hb_string("∅");
238238
hb_string_T escaped = { .data = NULL, .length = 0 };
239239
hb_string_T quoted;
240240

241-
if (string != NULL) {
242-
escaped = escape_newlines(hb_string(string));
241+
if (!hb_string_is_empty(string)) {
242+
escaped = escape_newlines(string);
243243
quoted = quoted_string(escaped);
244-
value = quoted.data;
244+
value = quoted;
245245
}
246246

247247
pretty_print_property(name, value, indent, relative_indent, last_property, buffer);
248248

249-
if (string != NULL) {
249+
if (!hb_string_is_empty(string)) {
250250
if (!hb_string_is_empty(escaped)) { free(escaped.data); }
251251
if (!hb_string_is_empty(quoted)) { free(quoted.data); }
252252
}

templates/src/ast_pretty_print.c.erb

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,20 @@ void ast_pretty_print_node(AST_NODE_T* node, const size_t indent, const size_t r
3333
<%- last = index == node.fields.length - 1 -%>
3434
<%- case field -%>
3535
<%- when Herb::Template::TokenField -%>
36-
pretty_print_token_property(<%= node.human %>-><%= field.name %>, "<%= field.name %>", indent, relative_indent, <%= last %>, buffer);
36+
pretty_print_token_property(<%= node.human %>-><%= field.name %>, hb_string("<%= field.name %>"), indent, relative_indent, <%= last %>, buffer);
3737
<%- when Herb::Template::ArrayField -%>
38-
pretty_print_array("<%= field.name %>", <%= node.human %>-><%= field.name %>, indent, relative_indent, <%= last %>, buffer);
38+
pretty_print_array(hb_string("<%= field.name %>"), <%= node.human %>-><%= field.name %>, indent, relative_indent, <%= last %>, buffer);
3939
<%- when Herb::Template::BooleanField -%>
40-
pretty_print_boolean_property("<%= field.name %>", <%= node.human %>-><%= field.name %>, indent, relative_indent, <%= last %>, buffer);
40+
pretty_print_boolean_property(hb_string("<%= field.name %>"), <%= node.human %>-><%= field.name %>, indent, relative_indent, <%= last %>, buffer);
4141
<%- when Herb::Template::ElementSourceField -%>
42-
pretty_print_string_property(element_source_to_string(<%= node.human %>-><%= field.name %>), "<%= field.name %>", indent, relative_indent, <%= last %>, buffer);
42+
pretty_print_string_property(hb_string(element_source_to_string(<%= node.human %>-><%= field.name %>)), hb_string("<%= field.name %>"), indent, relative_indent, <%= last %>, buffer);
4343
<%- when Herb::Template::StringField -%>
44-
pretty_print_string_property(<%= node.human %>-><%= field.name %>, "<%= field.name %>", indent, relative_indent, <%= last %>, buffer);
44+
pretty_print_string_property(hb_string(<%= node.human %>-><%= field.name %>), hb_string("<%= field.name %>"), indent, relative_indent, <%= last %>, buffer);
4545
<%- when Herb::Template::PrismNodeField -%>
46-
pretty_print_string_property("<%= field.name %>", "<%= field.name %>", indent, relative_indent, <%= last %>, buffer);
46+
pretty_print_string_property(hb_string("<%= field.name %>"), hb_string("<%= field.name %>"), indent, relative_indent, <%= last %>, buffer);
4747
<%- when Herb::Template::NodeField -%>
4848

49-
pretty_print_label("<%= field.name %>", indent, relative_indent, <%= last %>, buffer);
49+
pretty_print_label(hb_string("<%= field.name %>"), indent, relative_indent, <%= last %>, buffer);
5050

5151
if (<%= node.human %>-><%= field.name %>) {
5252
hb_buffer_append(buffer, "\n");
@@ -62,28 +62,28 @@ void ast_pretty_print_node(AST_NODE_T* node, const size_t indent, const size_t r
6262

6363
<%- when Herb::Template::AnalyzedRubyField -%>
6464
if (<%= node.human %>-><%= field.name %>) {
65-
pretty_print_boolean_property("if_node", <%= node.human %>-><%= field.name %>->has_if_node, indent, relative_indent, false, buffer);
66-
pretty_print_boolean_property("elsif_node", <%= node.human %>-><%= field.name %>->has_elsif_node, indent, relative_indent, false, buffer);
67-
pretty_print_boolean_property("else_node", <%= node.human %>-><%= field.name %>->has_else_node, indent, relative_indent, false, buffer);
68-
pretty_print_boolean_property("end", <%= node.human %>-><%= field.name %>->has_end, indent, relative_indent, false, buffer);
69-
pretty_print_boolean_property("block_node", <%= node.human %>-><%= field.name %>->has_block_node, indent, relative_indent, false, buffer);
70-
pretty_print_boolean_property("block_closing", <%= node.human %>-><%= field.name %>->has_block_closing, indent, relative_indent, false, buffer);
71-
pretty_print_boolean_property("case_node", <%= node.human %>-><%= field.name %>->has_case_node, indent, relative_indent, false, buffer);
72-
pretty_print_boolean_property("when_node", <%= node.human %>-><%= field.name %>->has_when_node, indent, relative_indent, false, buffer);
73-
pretty_print_boolean_property("for_node", <%= node.human %>-><%= field.name %>->has_for_node, indent, relative_indent, false, buffer);
74-
pretty_print_boolean_property("while_node", <%= node.human %>-><%= field.name %>->has_while_node, indent, relative_indent, false, buffer);
75-
pretty_print_boolean_property("until_node", <%= node.human %>-><%= field.name %>->has_until_node, indent, relative_indent, false, buffer);
76-
pretty_print_boolean_property("begin_node", <%= node.human %>-><%= field.name %>->has_begin_node, indent, relative_indent, false, buffer);
77-
pretty_print_boolean_property("rescue_node", <%= node.human %>-><%= field.name %>->has_rescue_node, indent, relative_indent, false, buffer);
78-
pretty_print_boolean_property("ensure_node", <%= node.human %>-><%= field.name %>->has_ensure_node, indent, relative_indent, <%= last %>, buffer);
79-
pretty_print_boolean_property("unless_node", <%= node.human %>-><%= field.name %>->has_unless_node, indent, relative_indent, <%= last %>, buffer);
65+
pretty_print_boolean_property(hb_string("if_node"), <%= node.human %>-><%= field.name %>->has_if_node, indent, relative_indent, false, buffer);
66+
pretty_print_boolean_property(hb_string("elsif_node"), <%= node.human %>-><%= field.name %>->has_elsif_node, indent, relative_indent, false, buffer);
67+
pretty_print_boolean_property(hb_string("else_node"), <%= node.human %>-><%= field.name %>->has_else_node, indent, relative_indent, false, buffer);
68+
pretty_print_boolean_property(hb_string("end"), <%= node.human %>-><%= field.name %>->has_end, indent, relative_indent, false, buffer);
69+
pretty_print_boolean_property(hb_string("block_node"), <%= node.human %>-><%= field.name %>->has_block_node, indent, relative_indent, false, buffer);
70+
pretty_print_boolean_property(hb_string("block_closing"), <%= node.human %>-><%= field.name %>->has_block_closing, indent, relative_indent, false, buffer);
71+
pretty_print_boolean_property(hb_string("case_node"), <%= node.human %>-><%= field.name %>->has_case_node, indent, relative_indent, false, buffer);
72+
pretty_print_boolean_property(hb_string("when_node"), <%= node.human %>-><%= field.name %>->has_when_node, indent, relative_indent, false, buffer);
73+
pretty_print_boolean_property(hb_string("for_node"), <%= node.human %>-><%= field.name %>->has_for_node, indent, relative_indent, false, buffer);
74+
pretty_print_boolean_property(hb_string("while_node"), <%= node.human %>-><%= field.name %>->has_while_node, indent, relative_indent, false, buffer);
75+
pretty_print_boolean_property(hb_string("until_node"), <%= node.human %>-><%= field.name %>->has_until_node, indent, relative_indent, false, buffer);
76+
pretty_print_boolean_property(hb_string("begin_node"), <%= node.human %>-><%= field.name %>->has_begin_node, indent, relative_indent, false, buffer);
77+
pretty_print_boolean_property(hb_string("rescue_node"), <%= node.human %>-><%= field.name %>->has_rescue_node, indent, relative_indent, false, buffer);
78+
pretty_print_boolean_property(hb_string("ensure_node"), <%= node.human %>-><%= field.name %>->has_ensure_node, indent, relative_indent, <%= last %>, buffer);
79+
pretty_print_boolean_property(hb_string("unless_node"), <%= node.human %>-><%= field.name %>->has_unless_node, indent, relative_indent, <%= last %>, buffer);
8080
} else {
81-
pretty_print_label("<%= field.name %>", indent, relative_indent, <%= last %>, buffer);
81+
pretty_print_label(hb_string("<%= field.name %>"), indent, relative_indent, <%= last %>, buffer);
8282
hb_buffer_append(buffer, " ∅\n");
8383
}
8484

8585
<%- when Herb::Template::VoidPointerField -%>
86-
pretty_print_label("<%= field.name %>", indent, relative_indent, <%= last %>, buffer);
86+
pretty_print_label(hb_string("<%= field.name %>"), indent, relative_indent, <%= last %>, buffer);
8787
hb_buffer_append(buffer, " ?\n");
8888

8989
<%- else -%>

templates/src/errors.c.erb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,18 +162,18 @@ void error_pretty_print_array(
162162
hb_buffer_T* buffer
163163
) {
164164
if (array == NULL) {
165-
pretty_print_property(name, "∅", indent, relative_indent, last_property, buffer);
165+
pretty_print_property(hb_string(name), hb_string("∅"), indent, relative_indent, last_property, buffer);
166166

167167
return;
168168
}
169169

170170
if (hb_array_size(array) == 0) {
171-
pretty_print_property(name, "[]", indent, relative_indent, last_property, buffer);
171+
pretty_print_property(hb_string(name), hb_string("[]"), indent, relative_indent, last_property, buffer);
172172

173173
return;
174174
}
175175

176-
pretty_print_label(name, indent, relative_indent, last_property, buffer);
176+
pretty_print_label(hb_string(name), indent, relative_indent, last_property, buffer);
177177

178178
hb_buffer_append(buffer, "(");
179179

@@ -212,19 +212,19 @@ static void error_pretty_print_<%= error.human %>(<%= error.struct_type %>* erro
212212
pretty_print_location(error->base.location, buffer);
213213
hb_buffer_append(buffer, "\n");
214214

215-
pretty_print_quoted_property("message", error->base.message, indent, relative_indent, <%= error.fields.none? %>, buffer);
215+
pretty_print_quoted_property(hb_string("message"), hb_string(error->base.message), indent, relative_indent, <%= error.fields.none? %>, buffer);
216216
<%- error.fields.each_with_index do |field, index| -%>
217217
<%- case field -%>
218218
<%- when Herb::Template::PositionField -%>
219-
pretty_print_position_property(error-><%= field.name %>, "<%= field.name %>", indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
219+
pretty_print_position_property(hb_string(error-><%= field.name %>), hb_string("<%= field.name %>"), indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
220220
<%- when Herb::Template::TokenField -%>
221-
pretty_print_token_property(error-><%= field.name %>, "<%= field.name %>", indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
221+
pretty_print_token_property(error-><%= field.name %>, hb_string("<%= field.name %>"), indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
222222
<%- when Herb::Template::TokenTypeField -%>
223-
pretty_print_property(token_type_to_string(error-><%= field.name %>), "<%= field.name %>", indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
223+
pretty_print_property(hb_string(token_type_to_string(error-><%= field.name %>)), hb_string("<%= field.name %>"), indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
224224
<%- when Herb::Template::SizeTField -%>
225-
pretty_print_size_t_property(error-><%= field.name %>, "<%= field.name %>", indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
225+
pretty_print_size_t_property(hb_string(error-><%= field.name %>), hb_string("<%= field.name %>"), indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
226226
<%- when Herb::Template::StringField -%>
227-
pretty_print_quoted_property("<%= field.name %>", error-><%= field.name %>, indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
227+
pretty_print_quoted_property(hb_string("<%= field.name %>"), hb_string(error-><%= field.name %>), indent, relative_indent, <%= error.fields.length - 1 == index %>, buffer);
228228
<%- else -%>
229229
<%= field.inspect %>
230230
<%- end -%>

0 commit comments

Comments
 (0)