Skip to content

Commit 89496a8

Browse files
committed
Codegen: add const overload of forEachLabel
1 parent dbfd85c commit 89496a8

File tree

3 files changed

+40
-33
lines changed

3 files changed

+40
-33
lines changed

misc/codegen/templates/cpp_classes_h.mustache

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -42,34 +42,12 @@ struct {{name}}{{#has_bases}} : {{#bases}}{{^first}}, {{/first}}{{ref.name}}{{/b
4242
{{/final}}
4343
template <typename F>
4444
void forEachLabel(F f) {
45-
{{#final}}
46-
f("id", -1, id);
47-
{{/final}}
48-
{{#bases}}
49-
{{ref.name}}::forEachLabel(f);
50-
{{/bases}}
51-
{{#fields}}
52-
{{#is_label}}
53-
{{#is_repeated}}
54-
for (auto i = 0u; i < {{field_name}}.size(); ++i) {
55-
{{#is_optional}}
56-
if ({{field_name}}[i]) f("{{field_name}}", i, *{{field_name}}[i]);
57-
{{/is_optional}}
58-
{{^is_optional}}
59-
f("{{field_name}}", i, {{field_name}}[i]);
60-
{{/is_optional}}
61-
}
62-
{{/is_repeated}}
63-
{{^is_repeated}}
64-
{{#is_optional}}
65-
if ({{field_name}}) f("{{field_name}}", -1, *{{field_name}});
66-
{{/is_optional}}
67-
{{^is_optional}}
68-
f("{{field_name}}", -1, {{field_name}});
69-
{{/is_optional}}
70-
{{/is_repeated}}
71-
{{/is_label}}
72-
{{/fields}}
45+
{{>cpp_for_each_label_body}}
46+
}
47+
48+
template <typename F>
49+
void forEachLabel(F f) const {
50+
{{>cpp_for_each_label_body}}
7351
}
7452

7553
protected:
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{{#final}}
2+
f("id", -1, id);
3+
{{/final}}
4+
{{#bases}}
5+
{{ref.name}}::forEachLabel(f);
6+
{{/bases}}
7+
{{#fields}}
8+
{{#is_label}}
9+
{{#is_repeated}}
10+
for (auto i = 0u; i < {{field_name}}.size(); ++i) {
11+
{{#is_optional}}
12+
if ({{field_name}}[i]) f("{{field_name}}", i, *{{field_name}}[i]);
13+
{{/is_optional}}
14+
{{^is_optional}}
15+
f("{{field_name}}", i, {{field_name}}[i]);
16+
{{/is_optional}}
17+
}
18+
{{/is_repeated}}
19+
{{^is_repeated}}
20+
{{#is_optional}}
21+
if ({{field_name}}) f("{{field_name}}", -1, *{{field_name}});
22+
{{/is_optional}}
23+
{{^is_optional}}
24+
f("{{field_name}}", -1, {{field_name}});
25+
{{/is_optional}}
26+
{{/is_repeated}}
27+
{{/is_label}}
28+
{{/fields}}

misc/codegen/templates/trap_traps_h.mustache

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ struct {{name}}Trap {
2323

2424
template <typename F>
2525
void forEachLabel(F f) {
26-
{{#fields}}
27-
{{#is_label}}
28-
f("{{field_name}}", -1, {{field_name}});
29-
{{/is_label}}
30-
{{/fields}}
26+
{{>cpp_for_each_label_body}}
27+
}
28+
29+
template <typename F>
30+
void forEachLabel(F f) const {
31+
{{>cpp_for_each_label_body}}
3132
}
3233
};
3334

0 commit comments

Comments
 (0)