Skip to content

Commit 6879f26

Browse files
committed
refactor: optimize template rendering logic
1 parent cba8a9e commit 6879f26

3 files changed

Lines changed: 8 additions & 9 deletions

File tree

src/dwarf2cpp/models.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ def to_declaration(self) -> "TemplateParameter":
229229
case TemplateParameterKind.PACK:
230230
return TemplateParameter(
231231
TemplateParameterKind.PACK,
232+
type=self.type,
232233
parameters=[p.to_declaration() for p in self.parameters],
233234
name=self.name,
234235
)
@@ -255,7 +256,5 @@ def merge(self, other: "Template") -> bool:
255256
if p1.name != p2.name or p1.kind != p2.kind:
256257
return False
257258

258-
for p1, p2 in zip(self.parameters, other.parameters):
259-
raise NotImplementedError
260-
259+
# TODO: merge parameters
261260
return True
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
{{- "// " if not obj.declaration -}}
21
template<
32
{%- for parameter in obj.parameters -%}
43
{%- if parameter.kind == "type" -%}
54
typename{{ " " ~ parameter.name if parameter.name }}{{ " = {}".format(parameter.default) if parameter.default is not none }}
65
{%- elif parameter.kind == "constant" -%}
76
{{ parameter.type }}{{ " " ~ parameter.name if parameter.name }}{{ " = {}".format(parameter.default) if parameter.default is not none }}
87
{%- elif parameter.kind == "pack" -%}
9-
typename...{{ " " ~ parameter.name if parameter.name }}
8+
{{ parameter.type or "typename" }}...{{ " " ~ parameter.name if parameter.name }}
109
{%- elif parameter.kind == "template" -%}
11-
template<typename> class{{ " " ~ parameter.name if parameter.name }}
10+
{%- with obj = parameter -%}
11+
{%- include "template.jinja" with context %} class{{ " " ~ parameter.name if parameter.name }}{{ " = {}".format(parameter.default) if parameter.default is not none }}
12+
{%- endwith -%}
1213
{%- endif -%}
1314
{%- if not loop.last -%}, {% endif -%}
1415
{%- endfor -%}
1516
>
16-
{% if obj.declaration -%}
17-
{%- with obj = obj.declaration -%}
17+
{%- if obj.declaration %}
18+
{% with obj = obj.declaration -%}
1819
{%- include "{}.jinja".format(obj.kind) with context -%}
1920
{%- endwith -%}
2021
{%- endif -%}

src/dwarf2cpp/visitor.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,6 @@ def visit_GNU_template_template_param(self, die: DWARFDie) -> None:
706706
raise ValueError(f"Unhandled child tag {child.tag}")
707707

708708
self._cache[die.offset] = param
709-
print(param)
710709

711710
def generic_visit(self, die: DWARFDie) -> None:
712711
for child in die.children:

0 commit comments

Comments
 (0)