From f91ed584cbb2dddd1ede1bf638589f2a146a427f Mon Sep 17 00:00:00 2001 From: Frederik Hennig <frederik.hennig@fau.de> Date: Thu, 27 Feb 2025 17:46:35 +0100 Subject: [PATCH] add class method and constructor generation to header-only test --- .../source/ComposerHeaderOnly.harness.cpp | 20 ++++++++++++++---- .../source/ComposerHeaderOnly.py | 21 ++++++++++++++++++- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/tests/generator_scripts/source/ComposerHeaderOnly.harness.cpp b/tests/generator_scripts/source/ComposerHeaderOnly.harness.cpp index f6c549a..76f2de4 100644 --- a/tests/generator_scripts/source/ComposerHeaderOnly.harness.cpp +++ b/tests/generator_scripts/source/ComposerHeaderOnly.harness.cpp @@ -8,11 +8,23 @@ int main(void) { assert( twice(13) == 26 ); - std::vector< int64_t > arr { 1, 2, 3, 4, 5, 6 }; - twiceKernel(arr); + { + std::vector< int64_t > arr { 1, 2, 3, 4, 5, 6 }; + twiceKernel(arr); - std::vector< int64_t > expected { 2, 4, 6, 8, 10, 12 }; - assert ( arr == expected ); + std::vector< int64_t > expected { 2, 4, 6, 8, 10, 12 }; + assert ( arr == expected ); + } + + { + std::vector< int64_t > arr { 1, 2, 3, 4, 5, 6 }; + ScaleKernel ker { 3 }; + + ker( arr ); + + std::vector< int64_t > expected { 3, 6, 9, 12, 15, 18 }; + assert ( arr == expected ); + } return 0; } diff --git a/tests/generator_scripts/source/ComposerHeaderOnly.py b/tests/generator_scripts/source/ComposerHeaderOnly.py index 0bd1a07..3881457 100644 --- a/tests/generator_scripts/source/ComposerHeaderOnly.py +++ b/tests/generator_scripts/source/ComposerHeaderOnly.py @@ -17,10 +17,29 @@ with SourceFileGenerator(cfg) as sfg: arr = ps.fields("arr: int64[1D]") vec = std.vector.from_field(arr) - asm = ps.Assignment(arr(0), 2 * arr(0)) + c = ps.TypedSymbol("c", "int64") + + asm = ps.Assignment(arr(0), c * arr(0)) khandle = sfg.kernels.create(asm) sfg.function("twiceKernel")( sfg.map_field(arr, vec), + sfg.set_param(c, "2"), sfg.call(khandle) ) + + # Inline class members + + sfg.klass("ScaleKernel")( + sfg.private( + c + ), + sfg.public( + sfg.constructor(c).init(c)(c), + sfg.method("operator()")( + sfg.map_field(arr, vec), + sfg.set_param(c, "this->c"), + sfg.call(khandle) + ) + ) + ) -- GitLab