diff --git a/src/pystencilssfg/emission/file_printer.py b/src/pystencilssfg/emission/file_printer.py index 8216a7b1923b8b23e19a4fbece8d507aa6260d27..6ab98eb89aba143dd567fc0c176199ff9d1444fe 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 ecfc065f2fc27423403dab1c0b03200af766a4d7..176f05e55d47f31b6100027e9ad1b87b4e5e63c9 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 454f1a26f8103f7c8b330f1a5b70b1b79f96ebbc..26502f0e149c11d470e700269f5ff526aff3ce85 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_;" + ), ) )