diff --git a/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLAbstractSymtab.java b/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLAbstractSymtab.java index 694d2542a32077a18b0491654ae33ed3233db6a3..ef42f5df296b15ca4637bbb5f9d7cbfd540b0d8b 100644 --- a/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLAbstractSymtab.java +++ b/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLAbstractSymtab.java @@ -25,6 +25,7 @@ import de.monticore.io.paths.ModelPath; import de.monticore.lang.embeddedmontiarc.LogConfig; import de.monticore.lang.embeddedmontiarc.helper.ConstantPortHelper; import de.monticore.lang.monticar.emadl._symboltable.EMADLLanguage; +import de.monticore.lang.monticar.emadl.tagging.dltag.DataPathTagSchema; import de.monticore.lang.monticar.enumlang._symboltable.EnumLangLanguage; import de.monticore.lang.monticar.generator.cpp.converter.MathConverter; import de.monticore.lang.monticar.generator.optimization.ThreadingOptimizer; @@ -58,6 +59,7 @@ public class EMADLAbstractSymtab { TagInitTagSchema.registerTagTypes(tagging); TagThresholdTagSchema.registerTagTypes(tagging); TagDelayTagSchema.registerTagTypes(tagging); + DataPathTagSchema.registerTagTypes(tagging); return tagging; } diff --git a/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGenerator.java b/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGenerator.java index 32fa3be35b65656ae0b0df448b38fb958e4e9f2d..b7d37fb9a802ba324b66fd39ef6fca9f9ff08199 100644 --- a/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGenerator.java +++ b/src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGenerator.java @@ -33,12 +33,14 @@ import de.monticore.lang.monticar.cnnarch._symboltable.ArchitectureSymbol; import de.monticore.lang.monticar.cnntrain.CNNTrainGenerator; import de.monticore.lang.monticar.cnntrain._symboltable.ConfigurationSymbol; import de.monticore.lang.monticar.emadl._cocos.EMADLCocos; +import de.monticore.lang.monticar.emadl.tagging.dltag.DataPathSymbol; import de.monticore.lang.monticar.generator.FileContent; import de.monticore.lang.monticar.generator.cpp.ArmadilloHelper; import de.monticore.lang.monticar.generator.cpp.GeneratorEMAMOpt2CPP; import de.monticore.lang.monticar.generator.cpp.SimulatorIntegrationHelper; import de.monticore.lang.monticar.generator.cpp.TypesGeneratorCPP; import de.monticore.lang.monticar.generator.cpp.converter.TypeConverter; +import de.monticore.lang.tagging._symboltable.TagSymbol; import de.monticore.lang.tagging._symboltable.TaggingResolver; import de.monticore.symboltable.Scope; import de.se_rwth.commons.Splitters; @@ -341,6 +343,20 @@ public class EMADLGenerator { return fileContents; } + protected String getDataPath(TaggingResolver taggingResolver, EMAComponentSymbol component){ + List tags = (List) taggingResolver.getTags(component, DataPathSymbol.KIND); + String dataPath; + if (tags.isEmpty()) { + DataPathConfigParser newParserConfig = new DataPathConfigParser(getModelsPath() + "data_paths.txt"); + dataPath = newParserConfig.getDataPath(component.getFullName()); + } + else { + // values for data path tags are not optional, therefore always present if tag is present + dataPath = (String) tags.get(0).getValues().get(0); + } + return dataPath; + } + protected void generateComponent(List fileContents, Set allInstances, TaggingResolver taggingResolver, @@ -360,9 +376,7 @@ public class EMADLGenerator { EMADLCocos.checkAll(componentInstanceSymbol); if (architecture.isPresent()){ - DataPathConfigParser newParserConfig = new DataPathConfigParser(getModelsPath() + "data_paths.txt"); - String dPath = newParserConfig.getDataPath(EMAComponentSymbol.getFullName()); - + String dPath = getDataPath(taggingResolver, EMAComponentSymbol); /*String dPath = DataPathConfigParser.getDataPath(getModelsPath() + "data_paths.txt", componentSymbol.getFullName());*/ architecture.get().setDataPath(dPath); architecture.get().setComponentName(EMAComponentSymbol.getFullName());