From 6f9d44e24b14293fb201612f2397ae133dc2d110 Mon Sep 17 00:00:00 2001 From: Alexander Hellwig Date: Sat, 31 Mar 2018 16:20:43 +0100 Subject: [PATCH] Added support for Parameters to Coordinator + tests --- .../middleware/MiddlewareGenerator.java | 8 ++++++- .../middleware/coordinatorTemplate.ftl | 2 +- .../generator/middleware/GenerationTest.java | 14 ++++++++++++ .../resources/tests/dist/ParameterInit.emam | 22 +++++++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/test/resources/tests/dist/ParameterInit.emam diff --git a/src/main/java/de/monticore/lang/monticar/generator/middleware/MiddlewareGenerator.java b/src/main/java/de/monticore/lang/monticar/generator/middleware/MiddlewareGenerator.java index a0f30f1..ec225ee 100644 --- a/src/main/java/de/monticore/lang/monticar/generator/middleware/MiddlewareGenerator.java +++ b/src/main/java/de/monticore/lang/monticar/generator/middleware/MiddlewareGenerator.java @@ -2,6 +2,7 @@ package de.monticore.lang.monticar.generator.middleware; import de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.ExpandedComponentInstanceSymbol; import de.monticore.lang.monticar.generator.FileContent; +import de.monticore.lang.monticar.generator.cpp.converter.ComponentConverter; import de.monticore.lang.monticar.generator.middleware.helpers.FileHelper; import de.monticore.lang.monticar.generator.middleware.helpers.NameHelper; import de.monticore.lang.monticar.generator.middleware.helpers.TemplateHelper; @@ -59,10 +60,15 @@ public class MiddlewareGenerator extends CMakeGenerator { .map(fn -> " adapters.push_back(new " + fn + "());") .collect(Collectors.joining("\n")); + String initParams = componentInstanceSymbol.getArguments().stream() + .map(ComponentConverter::getExpressionParameterConversion) + .collect(Collectors.joining(",")); + String content = TemplateHelper.getCoordinatorTemplate() .replace("${compName}", name) .replace("${includes}", includes) - .replace("${addAdapters}", addAdapters); + .replace("${addAdapters}", addAdapters) + .replace("${initParams}",initParams); FileContent res = new FileContent(); diff --git a/src/main/resources/de/monticore/lang/monticar/generator/middleware/coordinatorTemplate.ftl b/src/main/resources/de/monticore/lang/monticar/generator/middleware/coordinatorTemplate.ftl index e76d9f9..663531c 100644 --- a/src/main/resources/de/monticore/lang/monticar/generator/middleware/coordinatorTemplate.ftl +++ b/src/main/resources/de/monticore/lang/monticar/generator/middleware/coordinatorTemplate.ftl @@ -44,7 +44,7 @@ int main(int argc, char* argv[]) atomic done(false); ${compName} comp; - comp.init(); + comp.init(${initParams}); list adapters; ${addAdapters} diff --git a/src/test/java/de/monticore/lang/monticar/generator/middleware/GenerationTest.java b/src/test/java/de/monticore/lang/monticar/generator/middleware/GenerationTest.java index 8ffd8ed..0bf8402 100644 --- a/src/test/java/de/monticore/lang/monticar/generator/middleware/GenerationTest.java +++ b/src/test/java/de/monticore/lang/monticar/generator/middleware/GenerationTest.java @@ -189,6 +189,20 @@ public class GenerationTest extends AbstractSymtabTest { } } + @Test + public void testParameterInit() throws IOException { + TaggingResolver taggingResolver = createSymTabAndTaggingResolver("src/test/resources/"); + RosToEmamTagSchema.registerTagTypes(taggingResolver); + + ExpandedComponentInstanceSymbol componentInstanceSymbol = taggingResolver.resolve("tests.dist.parameterInit", ExpandedComponentInstanceSymbol.KIND).orElse(null); + assertNotNull(componentInstanceSymbol); + + DistributedTargetGenerator distributedTargetGenerator = new DistributedTargetGenerator(); + distributedTargetGenerator.setGenerationTargetPath("./target/generated-sources-cmake/paramInit/src/"); + distributedTargetGenerator.add(new CPPGenImpl(),"cpp"); + distributedTargetGenerator.generate(componentInstanceSymbol,taggingResolver); + } + @Ignore @Test public void testsStreamTest() throws IOException { diff --git a/src/test/resources/tests/dist/ParameterInit.emam b/src/test/resources/tests/dist/ParameterInit.emam new file mode 100644 index 0000000..f16291c --- /dev/null +++ b/src/test/resources/tests/dist/ParameterInit.emam @@ -0,0 +1,22 @@ +package tests.dist; + +component ParameterInit{ + + component NoParamComp{ + + } + + component ParamComp(Q param){ + + } + + component ParamCompMulti(Q param1, Q param2, Q param3){ + + } + + instance NoParamComp noParamComp; + instance ParamComp(1.0) paramComp1; + instance ParamComp(2.0) paramComp2; + instance ParamCompMulti(1,2,3) paramComp3; + instance ParamCompMulti(4,5,6) paramComp4; +} \ No newline at end of file -- GitLab