diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-09-24 13:33:48 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2023-09-24 13:33:48 +0100 |
commit | 439b9066cd5c363efb1dca08b7cfb479931d13e8 (patch) | |
tree | 3af95a86ce38d6e9661482bd0a5892f5bacb59db /slicer/tool | |
parent | Apply same length check to built-in strings (diff) | |
parent | Test coverage and fix error handling of invalid types (diff) | |
download | slicer-439b9066cd5c363efb1dca08b7cfb479931d13e8.tar.bz2 slicer-439b9066cd5c363efb1dca08b7cfb479931d13e8.tar.xz slicer-439b9066cd5c363efb1dca08b7cfb479931d13e8.zip |
Merge branch 'remove-void-star'
Diffstat (limited to 'slicer/tool')
-rw-r--r-- | slicer/tool/parser.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/slicer/tool/parser.cpp b/slicer/tool/parser.cpp index 445dda5..8a58484 100644 --- a/slicer/tool/parser.cpp +++ b/slicer/tool/parser.cpp @@ -415,6 +415,16 @@ namespace Slicer { auto name = md.value("slicer:root:"); defineRoot(typeToString(decl), name ? *name : c->name(), decl); + fprintbf(cpp, "static constexpr ClassRefImplImpl<%s", decl->typeId()); + for (const auto & base : decl->definition()->allBases()) { + if (decl != base->declaration()) { + fprintbf(cpp, ", %s", base->declaration()->typeId()); + } + } + fprintbf(cpp, "> ref%d;\n", components); + fprintbf(cpp, "template<>\n"); + fprintbf(cpp, "constinit const ClassRefBase * const ModelPartForClass<%s>::classref{ &ref%d };\n", + decl->typeId(), components); auto typeName = md.value("slicer:typename:"); fprintbf(cpp, "template<>\n"); |