From dd19905b20082e5c0eff7cab384e55b69de16c6d Mon Sep 17 00:00:00 2001 From: Frederik Hennig <frederik.hennig@fau.de> Date: Thu, 13 Feb 2025 14:00:57 +0100 Subject: [PATCH] quick-fix: print base classes --- src/pystencilssfg/emission/file_printer.py | 5 ++++- .../source/SimpleClasses.harness.cpp | 3 +++ .../generator_scripts/source/SimpleClasses.py | 21 ++++++++++--------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/pystencilssfg/emission/file_printer.py b/src/pystencilssfg/emission/file_printer.py index 8216a7b..6ab98eb 100644 --- a/src/pystencilssfg/emission/file_printer.py +++ b/src/pystencilssfg/emission/file_printer.py @@ -154,7 +154,10 @@ class SfgFilePrinter: return code case SfgClassBody(cls, vblocks): - code = f"{cls.class_keyword} {cls.name} {{\n" + code = f"{cls.class_keyword} {cls.name}" + if cls.base_classes: + code += " : " + ", ".join(cls.base_classes) + code += " {\n" vblocks_str = [self._visibility_block(b) for b in vblocks] code += "\n\n".join(vblocks_str) code += "\n};\n" diff --git a/tests/generator_scripts/source/SimpleClasses.harness.cpp b/tests/generator_scripts/source/SimpleClasses.harness.cpp index ecfc065..176f05e 100644 --- a/tests/generator_scripts/source/SimpleClasses.harness.cpp +++ b/tests/generator_scripts/source/SimpleClasses.harness.cpp @@ -7,4 +7,7 @@ int main(void){ Point p { 3, 1, -4 }; assert(p.getX() == 3); + + SpecialPoint q { 0, 1, 2 }; + assert(q.getY() == 1); } diff --git a/tests/generator_scripts/source/SimpleClasses.py b/tests/generator_scripts/source/SimpleClasses.py index 454f1a2..26502f0 100644 --- a/tests/generator_scripts/source/SimpleClasses.py +++ b/tests/generator_scripts/source/SimpleClasses.py @@ -11,18 +11,19 @@ with SourceFileGenerator() as sfg: sfg.klass("Point")( sfg.public( - sfg.constructor(x, y, z) - .init(x_)(x) - .init(y_)(y) - .init(z_)(z), - + sfg.constructor(x, y, z).init(x_)(x).init(y_)(y).init(z_)(z), sfg.method("getX", returns="const int64_t", const=True, inline=True)( "return this->x_;" - ) + ), ), - sfg.private( - x_, - y_, - z_ + sfg.protected(x_, y_, z_), + ) + + sfg.klass("SpecialPoint", bases=["public Point"])( + sfg.public( + "using Point::Point;", + sfg.method("getY", returns="const int64_t", const=True, inline=True)( + "return this->y_;" + ), ) ) -- GitLab