diff options
Diffstat (limited to 'plugins')
10 files changed, 37 insertions, 73 deletions
diff --git a/plugins/org.eclipse.etrice.core.etmap/src/org/eclipse/etrice/core/etmap/util/ETMapUtil.java b/plugins/org.eclipse.etrice.core.etmap/src/org/eclipse/etrice/core/etmap/util/ETMapUtil.java index 426cb4b9e..58cae5e78 100644 --- a/plugins/org.eclipse.etrice.core.etmap/src/org/eclipse/etrice/core/etmap/util/ETMapUtil.java +++ b/plugins/org.eclipse.etrice.core.etmap/src/org/eclipse/etrice/core/etmap/util/ETMapUtil.java @@ -19,6 +19,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map.Entry; +import java.util.Set; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.resource.Resource; @@ -125,6 +126,15 @@ public class ETMapUtil { return thread; } + public static Set<PhysicalThread> getUsedThreads(NodeRef nr, SubSystemInstance ssi){ + Set<PhysicalThread> usedThreads = new HashSet<PhysicalThread>(); + for(ActorInstance ai : ssi.getAllContainedInstances()) + usedThreads.add(getMappedThread(ai).getThread()); + usedThreads.retainAll(nr.getType().getThreads()); + + return usedThreads; + } + public static String dumpMappings() { StringBuilder result = new StringBuilder(); diff --git a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend index e5add8190..c428ba401 100644 --- a/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend +++ b/plugins/org.eclipse.etrice.generator.c/src/org/eclipse/etrice/generator/c/gen/NodeGen.xtend @@ -46,6 +46,7 @@ import org.eclipse.etrice.core.room.PrimitiveType import org.eclipse.etrice.core.common.base.LiteralType import org.eclipse.etrice.core.genmodel.base.ILogger import org.eclipse.etrice.core.room.EnumerationType +import java.util.Collection @Singleton class NodeGen { @@ -72,12 +73,7 @@ class NodeGen { checkDataPorts(ssi) - val usedThreads = new HashSet<PhysicalThread>(); - for (thread: nr.type.threads) { - val instancesOnThread = ssi.allContainedInstances.filter(ai|ETMapUtil::getMappedThread(ai).thread==thread) - if (!instancesOnThread.empty) - usedThreads.add(thread) - } + val usedThreads = ETMapUtil::getUsedThreads(nr, ssi) fileIO.generateFile("generating Node declaration", filepath, infopath, file, root.generateHeaderFile(ssi)) @@ -137,7 +133,7 @@ class NodeGen { ''' } - def private generateSourceFile(Root root, SubSystemInstance ssi, HashSet<PhysicalThread> usedThreads) { + def private generateSourceFile(Root root, SubSystemInstance ssi, Collection<PhysicalThread> usedThreads) { val nr = ETMapUtil::getNodeRef(ssi) val ssc = ssi.subSystemClass val clsname = nr.name+"_"+ssi.name @@ -356,7 +352,7 @@ class NodeGen { ''' } - def private generateInstanceFile(Root root, SubSystemInstance ssi, HashSet<PhysicalThread> usedThreads) { + def private generateInstanceFile(Root root, SubSystemInstance ssi, Collection<PhysicalThread> usedThreads) { val nr = ETMapUtil::getNodeRef(ssi) ''' /** @@ -650,7 +646,7 @@ class NodeGen { return result } - def private generateDispatcherFile(Root root, SubSystemInstance ssi, HashSet<PhysicalThread> usedThreads) { + def private generateDispatcherFile(Root root, SubSystemInstance ssi, Collection<PhysicalThread> usedThreads) { val nr = ETMapUtil::getNodeRef(ssi) val loggedPorts = ssi.loggedPorts val logData = ssi.subSystemClass.annotations.isAnnotationPresent("DataLogging") diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java index 25c09a109..aedc1eb98 100644 --- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java +++ b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/NodeGen.java @@ -20,6 +20,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Set; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.TreeIterator; import org.eclipse.emf.ecore.EObject; @@ -138,27 +139,7 @@ public class NodeGen { final String infopath = (_generationInfoPath + _path_1); String file = this._cExtensions.getCHeaderFileName(nr, ssi); this.checkDataPorts(ssi); - final HashSet<PhysicalThread> usedThreads = new HashSet<PhysicalThread>(); - NodeClass _type = nr.getType(); - EList<PhysicalThread> _threads = _type.getThreads(); - for (final PhysicalThread thread : _threads) { - { - EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances(); - final Function1<ActorInstance,Boolean> _function = new Function1<ActorInstance,Boolean>() { - public Boolean apply(final ActorInstance ai) { - ETMapUtil.MappedThread _mappedThread = ETMapUtil.getMappedThread(ai); - PhysicalThread _thread = _mappedThread.getThread(); - return Boolean.valueOf(Objects.equal(_thread, thread)); - } - }; - final Iterable<ActorInstance> instancesOnThread = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function); - boolean _isEmpty = IterableExtensions.isEmpty(instancesOnThread); - boolean _not = (!_isEmpty); - if (_not) { - usedThreads.add(thread); - } - } - } + final Set<PhysicalThread> usedThreads = ETMapUtil.getUsedThreads(nr, ssi); CharSequence _generateHeaderFile = this.generateHeaderFile(root, ssi); this.fileIO.generateFile("generating Node declaration", filepath, infopath, file, _generateHeaderFile); String _cSourceFileName = this._cExtensions.getCSourceFileName(nr, ssi); @@ -277,7 +258,7 @@ public class NodeGen { return _xblockexpression; } - private CharSequence generateSourceFile(final Root root, final SubSystemInstance ssi, final HashSet<PhysicalThread> usedThreads) { + private CharSequence generateSourceFile(final Root root, final SubSystemInstance ssi, final Collection<PhysicalThread> usedThreads) { CharSequence _xblockexpression = null; { final NodeRef nr = ETMapUtil.getNodeRef(ssi); @@ -999,7 +980,7 @@ public class NodeGen { return _xblockexpression; } - private CharSequence generateInstanceFile(final Root root, final SubSystemInstance ssi, final HashSet<PhysicalThread> usedThreads) { + private CharSequence generateInstanceFile(final Root root, final SubSystemInstance ssi, final Collection<PhysicalThread> usedThreads) { CharSequence _xblockexpression = null; { final NodeRef nr = ETMapUtil.getNodeRef(ssi); @@ -2162,7 +2143,7 @@ public class NodeGen { return result; } - private CharSequence generateDispatcherFile(final Root root, final SubSystemInstance ssi, final HashSet<PhysicalThread> usedThreads) { + private CharSequence generateDispatcherFile(final Root root, final SubSystemInstance ssi, final Collection<PhysicalThread> usedThreads) { CharSequence _xblockexpression = null; { final NodeRef nr = ETMapUtil.getNodeRef(ssi); diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeGen.xtend index 50deb5209..4b84235ea 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/NodeGen.xtend @@ -14,33 +14,34 @@ package org.eclipse.etrice.generator.java.gen import com.google.inject.Inject import com.google.inject.Singleton +import java.util.Collection +import java.util.HashMap import java.util.HashSet +import org.eclipse.etrice.core.etmap.util.ETMapUtil import org.eclipse.etrice.core.etphys.eTPhys.ExecMode import org.eclipse.etrice.core.etphys.eTPhys.PhysicalThread import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance +import org.eclipse.etrice.core.genmodel.etricegen.ActorInterfaceInstance import org.eclipse.etrice.core.genmodel.etricegen.IDiagnostician +import org.eclipse.etrice.core.genmodel.etricegen.InstanceBase import org.eclipse.etrice.core.genmodel.etricegen.Root +import org.eclipse.etrice.core.genmodel.etricegen.StructureInstance import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance +import org.eclipse.etrice.core.genmodel.etricegen.WiredSubSystemClass +import org.eclipse.etrice.core.room.ActorClass import org.eclipse.etrice.core.room.CommunicationType +import org.eclipse.etrice.core.room.SubSystemClass +import org.eclipse.etrice.generator.base.FileSystemHelpers import org.eclipse.etrice.generator.base.IDataConfiguration import org.eclipse.etrice.generator.base.IGeneratorFileIo import org.eclipse.etrice.generator.base.IntelligentSeparator import org.eclipse.etrice.generator.generic.ProcedureHelpers import org.eclipse.etrice.generator.generic.RoomExtensions +import org.eclipse.etrice.generator.java.Main import static extension org.eclipse.etrice.generator.base.Indexed.* -import org.eclipse.etrice.core.genmodel.etricegen.ActorInterfaceInstance -import org.eclipse.etrice.core.room.ActorClass -import com.google.common.collect.Sets import com.google.common.collect.Lists -import org.eclipse.etrice.core.genmodel.etricegen.StructureInstance -import org.eclipse.etrice.generator.java.Main -import org.eclipse.etrice.core.genmodel.etricegen.WiredSubSystemClass -import java.util.HashMap -import org.eclipse.etrice.core.room.SubSystemClass -import org.eclipse.etrice.core.genmodel.etricegen.InstanceBase -import org.eclipse.etrice.core.etmap.util.ETMapUtil -import org.eclipse.etrice.generator.base.FileSystemHelpers +import com.google.common.collect.Sets @Singleton class NodeGen { @@ -70,12 +71,7 @@ class NodeGen { checkDataPorts(ssi) - val usedThreads = new HashSet<PhysicalThread>(); - for (thread: nr.type.threads) { - val instancesOnThread = ssi.allContainedInstances.filter(ai|ETMapUtil::getMappedThread(ai).thread==thread) - if (!instancesOnThread.empty) - usedThreads.add(thread) - } + val usedThreads = ETMapUtil::getUsedThreads(nr, ssi) fileIO.generateFile("generating Node implementation", path, infopath, file, root.generate(ssi, wired, usedThreads)) if (dataConfigExt.hasVariableService(ssi)) @@ -100,7 +96,7 @@ class NodeGen { return result } - def generate(Root root, SubSystemInstance comp, WiredSubSystemClass wired, HashSet<PhysicalThread> usedThreads) { + def generate(Root root, SubSystemInstance comp, WiredSubSystemClass wired, Collection<PhysicalThread> usedThreads) { val cc = comp.subSystemClass val models = root.getReferencedModels(cc) val nr = ETMapUtil::getNodeRef(comp) diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java index 3ca455020..a61166ed5 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/NodeGen.java @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.TreeIterator; @@ -153,27 +154,7 @@ public class NodeGen { final String infopath = (_generationInfoPath + _path_1); final String file = this._javaExtensions.getJavaFileName(nr, ssi); this.checkDataPorts(ssi); - final HashSet<PhysicalThread> usedThreads = new HashSet<PhysicalThread>(); - NodeClass _type = nr.getType(); - EList<PhysicalThread> _threads = _type.getThreads(); - for (final PhysicalThread thread : _threads) { - { - EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances(); - final Function1<ActorInstance,Boolean> _function_2 = new Function1<ActorInstance,Boolean>() { - public Boolean apply(final ActorInstance ai) { - ETMapUtil.MappedThread _mappedThread = ETMapUtil.getMappedThread(ai); - PhysicalThread _thread = _mappedThread.getThread(); - return Boolean.valueOf(Objects.equal(_thread, thread)); - } - }; - final Iterable<ActorInstance> instancesOnThread = IterableExtensions.<ActorInstance>filter(_allContainedInstances, _function_2); - boolean _isEmpty = IterableExtensions.isEmpty(instancesOnThread); - boolean _not = (!_isEmpty); - if (_not) { - usedThreads.add(thread); - } - } - } + final Set<PhysicalThread> usedThreads = ETMapUtil.getUsedThreads(nr, ssi); CharSequence _generate = this.generate(root, ssi, wired, usedThreads); this.fileIO.generateFile("generating Node implementation", path, infopath, file, _generate); boolean _hasVariableService = this.dataConfigExt.hasVariableService(ssi); @@ -221,7 +202,7 @@ public class NodeGen { return result; } - public CharSequence generate(final Root root, final SubSystemInstance comp, final WiredSubSystemClass wired, final HashSet<PhysicalThread> usedThreads) { + public CharSequence generate(final Root root, final SubSystemInstance comp, final WiredSubSystemClass wired, final Collection<PhysicalThread> usedThreads) { CharSequence _xblockexpression = null; { final SubSystemClass cc = comp.getSubSystemClass(); diff --git a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.modellib.c.zip b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.modellib.c.zip Binary files differindex 74008449e..7f487d131 100644 --- a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.modellib.c.zip +++ b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.modellib.c.zip diff --git a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.modellib.java.zip b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.modellib.java.zip Binary files differindex 6f3b5e63b..cfb6b198c 100644 --- a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.modellib.java.zip +++ b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.modellib.java.zip diff --git a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.runtime.c.zip b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.runtime.c.zip Binary files differindex c407eb463..0d09b4894 100644 --- a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.runtime.c.zip +++ b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.runtime.c.zip diff --git a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.runtime.java.zip b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.runtime.java.zip Binary files differindex 3cf453247..c7b6f84de 100644 --- a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.runtime.java.zip +++ b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.runtime.java.zip diff --git a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.tutorials.java.zip b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.tutorials.java.zip Binary files differindex afdb6fd90..62eaaf717 100644 --- a/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.tutorials.java.zip +++ b/plugins/org.eclipse.etrice.ui.runtime/contents/org.eclipse.etrice.tutorials.java.zip |