diff options
author | Henrik Rentz-Reichert | 2011-12-14 13:55:12 +0000 |
---|---|---|
committer | Henrik Rentz-Reichert | 2011-12-14 13:55:12 +0000 |
commit | d504486648753cc2d4f75a29f15e07c6bf2c4b3f (patch) | |
tree | 2e59c25e28341f764d8b7b1cc6d704fd50ee7f17 | |
parent | c545bd542ef6826d1ddeb4fdb0f000b6e0638742 (diff) | |
download | org.eclipse.etrice-d504486648753cc2d4f75a29f15e07c6bf2c4b3f.tar.gz org.eclipse.etrice-d504486648753cc2d4f75a29f15e07c6bf2c4b3f.tar.xz org.eclipse.etrice-d504486648753cc2d4f75a29f15e07c6bf2c4b3f.zip |
upgrade to Xtext 2.1.1
clean-up of dependencies
36 files changed, 5106 insertions, 5138 deletions
diff --git a/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF index bd839c5fe..0a416c6bc 100644 --- a/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.etrice.core.room.ui/META-INF/MANIFEST.MF @@ -10,9 +10,9 @@ Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0";visibility:= org.eclipse.ui;bundle-version="3.6.0",
org.eclipse.ui.editors;bundle-version="3.5.0",
org.eclipse.ui.ide;bundle-version="3.5.0",
- org.eclipse.xtext.ui;bundle-version="2.0.0",
- org.eclipse.xtext.ui.shared;bundle-version="2.0.0",
- org.eclipse.xtext.builder;bundle-version="2.0.0",
+ org.eclipse.xtext.ui;bundle-version="2.1.1",
+ org.eclipse.xtext.ui.shared;bundle-version="2.1.1",
+ org.eclipse.xtext.builder;bundle-version="2.1.1",
org.antlr.runtime;bundle-version="3.0.0",
org.eclipse.jdt.core;bundle-version="3.6.2",
org.eclipse.jdt.launching;bundle-version="3.5.200",
diff --git a/plugins/org.eclipse.etrice.core.room.ui/etrice-development.target b/plugins/org.eclipse.etrice.core.room.ui/etrice-development.target index b43dea8e4..515e36e0c 100644 --- a/plugins/org.eclipse.etrice.core.room.ui/etrice-development.target +++ b/plugins/org.eclipse.etrice.core.room.ui/etrice-development.target @@ -1,10 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.6"?>
-<target name="eTrice development" sequenceNumber="7">
+<target name="eTrice development" sequenceNumber="10">
<locations>
-<location path="${eTriceTargetInstallationPath}\eclipse-modeling-indigo-win32\eclipse" type="Profile"/>
-<location path="${eTriceTargetInstallationPath}\extra" type="Directory"/>
+<location path="${eTriceTargetInstallationPath}\eclipse-modeling-indigo-win32\eclipse" type="Directory"/>
</locations>
<environment>
<os>win32</os>
diff --git a/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF index 8f2919c46..3b2fe764f 100644 --- a/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.etrice.core.room/META-INF/MANIFEST.MF @@ -5,9 +5,9 @@ Bundle-Vendor: eTrice (Incubation) Bundle-Version: 0.1.0.qualifier
Bundle-SymbolicName: org.eclipse.etrice.core.room;singleton:=true
Bundle-ActivationPolicy: lazy
-Require-Bundle: org.eclipse.xtext;bundle-version="2.0.0",
- org.eclipse.xtext.generator;bundle-version="2.0.0";resolution:=optional,
- org.eclipse.xtext.util;bundle-version="2.0.0",
+Require-Bundle: org.eclipse.xtext;bundle-version="2.1.1",
+ org.eclipse.xtext.generator;bundle-version="2.1.1";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="2.1.1",
org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
org.eclipse.emf.codegen.ecore;bundle-version="2.6.0";resolution:=optional,
org.eclipse.emf.mwe.utils;bundle-version="1.0.0";resolution:=optional,
diff --git a/plugins/org.eclipse.etrice.generator.java/.classpath b/plugins/org.eclipse.etrice.generator.java/.classpath index 54357e36e..1260f31c3 100644 --- a/plugins/org.eclipse.etrice.generator.java/.classpath +++ b/plugins/org.eclipse.etrice.generator.java/.classpath @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="xtend-gen"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="xtend-gen"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF index 5a2c6f4d6..09d6385d1 100644 --- a/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.etrice.generator.java/META-INF/MANIFEST.MF @@ -12,8 +12,7 @@ Require-Bundle: org.eclipse.etrice.core.room.ui;bundle-version="0.1.0", org.eclipse.core.runtime;bundle-version="3.6.0",
org.eclipse.ui;bundle-version="3.7.0",
org.eclipse.ui.ide;bundle-version="3.7.0",
- org.eclipse.xtext.xtend2.lib;bundle-version="2.0.0",
- org.eclipse.xtend;bundle-version="1.1.0"
+ org.eclipse.xtext.xtend2.lib;bundle-version="2.1.1"
Import-Package: org.apache.log4j
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: org.eclipse.etrice.generator.java
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend index 0eaa44305..9ccaa5293 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend @@ -12,17 +12,16 @@ package org.eclipse.etrice.generator.java.gen -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.JavaIoFileSystemAccess import com.google.inject.Inject - -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* +import com.google.inject.Singleton +import org.eclipse.etrice.core.room.ActorClass +import org.eclipse.etrice.core.room.Message import org.eclipse.etrice.generator.base.ILogger +import org.eclipse.etrice.generator.etricegen.ExpandedActorClass +import org.eclipse.etrice.generator.etricegen.Root +import org.eclipse.xtext.generator.JavaIoFileSystemAccess +@Singleton class ActorClassGen { @Inject extension JavaIoFileSystemAccess fileAccess diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend index 63eef3d30..10eda108c 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend @@ -12,17 +12,14 @@ package org.eclipse.etrice.generator.java.gen -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.JavaIoFileSystemAccess import com.google.inject.Inject - -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* +import com.google.inject.Singleton +import org.eclipse.etrice.core.room.DataClass import org.eclipse.etrice.generator.base.ILogger +import org.eclipse.etrice.generator.etricegen.Root +import org.eclipse.xtext.generator.JavaIoFileSystemAccess +@Singleton class DataClassGen { @Inject extension JavaIoFileSystemAccess fileAccess diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.xtend index 9cd3799da..13bb778ce 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.xtend @@ -12,18 +12,18 @@ package org.eclipse.etrice.generator.java.gen -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.JavaIoFileSystemAccess import com.google.inject.Inject - -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* -import org.eclipse.etrice.generator.base.IRoomGenerator +import com.google.inject.Singleton +import org.eclipse.etrice.core.room.SubSystemClass import org.eclipse.etrice.generator.base.ILogger +import org.eclipse.etrice.generator.base.IRoomGenerator +import org.eclipse.etrice.generator.etricegen.ActorInstance +import org.eclipse.etrice.generator.etricegen.Root +import org.eclipse.etrice.generator.etricegen.StructureInstance +import org.eclipse.etrice.generator.etricegen.SubSystemInstance +import org.eclipse.xtext.generator.JavaIoFileSystemAccess +@Singleton class InstanceDiagramGen implements IRoomGenerator { @Inject extension JavaIoFileSystemAccess fileAccess diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/MainGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/MainGen.xtend index d6c9734c6..b4606f980 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/MainGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/MainGen.xtend @@ -12,16 +12,14 @@ package org.eclipse.etrice.generator.java.gen
+import com.google.inject.Inject
+import com.google.inject.Singleton
import org.eclipse.emf.ecore.resource.Resource
-import org.eclipse.xtext.generator.IGenerator
+import org.eclipse.etrice.generator.etricegen.Root
import org.eclipse.xtext.generator.IFileSystemAccess
-import com.google.inject.Inject
-
-import org.eclipse.emf.ecore.*
-
-import org.eclipse.etrice.core.room.*
-import org.eclipse.etrice.generator.etricegen.*
+import org.eclipse.xtext.generator.IGenerator
+@Singleton
class MainGen implements IGenerator {
@Inject DataClassGen dataClassGen
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.xtend index ca0456a57..b5ed6ac46 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.xtend @@ -12,20 +12,17 @@ package org.eclipse.etrice.generator.java.gen -import org.eclipse.emf.ecore.resource.Resource -import org.eclipse.xtext.generator.IGenerator -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.JavaIoFileSystemAccess import com.google.inject.Inject -import java.util.* +import com.google.inject.Singleton import java.io.File - -import org.eclipse.emf.ecore.* - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* +import java.util.HashSet +import java.util.Set +import org.eclipse.emf.ecore.resource.Resource import org.eclipse.etrice.generator.base.ILogger +import org.eclipse.etrice.generator.etricegen.Root +import org.eclipse.xtext.generator.JavaIoFileSystemAccess +@Singleton class PrepareFileSystem { @Inject extension StdExtensions stdExt diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.xtend index 9d4a1a5dc..0ab551358 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.xtend @@ -12,18 +12,15 @@ package org.eclipse.etrice.generator.java.gen -import java.util.List - -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.JavaIoFileSystemAccess import com.google.inject.Inject +import com.google.inject.Singleton +import java.util.List +import org.eclipse.etrice.core.room.ActorClass +import org.eclipse.etrice.core.room.Attribute +import org.eclipse.etrice.core.room.DetailCode +import org.eclipse.etrice.core.room.Operation -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* - +@Singleton class ProcedureHelpers { @Inject extension StdExtensions stdExt diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend index 7b11ab052..f092a6361 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.xtend @@ -12,17 +12,15 @@ package org.eclipse.etrice.generator.java.gen -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.JavaIoFileSystemAccess import com.google.inject.Inject - -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* +import com.google.inject.Singleton +import org.eclipse.etrice.core.room.Message +import org.eclipse.etrice.core.room.ProtocolClass import org.eclipse.etrice.generator.base.ILogger +import org.eclipse.etrice.generator.etricegen.Root +import org.eclipse.xtext.generator.JavaIoFileSystemAccess +@Singleton class ProtocolClassGen { @Inject extension JavaIoFileSystemAccess fileAccess diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend index 39411ae84..59ba78abc 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend @@ -12,22 +12,21 @@ package org.eclipse.etrice.generator.java.gen -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.JavaIoFileSystemAccess import com.google.inject.Inject -import java.util.* - -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* -import org.eclipse.etrice.generator.extensions.RoomNameProv +import com.google.inject.Singleton +import java.util.List +import org.eclipse.etrice.core.room.ActorClass +import org.eclipse.etrice.core.room.NonInitialTransition +import org.eclipse.etrice.core.room.Transition +import org.eclipse.etrice.core.room.TriggeredTransition +import org.eclipse.etrice.generator.etricegen.ExpandedActorClass +import org.eclipse.etrice.generator.etricegen.TransitionChain +import static extension org.eclipse.etrice.generator.extensions.RoomNameProv.* +@Singleton class StateMachineGen { @Inject extension StdExtensions stdExt - @Inject extension RoomNameProv nameProvider @Inject JavaGenerator javaGen def genStateMachine(ExpandedActorClass xpac, ActorClass ac) {''' diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StdExtensions.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StdExtensions.xtend index aebced775..e9bcafae8 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StdExtensions.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StdExtensions.xtend @@ -18,19 +18,20 @@ package org.eclipse.etrice.generator.java.gen import com.google.inject.Inject -import java.util.* -import java.io.File - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* +import com.google.inject.Singleton +import org.eclipse.etrice.core.room.FreeType +import org.eclipse.etrice.core.room.Message +import org.eclipse.etrice.core.room.PrimitiveType +import org.eclipse.etrice.core.room.RoomClass +import org.eclipse.etrice.core.room.RoomModel +import org.eclipse.etrice.core.room.Type +import org.eclipse.etrice.core.room.TypedID +import org.eclipse.etrice.generator.etricegen.ExpandedActorClass +import org.eclipse.etrice.generator.etricegen.TransitionChain import org.eclipse.etrice.generator.extensions.RoomExtensions -import org.eclipse.emf.ecore.* - -import static extension org.eclipse.xtend.util.stdlib.naming -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* +@Singleton class StdExtensions extends RoomExtensions { @Inject JavaGenerator javaGen diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.xtend index 86d01be71..2bdfed396 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.xtend @@ -12,18 +12,18 @@ package org.eclipse.etrice.generator.java.gen -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.JavaIoFileSystemAccess import com.google.inject.Inject - -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* +import com.google.inject.Singleton +import org.eclipse.etrice.core.room.SubSystemClass import org.eclipse.etrice.generator.base.ILogger +import org.eclipse.etrice.generator.etricegen.Root +import org.eclipse.etrice.generator.etricegen.ServiceImplInstance +import org.eclipse.etrice.generator.etricegen.SubSystemInstance +import org.eclipse.xtext.generator.JavaIoFileSystemAccess + import static extension org.eclipse.etrice.generator.base.Indexed.* +@Singleton class SubSystemClassGen { @Inject extension JavaIoFileSystemAccess fileAccess diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.xtend index ffbb698b8..cbb782c04 100644 --- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.xtend +++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.xtend @@ -12,16 +12,14 @@ package org.eclipse.etrice.generator.java.gen -import org.eclipse.xtext.generator.IFileSystemAccess -import org.eclipse.xtext.generator.JavaIoFileSystemAccess import com.google.inject.Inject +import com.google.inject.Singleton +import org.eclipse.etrice.core.room.SubSystemClass +import org.eclipse.etrice.generator.etricegen.Root +import org.eclipse.etrice.generator.etricegen.SubSystemInstance +import org.eclipse.xtext.generator.JavaIoFileSystemAccess -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* - -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* - +@Singleton class SubSystemRunnerGen { @Inject extension JavaIoFileSystemAccess fileAccess diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java index 04d57205b..daf9fe369 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java @@ -1,574 +1,579 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import java.util.List; -import org.eclipse.emf.common.util.EList; -import org.eclipse.etrice.core.room.ActorClass; -import org.eclipse.etrice.core.room.Attribute; -import org.eclipse.etrice.core.room.DataClass; -import org.eclipse.etrice.core.room.DetailCode; -import org.eclipse.etrice.core.room.Message; -import org.eclipse.etrice.core.room.Operation; -import org.eclipse.etrice.core.room.Port; -import org.eclipse.etrice.core.room.ProtocolClass; -import org.eclipse.etrice.core.room.RoomModel; -import org.eclipse.etrice.core.room.SAPRef; -import org.eclipse.etrice.core.room.SPPRef; -import org.eclipse.etrice.core.room.ServiceImplementation; -import org.eclipse.etrice.core.room.StateMachine; -import org.eclipse.etrice.core.room.Type; -import org.eclipse.etrice.core.room.TypedID; -import org.eclipse.etrice.generator.base.ILogger; -import org.eclipse.etrice.generator.etricegen.ExpandedActorClass; -import org.eclipse.etrice.generator.etricegen.Root; -import org.eclipse.etrice.generator.java.gen.ProcedureHelpers; -import org.eclipse.etrice.generator.java.gen.StateMachineGen; -import org.eclipse.etrice.generator.java.gen.StdExtensions; -import org.eclipse.xtext.generator.JavaIoFileSystemAccess; -import org.eclipse.xtext.xbase.lib.BooleanExtensions; -import org.eclipse.xtext.xbase.lib.IntegerExtensions; -import org.eclipse.xtext.xbase.lib.ObjectExtensions; -import org.eclipse.xtext.xbase.lib.StringExtensions; -import org.eclipse.xtext.xtend2.lib.StringConcatenation; - -@SuppressWarnings("all") -public class ActorClassGen { - - @Inject - private JavaIoFileSystemAccess fileAccess; - - @Inject - private StdExtensions stdExt; - - @Inject - private ProcedureHelpers helpers; - - @Inject - private StateMachineGen stateMachineGen; - - @Inject - private ILogger logger; - - public void doGenerate(final Root root) { - EList<ExpandedActorClass> _xpActorClasses = root.getXpActorClasses(); - for (ExpandedActorClass xpac : _xpActorClasses) { - { - ActorClass _actorClass = xpac.getActorClass(); - String _generationTargetPath = this.stdExt.getGenerationTargetPath(_actorClass); - ActorClass _actorClass_1 = xpac.getActorClass(); - String _path = this.stdExt.getPath(_actorClass_1); - String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path); - String path = _operator_plus; - ActorClass _actorClass_2 = xpac.getActorClass(); - String _fileName = this.stdExt.getFileName(_actorClass_2); - String file = _fileName; - String _operator_plus_1 = StringExtensions.operator_plus("generating ActorClass implementation \'", file); - String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'"); - String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path); - String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'"); - this.logger.logInfo(_operator_plus_4); - this.fileAccess.setOutputPath(path); - ActorClass _actorClass_3 = xpac.getActorClass(); - StringConcatenation _generate = this.generate(root, xpac, _actorClass_3); - this.fileAccess.generateFile(file, _generate); - } - } - } - - public StringConcatenation generate(final Root root, final ExpandedActorClass xpac, final ActorClass ac) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("package "); - String _package = this.stdExt.getPackage(ac); - _builder.append(_package, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.IRTObject;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.debugging.DebuggingService;"); - _builder.newLine(); - _builder.newLine(); - { - EList<RoomModel> _referencedModels = root.getReferencedModels(ac); - for(RoomModel model : _referencedModels) { - _builder.append("import "); - String _name = model.getName(); - _builder.append(_name, ""); - _builder.append(".*;"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - { - EList<ProtocolClass> _referencedProtocols = root.getReferencedProtocols(ac); - for(ProtocolClass pc : _referencedProtocols) { - _builder.append("import "); - String _package_1 = this.stdExt.getPackage(pc); - _builder.append(_package_1, ""); - _builder.append("."); - String _name_1 = pc.getName(); - _builder.append(_name_1, ""); - _builder.append(".*;"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - DetailCode _userCode1 = ac.getUserCode1(); - StringConcatenation _UserCode = this.helpers.UserCode(_userCode1); - _builder.append(_UserCode, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.newLine(); - _builder.append("public "); - { - boolean _isAbstract = ac.isAbstract(); - if (_isAbstract) { - _builder.append("abstract "); - } - } - _builder.append("class "); - String _name_2 = ac.getName(); - _builder.append(_name_2, ""); - _builder.append(" extends "); - { - ActorClass _base = ac.getBase(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null); - if (_operator_notEquals) { - ActorClass _base_1 = ac.getBase(); - String _name_3 = _base_1.getName(); - _builder.append(_name_3, "");} else { - _builder.append("ActorClassBase"); - } - } - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - DetailCode _userCode2 = ac.getUserCode2(); - StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2); - _builder.append(_UserCode_1, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("//--------------------- ports"); - _builder.newLine(); - { - List<Port> _endPorts = this.stdExt.getEndPorts(ac); - for(Port ep : _endPorts) { - _builder.append("\t"); - _builder.append("protected "); - String _portClassName = this.stdExt.getPortClassName(ep); - _builder.append(_portClassName, " "); - _builder.append(" "); - String _name_4 = ep.getName(); - _builder.append(_name_4, " "); - _builder.append(" = null;"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("//--------------------- saps"); - _builder.newLine(); - { - EList<SAPRef> _strSAPs = ac.getStrSAPs(); - for(SAPRef sap : _strSAPs) { - _builder.append("\t"); - _builder.append("protected "); - String _portClassName_1 = this.stdExt.getPortClassName(sap); - _builder.append(_portClassName_1, " "); - _builder.append(" "); - String _name_5 = sap.getName(); - _builder.append(_name_5, " "); - _builder.append(" = null;"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("//--------------------- services"); - _builder.newLine(); - { - EList<ServiceImplementation> _serviceImplementations = ac.getServiceImplementations(); - for(ServiceImplementation svc : _serviceImplementations) { - _builder.append("\t"); - _builder.append("protected "); - String _portClassName_2 = this.stdExt.getPortClassName(svc); - _builder.append(_portClassName_2, " "); - _builder.append(" "); - SPPRef _spp = svc.getSpp(); - String _name_6 = _spp.getName(); - _builder.append(_name_6, " "); - _builder.append(" = null;"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - _builder.append("\t"); - _builder.append("//--------------------- interface item IDs"); - _builder.newLine(); - { - List<Port> _endPorts_1 = this.stdExt.getEndPorts(ac); - for(Port ep_1 : _endPorts_1) { - _builder.append("\t"); - _builder.append("protected static final int IFITEM_"); - String _name_7 = ep_1.getName(); - _builder.append(_name_7, " "); - _builder.append(" = "); - int _interfaceItemLocalId = xpac.getInterfaceItemLocalId(ep_1); - int _operator_plus = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId), ((Integer)1)); - _builder.append(_operator_plus, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - { - EList<SAPRef> _strSAPs_1 = ac.getStrSAPs(); - for(SAPRef sap_1 : _strSAPs_1) { - _builder.append("\t"); - _builder.append("protected static final int IFITEM_"); - String _name_8 = sap_1.getName(); - _builder.append(_name_8, " "); - _builder.append(" = "); - int _interfaceItemLocalId_1 = xpac.getInterfaceItemLocalId(sap_1); - int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId_1), ((Integer)1)); - _builder.append(_operator_plus_1, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - { - EList<ServiceImplementation> _serviceImplementations_1 = ac.getServiceImplementations(); - for(ServiceImplementation svc_1 : _serviceImplementations_1) { - _builder.append("\t"); - _builder.append("protected static final int IFITEM_"); - SPPRef _spp_1 = svc_1.getSpp(); - String _name_9 = _spp_1.getName(); - _builder.append(_name_9, " "); - _builder.append(" = "); - SPPRef _spp_2 = svc_1.getSpp(); - int _interfaceItemLocalId_2 = xpac.getInterfaceItemLocalId(_spp_2); - int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId_2), ((Integer)1)); - _builder.append(_operator_plus_2, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - EList<Attribute> _attributes = ac.getAttributes(); - StringConcatenation _Attributes = this.helpers.Attributes(_attributes); - _builder.append(_Attributes, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - EList<Operation> _operations = ac.getOperations(); - StringConcatenation _Operations = this.helpers.Operations(_operations); - _builder.append(_Operations, " "); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("//--------------------- construction"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _name_10 = ac.getName(); - _builder.append(_name_10, " "); - _builder.append("(IRTObject parent, String name, Address[][] port_addr, Address[][] peer_addr){"); - _builder.newLineIfNotEmpty(); - { - ActorClass _base_2 = ac.getBase(); - boolean _operator_equals = ObjectExtensions.operator_equals(_base_2, null); - if (_operator_equals) { - _builder.append("\t\t"); - _builder.append("super(parent, name, port_addr[0][0], peer_addr[0][0]);"); - _builder.newLine();} else { - _builder.append("\t\t"); - _builder.append("super(parent, name, port_addr, peer_addr);"); - _builder.newLine(); - } - } - _builder.append("\t\t"); - _builder.append("setClassName(\""); - String _name_11 = ac.getName(); - _builder.append(_name_11, " "); - _builder.append("\");"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// initialize attributes"); - _builder.newLine(); - { - EList<Attribute> _attributes_1 = ac.getAttributes(); - for(Attribute a : _attributes_1) { - { - String _defaultValueLiteral = a.getDefaultValueLiteral(); - boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_defaultValueLiteral, null); - if (_operator_notEquals_1) { - _builder.append("\t\t"); - String _name_12 = a.getName(); - _builder.append(_name_12, " "); - _builder.append(" = "); - String _defaultValueLiteral_1 = a.getDefaultValueLiteral(); - _builder.append(_defaultValueLiteral_1, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty();} else { - Type _type = a.getType(); - DataClass _type_1 = _type.getType(); - boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_type_1, null); - if (_operator_notEquals_2) { - _builder.append("\t\t"); - String _name_13 = a.getName(); - _builder.append(_name_13, " "); - _builder.append(" = new "); - Type _type_2 = a.getType(); - DataClass _type_3 = _type_2.getType(); - String _name_14 = _type_3.getName(); - _builder.append(_name_14, " "); - _builder.append("();"); - _builder.newLineIfNotEmpty(); - } - } - } - } - } - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// own ports"); - _builder.newLine(); - { - List<Port> _endPorts_2 = this.stdExt.getEndPorts(ac); - for(Port ep_2 : _endPorts_2) { - _builder.append("\t\t"); - String _name_15 = ep_2.getName(); - _builder.append(_name_15, " "); - _builder.append(" = new "); - String _portClassName_3 = this.stdExt.getPortClassName(ep_2); - _builder.append(_portClassName_3, " "); - _builder.append("(this, \""); - String _name_16 = ep_2.getName(); - _builder.append(_name_16, " "); - _builder.append("\", IFITEM_"); - String _name_17 = ep_2.getName(); - _builder.append(_name_17, " "); - _builder.append(", "); - { - int _multiplicity = ep_2.getMultiplicity(); - boolean _operator_equals_1 = ObjectExtensions.operator_equals(((Integer)_multiplicity), ((Integer)1)); - if (_operator_equals_1) { - _builder.append("0, "); - } - } - _builder.append("port_addr[IFITEM_"); - String _name_18 = ep_2.getName(); - _builder.append(_name_18, " "); - _builder.append("]"); - { - int _multiplicity_1 = ep_2.getMultiplicity(); - boolean _operator_equals_2 = ObjectExtensions.operator_equals(((Integer)_multiplicity_1), ((Integer)1)); - if (_operator_equals_2) { - _builder.append("[0]"); - } - } - _builder.append(", peer_addr[IFITEM_"); - String _name_19 = ep_2.getName(); - _builder.append(_name_19, " "); - _builder.append("]"); - { - int _multiplicity_2 = ep_2.getMultiplicity(); - boolean _operator_equals_3 = ObjectExtensions.operator_equals(((Integer)_multiplicity_2), ((Integer)1)); - if (_operator_equals_3) { - _builder.append("[0]"); - } - } - _builder.append("); "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t"); - _builder.append("// own saps"); - _builder.newLine(); - { - EList<SAPRef> _strSAPs_2 = ac.getStrSAPs(); - for(SAPRef sap_2 : _strSAPs_2) { - _builder.append("\t\t"); - String _name_20 = sap_2.getName(); - _builder.append(_name_20, " "); - _builder.append(" = new "); - String _portClassName_4 = this.stdExt.getPortClassName(sap_2); - _builder.append(_portClassName_4, " "); - _builder.append("(this, \""); - String _name_21 = sap_2.getName(); - _builder.append(_name_21, " "); - _builder.append("\", IFITEM_"); - String _name_22 = sap_2.getName(); - _builder.append(_name_22, " "); - _builder.append(", 0, port_addr[IFITEM_"); - String _name_23 = sap_2.getName(); - _builder.append(_name_23, " "); - _builder.append("][0], peer_addr[IFITEM_"); - String _name_24 = sap_2.getName(); - _builder.append(_name_24, " "); - _builder.append("][0]); "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t"); - _builder.append("// own service implementations"); - _builder.newLine(); - { - EList<ServiceImplementation> _serviceImplementations_2 = ac.getServiceImplementations(); - for(ServiceImplementation svc_2 : _serviceImplementations_2) { - _builder.append("\t\t"); - SPPRef _spp_3 = svc_2.getSpp(); - String _name_25 = _spp_3.getName(); - _builder.append(_name_25, " "); - _builder.append(" = new "); - String _portClassName_5 = this.stdExt.getPortClassName(svc_2); - _builder.append(_portClassName_5, " "); - _builder.append("(this, \""); - SPPRef _spp_4 = svc_2.getSpp(); - String _name_26 = _spp_4.getName(); - _builder.append(_name_26, " "); - _builder.append("\", IFITEM_"); - SPPRef _spp_5 = svc_2.getSpp(); - String _name_27 = _spp_5.getName(); - _builder.append(_name_27, " "); - _builder.append(", port_addr[IFITEM_"); - SPPRef _spp_6 = svc_2.getSpp(); - String _name_28 = _spp_6.getName(); - _builder.append(_name_28, " "); - _builder.append("], peer_addr[IFITEM_"); - SPPRef _spp_7 = svc_2.getSpp(); - String _name_29 = _spp_7.getName(); - _builder.append(_name_29, " "); - _builder.append("]); "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("//--------------------- lifecycle functions"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void init(){"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("initUser();"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void start(){"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("startUser();"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - { - boolean _overridesStop = this.stdExt.overridesStop(ac); - boolean _operator_not = BooleanExtensions.operator_not(_overridesStop); - if (_operator_not) { - _builder.append("\t"); - _builder.append("public void stop(){"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("stopUser();"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void destroy(){"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("destroyUser();"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}\t"); - _builder.newLine(); - _builder.newLine(); - { - StateMachine _stateMachine = ac.getStateMachine(); - boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(_stateMachine, null); - if (_operator_notEquals_3) { - _builder.append("\t"); - StringConcatenation _genStateMachine = this.stateMachineGen.genStateMachine(xpac, ac); - _builder.append(_genStateMachine, " "); - _builder.newLineIfNotEmpty();} else { - boolean _hasStateMachine = xpac.hasStateMachine(); - boolean _operator_not_1 = BooleanExtensions.operator_not(_hasStateMachine); - if (_operator_not_1) { - _builder.append("\t"); - _builder.append("//--------------------- no state machine"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("handleSystemEvent(ifitem, evt, data);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void executeInitTransition(){"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - } - _builder.append("};"); - _builder.newLine(); - return _builder; - } - - public StringConcatenation msgArgs(final Message msg) { - StringConcatenation _builder = new StringConcatenation(); - { - TypedID _data = msg.getData(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null); - if (_operator_notEquals) { - TypedID _data_1 = msg.getData(); - String _defaultValue = this.stdExt.defaultValue(_data_1); - _builder.append(_defaultValue, ""); - } - } - return _builder; - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.StateMachine;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
+import org.eclipse.etrice.generator.java.gen.StateMachineGen;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class ActorClassGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ProcedureHelpers helpers;
+
+ @Inject
+ private StateMachineGen stateMachineGen;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<ExpandedActorClass> _xpActorClasses = root.getXpActorClasses();
+ for (final ExpandedActorClass xpac : _xpActorClasses) {
+ {
+ ActorClass _actorClass = xpac.getActorClass();
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(_actorClass);
+ ActorClass _actorClass_1 = xpac.getActorClass();
+ String _path = this.stdExt.getPath(_actorClass_1);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ ActorClass _actorClass_2 = xpac.getActorClass();
+ String _fileName = this.stdExt.getFileName(_actorClass_2);
+ String file = _fileName;
+ String _operator_plus_1 = StringExtensions.operator_plus("generating ActorClass implementation \'", file);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
+ this.logger.logInfo(_operator_plus_4);
+ this.fileAccess.setOutputPath(path);
+ ActorClass _actorClass_3 = xpac.getActorClass();
+ StringConcatenation _generate = this.generate(root, xpac, _actorClass_3);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final ExpandedActorClass xpac, final ActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(ac);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.IRTObject;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.debugging.DebuggingService;");
+ _builder.newLine();
+ _builder.newLine();
+ {
+ EList<RoomModel> _referencedModels = root.getReferencedModels(ac);
+ for(final RoomModel model : _referencedModels) {
+ _builder.append("import ");
+ String _name = model.getName();
+ _builder.append(_name, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ {
+ EList<ProtocolClass> _referencedProtocols = root.getReferencedProtocols(ac);
+ for(final ProtocolClass pc : _referencedProtocols) {
+ _builder.append("import ");
+ String _package_1 = this.stdExt.getPackage(pc);
+ _builder.append(_package_1, "");
+ _builder.append(".");
+ String _name_1 = pc.getName();
+ _builder.append(_name_1, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ DetailCode _userCode1 = ac.getUserCode1();
+ StringConcatenation _UserCode = this.helpers.UserCode(_userCode1);
+ _builder.append(_UserCode, "");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("public ");
+ {
+ boolean _isAbstract = ac.isAbstract();
+ if (_isAbstract) {
+ _builder.append("abstract ");
+ }
+ }
+ _builder.append("class ");
+ String _name_2 = ac.getName();
+ _builder.append(_name_2, "");
+ _builder.append(" extends ");
+ {
+ ActorClass _base = ac.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals) {
+ ActorClass _base_1 = ac.getBase();
+ String _name_3 = _base_1.getName();
+ _builder.append(_name_3, "");
+ } else {
+ _builder.append("ActorClassBase");
+ }
+ }
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ DetailCode _userCode2 = ac.getUserCode2();
+ StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2);
+ _builder.append(_UserCode_1, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//--------------------- ports");
+ _builder.newLine();
+ {
+ List<Port> _endPorts = this.stdExt.getEndPorts(ac);
+ for(final Port ep : _endPorts) {
+ _builder.append("\t");
+ _builder.append("protected ");
+ String _portClassName = this.stdExt.getPortClassName(ep);
+ _builder.append(_portClassName, " ");
+ _builder.append(" ");
+ String _name_4 = ep.getName();
+ _builder.append(_name_4, " ");
+ _builder.append(" = null;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("//--------------------- saps");
+ _builder.newLine();
+ {
+ EList<SAPRef> _strSAPs = ac.getStrSAPs();
+ for(final SAPRef sap : _strSAPs) {
+ _builder.append("\t");
+ _builder.append("protected ");
+ String _portClassName_1 = this.stdExt.getPortClassName(sap);
+ _builder.append(_portClassName_1, " ");
+ _builder.append(" ");
+ String _name_5 = sap.getName();
+ _builder.append(_name_5, " ");
+ _builder.append(" = null;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("//--------------------- services");
+ _builder.newLine();
+ {
+ EList<ServiceImplementation> _serviceImplementations = ac.getServiceImplementations();
+ for(final ServiceImplementation svc : _serviceImplementations) {
+ _builder.append("\t");
+ _builder.append("protected ");
+ String _portClassName_2 = this.stdExt.getPortClassName(svc);
+ _builder.append(_portClassName_2, " ");
+ _builder.append(" ");
+ SPPRef _spp = svc.getSpp();
+ String _name_6 = _spp.getName();
+ _builder.append(_name_6, " ");
+ _builder.append(" = null;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//--------------------- interface item IDs");
+ _builder.newLine();
+ {
+ List<Port> _endPorts_1 = this.stdExt.getEndPorts(ac);
+ for(final Port ep_1 : _endPorts_1) {
+ _builder.append("\t");
+ _builder.append("protected static final int IFITEM_");
+ String _name_7 = ep_1.getName();
+ _builder.append(_name_7, " ");
+ _builder.append(" = ");
+ int _interfaceItemLocalId = xpac.getInterfaceItemLocalId(ep_1);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId), ((Integer)1));
+ _builder.append(_operator_plus, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ {
+ EList<SAPRef> _strSAPs_1 = ac.getStrSAPs();
+ for(final SAPRef sap_1 : _strSAPs_1) {
+ _builder.append("\t");
+ _builder.append("protected static final int IFITEM_");
+ String _name_8 = sap_1.getName();
+ _builder.append(_name_8, " ");
+ _builder.append(" = ");
+ int _interfaceItemLocalId_1 = xpac.getInterfaceItemLocalId(sap_1);
+ int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId_1), ((Integer)1));
+ _builder.append(_operator_plus_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ {
+ EList<ServiceImplementation> _serviceImplementations_1 = ac.getServiceImplementations();
+ for(final ServiceImplementation svc_1 : _serviceImplementations_1) {
+ _builder.append("\t");
+ _builder.append("protected static final int IFITEM_");
+ SPPRef _spp_1 = svc_1.getSpp();
+ String _name_9 = _spp_1.getName();
+ _builder.append(_name_9, " ");
+ _builder.append(" = ");
+ SPPRef _spp_2 = svc_1.getSpp();
+ int _interfaceItemLocalId_2 = xpac.getInterfaceItemLocalId(_spp_2);
+ int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_interfaceItemLocalId_2), ((Integer)1));
+ _builder.append(_operator_plus_2, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ EList<Attribute> _attributes = ac.getAttributes();
+ StringConcatenation _Attributes = this.helpers.Attributes(_attributes);
+ _builder.append(_Attributes, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Operation> _operations = ac.getOperations();
+ StringConcatenation _Operations = this.helpers.Operations(_operations);
+ _builder.append(_Operations, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//--------------------- construction");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ String _name_10 = ac.getName();
+ _builder.append(_name_10, " ");
+ _builder.append("(IRTObject parent, String name, Address[][] port_addr, Address[][] peer_addr){");
+ _builder.newLineIfNotEmpty();
+ {
+ ActorClass _base_2 = ac.getBase();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_base_2, null);
+ if (_operator_equals) {
+ _builder.append("\t\t");
+ _builder.append("super(parent, name, port_addr[0][0], peer_addr[0][0]);");
+ _builder.newLine();
+ } else {
+ _builder.append("\t\t");
+ _builder.append("super(parent, name, port_addr, peer_addr);");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("setClassName(\"");
+ String _name_11 = ac.getName();
+ _builder.append(_name_11, " ");
+ _builder.append("\");");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// initialize attributes");
+ _builder.newLine();
+ {
+ EList<Attribute> _attributes_1 = ac.getAttributes();
+ for(final Attribute a : _attributes_1) {
+ {
+ String _defaultValueLiteral = a.getDefaultValueLiteral();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_defaultValueLiteral, null);
+ if (_operator_notEquals_1) {
+ _builder.append("\t\t");
+ String _name_12 = a.getName();
+ _builder.append(_name_12, " ");
+ _builder.append(" = ");
+ String _defaultValueLiteral_1 = a.getDefaultValueLiteral();
+ _builder.append(_defaultValueLiteral_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ } else {
+ Type _type = a.getType();
+ DataClass _type_1 = _type.getType();
+ boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_type_1, null);
+ if (_operator_notEquals_2) {
+ _builder.append("\t\t");
+ String _name_13 = a.getName();
+ _builder.append(_name_13, " ");
+ _builder.append(" = new ");
+ Type _type_2 = a.getType();
+ DataClass _type_3 = _type_2.getType();
+ String _name_14 = _type_3.getName();
+ _builder.append(_name_14, " ");
+ _builder.append("();");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ }
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// own ports");
+ _builder.newLine();
+ {
+ List<Port> _endPorts_2 = this.stdExt.getEndPorts(ac);
+ for(final Port ep_2 : _endPorts_2) {
+ _builder.append("\t\t");
+ String _name_15 = ep_2.getName();
+ _builder.append(_name_15, " ");
+ _builder.append(" = new ");
+ String _portClassName_3 = this.stdExt.getPortClassName(ep_2);
+ _builder.append(_portClassName_3, " ");
+ _builder.append("(this, \"");
+ String _name_16 = ep_2.getName();
+ _builder.append(_name_16, " ");
+ _builder.append("\", IFITEM_");
+ String _name_17 = ep_2.getName();
+ _builder.append(_name_17, " ");
+ _builder.append(", ");
+ {
+ int _multiplicity = ep_2.getMultiplicity();
+ boolean _operator_equals_1 = ObjectExtensions.operator_equals(((Integer)_multiplicity), ((Integer)1));
+ if (_operator_equals_1) {
+ _builder.append("0, ");
+ }
+ }
+ _builder.append("port_addr[IFITEM_");
+ String _name_18 = ep_2.getName();
+ _builder.append(_name_18, " ");
+ _builder.append("]");
+ {
+ int _multiplicity_1 = ep_2.getMultiplicity();
+ boolean _operator_equals_2 = ObjectExtensions.operator_equals(((Integer)_multiplicity_1), ((Integer)1));
+ if (_operator_equals_2) {
+ _builder.append("[0]");
+ }
+ }
+ _builder.append(", peer_addr[IFITEM_");
+ String _name_19 = ep_2.getName();
+ _builder.append(_name_19, " ");
+ _builder.append("]");
+ {
+ int _multiplicity_2 = ep_2.getMultiplicity();
+ boolean _operator_equals_3 = ObjectExtensions.operator_equals(((Integer)_multiplicity_2), ((Integer)1));
+ if (_operator_equals_3) {
+ _builder.append("[0]");
+ }
+ }
+ _builder.append("); ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("// own saps");
+ _builder.newLine();
+ {
+ EList<SAPRef> _strSAPs_2 = ac.getStrSAPs();
+ for(final SAPRef sap_2 : _strSAPs_2) {
+ _builder.append("\t\t");
+ String _name_20 = sap_2.getName();
+ _builder.append(_name_20, " ");
+ _builder.append(" = new ");
+ String _portClassName_4 = this.stdExt.getPortClassName(sap_2);
+ _builder.append(_portClassName_4, " ");
+ _builder.append("(this, \"");
+ String _name_21 = sap_2.getName();
+ _builder.append(_name_21, " ");
+ _builder.append("\", IFITEM_");
+ String _name_22 = sap_2.getName();
+ _builder.append(_name_22, " ");
+ _builder.append(", 0, port_addr[IFITEM_");
+ String _name_23 = sap_2.getName();
+ _builder.append(_name_23, " ");
+ _builder.append("][0], peer_addr[IFITEM_");
+ String _name_24 = sap_2.getName();
+ _builder.append(_name_24, " ");
+ _builder.append("][0]); ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("// own service implementations");
+ _builder.newLine();
+ {
+ EList<ServiceImplementation> _serviceImplementations_2 = ac.getServiceImplementations();
+ for(final ServiceImplementation svc_2 : _serviceImplementations_2) {
+ _builder.append("\t\t");
+ SPPRef _spp_3 = svc_2.getSpp();
+ String _name_25 = _spp_3.getName();
+ _builder.append(_name_25, " ");
+ _builder.append(" = new ");
+ String _portClassName_5 = this.stdExt.getPortClassName(svc_2);
+ _builder.append(_portClassName_5, " ");
+ _builder.append("(this, \"");
+ SPPRef _spp_4 = svc_2.getSpp();
+ String _name_26 = _spp_4.getName();
+ _builder.append(_name_26, " ");
+ _builder.append("\", IFITEM_");
+ SPPRef _spp_5 = svc_2.getSpp();
+ String _name_27 = _spp_5.getName();
+ _builder.append(_name_27, " ");
+ _builder.append(", port_addr[IFITEM_");
+ SPPRef _spp_6 = svc_2.getSpp();
+ String _name_28 = _spp_6.getName();
+ _builder.append(_name_28, " ");
+ _builder.append("], peer_addr[IFITEM_");
+ SPPRef _spp_7 = svc_2.getSpp();
+ String _name_29 = _spp_7.getName();
+ _builder.append(_name_29, " ");
+ _builder.append("]); ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//--------------------- lifecycle functions");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void init(){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("initUser();");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void start(){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("startUser();");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ {
+ boolean _overridesStop = this.stdExt.overridesStop(ac);
+ boolean _operator_not = BooleanExtensions.operator_not(_overridesStop);
+ if (_operator_not) {
+ _builder.append("\t");
+ _builder.append("public void stop(){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("stopUser();");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void destroy(){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("destroyUser();");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}\t");
+ _builder.newLine();
+ _builder.newLine();
+ {
+ StateMachine _stateMachine = ac.getStateMachine();
+ boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(_stateMachine, null);
+ if (_operator_notEquals_3) {
+ _builder.append("\t");
+ StringConcatenation _genStateMachine = this.stateMachineGen.genStateMachine(xpac, ac);
+ _builder.append(_genStateMachine, " ");
+ _builder.newLineIfNotEmpty();
+ } else {
+ boolean _hasStateMachine = xpac.hasStateMachine();
+ boolean _operator_not_1 = BooleanExtensions.operator_not(_hasStateMachine);
+ if (_operator_not_1) {
+ _builder.append("\t");
+ _builder.append("//--------------------- no state machine");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("handleSystemEvent(ifitem, evt, data);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void executeInitTransition(){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ }
+ _builder.append("};");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation msgArgs(final Message msg) {
+ StringConcatenation _builder = new StringConcatenation();
+ {
+ TypedID _data = msg.getData();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
+ if (_operator_notEquals) {
+ TypedID _data_1 = msg.getData();
+ String _defaultValue = this.stdExt.defaultValue(_data_1);
+ _builder.append(_defaultValue, "");
+ }
+ }
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java index 85c8b3fd7..0cc9e7122 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java @@ -1,258 +1,262 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import org.eclipse.emf.common.util.EList; -import org.eclipse.etrice.core.room.Attribute; -import org.eclipse.etrice.core.room.DataClass; -import org.eclipse.etrice.core.room.Import; -import org.eclipse.etrice.core.room.Operation; -import org.eclipse.etrice.core.room.RoomModel; -import org.eclipse.etrice.core.room.Type; -import org.eclipse.etrice.generator.base.ILogger; -import org.eclipse.etrice.generator.etricegen.Root; -import org.eclipse.etrice.generator.java.gen.ProcedureHelpers; -import org.eclipse.etrice.generator.java.gen.StdExtensions; -import org.eclipse.xtext.generator.JavaIoFileSystemAccess; -import org.eclipse.xtext.xbase.lib.ComparableExtensions; -import org.eclipse.xtext.xbase.lib.ObjectExtensions; -import org.eclipse.xtext.xbase.lib.StringExtensions; -import org.eclipse.xtext.xtend2.lib.StringConcatenation; - -@SuppressWarnings("all") -public class DataClassGen { - - @Inject - private JavaIoFileSystemAccess fileAccess; - - @Inject - private StdExtensions stdExt; - - @Inject - private ProcedureHelpers helpers; - - @Inject - private ILogger logger; - - public void doGenerate(final Root root) { - EList<DataClass> _usedDataClasses = root.getUsedDataClasses(); - for (DataClass dc : _usedDataClasses) { - { - String _generationTargetPath = this.stdExt.getGenerationTargetPath(dc); - String _path = this.stdExt.getPath(dc); - String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path); - String path = _operator_plus; - String _fileName = this.stdExt.getFileName(dc); - String file = _fileName; - String _operator_plus_1 = StringExtensions.operator_plus("generating DataClass implementation \'", file); - String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'"); - String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path); - String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'"); - this.logger.logInfo(_operator_plus_4); - this.fileAccess.setOutputPath(path); - StringConcatenation _generate = this.generate(root, dc); - this.fileAccess.generateFile(file, _generate); - } - } - } - - public StringConcatenation generate(final Root root, final DataClass dc) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("package "); - String _package = this.stdExt.getPackage(dc); - _builder.append(_package, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - EList<RoomModel> _referencedModels = root.getReferencedModels(dc); - EList<RoomModel> models = _referencedModels; - _builder.newLineIfNotEmpty(); - { - for(RoomModel model : models) { - _builder.append("import "); - String _name = model.getName(); - _builder.append(_name, ""); - _builder.append(".*;"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - { - EList<Import> _imports = dc.getImports(); - int _size = _imports.size(); - boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0)); - if (_operator_greaterThan) { - _builder.append("// user imports"); - _builder.newLine(); - { - EList<Import> _imports_1 = dc.getImports(); - for(Import imp : _imports_1) { - _builder.append("import "); - String _importedNamespace = imp.getImportedNamespace(); - _builder.append(_importedNamespace, ""); - _builder.append(".*;"); - _builder.newLineIfNotEmpty(); - } - } - } - } - _builder.newLine(); - _builder.append("public class "); - String _name_1 = dc.getName(); - _builder.append(_name_1, ""); - { - DataClass _base = dc.getBase(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null); - if (_operator_notEquals) { - _builder.append(" extends "); - DataClass _base_1 = dc.getBase(); - String _name_2 = _base_1.getName(); - _builder.append(_name_2, ""); - } - } - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - EList<Attribute> _attributes = dc.getAttributes(); - StringConcatenation _Attributes = this.helpers.Attributes(_attributes); - _builder.append(_Attributes, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - EList<Attribute> _attributes_1 = dc.getAttributes(); - StringConcatenation _AttributeSettersGetters = this.helpers.AttributeSettersGetters(_attributes_1); - _builder.append(_AttributeSettersGetters, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - EList<Operation> _operations = dc.getOperations(); - StringConcatenation _Operations = this.helpers.Operations(_operations); - _builder.append(_Operations, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("// default constructor"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _name_3 = dc.getName(); - _builder.append(_name_3, " "); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - { - EList<Attribute> _attributes_2 = dc.getAttributes(); - for(Attribute a : _attributes_2) { - { - String _defaultValueLiteral = a.getDefaultValueLiteral(); - boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_defaultValueLiteral, null); - if (_operator_notEquals_1) { - _builder.append("\t\t"); - { - int _size_1 = a.getSize(); - boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_size_1), ((Integer)0)); - if (_operator_equals) { - String _name_4 = a.getName(); - _builder.append(_name_4, " "); - _builder.append(" = "); - String _defaultValueLiteral_1 = a.getDefaultValueLiteral(); - _builder.append(_defaultValueLiteral_1, " "); - _builder.append(";"); - } - } - _builder.newLineIfNotEmpty();} else { - Type _type = a.getType(); - DataClass _type_1 = _type.getType(); - boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_type_1, null); - if (_operator_notEquals_2) { - _builder.append("\t\t"); - String _name_5 = a.getName(); - _builder.append(_name_5, " "); - _builder.append(" = new "); - Type _type_2 = a.getType(); - DataClass _type_3 = _type_2.getType(); - String _name_6 = _type_3.getName(); - _builder.append(_name_6, " "); - _builder.append("();"); - _builder.newLineIfNotEmpty(); - } - } - } - } - } - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("// deep copy"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _name_7 = dc.getName(); - _builder.append(_name_7, " "); - _builder.append(" deepCopy() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - String _name_8 = dc.getName(); - _builder.append(_name_8, " "); - _builder.append(" copy = new "); - String _name_9 = dc.getName(); - _builder.append(_name_9, " "); - _builder.append("();"); - _builder.newLineIfNotEmpty(); - { - EList<Attribute> _attributes_3 = dc.getAttributes(); - for(Attribute a_1 : _attributes_3) { - { - Type _type_4 = a_1.getType(); - DataClass _type_5 = _type_4.getType(); - boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(_type_5, null); - if (_operator_notEquals_3) { - _builder.append("\t\t"); - _builder.append("copy."); - String _name_10 = a_1.getName(); - _builder.append(_name_10, " "); - _builder.append(" = "); - String _name_11 = a_1.getName(); - _builder.append(_name_11, " "); - _builder.append(".deepCopy();"); - _builder.newLineIfNotEmpty();} else { - _builder.append("\t\t"); - { - int _size_2 = a_1.getSize(); - boolean _operator_equals_1 = ObjectExtensions.operator_equals(((Integer)_size_2), ((Integer)0)); - if (_operator_equals_1) { - _builder.append("copy."); - String _name_12 = a_1.getName(); - _builder.append(_name_12, " "); - _builder.append(" = "); - String _name_13 = a_1.getName(); - _builder.append(_name_13, " "); - _builder.append(";");} else { - _builder.append("for (int i=0;i<"); - int _size_3 = a_1.getSize(); - _builder.append(_size_3, " "); - _builder.append(";i++){copy."); - String _name_14 = a_1.getName(); - _builder.append(_name_14, " "); - _builder.append("[i]="); - String _name_15 = a_1.getName(); - _builder.append(_name_15, " "); - _builder.append("[i];}"); - } - } - _builder.newLineIfNotEmpty(); - } - } - } - } - _builder.append("\t\t"); - _builder.append("return copy;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("};"); - _builder.newLine(); - return _builder; - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.Import;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.ComparableExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class DataClassGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ProcedureHelpers helpers;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<DataClass> _usedDataClasses = root.getUsedDataClasses();
+ for (final DataClass dc : _usedDataClasses) {
+ {
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(dc);
+ String _path = this.stdExt.getPath(dc);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ String _fileName = this.stdExt.getFileName(dc);
+ String file = _fileName;
+ String _operator_plus_1 = StringExtensions.operator_plus("generating DataClass implementation \'", file);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
+ this.logger.logInfo(_operator_plus_4);
+ this.fileAccess.setOutputPath(path);
+ StringConcatenation _generate = this.generate(root, dc);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final DataClass dc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(dc);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ EList<RoomModel> _referencedModels = root.getReferencedModels(dc);
+ EList<RoomModel> models = _referencedModels;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final RoomModel model : models) {
+ _builder.append("import ");
+ String _name = model.getName();
+ _builder.append(_name, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ {
+ EList<Import> _imports = dc.getImports();
+ int _size = _imports.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ if (_operator_greaterThan) {
+ _builder.append("// user imports");
+ _builder.newLine();
+ {
+ EList<Import> _imports_1 = dc.getImports();
+ for(final Import imp : _imports_1) {
+ _builder.append("import ");
+ String _importedNamespace = imp.getImportedNamespace();
+ _builder.append(_importedNamespace, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ _builder.newLine();
+ _builder.append("public class ");
+ String _name_1 = dc.getName();
+ _builder.append(_name_1, "");
+ {
+ DataClass _base = dc.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals) {
+ _builder.append(" extends ");
+ DataClass _base_1 = dc.getBase();
+ String _name_2 = _base_1.getName();
+ _builder.append(_name_2, "");
+ }
+ }
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Attribute> _attributes = dc.getAttributes();
+ StringConcatenation _Attributes = this.helpers.Attributes(_attributes);
+ _builder.append(_Attributes, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Attribute> _attributes_1 = dc.getAttributes();
+ StringConcatenation _AttributeSettersGetters = this.helpers.AttributeSettersGetters(_attributes_1);
+ _builder.append(_AttributeSettersGetters, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Operation> _operations = dc.getOperations();
+ StringConcatenation _Operations = this.helpers.Operations(_operations);
+ _builder.append(_Operations, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// default constructor");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ String _name_3 = dc.getName();
+ _builder.append(_name_3, " ");
+ _builder.append("() {");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<Attribute> _attributes_2 = dc.getAttributes();
+ for(final Attribute a : _attributes_2) {
+ {
+ String _defaultValueLiteral = a.getDefaultValueLiteral();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_defaultValueLiteral, null);
+ if (_operator_notEquals_1) {
+ _builder.append("\t\t");
+ {
+ int _size_1 = a.getSize();
+ boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_size_1), ((Integer)0));
+ if (_operator_equals) {
+ String _name_4 = a.getName();
+ _builder.append(_name_4, " ");
+ _builder.append(" = ");
+ String _defaultValueLiteral_1 = a.getDefaultValueLiteral();
+ _builder.append(_defaultValueLiteral_1, " ");
+ _builder.append(";");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ } else {
+ Type _type = a.getType();
+ DataClass _type_1 = _type.getType();
+ boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_type_1, null);
+ if (_operator_notEquals_2) {
+ _builder.append("\t\t");
+ String _name_5 = a.getName();
+ _builder.append(_name_5, " ");
+ _builder.append(" = new ");
+ Type _type_2 = a.getType();
+ DataClass _type_3 = _type_2.getType();
+ String _name_6 = _type_3.getName();
+ _builder.append(_name_6, " ");
+ _builder.append("();");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ }
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// deep copy");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ String _name_7 = dc.getName();
+ _builder.append(_name_7, " ");
+ _builder.append(" deepCopy() {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ String _name_8 = dc.getName();
+ _builder.append(_name_8, " ");
+ _builder.append(" copy = new ");
+ String _name_9 = dc.getName();
+ _builder.append(_name_9, " ");
+ _builder.append("();");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<Attribute> _attributes_3 = dc.getAttributes();
+ for(final Attribute a_1 : _attributes_3) {
+ {
+ Type _type_4 = a_1.getType();
+ DataClass _type_5 = _type_4.getType();
+ boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(_type_5, null);
+ if (_operator_notEquals_3) {
+ _builder.append("\t\t");
+ _builder.append("copy.");
+ String _name_10 = a_1.getName();
+ _builder.append(_name_10, " ");
+ _builder.append(" = ");
+ String _name_11 = a_1.getName();
+ _builder.append(_name_11, " ");
+ _builder.append(".deepCopy();");
+ _builder.newLineIfNotEmpty();
+ } else {
+ _builder.append("\t\t");
+ {
+ int _size_2 = a_1.getSize();
+ boolean _operator_equals_1 = ObjectExtensions.operator_equals(((Integer)_size_2), ((Integer)0));
+ if (_operator_equals_1) {
+ _builder.append("copy.");
+ String _name_12 = a_1.getName();
+ _builder.append(_name_12, " ");
+ _builder.append(" = ");
+ String _name_13 = a_1.getName();
+ _builder.append(_name_13, " ");
+ _builder.append(";");
+ } else {
+ _builder.append("for (int i=0;i<");
+ int _size_3 = a_1.getSize();
+ _builder.append(_size_3, " ");
+ _builder.append(";i++){copy.");
+ String _name_14 = a_1.getName();
+ _builder.append(_name_14, " ");
+ _builder.append("[i]=");
+ String _name_15 = a_1.getName();
+ _builder.append(_name_15, " ");
+ _builder.append("[i];}");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("return copy;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("};");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.java index ace9cac8b..d8d550da8 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/InstanceDiagramGen.java @@ -1,133 +1,134 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.etrice.core.room.ActorClass; -import org.eclipse.etrice.core.room.SubSystemClass; -import org.eclipse.etrice.generator.base.ILogger; -import org.eclipse.etrice.generator.base.IRoomGenerator; -import org.eclipse.etrice.generator.etricegen.ActorInstance; -import org.eclipse.etrice.generator.etricegen.Root; -import org.eclipse.etrice.generator.etricegen.StructureInstance; -import org.eclipse.etrice.generator.etricegen.SubSystemInstance; -import org.eclipse.etrice.generator.java.gen.StdExtensions; -import org.eclipse.xtext.generator.JavaIoFileSystemAccess; -import org.eclipse.xtext.xbase.lib.StringExtensions; -import org.eclipse.xtext.xtend2.lib.StringConcatenation; - -@SuppressWarnings("all") -public class InstanceDiagramGen implements IRoomGenerator { - - @Inject - private JavaIoFileSystemAccess fileAccess; - - @Inject - private StdExtensions stdExt; - - @Inject - private ILogger logger; - - public void doGenerate(final Root root) { - EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances(); - for (SubSystemInstance sc : _subSystemInstances) { - { - SubSystemClass _subSystemClass = sc.getSubSystemClass(); - String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass); - SubSystemClass _subSystemClass_1 = sc.getSubSystemClass(); - String _path = this.stdExt.getPath(_subSystemClass_1); - String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path); - String path = _operator_plus; - SubSystemClass _subSystemClass_2 = sc.getSubSystemClass(); - String _name = _subSystemClass_2.getName(); - String _operator_plus_1 = StringExtensions.operator_plus(_name, ".dot"); - String file = _operator_plus_1; - String _operator_plus_2 = StringExtensions.operator_plus("generating instance diagram: \'", file); - String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, "\' in \'"); - String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, path); - String _operator_plus_5 = StringExtensions.operator_plus(_operator_plus_4, "\'"); - this.logger.logInfo(_operator_plus_5); - this.fileAccess.setOutputPath(path); - SubSystemClass _subSystemClass_3 = sc.getSubSystemClass(); - StringConcatenation _generate = this.generate(root, sc, _subSystemClass_3); - this.fileAccess.generateFile(file, _generate); - } - } - } - - public StringConcatenation generate(final Root root, final SubSystemInstance ssc, final SubSystemClass cc) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("digraph "); - String _name = ssc.getName(); - _builder.append(_name, ""); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("rankdir=LR;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("node [shape=box];"); - _builder.newLine(); - _builder.append("\t"); - String _path = this.stdExt.getPath(cc); - String _pathName = this.stdExt.getPathName(_path); - _builder.append(_pathName, " "); - _builder.append(" [label=\""); - String _name_1 = cc.getName(); - _builder.append(_name_1, " "); - _builder.append("\\n("); - String _name_2 = ssc.getName(); - _builder.append(_name_2, " "); - _builder.append(")\" style=filled color=yellow];"); - _builder.newLineIfNotEmpty(); - { - EList<ActorInstance> _instances = ssc.getInstances(); - for(ActorInstance ai : _instances) { - _builder.append("\t"); - StringConcatenation _instance = this.instance(ai); - _builder.append(_instance, " "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("}"); - _builder.newLine(); - return _builder; - } - - public StringConcatenation instance(final ActorInstance ai) { - StringConcatenation _builder = new StringConcatenation(); - EObject _eContainer = ai.eContainer(); - StructureInstance parent = ((StructureInstance) _eContainer); - _builder.newLineIfNotEmpty(); - String _path = ai.getPath(); - String _pathName = this.stdExt.getPathName(_path); - _builder.append(_pathName, ""); - _builder.append(" [label=\""); - String _name = ai.getName(); - _builder.append(_name, ""); - _builder.append("\\n("); - ActorClass _actorClass = ai.getActorClass(); - String _name_1 = _actorClass.getName(); - _builder.append(_name_1, ""); - _builder.append(")\"];"); - _builder.newLineIfNotEmpty(); - String _path_1 = parent.getPath(); - String _pathName_1 = this.stdExt.getPathName(_path_1); - _builder.append(_pathName_1, ""); - _builder.append(" -> "); - String _path_2 = ai.getPath(); - String _pathName_2 = this.stdExt.getPathName(_path_2); - _builder.append(_pathName_2, ""); - _builder.append("; "); - _builder.newLineIfNotEmpty(); - { - EList<ActorInstance> _instances = ai.getInstances(); - for(ActorInstance sub_ai : _instances) { - StringConcatenation _instance = this.instance(sub_ai); - _builder.append(_instance, ""); - _builder.newLineIfNotEmpty(); - } - } - return _builder; - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.base.IRoomGenerator;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.StructureInstance;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class InstanceDiagramGen implements IRoomGenerator {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
+ for (final SubSystemInstance sc : _subSystemInstances) {
+ {
+ SubSystemClass _subSystemClass = sc.getSubSystemClass();
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass);
+ SubSystemClass _subSystemClass_1 = sc.getSubSystemClass();
+ String _path = this.stdExt.getPath(_subSystemClass_1);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ SubSystemClass _subSystemClass_2 = sc.getSubSystemClass();
+ String _name = _subSystemClass_2.getName();
+ String _operator_plus_1 = StringExtensions.operator_plus(_name, ".dot");
+ String file = _operator_plus_1;
+ String _operator_plus_2 = StringExtensions.operator_plus("generating instance diagram: \'", file);
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, "\' in \'");
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, path);
+ String _operator_plus_5 = StringExtensions.operator_plus(_operator_plus_4, "\'");
+ this.logger.logInfo(_operator_plus_5);
+ this.fileAccess.setOutputPath(path);
+ SubSystemClass _subSystemClass_3 = sc.getSubSystemClass();
+ StringConcatenation _generate = this.generate(root, sc, _subSystemClass_3);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final SubSystemInstance ssc, final SubSystemClass cc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("digraph ");
+ String _name = ssc.getName();
+ _builder.append(_name, "");
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("rankdir=LR;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("node [shape=box];");
+ _builder.newLine();
+ _builder.append("\t");
+ String _path = this.stdExt.getPath(cc);
+ String _pathName = this.stdExt.getPathName(_path);
+ _builder.append(_pathName, " ");
+ _builder.append(" [label=\"");
+ String _name_1 = cc.getName();
+ _builder.append(_name_1, " ");
+ _builder.append("\\n(");
+ String _name_2 = ssc.getName();
+ _builder.append(_name_2, " ");
+ _builder.append(")\" style=filled color=yellow];");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<ActorInstance> _instances = ssc.getInstances();
+ for(final ActorInstance ai : _instances) {
+ _builder.append("\t");
+ StringConcatenation _instance = this.instance(ai);
+ _builder.append(_instance, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation instance(final ActorInstance ai) {
+ StringConcatenation _builder = new StringConcatenation();
+ EObject _eContainer = ai.eContainer();
+ StructureInstance parent = ((StructureInstance) _eContainer);
+ _builder.newLineIfNotEmpty();
+ String _path = ai.getPath();
+ String _pathName = this.stdExt.getPathName(_path);
+ _builder.append(_pathName, "");
+ _builder.append(" [label=\"");
+ String _name = ai.getName();
+ _builder.append(_name, "");
+ _builder.append("\\n(");
+ ActorClass _actorClass = ai.getActorClass();
+ String _name_1 = _actorClass.getName();
+ _builder.append(_name_1, "");
+ _builder.append(")\"];");
+ _builder.newLineIfNotEmpty();
+ String _path_1 = parent.getPath();
+ String _pathName_1 = this.stdExt.getPathName(_path_1);
+ _builder.append(_pathName_1, "");
+ _builder.append(" -> ");
+ String _path_2 = ai.getPath();
+ String _pathName_2 = this.stdExt.getPathName(_path_2);
+ _builder.append(_pathName_2, "");
+ _builder.append("; ");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<ActorInstance> _instances = ai.getInstances();
+ for(final ActorInstance sub_ai : _instances) {
+ StringConcatenation _instance = this.instance(sub_ai);
+ _builder.append(_instance, "");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java index 1cea86fda..9a8780627 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java @@ -1,64 +1,61 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.etrice.generator.etricegen.Root; -import org.eclipse.etrice.generator.java.gen.ActorClassGen; -import org.eclipse.etrice.generator.java.gen.DataClassGen; -import org.eclipse.etrice.generator.java.gen.PrepareFileSystem; -import org.eclipse.etrice.generator.java.gen.ProtocolClassGen; -import org.eclipse.etrice.generator.java.gen.SubSystemClassGen; -import org.eclipse.etrice.generator.java.gen.SubSystemRunnerGen; -import org.eclipse.xtext.generator.IFileSystemAccess; -import org.eclipse.xtext.generator.IGenerator; -import org.eclipse.xtext.xbase.lib.BooleanExtensions; - -@SuppressWarnings("all") -public class MainGen implements IGenerator { - - @Inject - private DataClassGen dataClassGen; - - @Inject - private ProtocolClassGen protocolClassGen; - - @Inject - private ActorClassGen actorClassGen; - - @Inject - private SubSystemClassGen subsystemClassGen; - - @Inject - private SubSystemRunnerGen subsystemRunnerGen; - - @Inject - private PrepareFileSystem prepFS; - - public void doGenerate(final Resource resource, final IFileSystemAccess fsa) { - { - this.prepFS.prepare(resource); - EList<EObject> _contents = resource.getContents(); - for (EObject e : _contents) { - if ((e instanceof org.eclipse.etrice.generator.etricegen.Root)) { - this.doGenerate(((Root) e)); - } - } - } - } - - public void doGenerate(final Root e) { - { - this.dataClassGen.doGenerate(e); - this.protocolClassGen.doGenerate(e); - this.actorClassGen.doGenerate(e); - this.subsystemClassGen.doGenerate(e); - boolean _isLibrary = e.isLibrary(); - boolean _operator_not = BooleanExtensions.operator_not(_isLibrary); - if (_operator_not) { - this.subsystemRunnerGen.doGenerate(e); - } - } - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.ActorClassGen;
+import org.eclipse.etrice.generator.java.gen.DataClassGen;
+import org.eclipse.etrice.generator.java.gen.PrepareFileSystem;
+import org.eclipse.etrice.generator.java.gen.ProtocolClassGen;
+import org.eclipse.etrice.generator.java.gen.SubSystemClassGen;
+import org.eclipse.etrice.generator.java.gen.SubSystemRunnerGen;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+
+@SuppressWarnings("all")
+@Singleton
+public class MainGen implements IGenerator {
+ @Inject
+ private DataClassGen dataClassGen;
+
+ @Inject
+ private ProtocolClassGen protocolClassGen;
+
+ @Inject
+ private ActorClassGen actorClassGen;
+
+ @Inject
+ private SubSystemClassGen subsystemClassGen;
+
+ @Inject
+ private SubSystemRunnerGen subsystemRunnerGen;
+
+ @Inject
+ private PrepareFileSystem prepFS;
+
+ public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
+ this.prepFS.prepare(resource);
+ EList<EObject> _contents = resource.getContents();
+ for (final EObject e : _contents) {
+ if ((e instanceof Root)) {
+ this.doGenerate(((Root) e));
+ }
+ }
+ }
+
+ public void doGenerate(final Root e) {
+ this.dataClassGen.doGenerate(e);
+ this.protocolClassGen.doGenerate(e);
+ this.actorClassGen.doGenerate(e);
+ this.subsystemClassGen.doGenerate(e);
+ boolean _isLibrary = e.isLibrary();
+ boolean _operator_not = BooleanExtensions.operator_not(_isLibrary);
+ if (_operator_not) {
+ this.subsystemRunnerGen.doGenerate(e);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.java index 8827e80ed..6b694ed7c 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/PrepareFileSystem.java @@ -1,86 +1,85 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import java.io.File; -import java.util.HashSet; -import java.util.Set; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.etrice.core.room.RoomModel; -import org.eclipse.etrice.generator.base.ILogger; -import org.eclipse.etrice.generator.etricegen.Root; -import org.eclipse.etrice.generator.java.gen.StdExtensions; -import org.eclipse.xtext.generator.JavaIoFileSystemAccess; -import org.eclipse.xtext.xbase.lib.StringExtensions; -import org.eclipse.xtext.xtend2.lib.StringConcatenation; - -@SuppressWarnings("all") -public class PrepareFileSystem { - - @Inject - private StdExtensions stdExt; - - @Inject - private JavaIoFileSystemAccess fileAccess; - - @Inject - private ILogger logger; - - public void prepare(final Resource resource) { - { - HashSet<String> _hashSet = new HashSet<String>(); - Set<String> pathes = _hashSet; - EList<EObject> _contents = resource.getContents(); - for (EObject e : _contents) { - if ((e instanceof org.eclipse.etrice.generator.etricegen.Root)) { - EList<RoomModel> _usedRoomModels = ((Root) e).getUsedRoomModels(); - for (RoomModel mdl : _usedRoomModels) { - String _generationTargetPath = this.stdExt.getGenerationTargetPath(mdl); - pathes.add(_generationTargetPath); - } - } - } - for (String path : pathes) { - { - String _operator_plus = StringExtensions.operator_plus("clearing ", path); - this.logger.logInfo(_operator_plus); - File _file = new File(path); - File f = _file; - this.eraseContents(f); - this.fileAccess.setOutputPath(path); - StringConcatenation _readmeText = this.readmeText(); - this.fileAccess.generateFile("readme.txt", _readmeText); - } - } - } - } - - public void eraseContents(final File f) { - boolean _isDirectory = f.isDirectory(); - if (_isDirectory) { - { - File[] _listFiles = f.listFiles(); - File[] children = _listFiles; - for (File child : children) { - { - this.eraseContents(child); - child.delete(); - } - } - } - } - } - - public StringConcatenation readmeText() { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("This directory is an eTrice code generation target."); - _builder.newLine(); - _builder.append("It will be erased every time the generator is executed."); - _builder.newLine(); - _builder.newLine(); - _builder.append("DO NOT PLACE OTHER FILES HERE!"); - _builder.newLine(); - return _builder; - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class PrepareFileSystem {
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private ILogger logger;
+
+ public void prepare(final Resource resource) {
+ HashSet<String> _hashSet = new HashSet<String>();
+ Set<String> pathes = _hashSet;
+ EList<EObject> _contents = resource.getContents();
+ for (final EObject e : _contents) {
+ if ((e instanceof Root)) {
+ EList<RoomModel> _usedRoomModels = ((Root) e).getUsedRoomModels();
+ for (final RoomModel mdl : _usedRoomModels) {
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(mdl);
+ pathes.add(_generationTargetPath);
+ }
+ }
+ }
+ for (final String path : pathes) {
+ {
+ String _operator_plus = StringExtensions.operator_plus("clearing ", path);
+ this.logger.logInfo(_operator_plus);
+ File _file = new File(path);
+ File f = _file;
+ this.eraseContents(f);
+ this.fileAccess.setOutputPath(path);
+ StringConcatenation _readmeText = this.readmeText();
+ this.fileAccess.generateFile("readme.txt", _readmeText);
+ }
+ }
+ }
+
+ public void eraseContents(final File f) {
+ boolean _isDirectory = f.isDirectory();
+ if (_isDirectory) {
+ {
+ File[] _listFiles = f.listFiles();
+ File[] children = _listFiles;
+ for (final File child : children) {
+ {
+ this.eraseContents(child);
+ child.delete();
+ }
+ }
+ }
+ }
+ }
+
+ public StringConcatenation readmeText() {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("This directory is an eTrice code generation target.");
+ _builder.newLine();
+ _builder.append("It will be erased every time the generator is executed.");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("DO NOT PLACE OTHER FILES HERE!");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.java index afdb5bce7..8dc9f347c 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProcedureHelpers.java @@ -1,296 +1,303 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import java.util.List; -import org.eclipse.emf.common.util.EList; -import org.eclipse.etrice.core.room.ActorClass; -import org.eclipse.etrice.core.room.Attribute; -import org.eclipse.etrice.core.room.DetailCode; -import org.eclipse.etrice.core.room.ExternalPort; -import org.eclipse.etrice.core.room.FreeType; -import org.eclipse.etrice.core.room.FreeTypedID; -import org.eclipse.etrice.core.room.Operation; -import org.eclipse.etrice.core.room.Port; -import org.eclipse.etrice.core.room.ProtocolClass; -import org.eclipse.etrice.core.room.Type; -import org.eclipse.etrice.generator.java.gen.StdExtensions; -import org.eclipse.xtext.xbase.lib.ComparableExtensions; -import org.eclipse.xtext.xbase.lib.ObjectExtensions; -import org.eclipse.xtext.xbase.lib.StringExtensions; -import org.eclipse.xtext.xtend2.lib.StringConcatenation; - -@SuppressWarnings("all") -public class ProcedureHelpers { - - @Inject - private StdExtensions stdExt; - - public StringConcatenation ActorClassPortIF(final ActorClass ac) { - StringConcatenation _builder = new StringConcatenation(); - { - EList<ExternalPort> _extPorts = ac.getExtPorts(); - int _size = _extPorts.size(); - boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0)); - if (_operator_greaterThan) { - _builder.append("implements"); - } - } - _builder.newLineIfNotEmpty(); - { - EList<ExternalPort> _extPorts_1 = ac.getExtPorts(); - for(ExternalPort ep : _extPorts_1) { - _builder.append("public "); - Port _ifport = ep.getIfport(); - ProtocolClass _protocol = _ifport.getProtocol(); - String _name = _protocol.getName(); - _builder.append(_name, ""); - { - Port _ifport_1 = ep.getIfport(); - boolean _isConjugated = _ifport_1.isConjugated(); - boolean _operator_equals = ObjectExtensions.operator_equals(((Boolean)_isConjugated), ((Boolean)true)); - if (_operator_equals) { - _builder.append("Conj"); - } - } - _builder.append("Port "); - Port _ifport_2 = ep.getIfport(); - String _name_1 = _ifport_2.getName(); - _builder.append(_name_1, ""); - _builder.append(" = null; "); - _builder.newLineIfNotEmpty(); - } - } - return _builder; - } - - public StringConcatenation UserCode(final DetailCode dc) { - StringConcatenation _builder = new StringConcatenation(); - { - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(dc, null); - if (_operator_notEquals) { - _builder.append("//--------------------- begin user code"); - _builder.newLine(); - _builder.append("\t"); - { - EList<String> _commands = dc.getCommands(); - for(String command : _commands) { - _builder.append("\t"); - _builder.append(command, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - } - } - _builder.append("//--------------------- end user code"); - _builder.newLineIfNotEmpty(); - } - } - return _builder; - } - - public StringConcatenation Attributes(final List<Attribute> attribs) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("//--------------------- attributes"); - _builder.newLine(); - { - for(Attribute attribute : attribs) { - { - int _size = attribute.getSize(); - boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_size), ((Integer)0)); - if (_operator_equals) { - _builder.append("protected "); - { - Type _type = attribute.getType(); - String _ext = _type.getExt(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_ext, null); - if (_operator_notEquals) { - Type _type_1 = attribute.getType(); - String _ext_1 = _type_1.getExt(); - _builder.append(_ext_1, "");} else { - Type _type_2 = attribute.getType(); - String _typeName = this.stdExt.typeName(_type_2); - _builder.append(_typeName, ""); - } - } - _builder.append(" "); - String _name = attribute.getName(); - _builder.append(_name, ""); - _builder.append(";");} else { - _builder.append("protected "); - Type _type_3 = attribute.getType(); - String _typeName_1 = this.stdExt.typeName(_type_3); - _builder.append(_typeName_1, ""); - _builder.append("[] "); - String _name_1 = attribute.getName(); - _builder.append(_name_1, ""); - { - String _defaultValueLiteral = attribute.getDefaultValueLiteral(); - boolean _operator_equals_1 = ObjectExtensions.operator_equals(_defaultValueLiteral, null); - if (_operator_equals_1) { - _builder.append(" =new "); - Type _type_4 = attribute.getType(); - String _typeName_2 = this.stdExt.typeName(_type_4); - _builder.append(_typeName_2, ""); - _builder.append("["); - int _size_1 = attribute.getSize(); - _builder.append(_size_1, ""); - _builder.append("];");} else { - _builder.append(" = "); - String _defaultValueLiteral_1 = attribute.getDefaultValueLiteral(); - _builder.append(_defaultValueLiteral_1, ""); - _builder.append(";"); - } - } - _builder.newLineIfNotEmpty(); - } - } - } - } - return _builder; - } - - public StringConcatenation AttributeSettersGetters(final List<Attribute> attribs) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("//--------------------- attribute setters and getters"); - _builder.newLine(); - { - for(Attribute attribute : attribs) { - _builder.append("public void set"); - String _name = attribute.getName(); - String _firstUpper = StringExtensions.toFirstUpper(_name); - _builder.append(_firstUpper, ""); - _builder.append(" ("); - { - Type _type = attribute.getType(); - String _ext = _type.getExt(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_ext, null); - if (_operator_notEquals) { - _builder.append(" "); - Type _type_1 = attribute.getType(); - String _ext_1 = _type_1.getExt(); - _builder.append(_ext_1, "");} else { - Type _type_2 = attribute.getType(); - String _typeName = this.stdExt.typeName(_type_2); - _builder.append(_typeName, ""); - } - } - { - int _size = attribute.getSize(); - boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(((Integer)_size), ((Integer)0)); - if (_operator_notEquals_1) { - _builder.append("[]"); - } - } - _builder.append(" "); - String _name_1 = attribute.getName(); - _builder.append(_name_1, ""); - _builder.append(") {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t "); - _builder.append("this."); - String _name_2 = attribute.getName(); - _builder.append(_name_2, " "); - _builder.append(" = "); - String _name_3 = attribute.getName(); - _builder.append(_name_3, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - _builder.append("public "); - { - Type _type_3 = attribute.getType(); - String _ext_2 = _type_3.getExt(); - boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_ext_2, null); - if (_operator_notEquals_2) { - _builder.append(" "); - Type _type_4 = attribute.getType(); - String _ext_3 = _type_4.getExt(); - _builder.append(_ext_3, "");} else { - Type _type_5 = attribute.getType(); - String _typeName_1 = this.stdExt.typeName(_type_5); - _builder.append(_typeName_1, ""); - } - } - { - int _size_1 = attribute.getSize(); - boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(((Integer)_size_1), ((Integer)0)); - if (_operator_notEquals_3) { - _builder.append("[]"); - } - } - _builder.append(" get"); - String _name_4 = attribute.getName(); - String _firstUpper_1 = StringExtensions.toFirstUpper(_name_4); - _builder.append(_firstUpper_1, ""); - _builder.append(" () {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("return "); - String _name_5 = attribute.getName(); - _builder.append(_name_5, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - } - } - _builder.newLineIfNotEmpty(); - return _builder; - } - - public StringConcatenation Operations(final List<Operation> operations) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("//--------------------- operations"); - _builder.newLine(); - { - for(Operation operation : operations) { - _builder.append("public "); - { - FreeType _returntype = operation.getReturntype(); - boolean _operator_equals = ObjectExtensions.operator_equals(_returntype, null); - if (_operator_equals) { - _builder.append("void");} else { - FreeType _returntype_1 = operation.getReturntype(); - String _freeTypeName = this.stdExt.freeTypeName(_returntype_1); - _builder.append(_freeTypeName, ""); - } - } - _builder.append(" "); - String _name = operation.getName(); - _builder.append(_name, ""); - _builder.append(" ("); - { - EList<FreeTypedID> _arguments = operation.getArguments(); - boolean hasAnyElements = false; - for(FreeTypedID argument : _arguments) { - if (!hasAnyElements) { - hasAnyElements = true; - } else { - _builder.appendImmediate(", ", ""); - } - FreeType _type = argument.getType(); - String _freeTypeName_1 = this.stdExt.freeTypeName(_type); - _builder.append(_freeTypeName_1, ""); - _builder.append(" "); - String _name_1 = argument.getName(); - _builder.append(_name_1, ""); - } - } - _builder.append("){"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - { - DetailCode _detailCode = operation.getDetailCode(); - EList<String> _commands = _detailCode.getCommands(); - for(String command : _commands) { - _builder.append("\t"); - _builder.append(command, " "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("}"); - } - } - _builder.newLineIfNotEmpty(); - return _builder; - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.FreeTypedID;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.xbase.lib.ComparableExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class ProcedureHelpers {
+ @Inject
+ private StdExtensions stdExt;
+
+ public StringConcatenation ActorClassPortIF(final ActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ {
+ EList<ExternalPort> _extPorts = ac.getExtPorts();
+ int _size = _extPorts.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ if (_operator_greaterThan) {
+ _builder.append("implements");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ EList<ExternalPort> _extPorts_1 = ac.getExtPorts();
+ for(final ExternalPort ep : _extPorts_1) {
+ _builder.append("public ");
+ Port _ifport = ep.getIfport();
+ ProtocolClass _protocol = _ifport.getProtocol();
+ String _name = _protocol.getName();
+ _builder.append(_name, "");
+ {
+ Port _ifport_1 = ep.getIfport();
+ boolean _isConjugated = _ifport_1.isConjugated();
+ boolean _operator_equals = ObjectExtensions.operator_equals(((Boolean)_isConjugated), ((Boolean)true));
+ if (_operator_equals) {
+ _builder.append("Conj");
+ }
+ }
+ _builder.append("Port ");
+ Port _ifport_2 = ep.getIfport();
+ String _name_1 = _ifport_2.getName();
+ _builder.append(_name_1, "");
+ _builder.append(" = null; ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ return _builder;
+ }
+
+ public StringConcatenation UserCode(final DetailCode dc) {
+ StringConcatenation _builder = new StringConcatenation();
+ {
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(dc, null);
+ if (_operator_notEquals) {
+ _builder.append("//--------------------- begin user code");
+ _builder.newLine();
+ _builder.append("\t");
+ {
+ EList<String> _commands = dc.getCommands();
+ for(final String command : _commands) {
+ _builder.append("\t");
+ _builder.append(command, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ }
+ }
+ _builder.append("//--------------------- end user code");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ return _builder;
+ }
+
+ public StringConcatenation Attributes(final List<Attribute> attribs) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("//--------------------- attributes");
+ _builder.newLine();
+ {
+ for(final Attribute attribute : attribs) {
+ {
+ int _size = attribute.getSize();
+ boolean _operator_equals = ObjectExtensions.operator_equals(((Integer)_size), ((Integer)0));
+ if (_operator_equals) {
+ _builder.append("protected ");
+ {
+ Type _type = attribute.getType();
+ String _ext = _type.getExt();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_ext, null);
+ if (_operator_notEquals) {
+ Type _type_1 = attribute.getType();
+ String _ext_1 = _type_1.getExt();
+ _builder.append(_ext_1, "");
+ } else {
+ Type _type_2 = attribute.getType();
+ String _typeName = this.stdExt.typeName(_type_2);
+ _builder.append(_typeName, "");
+ }
+ }
+ _builder.append(" ");
+ String _name = attribute.getName();
+ _builder.append(_name, "");
+ _builder.append(";");
+ } else {
+ _builder.append("protected ");
+ Type _type_3 = attribute.getType();
+ String _typeName_1 = this.stdExt.typeName(_type_3);
+ _builder.append(_typeName_1, "");
+ _builder.append("[] ");
+ String _name_1 = attribute.getName();
+ _builder.append(_name_1, "");
+ {
+ String _defaultValueLiteral = attribute.getDefaultValueLiteral();
+ boolean _operator_equals_1 = ObjectExtensions.operator_equals(_defaultValueLiteral, null);
+ if (_operator_equals_1) {
+ _builder.append(" =new ");
+ Type _type_4 = attribute.getType();
+ String _typeName_2 = this.stdExt.typeName(_type_4);
+ _builder.append(_typeName_2, "");
+ _builder.append("[");
+ int _size_1 = attribute.getSize();
+ _builder.append(_size_1, "");
+ _builder.append("];");
+ } else {
+ _builder.append(" = ");
+ String _defaultValueLiteral_1 = attribute.getDefaultValueLiteral();
+ _builder.append(_defaultValueLiteral_1, "");
+ _builder.append(";");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ return _builder;
+ }
+
+ public StringConcatenation AttributeSettersGetters(final List<Attribute> attribs) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("//--------------------- attribute setters and getters");
+ _builder.newLine();
+ {
+ for(final Attribute attribute : attribs) {
+ _builder.append("public void set");
+ String _name = attribute.getName();
+ String _firstUpper = StringExtensions.toFirstUpper(_name);
+ _builder.append(_firstUpper, "");
+ _builder.append(" (");
+ {
+ Type _type = attribute.getType();
+ String _ext = _type.getExt();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_ext, null);
+ if (_operator_notEquals) {
+ _builder.append(" ");
+ Type _type_1 = attribute.getType();
+ String _ext_1 = _type_1.getExt();
+ _builder.append(_ext_1, "");
+ } else {
+ Type _type_2 = attribute.getType();
+ String _typeName = this.stdExt.typeName(_type_2);
+ _builder.append(_typeName, "");
+ }
+ }
+ {
+ int _size = attribute.getSize();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(((Integer)_size), ((Integer)0));
+ if (_operator_notEquals_1) {
+ _builder.append("[]");
+ }
+ }
+ _builder.append(" ");
+ String _name_1 = attribute.getName();
+ _builder.append(_name_1, "");
+ _builder.append(") {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t ");
+ _builder.append("this.");
+ String _name_2 = attribute.getName();
+ _builder.append(_name_2, " ");
+ _builder.append(" = ");
+ String _name_3 = attribute.getName();
+ _builder.append(_name_3, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("public ");
+ {
+ Type _type_3 = attribute.getType();
+ String _ext_2 = _type_3.getExt();
+ boolean _operator_notEquals_2 = ObjectExtensions.operator_notEquals(_ext_2, null);
+ if (_operator_notEquals_2) {
+ _builder.append(" ");
+ Type _type_4 = attribute.getType();
+ String _ext_3 = _type_4.getExt();
+ _builder.append(_ext_3, "");
+ } else {
+ Type _type_5 = attribute.getType();
+ String _typeName_1 = this.stdExt.typeName(_type_5);
+ _builder.append(_typeName_1, "");
+ }
+ }
+ {
+ int _size_1 = attribute.getSize();
+ boolean _operator_notEquals_3 = ObjectExtensions.operator_notEquals(((Integer)_size_1), ((Integer)0));
+ if (_operator_notEquals_3) {
+ _builder.append("[]");
+ }
+ }
+ _builder.append(" get");
+ String _name_4 = attribute.getName();
+ String _firstUpper_1 = StringExtensions.toFirstUpper(_name_4);
+ _builder.append(_firstUpper_1, "");
+ _builder.append(" () {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("return ");
+ String _name_5 = attribute.getName();
+ _builder.append(_name_5, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ return _builder;
+ }
+
+ public StringConcatenation Operations(final List<Operation> operations) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("//--------------------- operations");
+ _builder.newLine();
+ {
+ for(final Operation operation : operations) {
+ _builder.append("public ");
+ {
+ FreeType _returntype = operation.getReturntype();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_returntype, null);
+ if (_operator_equals) {
+ _builder.append("void");
+ } else {
+ FreeType _returntype_1 = operation.getReturntype();
+ String _freeTypeName = this.stdExt.freeTypeName(_returntype_1);
+ _builder.append(_freeTypeName, "");
+ }
+ }
+ _builder.append(" ");
+ String _name = operation.getName();
+ _builder.append(_name, "");
+ _builder.append(" (");
+ {
+ EList<FreeTypedID> _arguments = operation.getArguments();
+ boolean hasAnyElements = false;
+ for(final FreeTypedID argument : _arguments) {
+ if (!hasAnyElements) {
+ hasAnyElements = true;
+ } else {
+ _builder.appendImmediate(", ", "");
+ }
+ FreeType _type = argument.getType();
+ String _freeTypeName_1 = this.stdExt.freeTypeName(_type);
+ _builder.append(_freeTypeName_1, "");
+ _builder.append(" ");
+ String _name_1 = argument.getName();
+ _builder.append(_name_1, "");
+ }
+ }
+ _builder.append("){");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ {
+ DetailCode _detailCode = operation.getDetailCode();
+ EList<String> _commands = _detailCode.getCommands();
+ for(final String command : _commands) {
+ _builder.append("\t");
+ _builder.append(command, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("}");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java index 49188f100..276f36a36 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java @@ -1,799 +1,804 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import java.util.List; -import org.eclipse.emf.common.util.EList; -import org.eclipse.etrice.core.room.Attribute; -import org.eclipse.etrice.core.room.DataClass; -import org.eclipse.etrice.core.room.DetailCode; -import org.eclipse.etrice.core.room.Message; -import org.eclipse.etrice.core.room.MessageHandler; -import org.eclipse.etrice.core.room.Operation; -import org.eclipse.etrice.core.room.PortClass; -import org.eclipse.etrice.core.room.ProtocolClass; -import org.eclipse.etrice.core.room.RoomModel; -import org.eclipse.etrice.core.room.Type; -import org.eclipse.etrice.core.room.TypedID; -import org.eclipse.etrice.generator.base.ILogger; -import org.eclipse.etrice.generator.etricegen.Root; -import org.eclipse.etrice.generator.java.gen.ProcedureHelpers; -import org.eclipse.etrice.generator.java.gen.StdExtensions; -import org.eclipse.xtext.generator.JavaIoFileSystemAccess; -import org.eclipse.xtext.xbase.lib.BooleanExtensions; -import org.eclipse.xtext.xbase.lib.IntegerExtensions; -import org.eclipse.xtext.xbase.lib.ObjectExtensions; -import org.eclipse.xtext.xbase.lib.StringExtensions; -import org.eclipse.xtext.xtend2.lib.StringConcatenation; - -@SuppressWarnings("all") -public class ProtocolClassGen { - - @Inject - private JavaIoFileSystemAccess fileAccess; - - @Inject - private StdExtensions stdExt; - - @Inject - private ProcedureHelpers helpers; - - @Inject - private ILogger logger; - - public void doGenerate(final Root root) { - EList<ProtocolClass> _usedProtocolClasses = root.getUsedProtocolClasses(); - for (ProtocolClass pc : _usedProtocolClasses) { - { - String _generationTargetPath = this.stdExt.getGenerationTargetPath(pc); - String _path = this.stdExt.getPath(pc); - String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path); - String path = _operator_plus; - String _fileName = this.stdExt.getFileName(pc); - String file = _fileName; - String _operator_plus_1 = StringExtensions.operator_plus("generating ProtocolClass implementation \'", file); - String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'"); - String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path); - String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'"); - this.logger.logInfo(_operator_plus_4); - this.fileAccess.setOutputPath(path); - StringConcatenation _generate = this.generate(root, pc); - this.fileAccess.generateFile(file, _generate); - } - } - } - - public StringConcatenation generate(final Root root, final ProtocolClass pc) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("package "); - String _package = this.stdExt.getPackage(pc); - _builder.append(_package, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("import java.util.ArrayList;"); - _builder.newLine(); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.Message;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.modelbase.*;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.debugging.DebuggingService;"); - _builder.newLine(); - _builder.newLine(); - DetailCode _userCode1 = pc.getUserCode1(); - StringConcatenation _UserCode = this.helpers.UserCode(_userCode1); - _builder.append(_UserCode, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - EList<RoomModel> _referencedModels = root.getReferencedModels(pc); - EList<RoomModel> models = _referencedModels; - _builder.newLineIfNotEmpty(); - { - for(RoomModel model : models) { - _builder.append("import "); - String _name = model.getName(); - _builder.append(_name, ""); - _builder.append(".*;"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - _builder.append("public class "); - String _name_1 = pc.getName(); - _builder.append(_name_1, ""); - _builder.append(" {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("// message IDs"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("// TODO: separate class for message IDs: class MSG{public static volatile int MSG_MIN = 0; ...} -> better structure"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("// error if msgID <= MSG_MIN"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public static final int MSG_MIN = 0; "); - _builder.newLine(); - _builder.append("\t"); - _builder.append("//IDs for outgoing messages"); - _builder.newLine(); - { - List<Message> _allOutgoingMessages = this.stdExt.getAllOutgoingMessages(pc); - for(Message message : _allOutgoingMessages) { - _builder.append("\t"); - _builder.append("public static final int OUT_"); - String _name_2 = message.getName(); - _builder.append(_name_2, " "); - _builder.append(" = "); - List<Message> _allOutgoingMessages_1 = this.stdExt.getAllOutgoingMessages(pc); - int _indexOf = _allOutgoingMessages_1.indexOf(message); - int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)1)); - _builder.append(_operator_plus, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("//IDs for incoming messages"); - _builder.newLine(); - { - List<Message> _allIncomingMessages = this.stdExt.getAllIncomingMessages(pc); - for(Message message_1 : _allIncomingMessages) { - _builder.append("\t"); - _builder.append("public static final int IN_"); - String _name_3 = message_1.getName(); - _builder.append(_name_3, " "); - _builder.append(" = "); - List<Message> _allIncomingMessages_1 = this.stdExt.getAllIncomingMessages(pc); - int _indexOf_1 = _allIncomingMessages_1.indexOf(message_1); - List<Message> _allOutgoingMessages_2 = this.stdExt.getAllOutgoingMessages(pc); - int _size = _allOutgoingMessages_2.size(); - int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_indexOf_1), ((Integer)_size)); - int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_operator_plus_1), ((Integer)1)); - _builder.append(_operator_plus_2, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("//error if msgID >= MSG_MAX"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public static final int MSG_MAX = "); - List<Message> _allOutgoingMessages_3 = this.stdExt.getAllOutgoingMessages(pc); - int _size_1 = _allOutgoingMessages_3.size(); - List<Message> _allIncomingMessages_2 = this.stdExt.getAllIncomingMessages(pc); - int _size_2 = _allIncomingMessages_2.size(); - int _operator_plus_3 = IntegerExtensions.operator_plus(((Integer)_size_1), ((Integer)_size_2)); - int _operator_plus_4 = IntegerExtensions.operator_plus(((Integer)_operator_plus_3), ((Integer)1)); - _builder.append(_operator_plus_4, " "); - _builder.append("; "); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - DetailCode _userCode2 = pc.getUserCode2(); - StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2); - _builder.append(_UserCode_1, " "); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("private static String messageStrings[] = {\"MIN\", "); - { - List<Message> _allOutgoingMessages_4 = this.stdExt.getAllOutgoingMessages(pc); - for(Message m : _allOutgoingMessages_4) { - _builder.append("\""); - String _name_4 = m.getName(); - _builder.append(_name_4, " "); - _builder.append("\","); - } - } - _builder.append(" "); - { - List<Message> _allIncomingMessages_3 = this.stdExt.getAllIncomingMessages(pc); - for(Message m_1 : _allIncomingMessages_3) { - _builder.append("\""); - String _name_5 = m_1.getName(); - _builder.append(_name_5, " "); - _builder.append("\","); - } - } - _builder.append("\"MAX\"};"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public String getMessageString(int msg_id) {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("if (msg_id<0 || msg_id>MSG_MAX+1){"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("// id out of range"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("return \"Message ID out of range\";"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("else{"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("return messageStrings[msg_id];"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - StringConcatenation _portClass = this.portClass(pc, ((Boolean)false)); - _builder.append(_portClass, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - StringConcatenation _portClass_1 = this.portClass(pc, ((Boolean)true)); - _builder.append(_portClass_1, " "); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - return _builder; - } - - public StringConcatenation portClass(final ProtocolClass pc, final Boolean conj) { - StringConcatenation _builder = new StringConcatenation(); - String _portClassName = this.stdExt.getPortClassName(pc, conj); - String name = _portClassName; - _builder.newLineIfNotEmpty(); - PortClass _portClass = this.stdExt.getPortClass(pc, conj); - PortClass pclass = _portClass; - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("// port class"); - _builder.newLine(); - _builder.append("static public class "); - _builder.append(name, ""); - _builder.append(" extends PortBase {"); - _builder.newLineIfNotEmpty(); - { - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(pclass, null); - if (_operator_notEquals) { - _builder.append("\t"); - DetailCode _userCode = pclass.getUserCode(); - StringConcatenation _UserCode = this.helpers.UserCode(_userCode); - _builder.append(_UserCode, " "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("// constructors"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(name, " "); - _builder.append("(IEventReceiver actor, String name, int localId, Address addr, Address peerAddress) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(actor, name, localId, 0, addr, peerAddress);"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("DebuggingService.getInstance().addPortInstance(this);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(name, " "); - _builder.append("(IEventReceiver actor, String name, int localId, int idx, Address addr, Address peerAddress) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(actor, name, localId, idx, addr, peerAddress);"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("DebuggingService.getInstance().addPortInstance(this);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void receive(Message m) {"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("if (!(m instanceof EventMessage))"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("return;"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("EventMessage msg = (EventMessage) m;"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("if (msg.getEvtId() <= 0 || msg.getEvtId() >= MSG_MAX)"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("System.out.println(\"unknown\");"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("else {"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("if (messageStrings[msg.getEvtId()] != \"timerTick\"){"); - _builder.newLine(); - _builder.append("\t\t\t\t\t"); - _builder.append("// TODOTS: model switch for activation"); - _builder.newLine(); - _builder.append("\t\t\t\t\t"); - _builder.append("DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("}"); - _builder.newLine(); - { - boolean _handlesReceive = this.stdExt.handlesReceive(pc, conj); - if (_handlesReceive) { - _builder.append("\t\t\t\t"); - _builder.append("switch (msg.getEvtId()) {"); - _builder.newLine(); - { - List<MessageHandler> _receiveHandlers = this.stdExt.getReceiveHandlers(pc, conj); - for(MessageHandler hdlr : _receiveHandlers) { - _builder.append("\t\t\t\t"); - _builder.append("\t"); - _builder.append("case "); - Message _msg = hdlr.getMsg(); - String _codeName = this.stdExt.getCodeName(_msg); - _builder.append(_codeName, " "); - _builder.append(":"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t\t"); - _builder.append("\t"); - _builder.append("{"); - _builder.newLine(); - { - DetailCode _detailCode = hdlr.getDetailCode(); - EList<String> _commands = _detailCode.getCommands(); - for(String command : _commands) { - _builder.append("\t\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append(command, " "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t\t\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("\t"); - _builder.append("break;"); - _builder.newLine(); - } - } - _builder.append("\t\t\t\t"); - _builder.append("\t"); - _builder.append("default:"); - _builder.newLine(); - } - } - _builder.append("\t\t\t\t\t"); - _builder.append("if (msg instanceof EventWithDataMessage)"); - _builder.newLine(); - _builder.append("\t\t\t\t\t\t"); - _builder.append("getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());"); - _builder.newLine(); - _builder.append("\t\t\t\t\t"); - _builder.append("else"); - _builder.newLine(); - _builder.append("\t\t\t\t\t\t"); - _builder.append("getActor().receiveEvent(this, msg.getEvtId(), null);"); - _builder.newLine(); - { - boolean _handlesReceive_1 = this.stdExt.handlesReceive(pc, conj); - if (_handlesReceive_1) { - _builder.append("\t\t\t\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("\t\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - { - boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(pclass, null); - if (_operator_notEquals_1) { - _builder.append("\t"); - EList<Attribute> _attributes = pclass.getAttributes(); - StringConcatenation _Attributes = this.helpers.Attributes(_attributes); - _builder.append(_Attributes, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - EList<Operation> _operations = pclass.getOperations(); - StringConcatenation _Operations = this.helpers.Operations(_operations); - _builder.append(_Operations, " "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("// sent messages"); - _builder.newLine(); - { - List<Message> _outgoing = this.stdExt.getOutgoing(pc, conj); - for(Message m : _outgoing) { - _builder.append("\t"); - StringConcatenation _sendMessage = this.sendMessage(m, conj); - _builder.append(_sendMessage, " "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("// replicated port class"); - _builder.newLine(); - _builder.append("static public class "); - _builder.append(name, ""); - _builder.append("Repl {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("private ArrayList<"); - _builder.append(name, " "); - _builder.append("> ports;"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("private int replication;"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(name, " "); - _builder.append("Repl(IEventReceiver actor, String name, int localId, Address[] addr,"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("Address[] peerAddress) {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("replication = addr.length;"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("ports = new ArrayList<"); - String _name = pc.getName(); - _builder.append(_name, " "); - _builder.append("."); - _builder.append(name, " "); - _builder.append(">(replication);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("for (int i=0; i<replication; ++i) {"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("ports.add(new "); - _builder.append(name, " "); - _builder.append("("); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t\t\t"); - _builder.append("actor, name+i, localId, i, addr[i], peerAddress[i]));"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public int getReplication() {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("return replication;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public int getIndexOf(InterfaceItemBase ifitem){"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("return ifitem.getIdx();"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - _builder.append(name, " "); - _builder.append(" get(int i) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("return ports.get(i);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - { - if (conj) { - _builder.append("\t"); - _builder.append("// incoming messages"); - _builder.newLine(); - { - List<Message> _allIncomingMessages = this.stdExt.getAllIncomingMessages(pc); - for(Message m_1 : _allIncomingMessages) { - _builder.append("\t"); - StringConcatenation _messageSignature = this.messageSignature(m_1); - _builder.append(_messageSignature, " "); - _builder.append("{"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("for (int i=0; i<replication; ++i) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("ports.get(i)."); - StringConcatenation _messageCall = this.messageCall(m_1); - _builder.append(_messageCall, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - }} else { - _builder.append("\t"); - _builder.append("// outgoing messages"); - _builder.newLine(); - { - List<Message> _allOutgoingMessages = this.stdExt.getAllOutgoingMessages(pc); - for(Message m_2 : _allOutgoingMessages) { - _builder.append("\t"); - StringConcatenation _messageSignature_1 = this.messageSignature(m_2); - _builder.append(_messageSignature_1, " "); - _builder.append("{"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("for (int i=0; i<replication; ++i) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("\t\t"); - _builder.append("ports.get(i)."); - StringConcatenation _messageCall_1 = this.messageCall(m_2); - _builder.append(_messageCall_1, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - } - } - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("// interface for port class"); - _builder.newLine(); - _builder.append("public interface I"); - _builder.append(name, ""); - _builder.append("{"); - _builder.newLineIfNotEmpty(); - { - if (conj) { - _builder.append("\t"); - _builder.append("// outgoing messages"); - _builder.newLine(); - _builder.append("\t"); - { - List<Message> _allOutgoingMessages_1 = this.stdExt.getAllOutgoingMessages(pc); - for(Message m_3 : _allOutgoingMessages_1) { - _builder.append(" "); - StringConcatenation _messageSignature_2 = this.messageSignature(m_3); - _builder.append(_messageSignature_2, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - }} else { - _builder.append("\t"); - _builder.append("// incoming messages"); - _builder.newLine(); - _builder.append("\t"); - { - List<Message> _allIncomingMessages_1 = this.stdExt.getAllIncomingMessages(pc); - for(Message m_4 : _allIncomingMessages_1) { - _builder.append(" "); - StringConcatenation _messageSignature_3 = this.messageSignature(m_4); - _builder.append(_messageSignature_3, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - } - } - _builder.append("}"); - _builder.newLine(); - return _builder; - } - - public StringConcatenation messageSignature(final Message m) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("public void "); - String _name = m.getName(); - _builder.append(_name, ""); - _builder.append(" ("); - { - TypedID _data = m.getData(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null); - if (_operator_notEquals) { - TypedID _data_1 = m.getData(); - Type _type = _data_1.getType(); - String _typeName = this.stdExt.typeName(_type); - _builder.append(_typeName, ""); - _builder.append(" "); - TypedID _data_2 = m.getData(); - String _name_1 = _data_2.getName(); - _builder.append(_name_1, ""); - } - } - _builder.append(")"); - _builder.newLineIfNotEmpty(); - return _builder; - } - - public StringConcatenation messageCall(final Message m) { - StringConcatenation _builder = new StringConcatenation(); - String _name = m.getName(); - _builder.append(_name, ""); - _builder.append("("); - { - TypedID _data = m.getData(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null); - if (_operator_notEquals) { - _builder.append(" "); - TypedID _data_1 = m.getData(); - String _name_1 = _data_1.getName(); - _builder.append(_name_1, ""); - } - } - _builder.append(")"); - _builder.newLineIfNotEmpty(); - return _builder; - } - - public StringConcatenation sendMessage(final Message m, final boolean conj) { - StringConcatenation _builder = new StringConcatenation(); - String _xifexpression = null; - if (conj) { - _xifexpression = "IN"; - } else { - _xifexpression = "OUT"; - } - String dir = _xifexpression; - _builder.newLineIfNotEmpty(); - MessageHandler _sendHandler = this.stdExt.getSendHandler(m, conj); - MessageHandler hdlr = _sendHandler; - _builder.newLineIfNotEmpty(); - StringConcatenation _messageSignature = this.messageSignature(m); - _builder.append(_messageSignature, ""); - _builder.append("{"); - _builder.newLineIfNotEmpty(); - { - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(hdlr, null); - if (_operator_notEquals) { - _builder.append("\t"); - { - DetailCode _detailCode = hdlr.getDetailCode(); - EList<String> _commands = _detailCode.getCommands(); - for(String command : _commands) { - _builder.append("\t"); - _builder.append(command, " "); - _builder.newLineIfNotEmpty(); - } - }} else { - _builder.append("\t"); - _builder.append("if (messageStrings[ "); - _builder.append(dir, " "); - _builder.append("_"); - String _name = m.getName(); - _builder.append(_name, " "); - _builder.append("] != \"timerTick\"){"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("// TODOTS: model switch for activation"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings["); - _builder.append(dir, " "); - _builder.append("_"); - String _name_1 = m.getName(); - _builder.append(_name_1, " "); - _builder.append("]);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("if (getPeerAddress()!=null)"); - _builder.newLine(); - _builder.append("\t"); - { - TypedID _data = m.getData(); - boolean _operator_equals = ObjectExtensions.operator_equals(_data, null); - if (_operator_equals) { - _builder.append("getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), "); - _builder.append(dir, " "); - _builder.append("_"); - String _name_2 = m.getName(); - _builder.append(_name_2, " "); - _builder.append("));"); - _builder.newLineIfNotEmpty(); - _builder.append("\t");} else { - _builder.append("getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), "); - _builder.append(dir, " "); - _builder.append("_"); - String _name_3 = m.getName(); - _builder.append(_name_3, " "); - _builder.append(", "); - TypedID _data_1 = m.getData(); - String _name_4 = _data_1.getName(); - _builder.append(_name_4, " "); - { - boolean _operator_and = false; - TypedID _data_2 = m.getData(); - Type _type = _data_2.getType(); - boolean _isRef = _type.isRef(); - boolean _operator_not = BooleanExtensions.operator_not(_isRef); - if (!_operator_not) { - _operator_and = false; - } else { - TypedID _data_3 = m.getData(); - Type _type_1 = _data_3.getType(); - DataClass _type_2 = _type_1.getType(); - boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_type_2, null); - _operator_and = BooleanExtensions.operator_and(_operator_not, _operator_notEquals_1); - } - if (_operator_and) { - _builder.append(".deepCopy()"); - } - } - _builder.append("));"); - _builder.newLineIfNotEmpty(); - } - } - } - } - _builder.append("}"); - _builder.newLine(); - return _builder; - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.Attribute;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageHandler;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.PortClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class ProtocolClassGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ProcedureHelpers helpers;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<ProtocolClass> _usedProtocolClasses = root.getUsedProtocolClasses();
+ for (final ProtocolClass pc : _usedProtocolClasses) {
+ {
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(pc);
+ String _path = this.stdExt.getPath(pc);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ String _fileName = this.stdExt.getFileName(pc);
+ String file = _fileName;
+ String _operator_plus_1 = StringExtensions.operator_plus("generating ProtocolClass implementation \'", file);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
+ this.logger.logInfo(_operator_plus_4);
+ this.fileAccess.setOutputPath(path);
+ StringConcatenation _generate = this.generate(root, pc);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final ProtocolClass pc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(pc);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("import java.util.ArrayList;");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.Message;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.*;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.debugging.DebuggingService;");
+ _builder.newLine();
+ _builder.newLine();
+ DetailCode _userCode1 = pc.getUserCode1();
+ StringConcatenation _UserCode = this.helpers.UserCode(_userCode1);
+ _builder.append(_UserCode, "");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ EList<RoomModel> _referencedModels = root.getReferencedModels(pc);
+ EList<RoomModel> models = _referencedModels;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final RoomModel model : models) {
+ _builder.append("import ");
+ String _name = model.getName();
+ _builder.append(_name, "");
+ _builder.append(".*;");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ _builder.append("public class ");
+ String _name_1 = pc.getName();
+ _builder.append(_name_1, "");
+ _builder.append(" {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("// message IDs");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// TODO: separate class for message IDs: class MSG{public static volatile int MSG_MIN = 0; ...} -> better structure");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// error if msgID <= MSG_MIN");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public static final int MSG_MIN = 0; ");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//IDs for outgoing messages");
+ _builder.newLine();
+ {
+ List<Message> _allOutgoingMessages = this.stdExt.getAllOutgoingMessages(pc);
+ for(final Message message : _allOutgoingMessages) {
+ _builder.append("\t");
+ _builder.append("public static final int OUT_");
+ String _name_2 = message.getName();
+ _builder.append(_name_2, " ");
+ _builder.append(" = ");
+ List<Message> _allOutgoingMessages_1 = this.stdExt.getAllOutgoingMessages(pc);
+ int _indexOf = _allOutgoingMessages_1.indexOf(message);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)1));
+ _builder.append(_operator_plus, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("//IDs for incoming messages");
+ _builder.newLine();
+ {
+ List<Message> _allIncomingMessages = this.stdExt.getAllIncomingMessages(pc);
+ for(final Message message_1 : _allIncomingMessages) {
+ _builder.append("\t");
+ _builder.append("public static final int IN_");
+ String _name_3 = message_1.getName();
+ _builder.append(_name_3, " ");
+ _builder.append(" = ");
+ List<Message> _allIncomingMessages_1 = this.stdExt.getAllIncomingMessages(pc);
+ int _indexOf_1 = _allIncomingMessages_1.indexOf(message_1);
+ List<Message> _allOutgoingMessages_2 = this.stdExt.getAllOutgoingMessages(pc);
+ int _size = _allOutgoingMessages_2.size();
+ int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_indexOf_1), ((Integer)_size));
+ int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_operator_plus_1), ((Integer)1));
+ _builder.append(_operator_plus_2, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("//error if msgID >= MSG_MAX");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public static final int MSG_MAX = ");
+ List<Message> _allOutgoingMessages_3 = this.stdExt.getAllOutgoingMessages(pc);
+ int _size_1 = _allOutgoingMessages_3.size();
+ List<Message> _allIncomingMessages_2 = this.stdExt.getAllIncomingMessages(pc);
+ int _size_2 = _allIncomingMessages_2.size();
+ int _operator_plus_3 = IntegerExtensions.operator_plus(((Integer)_size_1), ((Integer)_size_2));
+ int _operator_plus_4 = IntegerExtensions.operator_plus(((Integer)_operator_plus_3), ((Integer)1));
+ _builder.append(_operator_plus_4, " ");
+ _builder.append("; ");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ DetailCode _userCode2 = pc.getUserCode2();
+ StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2);
+ _builder.append(_UserCode_1, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("private static String messageStrings[] = {\"MIN\", ");
+ {
+ List<Message> _allOutgoingMessages_4 = this.stdExt.getAllOutgoingMessages(pc);
+ for(final Message m : _allOutgoingMessages_4) {
+ _builder.append("\"");
+ String _name_4 = m.getName();
+ _builder.append(_name_4, " ");
+ _builder.append("\",");
+ }
+ }
+ _builder.append(" ");
+ {
+ List<Message> _allIncomingMessages_3 = this.stdExt.getAllIncomingMessages(pc);
+ for(final Message m_1 : _allIncomingMessages_3) {
+ _builder.append("\"");
+ String _name_5 = m_1.getName();
+ _builder.append(_name_5, " ");
+ _builder.append("\",");
+ }
+ }
+ _builder.append("\"MAX\"};");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public String getMessageString(int msg_id) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("if (msg_id<0 || msg_id>MSG_MAX+1){");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("// id out of range");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("return \"Message ID out of range\";");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("else{");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("return messageStrings[msg_id];");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ StringConcatenation _portClass = this.portClass(pc, ((Boolean)false));
+ _builder.append(_portClass, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ StringConcatenation _portClass_1 = this.portClass(pc, ((Boolean)true));
+ _builder.append(_portClass_1, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation portClass(final ProtocolClass pc, final Boolean conj) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _portClassName = this.stdExt.getPortClassName(pc, conj);
+ String name = _portClassName;
+ _builder.newLineIfNotEmpty();
+ PortClass _portClass = this.stdExt.getPortClass(pc, conj);
+ PortClass pclass = _portClass;
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("// port class");
+ _builder.newLine();
+ _builder.append("static public class ");
+ _builder.append(name, "");
+ _builder.append(" extends PortBase {");
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(pclass, null);
+ if (_operator_notEquals) {
+ _builder.append("\t");
+ DetailCode _userCode = pclass.getUserCode();
+ StringConcatenation _UserCode = this.helpers.UserCode(_userCode);
+ _builder.append(_UserCode, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("// constructors");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ _builder.append(name, " ");
+ _builder.append("(IEventReceiver actor, String name, int localId, Address addr, Address peerAddress) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("super(actor, name, localId, 0, addr, peerAddress);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("DebuggingService.getInstance().addPortInstance(this);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ _builder.append(name, " ");
+ _builder.append("(IEventReceiver actor, String name, int localId, int idx, Address addr, Address peerAddress) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("super(actor, name, localId, idx, addr, peerAddress);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("DebuggingService.getInstance().addPortInstance(this);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void receive(Message m) {");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("if (!(m instanceof EventMessage))");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("return;");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("EventMessage msg = (EventMessage) m;");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("if (msg.getEvtId() <= 0 || msg.getEvtId() >= MSG_MAX)");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("System.out.println(\"unknown\");");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("else {");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("if (messageStrings[msg.getEvtId()] != \"timerTick\"){");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t");
+ _builder.append("// TODOTS: model switch for activation");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t");
+ _builder.append("DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ {
+ boolean _handlesReceive = this.stdExt.handlesReceive(pc, conj);
+ if (_handlesReceive) {
+ _builder.append("\t\t\t\t");
+ _builder.append("switch (msg.getEvtId()) {");
+ _builder.newLine();
+ {
+ List<MessageHandler> _receiveHandlers = this.stdExt.getReceiveHandlers(pc, conj);
+ for(final MessageHandler hdlr : _receiveHandlers) {
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("case ");
+ Message _msg = hdlr.getMsg();
+ String _codeName = this.stdExt.getCodeName(_msg);
+ _builder.append(_codeName, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("{");
+ _builder.newLine();
+ {
+ DetailCode _detailCode = hdlr.getDetailCode();
+ EList<String> _commands = _detailCode.getCommands();
+ for(final String command : _commands) {
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append(command, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t\t");
+ _builder.append("\t");
+ _builder.append("default:");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t\t\t");
+ _builder.append("if (msg instanceof EventWithDataMessage)");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t\t");
+ _builder.append("getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t");
+ _builder.append("else");
+ _builder.newLine();
+ _builder.append("\t\t\t\t\t\t");
+ _builder.append("getActor().receiveEvent(this, msg.getEvtId(), null);");
+ _builder.newLine();
+ {
+ boolean _handlesReceive_1 = this.stdExt.handlesReceive(pc, conj);
+ if (_handlesReceive_1) {
+ _builder.append("\t\t\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ {
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(pclass, null);
+ if (_operator_notEquals_1) {
+ _builder.append("\t");
+ EList<Attribute> _attributes = pclass.getAttributes();
+ StringConcatenation _Attributes = this.helpers.Attributes(_attributes);
+ _builder.append(_Attributes, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ EList<Operation> _operations = pclass.getOperations();
+ StringConcatenation _Operations = this.helpers.Operations(_operations);
+ _builder.append(_Operations, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("// sent messages");
+ _builder.newLine();
+ {
+ List<Message> _outgoing = this.stdExt.getOutgoing(pc, conj);
+ for(final Message m : _outgoing) {
+ _builder.append("\t");
+ StringConcatenation _sendMessage = this.sendMessage(m, conj);
+ _builder.append(_sendMessage, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("// replicated port class");
+ _builder.newLine();
+ _builder.append("static public class ");
+ _builder.append(name, "");
+ _builder.append("Repl {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("private ArrayList<");
+ _builder.append(name, " ");
+ _builder.append("> ports;");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("private int replication;");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ _builder.append(name, " ");
+ _builder.append("Repl(IEventReceiver actor, String name, int localId, Address[] addr,");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("Address[] peerAddress) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("replication = addr.length;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("ports = new ArrayList<");
+ String _name = pc.getName();
+ _builder.append(_name, " ");
+ _builder.append(".");
+ _builder.append(name, " ");
+ _builder.append(">(replication);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("for (int i=0; i<replication; ++i) {");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("ports.add(new ");
+ _builder.append(name, " ");
+ _builder.append("(");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t\t\t");
+ _builder.append("actor, name+i, localId, i, addr[i], peerAddress[i]));");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public int getReplication() {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("return replication;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public int getIndexOf(InterfaceItemBase ifitem){");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("return ifitem.getIdx();");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ _builder.append(name, " ");
+ _builder.append(" get(int i) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("return ports.get(i);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ {
+ if (conj) {
+ _builder.append("\t");
+ _builder.append("// incoming messages");
+ _builder.newLine();
+ {
+ List<Message> _allIncomingMessages = this.stdExt.getAllIncomingMessages(pc);
+ for(final Message m_1 : _allIncomingMessages) {
+ _builder.append("\t");
+ StringConcatenation _messageSignature = this.messageSignature(m_1);
+ _builder.append(_messageSignature, " ");
+ _builder.append("{");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("for (int i=0; i<replication; ++i) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t\t");
+ _builder.append("ports.get(i).");
+ StringConcatenation _messageCall = this.messageCall(m_1);
+ _builder.append(_messageCall, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ } else {
+ _builder.append("\t");
+ _builder.append("// outgoing messages");
+ _builder.newLine();
+ {
+ List<Message> _allOutgoingMessages = this.stdExt.getAllOutgoingMessages(pc);
+ for(final Message m_2 : _allOutgoingMessages) {
+ _builder.append("\t");
+ StringConcatenation _messageSignature_1 = this.messageSignature(m_2);
+ _builder.append(_messageSignature_1, " ");
+ _builder.append("{");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("for (int i=0; i<replication; ++i) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("\t\t");
+ _builder.append("ports.get(i).");
+ StringConcatenation _messageCall_1 = this.messageCall(m_2);
+ _builder.append(_messageCall_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("// interface for port class");
+ _builder.newLine();
+ _builder.append("public interface I");
+ _builder.append(name, "");
+ _builder.append("{");
+ _builder.newLineIfNotEmpty();
+ {
+ if (conj) {
+ _builder.append("\t");
+ _builder.append("// outgoing messages");
+ _builder.newLine();
+ _builder.append("\t");
+ {
+ List<Message> _allOutgoingMessages_1 = this.stdExt.getAllOutgoingMessages(pc);
+ for(final Message m_3 : _allOutgoingMessages_1) {
+ _builder.append(" ");
+ StringConcatenation _messageSignature_2 = this.messageSignature(m_3);
+ _builder.append(_messageSignature_2, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ } else {
+ _builder.append("\t");
+ _builder.append("// incoming messages");
+ _builder.newLine();
+ _builder.append("\t");
+ {
+ List<Message> _allIncomingMessages_1 = this.stdExt.getAllIncomingMessages(pc);
+ for(final Message m_4 : _allIncomingMessages_1) {
+ _builder.append(" ");
+ StringConcatenation _messageSignature_3 = this.messageSignature(m_4);
+ _builder.append(_messageSignature_3, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation messageSignature(final Message m) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("public void ");
+ String _name = m.getName();
+ _builder.append(_name, "");
+ _builder.append(" (");
+ {
+ TypedID _data = m.getData();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
+ if (_operator_notEquals) {
+ TypedID _data_1 = m.getData();
+ Type _type = _data_1.getType();
+ String _typeName = this.stdExt.typeName(_type);
+ _builder.append(_typeName, "");
+ _builder.append(" ");
+ TypedID _data_2 = m.getData();
+ String _name_1 = _data_2.getName();
+ _builder.append(_name_1, "");
+ }
+ }
+ _builder.append(")");
+ _builder.newLineIfNotEmpty();
+ return _builder;
+ }
+
+ public StringConcatenation messageCall(final Message m) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _name = m.getName();
+ _builder.append(_name, "");
+ _builder.append("(");
+ {
+ TypedID _data = m.getData();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_data, null);
+ if (_operator_notEquals) {
+ _builder.append(" ");
+ TypedID _data_1 = m.getData();
+ String _name_1 = _data_1.getName();
+ _builder.append(_name_1, "");
+ }
+ }
+ _builder.append(")");
+ _builder.newLineIfNotEmpty();
+ return _builder;
+ }
+
+ public StringConcatenation sendMessage(final Message m, final boolean conj) {
+ StringConcatenation _builder = new StringConcatenation();
+ String _xifexpression = null;
+ if (conj) {
+ _xifexpression = "IN";
+ } else {
+ _xifexpression = "OUT";
+ }
+ String dir = _xifexpression;
+ _builder.newLineIfNotEmpty();
+ MessageHandler _sendHandler = this.stdExt.getSendHandler(m, conj);
+ MessageHandler hdlr = _sendHandler;
+ _builder.newLineIfNotEmpty();
+ StringConcatenation _messageSignature = this.messageSignature(m);
+ _builder.append(_messageSignature, "");
+ _builder.append("{");
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(hdlr, null);
+ if (_operator_notEquals) {
+ _builder.append("\t");
+ {
+ DetailCode _detailCode = hdlr.getDetailCode();
+ EList<String> _commands = _detailCode.getCommands();
+ for(final String command : _commands) {
+ _builder.append("\t");
+ _builder.append(command, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ } else {
+ _builder.append("\t");
+ _builder.append("if (messageStrings[ ");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name = m.getName();
+ _builder.append(_name, " ");
+ _builder.append("] != \"timerTick\"){");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("// TODOTS: model switch for activation");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name_1 = m.getName();
+ _builder.append(_name_1, " ");
+ _builder.append("]);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("if (getPeerAddress()!=null)");
+ _builder.newLine();
+ _builder.append("\t");
+ {
+ TypedID _data = m.getData();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_data, null);
+ if (_operator_equals) {
+ _builder.append("getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), ");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name_2 = m.getName();
+ _builder.append(_name_2, " ");
+ _builder.append("));");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ } else {
+ _builder.append("getPeerMsgReceiver().receive(new EventWithDataMessage(getPeerAddress(), ");
+ _builder.append(dir, " ");
+ _builder.append("_");
+ String _name_3 = m.getName();
+ _builder.append(_name_3, " ");
+ _builder.append(", ");
+ TypedID _data_1 = m.getData();
+ String _name_4 = _data_1.getName();
+ _builder.append(_name_4, " ");
+ {
+ boolean _operator_and = false;
+ TypedID _data_2 = m.getData();
+ Type _type = _data_2.getType();
+ boolean _isRef = _type.isRef();
+ boolean _operator_not = BooleanExtensions.operator_not(_isRef);
+ if (!_operator_not) {
+ _operator_and = false;
+ } else {
+ TypedID _data_3 = m.getData();
+ Type _type_1 = _data_3.getType();
+ DataClass _type_2 = _type_1.getType();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_type_2, null);
+ _operator_and = BooleanExtensions.operator_and(_operator_not, _operator_notEquals_1);
+ }
+ if (_operator_and) {
+ _builder.append(".deepCopy()");
+ }
+ }
+ _builder.append("));");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ _builder.append("}");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java index 14a2026a7..327ef8ac6 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java @@ -1,870 +1,864 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import java.util.List; -import org.eclipse.emf.common.util.EList; -import org.eclipse.etrice.core.room.ActorClass; -import org.eclipse.etrice.core.room.DetailCode; -import org.eclipse.etrice.core.room.Guard; -import org.eclipse.etrice.core.room.InterfaceItem; -import org.eclipse.etrice.core.room.Message; -import org.eclipse.etrice.core.room.MessageFromIf; -import org.eclipse.etrice.core.room.State; -import org.eclipse.etrice.core.room.StateGraph; -import org.eclipse.etrice.core.room.StateMachine; -import org.eclipse.etrice.core.room.Transition; -import org.eclipse.etrice.core.room.Trigger; -import org.eclipse.etrice.core.room.TriggeredTransition; -import org.eclipse.etrice.generator.etricegen.ActiveTrigger; -import org.eclipse.etrice.generator.etricegen.ExpandedActorClass; -import org.eclipse.etrice.generator.etricegen.TransitionChain; -import org.eclipse.etrice.generator.extensions.RoomNameProv; -import org.eclipse.etrice.generator.java.gen.JavaGenerator; -import org.eclipse.etrice.generator.java.gen.StdExtensions; -import org.eclipse.xtext.xbase.lib.BooleanExtensions; -import org.eclipse.xtext.xbase.lib.Functions.Function1; -import org.eclipse.xtext.xbase.lib.IntegerExtensions; -import org.eclipse.xtext.xbase.lib.IterableExtensions; -import org.eclipse.xtext.xtend2.lib.StringConcatenation; - -@SuppressWarnings("all") -public class StateMachineGen { - - @Inject - private StdExtensions stdExt; - - @Inject - private RoomNameProv nameProvider; - - @Inject - private JavaGenerator javaGen; - - public StringConcatenation genStateMachine(final ExpandedActorClass xpac, final ActorClass ac) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("//******************************************"); - _builder.newLine(); - _builder.append("// START of generated code for FSM"); - _builder.newLine(); - _builder.append("//******************************************"); - _builder.newLine(); - _builder.newLine(); - _builder.append("// State IDs for FSM"); - _builder.newLine(); - int _numberOfInheritedBaseStates = this.stdExt.getNumberOfInheritedBaseStates(ac); - int offset = _numberOfInheritedBaseStates; - _builder.newLineIfNotEmpty(); - StateMachine _stateMachine = ac.getStateMachine(); - List<State> _baseStateList = this.stdExt.getBaseStateList(_stateMachine); - List<State> baseStates = _baseStateList; - _builder.newLineIfNotEmpty(); - { - for(State state : baseStates) { - _builder.append("protected static final int "); - String _stateId = this.nameProvider.getStateId(state); - _builder.append(_stateId, ""); - _builder.append(" = "); - int _indexOf = baseStates.indexOf(state); - int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)2)); - int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_operator_plus), ((Integer)offset)); - _builder.append(_operator_plus_1, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t"); - _builder.append("protected static final String stateStrings[] = {\"<no state>\",\"<top>\","); - { - List<State> _allBaseStates = this.stdExt.getAllBaseStates(ac); - boolean hasAnyElements = false; - for(State state_1 : _allBaseStates) { - if (!hasAnyElements) { - hasAnyElements = true; - } else { - _builder.appendImmediate(",", " "); - } - _builder.append("\""); - String _statePathName = this.nameProvider.getStatePathName(state_1); - _builder.append(_statePathName, " "); - _builder.append("\""); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - } - } - _builder.append("};"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("// history"); - _builder.newLine(); - _builder.append("// TODOHRR: history defined in ActorClassBase, init in constructor"); - _builder.newLine(); - _builder.append("//\t\thistory = new int[5];"); - _builder.newLine(); - _builder.append("//\t\tfor (int i = 0; i < history.length; i++) {"); - _builder.newLine(); - _builder.append("//\t\t\thistory[i] = NO_STATE;"); - _builder.newLine(); - _builder.append("//\t\t}"); - _builder.newLine(); - _builder.append("protected int history[] = {NO_STATE,NO_STATE"); - { - List<State> _allBaseStates_1 = this.stdExt.getAllBaseStates(ac); - for(State state_2 : _allBaseStates_1) { - _builder.append(",NO_STATE"); - } - } - _builder.append("};"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - EList<TransitionChain> _ownTransitionChains = xpac.getOwnTransitionChains(); - List<TransitionChain> chains = _ownTransitionChains; - _builder.newLineIfNotEmpty(); - EList<TransitionChain> _transitionChains = xpac.getTransitionChains(); - int _size = _transitionChains.size(); - int _size_1 = chains.size(); - int _operator_minus = IntegerExtensions.operator_minus(((Integer)_size), ((Integer)_size_1)); - int offset_tc = _operator_minus; - _builder.newLineIfNotEmpty(); - _builder.append("// transition chains"); - _builder.newLine(); - { - for(TransitionChain tc : chains) { - _builder.append("protected static final int "); - String _chainId = this.nameProvider.getChainId(tc); - _builder.append(_chainId, ""); - _builder.append(" = "); - int _indexOf_1 = chains.indexOf(tc); - int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_indexOf_1), ((Integer)1)); - int _operator_plus_3 = IntegerExtensions.operator_plus(((Integer)_operator_plus_2), ((Integer)offset_tc)); - _builder.append(_operator_plus_3, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - EList<MessageFromIf> _ownTriggers = xpac.getOwnTriggers(); - EList<MessageFromIf> triggers = _ownTriggers; - _builder.newLineIfNotEmpty(); - _builder.append("// triggers for FSM"); - _builder.newLine(); - { - for(MessageFromIf mif : triggers) { - _builder.append("protected static final int "); - String _triggerCodeName = xpac.getTriggerCodeName(mif); - _builder.append(_triggerCodeName, ""); - _builder.append(" = IFITEM_"); - InterfaceItem _from = mif.getFrom(); - String _name = _from.getName(); - _builder.append(_name, ""); - _builder.append(" + EVT_SHIFT*"); - String _messageID = xpac.getMessageID(mif); - _builder.append(_messageID, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - } - } - _builder.newLine(); - _builder.append("// receiveEvent contains the main implementation of the FSM"); - _builder.newLine(); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("int trigger = ifitem.getLocalId() + EVT_SHIFT*evt;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("int chain = NOT_CAUGHT;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("int catching_state = NO_STATE;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("boolean is_handler = false;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("boolean skip_entry = false;"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("if (!handleSystemEvent(ifitem, evt, generic_data)) {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("switch (state) {"); - _builder.newLine(); - { - StateMachine _stateMachine_1 = xpac.getStateMachine(); - List<State> _leafStateList = this.stdExt.getLeafStateList(_stateMachine_1); - for(State state_3 : _leafStateList) { - _builder.append("\t\t\t"); - _builder.append("case "); - String _stateId_1 = this.nameProvider.getStateId(state_3); - _builder.append(_stateId_1, " "); - _builder.append(":"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - EList<ActiveTrigger> _activeTriggers = xpac.getActiveTriggers(state_3); - EList<ActiveTrigger> atlist = _activeTriggers; - _builder.newLineIfNotEmpty(); - { - boolean _isEmpty = atlist.isEmpty(); - boolean _operator_not = BooleanExtensions.operator_not(_isEmpty); - if (_operator_not) { - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("switch(trigger) {"); - _builder.newLine(); - { - for(ActiveTrigger at : atlist) { - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("case "); - String _trigger = at.getTrigger(); - String _triggerCodeName_1 = xpac.getTriggerCodeName(_trigger); - _builder.append(_triggerCodeName_1, " "); - _builder.append(":"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - boolean _hasGuard = this.stdExt.hasGuard(xpac, at); - boolean needData = _hasGuard; - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - { - if (needData) { - _builder.append("{ "); - Message _msg = at.getMsg(); - String _typedDataDefinition = this.stdExt.getTypedDataDefinition(_msg); - _builder.append(_typedDataDefinition, " "); - } - } - _builder.newLineIfNotEmpty(); - { - EList<TriggeredTransition> _transitions = at.getTransitions(); - boolean hasAnyElements_1 = false; - for(TriggeredTransition tt : _transitions) { - if (!hasAnyElements_1) { - hasAnyElements_1 = true; - } else { - _builder.appendImmediate(" else ", " "); - } - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - TransitionChain _chain = xpac.getChain(tt); - TransitionChain chain = _chain; - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - Transition _transition = chain.getTransition(); - String _trigger_1 = at.getTrigger(); - StringConcatenation _guard = this.guard(_transition, _trigger_1, xpac); - _builder.append(_guard, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("chain = "); - String _chainId_1 = this.nameProvider.getChainId(chain); - _builder.append(_chainId_1, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("catching_state = "); - String _contextId = this.stdExt.getContextId(chain); - _builder.append(_contextId, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("\t"); - { - boolean _isHandler = chain.isHandler(); - if (_isHandler) { - _builder.append("is_handler = true;"); - } - } - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("\t"); - { - boolean _isSkipEntry = chain.isSkipEntry(); - if (_isSkipEntry) { - _builder.append("skip_entry = true;"); - } - } - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - { - if (needData) { - _builder.append("}"); - } - } - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("break;"); - _builder.newLine(); - } - } - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("break;"); - _builder.newLine(); - } - } - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("if (chain != NOT_CAUGHT) {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("exitTo(state, catching_state, is_handler);"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("int next = executeTransitionChain(chain, ifitem, generic_data);"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("next = enterHistory(next, is_handler, skip_entry);"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("setState(next);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("private void setState(int new_state) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("if (stateStrings[new_state]!=\"Idle\") {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// TODOTS: model switch for activation"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("System.out.println(getInstancePath() + \" -> \" + stateStrings[new_state]);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("this.state = new_state;"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("public void executeInitTransition() {"); - _builder.newLine(); - _builder.append("\t"); - StateMachine _stateMachine_2 = xpac.getStateMachine(); - Transition _initTransition = this.stdExt.getInitTransition(_stateMachine_2); - Transition initt = _initTransition; - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("int chain = "); - TransitionChain _chain_1 = xpac.getChain(initt); - String _chainId_2 = this.nameProvider.getChainId(_chain_1); - _builder.append(_chainId_2, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.append("int next = executeTransitionChain(chain, null, null);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("next = enterHistory(next, false, false);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("setState(next);"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("/**"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* calls exit codes while exiting from the current state to one of its"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* parent states while remembering the history"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @param current - the current state"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @param to - the final parent state"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)"); - _builder.newLine(); - _builder.append(" "); - _builder.append("*/"); - _builder.newLine(); - _builder.append("private void exitTo(int current, int to, boolean handler) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("while (current!=to) {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("switch (current) {"); - _builder.newLine(); - { - StateMachine _stateMachine_3 = xpac.getStateMachine(); - List<State> _baseStateList_1 = this.stdExt.getBaseStateList(_stateMachine_3); - for(State state_4 : _baseStateList_1) { - _builder.append("\t\t\t"); - _builder.append("case "); - String _stateId_2 = this.nameProvider.getStateId(state_4); - _builder.append(_stateId_2, " "); - _builder.append(":"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - { - boolean _hasExitCode = this.stdExt.hasExitCode(state_4); - if (_hasExitCode) { - _builder.append("if (!handler) "); - String _exitCodeOperationName = this.nameProvider.getExitCodeOperationName(state_4); - _builder.append(_exitCodeOperationName, " "); - _builder.append("();"); - } - } - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("history["); - String _parentStateId = this.nameProvider.getParentStateId(state_4); - _builder.append(_parentStateId, " "); - _builder.append("] = "); - String _stateId_3 = this.nameProvider.getStateId(state_4); - _builder.append(_stateId_3, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("current = "); - String _parentStateId_1 = this.nameProvider.getParentStateId(state_4); - _builder.append(_parentStateId_1, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("break;"); - _builder.newLine(); - } - } - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - _builder.append("/**"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* calls action, entry and exit codes along a transition chain. The generic data are cast to typed data"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* matching the trigger of this chain. The ID of the final state is returned"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @param chain - the chain ID"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @param generic_data - the generic data pointer"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @return the ID of the final state"); - _builder.newLine(); - _builder.append(" "); - _builder.append("*/"); - _builder.newLine(); - _builder.append("private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("switch (chain) {"); - _builder.newLine(); - _builder.append("\t\t"); - EList<TransitionChain> _transitionChains_1 = xpac.getTransitionChains(); - EList<TransitionChain> allchains = _transitionChains_1; - _builder.newLineIfNotEmpty(); - { - for(TransitionChain tc_1 : allchains) { - _builder.append("\t\t"); - _builder.append("case "); - String _chainId_3 = this.nameProvider.getChainId(tc_1); - _builder.append(_chainId_3, " "); - _builder.append(":"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("{"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("\t"); - String _executeChainCode = this.stdExt.getExecuteChainCode(xpac, tc_1); - _builder.append(_executeChainCode, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("return NO_STATE;"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - _builder.append("/**"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* calls entry codes while entering a state\'s history. The ID of the final leaf state is returned"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @param state - the state which is entered"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @param handler - entry code is executed if not handler"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @return - the ID of the final leaf state"); - _builder.newLine(); - _builder.append(" "); - _builder.append("*/"); - _builder.newLine(); - _builder.append("private int enterHistory(int state, boolean handler, boolean skip_entry) {"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("while (true) {"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("switch (state) {"); - _builder.newLine(); - { - StateMachine _stateMachine_4 = xpac.getStateMachine(); - List<State> _baseStateList_2 = this.stdExt.getBaseStateList(_stateMachine_4); - for(State state_5 : _baseStateList_2) { - _builder.append("\t\t\t"); - _builder.append("case "); - String _stateId_4 = this.nameProvider.getStateId(state_5); - _builder.append(_stateId_4, " "); - _builder.append(":"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - { - boolean _hasEntryCode = this.stdExt.hasEntryCode(state_5); - if (_hasEntryCode) { - _builder.append("if (!(skip_entry || handler)) "); - String _entryCodeOperationName = this.nameProvider.getEntryCodeOperationName(state_5); - _builder.append(_entryCodeOperationName, " "); - _builder.append("();"); - } - } - _builder.newLineIfNotEmpty(); - { - boolean _isLeaf = this.stdExt.isLeaf(state_5); - if (_isLeaf) { - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("// in leaf state: return state id"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("return "); - String _stateId_5 = this.nameProvider.getStateId(state_5); - _builder.append(_stateId_5, " "); - _builder.append(";"); - _builder.newLineIfNotEmpty();} else { - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("// state has a sub graph"); - _builder.newLine(); - { - StateGraph _subgraph = state_5.getSubgraph(); - boolean _hasInitTransition = this.stdExt.hasInitTransition(_subgraph); - if (_hasInitTransition) { - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("// with init transition"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("if (history["); - String _stateId_6 = this.nameProvider.getStateId(state_5); - _builder.append(_stateId_6, " "); - _builder.append("]==NO_STATE) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - StateGraph _subgraph_1 = state_5.getSubgraph(); - Transition _initTransition_1 = this.stdExt.getInitTransition(_subgraph_1); - Transition sub_initt = _initTransition_1; - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("state = executeTransitionChain("); - TransitionChain _chain_2 = xpac.getChain(sub_initt); - String _chainId_4 = this.nameProvider.getChainId(_chain_2); - _builder.append(_chainId_4, " "); - _builder.append(", null, null);"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("else {"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("state = history["); - String _stateId_7 = this.nameProvider.getStateId(state_5); - _builder.append(_stateId_7, " "); - _builder.append("];"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine();} else { - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("// without init transition"); - _builder.newLine(); - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("state = history["); - String _stateId_8 = this.nameProvider.getStateId(state_5); - _builder.append(_stateId_8, " "); - _builder.append("];"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t\t"); - _builder.append("\t"); - _builder.append("break;"); - _builder.newLine(); - } - } - } - } - _builder.append("\t\t\t"); - _builder.append("case STATE_TOP:"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("state = history[STATE_TOP];"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("break;"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("skip_entry = false;"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("//return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true)"); - _builder.newLine(); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("//*** Entry and Exit Codes"); - _builder.newLine(); - { - StateMachine _stateMachine_5 = xpac.getStateMachine(); - List<State> _stateList = this.stdExt.getStateList(_stateMachine_5); - for(State state_6 : _stateList) { - { - boolean _isOwnObject = xpac.isOwnObject(state_6); - if (_isOwnObject) { - { - boolean _hasEntryCode_1 = this.stdExt.hasEntryCode(state_6); - if (_hasEntryCode_1) { - _builder.append("protected void "); - String _entryCodeOperationName_1 = this.nameProvider.getEntryCodeOperationName(state_6); - _builder.append(_entryCodeOperationName_1, ""); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - String _entryCode = this.stdExt.getEntryCode(xpac, state_6); - _builder.append(_entryCode, " "); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - } - } - { - boolean _hasExitCode_1 = this.stdExt.hasExitCode(state_6); - if (_hasExitCode_1) { - _builder.append("protected void "); - String _exitCodeOperationName_1 = this.nameProvider.getExitCodeOperationName(state_6); - _builder.append(_exitCodeOperationName_1, ""); - _builder.append("() {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - String _exitCode = this.stdExt.getExitCode(xpac, state_6); - _builder.append(_exitCode, " "); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - } - } - } - } - } - } - _builder.newLine(); - _builder.append("//*** Action Codes"); - _builder.newLine(); - { - StateMachine _stateMachine_6 = xpac.getStateMachine(); - List<Transition> _transitionList = this.stdExt.getTransitionList(_stateMachine_6); - for(Transition tr : _transitionList) { - { - boolean _operator_and = false; - boolean _isOwnObject_1 = xpac.isOwnObject(tr); - if (!_isOwnObject_1) { - _operator_and = false; - } else { - boolean _hasActionCode = this.stdExt.hasActionCode(tr); - _operator_and = BooleanExtensions.operator_and(_isOwnObject_1, _hasActionCode); - } - if (_operator_and) { - _builder.append("protected void "); - String _actionCodeOperationName = this.nameProvider.getActionCodeOperationName(tr); - _builder.append(_actionCodeOperationName, ""); - _builder.append("("); - { - if ((tr instanceof org.eclipse.etrice.core.room.NonInitialTransition)) { - _builder.append("InterfaceItemBase ifitem"); - String _argumentList = this.javaGen.getArgumentList(xpac, tr); - _builder.append(_argumentList, ""); - } - } - _builder.append(") {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - String _actionCode = this.stdExt.getActionCode(xpac, tr); - _builder.append(_actionCode, " "); - _builder.newLineIfNotEmpty(); - _builder.append("}"); - _builder.newLine(); - } - } - } - } - _builder.append("\t "); - _builder.newLine(); - _builder.append("//******************************************"); - _builder.newLine(); - _builder.append("// END of generated code for FSM"); - _builder.newLine(); - _builder.append("//******************************************"); - _builder.newLine(); - return _builder; - } - - protected StringConcatenation _guard(final TriggeredTransition tt, final String trigger, final ExpandedActorClass ac) { - StringConcatenation _builder = new StringConcatenation(); - EList<Trigger> _triggers = tt.getTriggers(); - final Function1<Trigger,Boolean> _function = new Function1<Trigger,Boolean>() { - public Boolean apply(final Trigger e) { - boolean _isMatching = ac.isMatching(e, trigger); - return ((Boolean)_isMatching); - } - }; - Trigger _findFirst = IterableExtensions.<Trigger>findFirst(_triggers, _function); - Trigger tr = _findFirst; - _builder.newLineIfNotEmpty(); - { - boolean _hasGuard = this.stdExt.hasGuard(tr); - if (_hasGuard) { - _builder.append("if ("); - Guard _guard = tr.getGuard(); - DetailCode _guard_1 = _guard.getGuard(); - String _code = ac.getCode(_guard_1); - _builder.append(_code, ""); - _builder.append(")"); - _builder.newLineIfNotEmpty(); - } - } - return _builder; - } - - protected StringConcatenation _guard(final Transition t, final String trigger, final ExpandedActorClass ac) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("/* error */"); - _builder.newLine(); - return _builder; - } - - public StringConcatenation guard(final Transition tt, final String trigger, final ExpandedActorClass ac) { - if ((tt instanceof TriggeredTransition) - && (trigger instanceof String) - && (ac instanceof ExpandedActorClass)) { - return _guard((TriggeredTransition)tt, (String)trigger, (ExpandedActorClass)ac); - } else if ((tt instanceof Transition) - && (trigger instanceof String) - && (ac instanceof ExpandedActorClass)) { - return _guard((Transition)tt, (String)trigger, (ExpandedActorClass)ac); - } else { - throw new IllegalArgumentException("Unhandled parameter types: " + - java.util.Arrays.<Object>asList(tt, trigger, ac).toString()); - } - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.Guard;
+import org.eclipse.etrice.core.room.InterfaceItem;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageFromIf;
+import org.eclipse.etrice.core.room.NonInitialTransition;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraph;
+import org.eclipse.etrice.core.room.StateMachine;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.generator.etricegen.ActiveTrigger;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+import org.eclipse.etrice.generator.extensions.RoomNameProv;
+import org.eclipse.etrice.generator.java.gen.JavaGenerator;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class StateMachineGen {
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private JavaGenerator javaGen;
+
+ public StringConcatenation genStateMachine(final ExpandedActorClass xpac, final ActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("//******************************************");
+ _builder.newLine();
+ _builder.append("// START of generated code for FSM");
+ _builder.newLine();
+ _builder.append("//******************************************");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("// State IDs for FSM");
+ _builder.newLine();
+ int _numberOfInheritedBaseStates = this.stdExt.getNumberOfInheritedBaseStates(ac);
+ int offset = _numberOfInheritedBaseStates;
+ _builder.newLineIfNotEmpty();
+ StateMachine _stateMachine = ac.getStateMachine();
+ List<State> _baseStateList = this.stdExt.getBaseStateList(_stateMachine);
+ List<State> baseStates = _baseStateList;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final State state : baseStates) {
+ _builder.append("protected static final int ");
+ String _stateId = this.stdExt.getStateId(state);
+ _builder.append(_stateId, "");
+ _builder.append(" = ");
+ int _indexOf = baseStates.indexOf(state);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)2));
+ int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_operator_plus), ((Integer)offset));
+ _builder.append(_operator_plus_1, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("protected static final String stateStrings[] = {\"<no state>\",\"<top>\",");
+ {
+ List<State> _allBaseStates = this.stdExt.getAllBaseStates(ac);
+ boolean hasAnyElements = false;
+ for(final State state_1 : _allBaseStates) {
+ if (!hasAnyElements) {
+ hasAnyElements = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\"");
+ String _statePathName = this.stdExt.getStatePathName(state_1);
+ _builder.append(_statePathName, " ");
+ _builder.append("\"");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ }
+ }
+ _builder.append("};");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("// history");
+ _builder.newLine();
+ _builder.append("// TODOHRR: history defined in ActorClassBase, init in constructor");
+ _builder.newLine();
+ _builder.append("//\t\thistory = new int[5];");
+ _builder.newLine();
+ _builder.append("//\t\tfor (int i = 0; i < history.length; i++) {");
+ _builder.newLine();
+ _builder.append("//\t\t\thistory[i] = NO_STATE;");
+ _builder.newLine();
+ _builder.append("//\t\t}");
+ _builder.newLine();
+ _builder.append("protected int history[] = {NO_STATE,NO_STATE");
+ {
+ List<State> _allBaseStates_1 = this.stdExt.getAllBaseStates(ac);
+ for(final State state_2 : _allBaseStates_1) {
+ _builder.append(",NO_STATE");
+ }
+ }
+ _builder.append("};");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ EList<TransitionChain> _ownTransitionChains = xpac.getOwnTransitionChains();
+ List<TransitionChain> chains = _ownTransitionChains;
+ _builder.newLineIfNotEmpty();
+ EList<TransitionChain> _transitionChains = xpac.getTransitionChains();
+ int _size = _transitionChains.size();
+ int _size_1 = chains.size();
+ int _operator_minus = IntegerExtensions.operator_minus(((Integer)_size), ((Integer)_size_1));
+ int offset_tc = _operator_minus;
+ _builder.newLineIfNotEmpty();
+ _builder.append("// transition chains");
+ _builder.newLine();
+ {
+ for(final TransitionChain tc : chains) {
+ _builder.append("protected static final int ");
+ String _chainId = this.stdExt.getChainId(tc);
+ _builder.append(_chainId, "");
+ _builder.append(" = ");
+ int _indexOf_1 = chains.indexOf(tc);
+ int _operator_plus_2 = IntegerExtensions.operator_plus(((Integer)_indexOf_1), ((Integer)1));
+ int _operator_plus_3 = IntegerExtensions.operator_plus(((Integer)_operator_plus_2), ((Integer)offset_tc));
+ _builder.append(_operator_plus_3, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ EList<MessageFromIf> _ownTriggers = xpac.getOwnTriggers();
+ EList<MessageFromIf> triggers = _ownTriggers;
+ _builder.newLineIfNotEmpty();
+ _builder.append("// triggers for FSM");
+ _builder.newLine();
+ {
+ for(final MessageFromIf mif : triggers) {
+ _builder.append("protected static final int ");
+ String _triggerCodeName = xpac.getTriggerCodeName(mif);
+ _builder.append(_triggerCodeName, "");
+ _builder.append(" = IFITEM_");
+ InterfaceItem _from = mif.getFrom();
+ String _name = _from.getName();
+ _builder.append(_name, "");
+ _builder.append(" + EVT_SHIFT*");
+ String _messageID = xpac.getMessageID(mif);
+ _builder.append(_messageID, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.newLine();
+ _builder.append("// receiveEvent contains the main implementation of the FSM");
+ _builder.newLine();
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("int trigger = ifitem.getLocalId() + EVT_SHIFT*evt;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("int chain = NOT_CAUGHT;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("int catching_state = NO_STATE;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("boolean is_handler = false;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("boolean skip_entry = false;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("if (!handleSystemEvent(ifitem, evt, generic_data)) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("switch (state) {");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_1 = xpac.getStateMachine();
+ List<State> _leafStateList = this.stdExt.getLeafStateList(_stateMachine_1);
+ for(final State state_3 : _leafStateList) {
+ _builder.append("\t\t\t");
+ _builder.append("case ");
+ String _stateId_1 = this.stdExt.getStateId(state_3);
+ _builder.append(_stateId_1, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ EList<ActiveTrigger> _activeTriggers = xpac.getActiveTriggers(state_3);
+ EList<ActiveTrigger> atlist = _activeTriggers;
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _isEmpty = atlist.isEmpty();
+ boolean _operator_not = BooleanExtensions.operator_not(_isEmpty);
+ if (_operator_not) {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("switch(trigger) {");
+ _builder.newLine();
+ {
+ for(final ActiveTrigger at : atlist) {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("case ");
+ String _trigger = at.getTrigger();
+ String _triggerCodeName_1 = xpac.getTriggerCodeName(_trigger);
+ _builder.append(_triggerCodeName_1, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ boolean _hasGuard = this.stdExt.hasGuard(xpac, at);
+ boolean needData = _hasGuard;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ {
+ if (needData) {
+ _builder.append("{ ");
+ Message _msg = at.getMsg();
+ String _typedDataDefinition = this.stdExt.getTypedDataDefinition(_msg);
+ _builder.append(_typedDataDefinition, " ");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ EList<TriggeredTransition> _transitions = at.getTransitions();
+ boolean hasAnyElements_1 = false;
+ for(final TriggeredTransition tt : _transitions) {
+ if (!hasAnyElements_1) {
+ hasAnyElements_1 = true;
+ } else {
+ _builder.appendImmediate(" else ", " ");
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ TransitionChain _chain = xpac.getChain(tt);
+ TransitionChain chain = _chain;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ Transition _transition = chain.getTransition();
+ String _trigger_1 = at.getTrigger();
+ StringConcatenation _guard = this.guard(_transition, _trigger_1, xpac);
+ _builder.append(_guard, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("{");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("chain = ");
+ String _chainId_1 = this.stdExt.getChainId(chain);
+ _builder.append(_chainId_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("catching_state = ");
+ String _contextId = this.stdExt.getContextId(chain);
+ _builder.append(_contextId, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ {
+ boolean _isHandler = chain.isHandler();
+ if (_isHandler) {
+ _builder.append("is_handler = true;");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ {
+ boolean _isSkipEntry = chain.isSkipEntry();
+ if (_isSkipEntry) {
+ _builder.append("skip_entry = true;");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ {
+ if (needData) {
+ _builder.append("}");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("if (chain != NOT_CAUGHT) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("exitTo(state, catching_state, is_handler);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("int next = executeTransitionChain(chain, ifitem, generic_data);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("next = enterHistory(next, is_handler, skip_entry);");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("setState(next);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("private void setState(int new_state) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("if (stateStrings[new_state]!=\"Idle\") {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// TODOTS: model switch for activation");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("System.out.println(getInstancePath() + \" -> \" + stateStrings[new_state]);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("this.state = new_state;");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("public void executeInitTransition() {");
+ _builder.newLine();
+ _builder.append("\t");
+ StateMachine _stateMachine_2 = xpac.getStateMachine();
+ Transition _initTransition = this.stdExt.getInitTransition(_stateMachine_2);
+ Transition initt = _initTransition;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("int chain = ");
+ TransitionChain _chain_1 = xpac.getChain(initt);
+ String _chainId_2 = this.stdExt.getChainId(_chain_1);
+ _builder.append(_chainId_2, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.append("int next = executeTransitionChain(chain, null, null);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("next = enterHistory(next, false, false);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("setState(next);");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* calls exit codes while exiting from the current state to one of its");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* parent states while remembering the history");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param current - the current state");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param to - the final parent state");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param handler - entry and exit codes are called only if not handler (for handler TransitionPoints)");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.append("private void exitTo(int current, int to, boolean handler) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("while (current!=to) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("switch (current) {");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_3 = xpac.getStateMachine();
+ List<State> _baseStateList_1 = this.stdExt.getBaseStateList(_stateMachine_3);
+ for(final State state_4 : _baseStateList_1) {
+ _builder.append("\t\t\t");
+ _builder.append("case ");
+ String _stateId_2 = this.stdExt.getStateId(state_4);
+ _builder.append(_stateId_2, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ {
+ boolean _hasExitCode = this.stdExt.hasExitCode(state_4);
+ if (_hasExitCode) {
+ _builder.append("if (!handler) ");
+ String _exitCodeOperationName = RoomNameProv.getExitCodeOperationName(state_4);
+ _builder.append(_exitCodeOperationName, " ");
+ _builder.append("();");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("history[");
+ String _parentStateId = RoomNameProv.getParentStateId(state_4);
+ _builder.append(_parentStateId, " ");
+ _builder.append("] = ");
+ String _stateId_3 = this.stdExt.getStateId(state_4);
+ _builder.append(_stateId_3, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("current = ");
+ String _parentStateId_1 = RoomNameProv.getParentStateId(state_4);
+ _builder.append(_parentStateId_1, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* calls action, entry and exit codes along a transition chain. The generic data are cast to typed data");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* matching the trigger of this chain. The ID of the final state is returned");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param chain - the chain ID");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param generic_data - the generic data pointer");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @return the ID of the final state");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.append("private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("switch (chain) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ EList<TransitionChain> _transitionChains_1 = xpac.getTransitionChains();
+ EList<TransitionChain> allchains = _transitionChains_1;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final TransitionChain tc_1 : allchains) {
+ _builder.append("\t\t");
+ _builder.append("case ");
+ String _chainId_3 = this.stdExt.getChainId(tc_1);
+ _builder.append(_chainId_3, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("{");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ String _executeChainCode = this.stdExt.getExecuteChainCode(xpac, tc_1);
+ _builder.append(_executeChainCode, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("return NO_STATE;");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* calls entry codes while entering a state\'s history. The ID of the final leaf state is returned");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param state - the state which is entered");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @param handler - entry code is executed if not handler");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @return - the ID of the final leaf state");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.append("private int enterHistory(int state, boolean handler, boolean skip_entry) {");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("while (true) {");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("switch (state) {");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_4 = xpac.getStateMachine();
+ List<State> _baseStateList_2 = this.stdExt.getBaseStateList(_stateMachine_4);
+ for(final State state_5 : _baseStateList_2) {
+ _builder.append("\t\t\t");
+ _builder.append("case ");
+ String _stateId_4 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_4, " ");
+ _builder.append(":");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ {
+ boolean _hasEntryCode = this.stdExt.hasEntryCode(state_5);
+ if (_hasEntryCode) {
+ _builder.append("if (!(skip_entry || handler)) ");
+ String _entryCodeOperationName = RoomNameProv.getEntryCodeOperationName(state_5);
+ _builder.append(_entryCodeOperationName, " ");
+ _builder.append("();");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _isLeaf = this.stdExt.isLeaf(state_5);
+ if (_isLeaf) {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("// in leaf state: return state id");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("return ");
+ String _stateId_5 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_5, " ");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ } else {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("// state has a sub graph");
+ _builder.newLine();
+ {
+ StateGraph _subgraph = state_5.getSubgraph();
+ boolean _hasInitTransition = this.stdExt.hasInitTransition(_subgraph);
+ if (_hasInitTransition) {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("// with init transition");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("if (history[");
+ String _stateId_6 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_6, " ");
+ _builder.append("]==NO_STATE) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ StateGraph _subgraph_1 = state_5.getSubgraph();
+ Transition _initTransition_1 = this.stdExt.getInitTransition(_subgraph_1);
+ Transition sub_initt = _initTransition_1;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("state = executeTransitionChain(");
+ TransitionChain _chain_2 = xpac.getChain(sub_initt);
+ String _chainId_4 = this.stdExt.getChainId(_chain_2);
+ _builder.append(_chainId_4, " ");
+ _builder.append(", null, null);");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("else {");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("state = history[");
+ String _stateId_7 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_7, " ");
+ _builder.append("];");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ } else {
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("// without init transition");
+ _builder.newLine();
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("state = history[");
+ String _stateId_8 = this.stdExt.getStateId(state_5);
+ _builder.append(_stateId_8, " ");
+ _builder.append("];");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("\t");
+ _builder.append("break;");
+ _builder.newLine();
+ }
+ }
+ }
+ }
+ _builder.append("\t\t\t");
+ _builder.append("case STATE_TOP:");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("state = history[STATE_TOP];");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("break;");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("skip_entry = false;");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("//return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true)");
+ _builder.newLine();
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("//*** Entry and Exit Codes");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_5 = xpac.getStateMachine();
+ List<State> _stateList = this.stdExt.getStateList(_stateMachine_5);
+ for(final State state_6 : _stateList) {
+ {
+ boolean _isOwnObject = xpac.isOwnObject(state_6);
+ if (_isOwnObject) {
+ {
+ boolean _hasEntryCode_1 = this.stdExt.hasEntryCode(state_6);
+ if (_hasEntryCode_1) {
+ _builder.append("protected void ");
+ String _entryCodeOperationName_1 = RoomNameProv.getEntryCodeOperationName(state_6);
+ _builder.append(_entryCodeOperationName_1, "");
+ _builder.append("() {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ String _entryCode = this.stdExt.getEntryCode(xpac, state_6);
+ _builder.append(_entryCode, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ {
+ boolean _hasExitCode_1 = this.stdExt.hasExitCode(state_6);
+ if (_hasExitCode_1) {
+ _builder.append("protected void ");
+ String _exitCodeOperationName_1 = RoomNameProv.getExitCodeOperationName(state_6);
+ _builder.append(_exitCodeOperationName_1, "");
+ _builder.append("() {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ String _exitCode = this.stdExt.getExitCode(xpac, state_6);
+ _builder.append(_exitCode, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ }
+ }
+ }
+ }
+ _builder.newLine();
+ _builder.append("//*** Action Codes");
+ _builder.newLine();
+ {
+ StateMachine _stateMachine_6 = xpac.getStateMachine();
+ List<Transition> _transitionList = this.stdExt.getTransitionList(_stateMachine_6);
+ for(final Transition tr : _transitionList) {
+ {
+ boolean _operator_and = false;
+ boolean _isOwnObject_1 = xpac.isOwnObject(tr);
+ if (!_isOwnObject_1) {
+ _operator_and = false;
+ } else {
+ boolean _hasActionCode = this.stdExt.hasActionCode(tr);
+ _operator_and = BooleanExtensions.operator_and(_isOwnObject_1, _hasActionCode);
+ }
+ if (_operator_and) {
+ _builder.append("protected void ");
+ String _actionCodeOperationName = RoomNameProv.getActionCodeOperationName(tr);
+ _builder.append(_actionCodeOperationName, "");
+ _builder.append("(");
+ {
+ if ((tr instanceof NonInitialTransition)) {
+ _builder.append("InterfaceItemBase ifitem");
+ String _argumentList = this.javaGen.getArgumentList(xpac, tr);
+ _builder.append(_argumentList, "");
+ }
+ }
+ _builder.append(") {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ String _actionCode = this.stdExt.getActionCode(xpac, tr);
+ _builder.append(_actionCode, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ }
+ }
+ _builder.append("\t ");
+ _builder.newLine();
+ _builder.append("//******************************************");
+ _builder.newLine();
+ _builder.append("// END of generated code for FSM");
+ _builder.newLine();
+ _builder.append("//******************************************");
+ _builder.newLine();
+ return _builder;
+ }
+
+ protected StringConcatenation _guard(final TriggeredTransition tt, final String trigger, final ExpandedActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ EList<Trigger> _triggers = tt.getTriggers();
+ final Function1<Trigger,Boolean> _function = new Function1<Trigger,Boolean>() {
+ public Boolean apply(final Trigger e) {
+ boolean _isMatching = ac.isMatching(e, trigger);
+ return ((Boolean)_isMatching);
+ }
+ };
+ Trigger _findFirst = IterableExtensions.<Trigger>findFirst(_triggers, _function);
+ Trigger tr = _findFirst;
+ _builder.newLineIfNotEmpty();
+ {
+ boolean _hasGuard = this.stdExt.hasGuard(tr);
+ if (_hasGuard) {
+ _builder.append("if (");
+ Guard _guard = tr.getGuard();
+ DetailCode _guard_1 = _guard.getGuard();
+ String _code = ac.getCode(_guard_1);
+ _builder.append(_code, "");
+ _builder.append(")");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ return _builder;
+ }
+
+ protected StringConcatenation _guard(final Transition t, final String trigger, final ExpandedActorClass ac) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("/* error */");
+ _builder.newLine();
+ return _builder;
+ }
+
+ public StringConcatenation guard(final Transition tt, final String trigger, final ExpandedActorClass ac) {
+ if (tt instanceof TriggeredTransition) {
+ return _guard((TriggeredTransition)tt, trigger, ac);
+ } else {
+ return _guard(tt, trigger, ac);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StdExtensions.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StdExtensions.java index cc8f9f5de..16e65c317 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StdExtensions.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StdExtensions.java @@ -1,323 +1,324 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.etrice.core.room.DataClass; -import org.eclipse.etrice.core.room.FreeType; -import org.eclipse.etrice.core.room.Message; -import org.eclipse.etrice.core.room.PrimitiveType; -import org.eclipse.etrice.core.room.RoomClass; -import org.eclipse.etrice.core.room.RoomModel; -import org.eclipse.etrice.core.room.Type; -import org.eclipse.etrice.core.room.TypedID; -import org.eclipse.etrice.generator.etricegen.ExpandedActorClass; -import org.eclipse.etrice.generator.etricegen.TransitionChain; -import org.eclipse.etrice.generator.extensions.RoomExtensions; -import org.eclipse.etrice.generator.java.gen.JavaGenerator; -import org.eclipse.xtext.xbase.lib.ObjectExtensions; -import org.eclipse.xtext.xbase.lib.StringExtensions; - -@SuppressWarnings("all") -public class StdExtensions extends RoomExtensions { - - @Inject - private JavaGenerator javaGen; - - public String getPackage(final RoomClass rc) { - EObject _eContainer = rc.eContainer(); - String _name = ((RoomModel) _eContainer).getName(); - return _name; - } - - public String getPathFromPackage(final String packageName) { - String _replaceAll = packageName.replaceAll("\\.", "/"); - String _operator_plus = StringExtensions.operator_plus(_replaceAll, "/"); - return _operator_plus; - } - - public String getPath(final RoomClass rc) { - String _package = this.getPackage(rc); - String _pathFromPackage = this.getPathFromPackage(_package); - return _pathFromPackage; - } - - public String getFileName(final RoomClass rc) { - String _name = rc.getName(); - String _operator_plus = StringExtensions.operator_plus(_name, ".java"); - return _operator_plus; - } - - public String toJavaType(final PrimitiveType prim) { - String _switchResult = null; - String _string = prim.toString(); - final String __valOfSwitchOver = _string; - boolean matched = false; - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) { - matched=true; - _switchResult = "undefined_type"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) { - matched=true; - _switchResult = "undefined_type"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) { - matched=true; - _switchResult = "undefined_type"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) { - matched=true; - _switchResult = "byte"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) { - matched=true; - _switchResult = "short"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) { - matched=true; - _switchResult = "int"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) { - matched=true; - _switchResult = "float"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) { - matched=true; - _switchResult = "double"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) { - matched=true; - _switchResult = "String"; - } - } - if (!matched) { - String _string_1 = prim.toString(); - _switchResult = _string_1; - } - return _switchResult; - } - - public String toJavaObjectType(final PrimitiveType prim) { - String _switchResult = null; - String _string = prim.toString(); - final String __valOfSwitchOver = _string; - boolean matched = false; - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) { - matched=true; - _switchResult = "undefined_type"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) { - matched=true; - _switchResult = "undefined_type"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) { - matched=true; - _switchResult = "undefined_type"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) { - matched=true; - _switchResult = "Byte"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) { - matched=true; - _switchResult = "Short"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) { - matched=true; - _switchResult = "Integer"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) { - matched=true; - _switchResult = "Float"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) { - matched=true; - _switchResult = "Double"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) { - matched=true; - _switchResult = "String"; - } - } - if (!matched) { - String _string_1 = prim.toString(); - _switchResult = _string_1; - } - return _switchResult; - } - - public String typeName(final Type type) { - String _xifexpression = null; - DataClass _type = type.getType(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null); - if (_operator_notEquals) { - DataClass _type_1 = type.getType(); - String _name = _type_1.getName(); - return _name; - } else { - PrimitiveType _prim = type.getPrim(); - String _javaType = this.toJavaType(_prim); - _xifexpression = _javaType; - } - return _xifexpression; - } - - public String freeTypeName(final FreeType type) { - String _xifexpression = null; - String _type = type.getType(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null); - if (_operator_notEquals) { - String _type_1 = type.getType(); - return _type_1; - } else { - PrimitiveType _prim = type.getPrim(); - String _javaType = this.toJavaType(_prim); - _xifexpression = _javaType; - } - return _xifexpression; - } - - public String typeObjectName(final Type type) { - String _xifexpression = null; - DataClass _type = type.getType(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null); - if (_operator_notEquals) { - DataClass _type_1 = type.getType(); - String _name = _type_1.getName(); - return _name; - } else { - PrimitiveType _prim = type.getPrim(); - String _javaObjectType = this.toJavaObjectType(_prim); - _xifexpression = _javaObjectType; - } - return _xifexpression; - } - - public String defaultValue(final PrimitiveType prim) { - String _switchResult = null; - String _string = prim.toString(); - final String __valOfSwitchOver = _string; - boolean matched = false; - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) { - matched=true; - _switchResult = "0"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) { - matched=true; - _switchResult = "0"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) { - matched=true; - _switchResult = "0"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) { - matched=true; - _switchResult = "0"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) { - matched=true; - _switchResult = "0"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) { - matched=true; - _switchResult = "0"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) { - matched=true; - _switchResult = "0.0"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) { - matched=true; - _switchResult = "0.0"; - } - } - if (!matched) { - if (org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) { - matched=true; - _switchResult = "\"\""; - } - } - if (!matched) { - String _string_1 = prim.toString(); - _switchResult = _string_1; - } - return _switchResult; - } - - public String defaultValue(final TypedID a) { - Type _type = a.getType(); - DataClass _type_1 = _type.getType(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type_1, null); - if (_operator_notEquals) { - Type _type_2 = a.getType(); - DataClass _type_3 = _type_2.getType(); - String _name = _type_3.getName(); - String _operator_plus = StringExtensions.operator_plus("new ", _name); - String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, "()"); - return _operator_plus_1; - } else { - Type _type_4 = a.getType(); - PrimitiveType _prim = _type_4.getPrim(); - String _defaultValue = this.defaultValue(_prim); - return _defaultValue; - } - } - - public String getTypedDataDefinition(final Message m) { - String _typedData = this.javaGen.getTypedData(m); - return _typedData; - } - - public String getExecuteChainCode(final ExpandedActorClass ac, final TransitionChain tc) { - String _executeChain = this.javaGen.getExecuteChain(ac, tc); - return _executeChain; - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.DataClass;
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.PrimitiveType;
+import org.eclipse.etrice.core.room.RoomClass;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.Type;
+import org.eclipse.etrice.core.room.TypedID;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+import org.eclipse.etrice.generator.extensions.RoomExtensions;
+import org.eclipse.etrice.generator.java.gen.JavaGenerator;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+@SuppressWarnings("all")
+@Singleton
+public class StdExtensions extends RoomExtensions {
+ @Inject
+ private JavaGenerator javaGen;
+
+ public String getPackage(final RoomClass rc) {
+ EObject _eContainer = rc.eContainer();
+ String _name = ((RoomModel) _eContainer).getName();
+ return _name;
+ }
+
+ public String getPathFromPackage(final String packageName) {
+ String _replaceAll = packageName.replaceAll("\\.", "/");
+ String _operator_plus = StringExtensions.operator_plus(_replaceAll, "/");
+ return _operator_plus;
+ }
+
+ public String getPath(final RoomClass rc) {
+ String _package = this.getPackage(rc);
+ String _pathFromPackage = this.getPathFromPackage(_package);
+ return _pathFromPackage;
+ }
+
+ public String getFileName(final RoomClass rc) {
+ String _name = rc.getName();
+ String _operator_plus = StringExtensions.operator_plus(_name, ".java");
+ return _operator_plus;
+ }
+
+ public String toJavaType(final PrimitiveType prim) {
+ String _switchResult = null;
+ String _string = prim.toString();
+ final String __valOfSwitchOver = _string;
+ boolean matched = false;
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) {
+ matched=true;
+ _switchResult = "byte";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) {
+ matched=true;
+ _switchResult = "short";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) {
+ matched=true;
+ _switchResult = "int";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) {
+ matched=true;
+ _switchResult = "float";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) {
+ matched=true;
+ _switchResult = "double";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) {
+ matched=true;
+ _switchResult = "String";
+ }
+ }
+ if (!matched) {
+ String _string_1 = prim.toString();
+ _switchResult = _string_1;
+ }
+ return _switchResult;
+ }
+
+ public String toJavaObjectType(final PrimitiveType prim) {
+ String _switchResult = null;
+ String _string = prim.toString();
+ final String __valOfSwitchOver = _string;
+ boolean matched = false;
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) {
+ matched=true;
+ _switchResult = "undefined_type";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) {
+ matched=true;
+ _switchResult = "Byte";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) {
+ matched=true;
+ _switchResult = "Short";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) {
+ matched=true;
+ _switchResult = "Integer";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) {
+ matched=true;
+ _switchResult = "Float";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) {
+ matched=true;
+ _switchResult = "Double";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) {
+ matched=true;
+ _switchResult = "String";
+ }
+ }
+ if (!matched) {
+ String _string_1 = prim.toString();
+ _switchResult = _string_1;
+ }
+ return _switchResult;
+ }
+
+ public String typeName(final Type type) {
+ String _xifexpression = null;
+ DataClass _type = type.getType();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null);
+ if (_operator_notEquals) {
+ DataClass _type_1 = type.getType();
+ String _name = _type_1.getName();
+ return _name;
+ } else {
+ PrimitiveType _prim = type.getPrim();
+ String _javaType = this.toJavaType(_prim);
+ _xifexpression = _javaType;
+ }
+ return _xifexpression;
+ }
+
+ public String freeTypeName(final FreeType type) {
+ String _xifexpression = null;
+ String _type = type.getType();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null);
+ if (_operator_notEquals) {
+ String _type_1 = type.getType();
+ return _type_1;
+ } else {
+ PrimitiveType _prim = type.getPrim();
+ String _javaType = this.toJavaType(_prim);
+ _xifexpression = _javaType;
+ }
+ return _xifexpression;
+ }
+
+ public String typeObjectName(final Type type) {
+ String _xifexpression = null;
+ DataClass _type = type.getType();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type, null);
+ if (_operator_notEquals) {
+ DataClass _type_1 = type.getType();
+ String _name = _type_1.getName();
+ return _name;
+ } else {
+ PrimitiveType _prim = type.getPrim();
+ String _javaObjectType = this.toJavaObjectType(_prim);
+ _xifexpression = _javaObjectType;
+ }
+ return _xifexpression;
+ }
+
+ public String defaultValue(final PrimitiveType prim) {
+ String _switchResult = null;
+ String _string = prim.toString();
+ final String __valOfSwitchOver = _string;
+ boolean matched = false;
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint8")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint16")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"uint32")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int8")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int16")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"int32")) {
+ matched=true;
+ _switchResult = "0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float32")) {
+ matched=true;
+ _switchResult = "0.0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"float64")) {
+ matched=true;
+ _switchResult = "0.0";
+ }
+ }
+ if (!matched) {
+ if (ObjectExtensions.operator_equals(__valOfSwitchOver,"string")) {
+ matched=true;
+ _switchResult = "\"\"";
+ }
+ }
+ if (!matched) {
+ String _string_1 = prim.toString();
+ _switchResult = _string_1;
+ }
+ return _switchResult;
+ }
+
+ public String defaultValue(final TypedID a) {
+ Type _type = a.getType();
+ DataClass _type_1 = _type.getType();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_type_1, null);
+ if (_operator_notEquals) {
+ Type _type_2 = a.getType();
+ DataClass _type_3 = _type_2.getType();
+ String _name = _type_3.getName();
+ String _operator_plus = StringExtensions.operator_plus("new ", _name);
+ String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, "()");
+ return _operator_plus_1;
+ } else {
+ Type _type_4 = a.getType();
+ PrimitiveType _prim = _type_4.getPrim();
+ String _defaultValue = this.defaultValue(_prim);
+ return _defaultValue;
+ }
+ }
+
+ public String getTypedDataDefinition(final Message m) {
+ String _typedData = this.javaGen.getTypedData(m);
+ return _typedData;
+ }
+
+ public String getExecuteChainCode(final ExpandedActorClass ac, final TransitionChain tc) {
+ String _executeChain = this.javaGen.getExecuteChain(ac, tc);
+ return _executeChain;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java index 92d8c7872..2df9ebab2 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java @@ -1,622 +1,629 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.etrice.core.room.ActorClass; -import org.eclipse.etrice.core.room.DetailCode; -import org.eclipse.etrice.core.room.LogicalThread; -import org.eclipse.etrice.core.room.RoomModel; -import org.eclipse.etrice.core.room.SubSystemClass; -import org.eclipse.etrice.generator.base.ILogger; -import org.eclipse.etrice.generator.base.Indexed; -import org.eclipse.etrice.generator.etricegen.ActorInstance; -import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance; -import org.eclipse.etrice.generator.etricegen.Root; -import org.eclipse.etrice.generator.etricegen.SubSystemInstance; -import org.eclipse.etrice.generator.java.gen.ProcedureHelpers; -import org.eclipse.etrice.generator.java.gen.StdExtensions; -import org.eclipse.xtext.generator.JavaIoFileSystemAccess; -import org.eclipse.xtext.xbase.lib.BooleanExtensions; -import org.eclipse.xtext.xbase.lib.ComparableExtensions; -import org.eclipse.xtext.xbase.lib.IntegerExtensions; -import org.eclipse.xtext.xbase.lib.StringExtensions; -import org.eclipse.xtext.xtend2.lib.StringConcatenation; - -@SuppressWarnings("all") -public class SubSystemClassGen { - - @Inject - private JavaIoFileSystemAccess fileAccess; - - @Inject - private StdExtensions stdExt; - - @Inject - private ProcedureHelpers helpers; - - @Inject - private ILogger logger; - - public void doGenerate(final Root root) { - EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances(); - for (SubSystemInstance ssi : _subSystemInstances) { - { - SubSystemClass _subSystemClass = ssi.getSubSystemClass(); - String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass); - SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass(); - String _path = this.stdExt.getPath(_subSystemClass_1); - String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path); - String path = _operator_plus; - SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass(); - String _fileName = this.stdExt.getFileName(_subSystemClass_2); - String file = _fileName; - String _operator_plus_1 = StringExtensions.operator_plus("generating SubSystemClass implementation: \'", file); - String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'"); - String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path); - String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'"); - this.logger.logInfo(_operator_plus_4); - this.fileAccess.setOutputPath(path); - SubSystemClass _subSystemClass_3 = ssi.getSubSystemClass(); - StringConcatenation _generate = this.generate(root, ssi, _subSystemClass_3); - this.fileAccess.generateFile(file, _generate); - } - } - } - - public StringConcatenation generate(final Root root, final SubSystemInstance comp, final SubSystemClass cc) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("package "); - String _package = this.stdExt.getPackage(cc); - _builder.append(_package, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.MessageService;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.RTServices;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.IRTObject;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.messaging.RTSystemServicesProtocol.*;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;"); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;"); - _builder.newLine(); - _builder.newLine(); - EList<RoomModel> _referencedModels = root.getReferencedModels(cc); - EList<RoomModel> models = _referencedModels; - _builder.newLineIfNotEmpty(); - { - for(RoomModel model : models) { - _builder.append("import "); - String _name = model.getName(); - _builder.append(_name, ""); - _builder.append(".*;"); - } - } - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.newLine(); - DetailCode _userCode1 = cc.getUserCode1(); - StringConcatenation _UserCode = this.helpers.UserCode(_userCode1); - _builder.append(_UserCode, ""); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("public class "); - String _name_1 = comp.getName(); - _builder.append(_name_1, ""); - _builder.append(" extends SubSystemClassBase{"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - DetailCode _userCode2 = cc.getUserCode2(); - StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2); - _builder.append(_UserCode_1, " "); - _builder.newLineIfNotEmpty(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public "); - String _name_2 = comp.getName(); - _builder.append(_name_2, " "); - _builder.append("(IRTObject parent, String name) {"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("super(parent, name);"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data){"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void instantiateMessageServices(){"); - _builder.newLine(); - _builder.append("\t"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(new MessageService(this, new Address(0, 0, 0),\"MessageService_Main\"));"); - _builder.newLine(); - { - EList<LogicalThread> _threads = cc.getThreads(); - for(LogicalThread thread : _threads) { - _builder.append("\t\t"); - _builder.append("RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(new MessageService(this, new Address(0, "); - EList<LogicalThread> _threads_1 = cc.getThreads(); - int _indexOf = _threads_1.indexOf(thread); - int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)1)); - _builder.append(_operator_plus, " "); - _builder.append(", 0),\"MessageService_"); - String _name_3 = thread.getName(); - _builder.append(_name_3, " "); - _builder.append("\", "); - int _prio = thread.getPrio(); - _builder.append(_prio, " "); - _builder.append("));"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("@Override"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public void instantiateActors(){"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// all addresses"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// Addresses for the Subsystem Systemport"); - _builder.newLine(); - { - EList<ActorInstance> _allContainedInstances = comp.getAllContainedInstances(); - int _maxObjId = comp.getMaxObjId(); - Iterable<Indexed<ActorInstance>> _indexed = Indexed.<ActorInstance>indexed(_allContainedInstances, _maxObjId); - for(Indexed<ActorInstance> ai : _indexed) { - _builder.append("\t\t"); - _builder.append("Address addr_item_SystemPort_"); - EList<ActorInstance> _allContainedInstances_1 = comp.getAllContainedInstances(); - ActorInstance _value = ai.getValue(); - int _indexOf_1 = _allContainedInstances_1.indexOf(_value); - _builder.append(_indexOf_1, " "); - _builder.append(" = new Address(0,0,"); - int _index1 = ai.getIndex1(); - _builder.append(_index1, " "); - _builder.append(");"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t"); - _builder.newLine(); - { - EList<ActorInstance> _allContainedInstances_2 = comp.getAllContainedInstances(); - for(ActorInstance ai_1 : _allContainedInstances_2) { - _builder.append("\t\t"); - _builder.append("// actor instance "); - String _path = ai_1.getPath(); - _builder.append(_path, " "); - _builder.append(" itself => Systemport Address"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("// TODOTJ: For each Actor, multiple addresses should be generated (actor?, systemport, debugport)"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("Address addr_item_"); - String _path_1 = ai_1.getPath(); - String _pathName = this.stdExt.getPathName(_path_1); - _builder.append(_pathName, " "); - _builder.append(" = new Address(0,"); - int _threadId = ai_1.getThreadId(); - _builder.append(_threadId, " "); - _builder.append(","); - int _objId = ai_1.getObjId(); - _builder.append(_objId, " "); - _builder.append(");"); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("// interface items of "); - String _path_2 = ai_1.getPath(); - _builder.append(_path_2, " "); - _builder.newLineIfNotEmpty(); - { - EList<InterfaceItemInstance> _orderedIfItemInstances = ai_1.getOrderedIfItemInstances(); - for(InterfaceItemInstance pi : _orderedIfItemInstances) { - { - boolean _operator_or = false; - if ((pi instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance)) { - _operator_or = true; - } else { - EList<InterfaceItemInstance> _peers = pi.getPeers(); - int _size = _peers.size(); - boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)1)); - _operator_or = BooleanExtensions.operator_or((pi instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance), _operator_greaterThan); - } - if (_operator_or) { - { - EList<InterfaceItemInstance> _peers_1 = pi.getPeers(); - for(InterfaceItemInstance peer : _peers_1) { - _builder.append("\t\t"); - EList<InterfaceItemInstance> _peers_2 = pi.getPeers(); - int _indexOf_2 = _peers_2.indexOf(peer); - int i = _indexOf_2; - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("Address addr_item_"); - String _path_3 = pi.getPath(); - String _pathName_1 = this.stdExt.getPathName(_path_3); - _builder.append(_pathName_1, " "); - _builder.append("_"); - _builder.append(i, " "); - _builder.append(" = new Address(0,"); - int _threadId_1 = pi.getThreadId(); - _builder.append(_threadId_1, " "); - _builder.append(","); - int _objId_1 = pi.getObjId(); - int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_objId_1), ((Integer)i)); - _builder.append(_operator_plus_1, " "); - _builder.append(");"); - _builder.newLineIfNotEmpty(); - } - }} else { - _builder.append("\t\t"); - _builder.append("Address addr_item_"); - String _path_4 = pi.getPath(); - String _pathName_2 = this.stdExt.getPathName(_path_4); - _builder.append(_pathName_2, " "); - _builder.append(" = new Address(0,"); - int _threadId_2 = ai_1.getThreadId(); - _builder.append(_threadId_2, " "); - _builder.append(","); - int _objId_2 = pi.getObjId(); - _builder.append(_objId_2, " "); - _builder.append(");"); - _builder.newLineIfNotEmpty(); - } - } - } - } - } - } - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// instantiate all actor instances"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("instances = new ActorClassBase["); - EList<ActorInstance> _allContainedInstances_3 = comp.getAllContainedInstances(); - int _size_1 = _allContainedInstances_3.size(); - _builder.append(_size_1, " "); - _builder.append("];"); - _builder.newLineIfNotEmpty(); - { - EList<ActorInstance> _allContainedInstances_4 = comp.getAllContainedInstances(); - for(ActorInstance ai_2 : _allContainedInstances_4) { - _builder.append("\t\t"); - _builder.append("instances["); - EList<ActorInstance> _allContainedInstances_5 = comp.getAllContainedInstances(); - int _indexOf_3 = _allContainedInstances_5.indexOf(ai_2); - _builder.append(_indexOf_3, " "); - _builder.append("] = new "); - ActorClass _actorClass = ai_2.getActorClass(); - String _name_4 = _actorClass.getName(); - _builder.append(_name_4, " "); - _builder.append("("); - _builder.newLineIfNotEmpty(); - { - EObject _eContainer = ai_2.eContainer(); - if ((_eContainer instanceof org.eclipse.etrice.generator.etricegen.SubSystemInstance)) { - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("this,"); - _builder.newLine();} else { - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("instances["); - EList<ActorInstance> _allContainedInstances_6 = comp.getAllContainedInstances(); - EObject _eContainer_1 = ai_2.eContainer(); - int _indexOf_4 = _allContainedInstances_6.indexOf(_eContainer_1); - _builder.append(_indexOf_4, " "); - _builder.append("],"); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("\""); - String _name_5 = ai_2.getName(); - _builder.append(_name_5, " "); - _builder.append("\","); - _builder.newLineIfNotEmpty(); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("// own interface item addresses"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("new Address[][] {{addr_item_"); - String _path_5 = ai_2.getPath(); - String _pathName_3 = this.stdExt.getPathName(_path_5); - _builder.append(_pathName_3, " "); - _builder.append("}"); - { - EList<InterfaceItemInstance> _orderedIfItemInstances_1 = ai_2.getOrderedIfItemInstances(); - boolean _isEmpty = _orderedIfItemInstances_1.isEmpty(); - boolean _operator_not = BooleanExtensions.operator_not(_isEmpty); - if (_operator_not) { - _builder.append(","); - } - } - _builder.newLineIfNotEmpty(); - { - EList<InterfaceItemInstance> _orderedIfItemInstances_2 = ai_2.getOrderedIfItemInstances(); - boolean hasAnyElements = false; - for(InterfaceItemInstance pi_1 : _orderedIfItemInstances_2) { - if (!hasAnyElements) { - hasAnyElements = true; - } else { - _builder.appendImmediate(",", " "); - } - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("{"); - _builder.newLine(); - { - boolean _operator_or_1 = false; - if ((pi_1 instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance)) { - _operator_or_1 = true; - } else { - EList<InterfaceItemInstance> _peers_3 = pi_1.getPeers(); - int _size_2 = _peers_3.size(); - boolean _operator_greaterThan_1 = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size_2), ((Integer)1)); - _operator_or_1 = BooleanExtensions.operator_or((pi_1 instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance), _operator_greaterThan_1); - } - if (_operator_or_1) { - { - EList<InterfaceItemInstance> _peers_4 = pi_1.getPeers(); - boolean hasAnyElements_1 = false; - for(InterfaceItemInstance peer_1 : _peers_4) { - if (!hasAnyElements_1) { - hasAnyElements_1 = true; - } else { - _builder.appendImmediate(",", " "); - } - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("addr_item_"); - String _path_6 = pi_1.getPath(); - String _pathName_4 = this.stdExt.getPathName(_path_6); - _builder.append(_pathName_4, " "); - _builder.append("_"); - EList<InterfaceItemInstance> _peers_5 = pi_1.getPeers(); - int _indexOf_5 = _peers_5.indexOf(peer_1); - _builder.append(_indexOf_5, " "); - _builder.newLineIfNotEmpty(); - } - }} else { - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("\t"); - _builder.append("addr_item_"); - String _path_7 = pi_1.getPath(); - String _pathName_5 = this.stdExt.getPathName(_path_7); - _builder.append(_pathName_5, " "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("},"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("// peer interface item addresses"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("new Address[][] {{addr_item_SystemPort_"); - EList<ActorInstance> _allContainedInstances_7 = comp.getAllContainedInstances(); - int _indexOf_6 = _allContainedInstances_7.indexOf(ai_2); - _builder.append(_indexOf_6, " "); - _builder.append("}"); - { - EList<InterfaceItemInstance> _orderedIfItemInstances_3 = ai_2.getOrderedIfItemInstances(); - boolean _isEmpty_1 = _orderedIfItemInstances_3.isEmpty(); - boolean _operator_not_1 = BooleanExtensions.operator_not(_isEmpty_1); - if (_operator_not_1) { - _builder.append(","); - } - } - _builder.newLineIfNotEmpty(); - { - EList<InterfaceItemInstance> _orderedIfItemInstances_4 = ai_2.getOrderedIfItemInstances(); - boolean hasAnyElements_2 = false; - for(InterfaceItemInstance pi_2 : _orderedIfItemInstances_4) { - if (!hasAnyElements_2) { - hasAnyElements_2 = true; - } else { - _builder.appendImmediate(",", " "); - } - _builder.append("\t\t"); - _builder.append("\t\t"); - _builder.append("{"); - _builder.newLine(); - { - boolean _operator_and = false; - boolean _operator_not_2 = BooleanExtensions.operator_not((pi_2 instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance)); - if (!_operator_not_2) { - _operator_and = false; - } else { - EList<InterfaceItemInstance> _peers_6 = pi_2.getPeers(); - boolean _isEmpty_2 = _peers_6.isEmpty(); - _operator_and = BooleanExtensions.operator_and(_operator_not_2, _isEmpty_2); - } - if (_operator_and) { - _builder.append("\t\t"); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("null"); - _builder.newLine();} else { - { - EList<InterfaceItemInstance> _peers_7 = pi_2.getPeers(); - boolean hasAnyElements_3 = false; - for(InterfaceItemInstance pp : _peers_7) { - if (!hasAnyElements_3) { - hasAnyElements_3 = true; - } else { - _builder.appendImmediate(",", " "); - } - { - boolean _operator_or_2 = false; - if ((pp instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance)) { - _operator_or_2 = true; - } else { - EList<InterfaceItemInstance> _peers_8 = pp.getPeers(); - int _size_3 = _peers_8.size(); - boolean _operator_greaterThan_2 = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size_3), ((Integer)1)); - _operator_or_2 = BooleanExtensions.operator_or((pp instanceof org.eclipse.etrice.generator.etricegen.ServiceImplInstance), _operator_greaterThan_2); - } - if (_operator_or_2) { - _builder.append("\t\t"); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("addr_item_"); - String _path_8 = pp.getPath(); - String _pathName_6 = this.stdExt.getPathName(_path_8); - _builder.append(_pathName_6, " "); - _builder.append("_"); - EList<InterfaceItemInstance> _peers_9 = pp.getPeers(); - int _indexOf_7 = _peers_9.indexOf(pi_2); - _builder.append(_indexOf_7, " "); - _builder.newLineIfNotEmpty();} else { - _builder.append("\t\t"); - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("addr_item_"); - String _path_9 = pp.getPath(); - String _pathName_7 = this.stdExt.getPathName(_path_9); - _builder.append(_pathName_7, " "); - _builder.newLineIfNotEmpty(); - } - } - } - } - } - } - _builder.append("\t\t"); - _builder.append("\t\t"); - _builder.append("}"); - _builder.newLine(); - } - } - _builder.append("\t\t"); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("); "); - _builder.newLine(); - } - } - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// create the subsystem system port\t"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("RTSystemPort = new RTSystemServicesProtocolConjPortRepl(this, \"RTSystemPort\","); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("0, //local ID"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("// own addresses"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("new Address[]{"); - _builder.newLine(); - { - EList<ActorInstance> _allContainedInstances_8 = comp.getAllContainedInstances(); - boolean hasAnyElements_4 = false; - for(ActorInstance ai_3 : _allContainedInstances_8) { - if (!hasAnyElements_4) { - hasAnyElements_4 = true; - } else { - _builder.appendImmediate(",", " "); - } - _builder.append("\t\t\t\t\t"); - _builder.append("addr_item_SystemPort_"); - EList<ActorInstance> _allContainedInstances_9 = comp.getAllContainedInstances(); - int _indexOf_8 = _allContainedInstances_9.indexOf(ai_3); - _builder.append(_indexOf_8, " "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t\t\t"); - _builder.append("},"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("// peer addresses"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.append("new Address[]{"); - _builder.newLine(); - { - EList<ActorInstance> _allContainedInstances_10 = comp.getAllContainedInstances(); - boolean hasAnyElements_5 = false; - for(ActorInstance ai_4 : _allContainedInstances_10) { - if (!hasAnyElements_5) { - hasAnyElements_5 = true; - } else { - _builder.appendImmediate(",", " "); - } - _builder.append("\t\t\t\t\t"); - _builder.append("addr_item_"); - String _path_10 = ai_4.getPath(); - String _pathName_8 = this.stdExt.getPathName(_path_10); - _builder.append(_pathName_8, " "); - _builder.newLineIfNotEmpty(); - } - } - _builder.append("\t\t\t\t"); - _builder.append("});"); - _builder.newLine(); - _builder.append("\t\t\t\t"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("};"); - _builder.newLine(); - return _builder; - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.LogicalThread;
+import org.eclipse.etrice.core.room.RoomModel;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.generator.base.ILogger;
+import org.eclipse.etrice.generator.base.Indexed;
+import org.eclipse.etrice.generator.etricegen.ActorInstance;
+import org.eclipse.etrice.generator.etricegen.InterfaceItemInstance;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.ServiceImplInstance;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+import org.eclipse.etrice.generator.java.gen.ProcedureHelpers;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.ComparableExtensions;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class SubSystemClassGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ @Inject
+ private ProcedureHelpers helpers;
+
+ @Inject
+ private ILogger logger;
+
+ public void doGenerate(final Root root) {
+ EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
+ for (final SubSystemInstance ssi : _subSystemInstances) {
+ {
+ SubSystemClass _subSystemClass = ssi.getSubSystemClass();
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass);
+ SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass();
+ String _path = this.stdExt.getPath(_subSystemClass_1);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ String path = _operator_plus;
+ SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass();
+ String _fileName = this.stdExt.getFileName(_subSystemClass_2);
+ String file = _fileName;
+ String _operator_plus_1 = StringExtensions.operator_plus("generating SubSystemClass implementation: \'", file);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "\' in \'");
+ String _operator_plus_3 = StringExtensions.operator_plus(_operator_plus_2, path);
+ String _operator_plus_4 = StringExtensions.operator_plus(_operator_plus_3, "\'");
+ this.logger.logInfo(_operator_plus_4);
+ this.fileAccess.setOutputPath(path);
+ SubSystemClass _subSystemClass_3 = ssi.getSubSystemClass();
+ StringConcatenation _generate = this.generate(root, ssi, _subSystemClass_3);
+ this.fileAccess.generateFile(file, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final SubSystemInstance comp, final SubSystemClass cc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(cc);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.MessageService;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.RTServices;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.Address;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.IRTObject;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.messaging.RTSystemServicesProtocol.*;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;");
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;");
+ _builder.newLine();
+ _builder.newLine();
+ EList<RoomModel> _referencedModels = root.getReferencedModels(cc);
+ EList<RoomModel> models = _referencedModels;
+ _builder.newLineIfNotEmpty();
+ {
+ for(final RoomModel model : models) {
+ _builder.append("import ");
+ String _name = model.getName();
+ _builder.append(_name, "");
+ _builder.append(".*;");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.newLine();
+ DetailCode _userCode1 = cc.getUserCode1();
+ StringConcatenation _UserCode = this.helpers.UserCode(_userCode1);
+ _builder.append(_UserCode, "");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("public class ");
+ String _name_1 = comp.getName();
+ _builder.append(_name_1, "");
+ _builder.append(" extends SubSystemClassBase{");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ DetailCode _userCode2 = cc.getUserCode2();
+ StringConcatenation _UserCode_1 = this.helpers.UserCode(_userCode2);
+ _builder.append(_UserCode_1, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public ");
+ String _name_2 = comp.getName();
+ _builder.append(_name_2, " ");
+ _builder.append("(IRTObject parent, String name) {");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("super(parent, name);");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void instantiateMessageServices(){");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(new MessageService(this, new Address(0, 0, 0),\"MessageService_Main\"));");
+ _builder.newLine();
+ {
+ EList<LogicalThread> _threads = cc.getThreads();
+ for(final LogicalThread thread : _threads) {
+ _builder.append("\t\t");
+ _builder.append("RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(new MessageService(this, new Address(0, ");
+ EList<LogicalThread> _threads_1 = cc.getThreads();
+ int _indexOf = _threads_1.indexOf(thread);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_indexOf), ((Integer)1));
+ _builder.append(_operator_plus, " ");
+ _builder.append(", 0),\"MessageService_");
+ String _name_3 = thread.getName();
+ _builder.append(_name_3, " ");
+ _builder.append("\", ");
+ int _prio = thread.getPrio();
+ _builder.append(_prio, " ");
+ _builder.append("));");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("@Override");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public void instantiateActors(){");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// all addresses");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// Addresses for the Subsystem Systemport");
+ _builder.newLine();
+ {
+ EList<ActorInstance> _allContainedInstances = comp.getAllContainedInstances();
+ int _maxObjId = comp.getMaxObjId();
+ Iterable<Indexed<ActorInstance>> _indexed = Indexed.<ActorInstance>indexed(_allContainedInstances, _maxObjId);
+ for(final Indexed<ActorInstance> ai : _indexed) {
+ _builder.append("\t\t");
+ _builder.append("Address addr_item_SystemPort_");
+ EList<ActorInstance> _allContainedInstances_1 = comp.getAllContainedInstances();
+ ActorInstance _value = ai.getValue();
+ int _indexOf_1 = _allContainedInstances_1.indexOf(_value);
+ _builder.append(_indexOf_1, " ");
+ _builder.append(" = new Address(0,0,");
+ int _index1 = ai.getIndex1();
+ _builder.append(_index1, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.newLine();
+ {
+ EList<ActorInstance> _allContainedInstances_2 = comp.getAllContainedInstances();
+ for(final ActorInstance ai_1 : _allContainedInstances_2) {
+ _builder.append("\t\t");
+ _builder.append("// actor instance ");
+ String _path = ai_1.getPath();
+ _builder.append(_path, " ");
+ _builder.append(" itself => Systemport Address");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("// TODOTJ: For each Actor, multiple addresses should be generated (actor?, systemport, debugport)");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("Address addr_item_");
+ String _path_1 = ai_1.getPath();
+ String _pathName = this.stdExt.getPathName(_path_1);
+ _builder.append(_pathName, " ");
+ _builder.append(" = new Address(0,");
+ int _threadId = ai_1.getThreadId();
+ _builder.append(_threadId, " ");
+ _builder.append(",");
+ int _objId = ai_1.getObjId();
+ _builder.append(_objId, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("// interface items of ");
+ String _path_2 = ai_1.getPath();
+ _builder.append(_path_2, " ");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances = ai_1.getOrderedIfItemInstances();
+ for(final InterfaceItemInstance pi : _orderedIfItemInstances) {
+ {
+ boolean _operator_or = false;
+ if ((pi instanceof ServiceImplInstance)) {
+ _operator_or = true;
+ } else {
+ EList<InterfaceItemInstance> _peers = pi.getPeers();
+ int _size = _peers.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)1));
+ _operator_or = BooleanExtensions.operator_or((pi instanceof ServiceImplInstance), _operator_greaterThan);
+ }
+ if (_operator_or) {
+ {
+ EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
+ for(final InterfaceItemInstance peer : _peers_1) {
+ _builder.append("\t\t");
+ EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
+ int _indexOf_2 = _peers_2.indexOf(peer);
+ int i = _indexOf_2;
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("Address addr_item_");
+ String _path_3 = pi.getPath();
+ String _pathName_1 = this.stdExt.getPathName(_path_3);
+ _builder.append(_pathName_1, " ");
+ _builder.append("_");
+ _builder.append(i, " ");
+ _builder.append(" = new Address(0,");
+ int _threadId_1 = pi.getThreadId();
+ _builder.append(_threadId_1, " ");
+ _builder.append(",");
+ int _objId_1 = pi.getObjId();
+ int _operator_plus_1 = IntegerExtensions.operator_plus(((Integer)_objId_1), ((Integer)i));
+ _builder.append(_operator_plus_1, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ } else {
+ _builder.append("\t\t");
+ _builder.append("Address addr_item_");
+ String _path_4 = pi.getPath();
+ String _pathName_2 = this.stdExt.getPathName(_path_4);
+ _builder.append(_pathName_2, " ");
+ _builder.append(" = new Address(0,");
+ int _threadId_2 = ai_1.getThreadId();
+ _builder.append(_threadId_2, " ");
+ _builder.append(",");
+ int _objId_2 = pi.getObjId();
+ _builder.append(_objId_2, " ");
+ _builder.append(");");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ }
+ }
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// instantiate all actor instances");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("instances = new ActorClassBase[");
+ EList<ActorInstance> _allContainedInstances_3 = comp.getAllContainedInstances();
+ int _size_1 = _allContainedInstances_3.size();
+ _builder.append(_size_1, " ");
+ _builder.append("];");
+ _builder.newLineIfNotEmpty();
+ {
+ EList<ActorInstance> _allContainedInstances_4 = comp.getAllContainedInstances();
+ for(final ActorInstance ai_2 : _allContainedInstances_4) {
+ _builder.append("\t\t");
+ _builder.append("instances[");
+ EList<ActorInstance> _allContainedInstances_5 = comp.getAllContainedInstances();
+ int _indexOf_3 = _allContainedInstances_5.indexOf(ai_2);
+ _builder.append(_indexOf_3, " ");
+ _builder.append("] = new ");
+ ActorClass _actorClass = ai_2.getActorClass();
+ String _name_4 = _actorClass.getName();
+ _builder.append(_name_4, " ");
+ _builder.append("(");
+ _builder.newLineIfNotEmpty();
+ {
+ EObject _eContainer = ai_2.eContainer();
+ if ((_eContainer instanceof SubSystemInstance)) {
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("this,");
+ _builder.newLine();
+ } else {
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("instances[");
+ EList<ActorInstance> _allContainedInstances_6 = comp.getAllContainedInstances();
+ EObject _eContainer_1 = ai_2.eContainer();
+ int _indexOf_4 = _allContainedInstances_6.indexOf(_eContainer_1);
+ _builder.append(_indexOf_4, " ");
+ _builder.append("],");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\"");
+ String _name_5 = ai_2.getName();
+ _builder.append(_name_5, " ");
+ _builder.append("\",");
+ _builder.newLineIfNotEmpty();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("// own interface item addresses");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("new Address[][] {{addr_item_");
+ String _path_5 = ai_2.getPath();
+ String _pathName_3 = this.stdExt.getPathName(_path_5);
+ _builder.append(_pathName_3, " ");
+ _builder.append("}");
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances_1 = ai_2.getOrderedIfItemInstances();
+ boolean _isEmpty = _orderedIfItemInstances_1.isEmpty();
+ boolean _operator_not = BooleanExtensions.operator_not(_isEmpty);
+ if (_operator_not) {
+ _builder.append(",");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances_2 = ai_2.getOrderedIfItemInstances();
+ boolean hasAnyElements = false;
+ for(final InterfaceItemInstance pi_1 : _orderedIfItemInstances_2) {
+ if (!hasAnyElements) {
+ hasAnyElements = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("{");
+ _builder.newLine();
+ {
+ boolean _operator_or_1 = false;
+ if ((pi_1 instanceof ServiceImplInstance)) {
+ _operator_or_1 = true;
+ } else {
+ EList<InterfaceItemInstance> _peers_3 = pi_1.getPeers();
+ int _size_2 = _peers_3.size();
+ boolean _operator_greaterThan_1 = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size_2), ((Integer)1));
+ _operator_or_1 = BooleanExtensions.operator_or((pi_1 instanceof ServiceImplInstance), _operator_greaterThan_1);
+ }
+ if (_operator_or_1) {
+ {
+ EList<InterfaceItemInstance> _peers_4 = pi_1.getPeers();
+ boolean hasAnyElements_1 = false;
+ for(final InterfaceItemInstance peer_1 : _peers_4) {
+ if (!hasAnyElements_1) {
+ hasAnyElements_1 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("addr_item_");
+ String _path_6 = pi_1.getPath();
+ String _pathName_4 = this.stdExt.getPathName(_path_6);
+ _builder.append(_pathName_4, " ");
+ _builder.append("_");
+ EList<InterfaceItemInstance> _peers_5 = pi_1.getPeers();
+ int _indexOf_5 = _peers_5.indexOf(peer_1);
+ _builder.append(_indexOf_5, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ } else {
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("\t");
+ _builder.append("addr_item_");
+ String _path_7 = pi_1.getPath();
+ String _pathName_5 = this.stdExt.getPathName(_path_7);
+ _builder.append(_pathName_5, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("},");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("// peer interface item addresses");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("new Address[][] {{addr_item_SystemPort_");
+ EList<ActorInstance> _allContainedInstances_7 = comp.getAllContainedInstances();
+ int _indexOf_6 = _allContainedInstances_7.indexOf(ai_2);
+ _builder.append(_indexOf_6, " ");
+ _builder.append("}");
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances_3 = ai_2.getOrderedIfItemInstances();
+ boolean _isEmpty_1 = _orderedIfItemInstances_3.isEmpty();
+ boolean _operator_not_1 = BooleanExtensions.operator_not(_isEmpty_1);
+ if (_operator_not_1) {
+ _builder.append(",");
+ }
+ }
+ _builder.newLineIfNotEmpty();
+ {
+ EList<InterfaceItemInstance> _orderedIfItemInstances_4 = ai_2.getOrderedIfItemInstances();
+ boolean hasAnyElements_2 = false;
+ for(final InterfaceItemInstance pi_2 : _orderedIfItemInstances_4) {
+ if (!hasAnyElements_2) {
+ hasAnyElements_2 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("{");
+ _builder.newLine();
+ {
+ boolean _operator_and = false;
+ boolean _operator_not_2 = BooleanExtensions.operator_not((pi_2 instanceof ServiceImplInstance));
+ if (!_operator_not_2) {
+ _operator_and = false;
+ } else {
+ EList<InterfaceItemInstance> _peers_6 = pi_2.getPeers();
+ boolean _isEmpty_2 = _peers_6.isEmpty();
+ _operator_and = BooleanExtensions.operator_and(_operator_not_2, _isEmpty_2);
+ }
+ if (_operator_and) {
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("null");
+ _builder.newLine();
+ } else {
+ {
+ EList<InterfaceItemInstance> _peers_7 = pi_2.getPeers();
+ boolean hasAnyElements_3 = false;
+ for(final InterfaceItemInstance pp : _peers_7) {
+ if (!hasAnyElements_3) {
+ hasAnyElements_3 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ {
+ boolean _operator_or_2 = false;
+ if ((pp instanceof ServiceImplInstance)) {
+ _operator_or_2 = true;
+ } else {
+ EList<InterfaceItemInstance> _peers_8 = pp.getPeers();
+ int _size_3 = _peers_8.size();
+ boolean _operator_greaterThan_2 = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size_3), ((Integer)1));
+ _operator_or_2 = BooleanExtensions.operator_or((pp instanceof ServiceImplInstance), _operator_greaterThan_2);
+ }
+ if (_operator_or_2) {
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("addr_item_");
+ String _path_8 = pp.getPath();
+ String _pathName_6 = this.stdExt.getPathName(_path_8);
+ _builder.append(_pathName_6, " ");
+ _builder.append("_");
+ EList<InterfaceItemInstance> _peers_9 = pp.getPeers();
+ int _indexOf_7 = _peers_9.indexOf(pi_2);
+ _builder.append(_indexOf_7, " ");
+ _builder.newLineIfNotEmpty();
+ } else {
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("addr_item_");
+ String _path_9 = pp.getPath();
+ String _pathName_7 = this.stdExt.getPathName(_path_9);
+ _builder.append(_pathName_7, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ }
+ }
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t\t");
+ _builder.append("}");
+ _builder.newLine();
+ }
+ }
+ _builder.append("\t\t");
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("); ");
+ _builder.newLine();
+ }
+ }
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// create the subsystem system port\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("RTSystemPort = new RTSystemServicesProtocolConjPortRepl(this, \"RTSystemPort\",");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("0, //local ID");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("// own addresses");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("new Address[]{");
+ _builder.newLine();
+ {
+ EList<ActorInstance> _allContainedInstances_8 = comp.getAllContainedInstances();
+ boolean hasAnyElements_4 = false;
+ for(final ActorInstance ai_3 : _allContainedInstances_8) {
+ if (!hasAnyElements_4) {
+ hasAnyElements_4 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t\t\t\t");
+ _builder.append("addr_item_SystemPort_");
+ EList<ActorInstance> _allContainedInstances_9 = comp.getAllContainedInstances();
+ int _indexOf_8 = _allContainedInstances_9.indexOf(ai_3);
+ _builder.append(_indexOf_8, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t\t\t");
+ _builder.append("},");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("// peer addresses");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.append("new Address[]{");
+ _builder.newLine();
+ {
+ EList<ActorInstance> _allContainedInstances_10 = comp.getAllContainedInstances();
+ boolean hasAnyElements_5 = false;
+ for(final ActorInstance ai_4 : _allContainedInstances_10) {
+ if (!hasAnyElements_5) {
+ hasAnyElements_5 = true;
+ } else {
+ _builder.appendImmediate(",", " ");
+ }
+ _builder.append("\t\t\t\t\t");
+ _builder.append("addr_item_");
+ String _path_10 = ai_4.getPath();
+ String _pathName_8 = this.stdExt.getPathName(_path_10);
+ _builder.append(_pathName_8, " ");
+ _builder.newLineIfNotEmpty();
+ }
+ }
+ _builder.append("\t\t\t\t");
+ _builder.append("});");
+ _builder.newLine();
+ _builder.append("\t\t\t\t");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("};");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java index 906d97460..a7e2fff32 100644 --- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java +++ b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java @@ -1,151 +1,152 @@ -package org.eclipse.etrice.generator.java.gen; - -import com.google.inject.Inject; -import org.eclipse.emf.common.util.EList; -import org.eclipse.etrice.core.room.SubSystemClass; -import org.eclipse.etrice.generator.etricegen.Root; -import org.eclipse.etrice.generator.etricegen.SubSystemInstance; -import org.eclipse.etrice.generator.java.gen.StdExtensions; -import org.eclipse.xtext.generator.JavaIoFileSystemAccess; -import org.eclipse.xtext.xbase.lib.StringExtensions; -import org.eclipse.xtext.xtend2.lib.StringConcatenation; - -@SuppressWarnings("all") -public class SubSystemRunnerGen { - - @Inject - private JavaIoFileSystemAccess fileAccess; - - @Inject - private StdExtensions stdExt; - - public void doGenerate(final Root root) { - EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances(); - for (SubSystemInstance sc : _subSystemInstances) { - { - SubSystemClass _subSystemClass = sc.getSubSystemClass(); - String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass); - SubSystemClass _subSystemClass_1 = sc.getSubSystemClass(); - String _path = this.stdExt.getPath(_subSystemClass_1); - String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path); - this.fileAccess.setOutputPath(_operator_plus); - String _name = sc.getName(); - String _operator_plus_1 = StringExtensions.operator_plus(_name, "Runner.java"); - SubSystemClass _subSystemClass_2 = sc.getSubSystemClass(); - StringConcatenation _generate = this.generate(root, sc, _subSystemClass_2); - this.fileAccess.generateFile(_operator_plus_1, _generate); - } - } - } - - public StringConcatenation generate(final Root root, final SubSystemInstance ssc, final SubSystemClass cc) { - StringConcatenation _builder = new StringConcatenation(); - _builder.append("/**"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* @author generated by eTrice"); - _builder.newLine(); - _builder.append(" "); - _builder.append("*"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* this class contains the main function running component "); - String _name = ssc.getName(); - _builder.append(_name, " "); - _builder.newLineIfNotEmpty(); - _builder.append(" "); - _builder.append("* it instantiates "); - String _name_1 = ssc.getName(); - _builder.append(_name_1, " "); - _builder.append(" and starts and ends the lifecycle"); - _builder.newLineIfNotEmpty(); - _builder.append(" "); - _builder.append("*/"); - _builder.newLine(); - _builder.newLine(); - _builder.append("package "); - String _package = this.stdExt.getPackage(cc); - _builder.append(_package, ""); - _builder.append(";"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemRunnerBase;"); - _builder.newLine(); - _builder.newLine(); - _builder.append("class "); - String _name_2 = ssc.getName(); - String _operator_plus = StringExtensions.operator_plus(_name_2, "Runner"); - _builder.append(_operator_plus, ""); - _builder.append(" extends SubSystemRunnerBase {"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("static "); - String _name_3 = ssc.getName(); - _builder.append(_name_3, " "); - _builder.append(" main_component = new "); - String _name_4 = ssc.getName(); - _builder.append(_name_4, " "); - _builder.append("(null, \""); - String _name_5 = ssc.getName(); - _builder.append(_name_5, " "); - _builder.append("\");"); - _builder.newLineIfNotEmpty(); - _builder.newLine(); - _builder.append("\t"); - _builder.append("/**"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* main function"); - _builder.newLine(); - _builder.append(" "); - _builder.append("* creates component and starts and stops the lifecycle"); - _builder.newLine(); - _builder.append(" "); - _builder.append("*/"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("public static void main(String[] args) {"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("System.out.println(\"*** T H E B E G I N ***\");"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("main_component.init(); // lifecycle init"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("main_component.start(); // lifecycle start"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// application runs until quit "); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("waitForQuit();"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("// end the lifecycle"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("main_component.stop(); // lifecycle stop"); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("main_component.destroy(); // lifecycle destroy"); - _builder.newLine(); - _builder.newLine(); - _builder.append("\t\t"); - _builder.append("System.out.println(\"*** T H E E N D ***\");"); - _builder.newLine(); - _builder.append("\t"); - _builder.append("}"); - _builder.newLine(); - _builder.append("};"); - _builder.newLine(); - return _builder; - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.java.gen;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.etrice.core.room.SubSystemClass;
+import org.eclipse.etrice.generator.etricegen.Root;
+import org.eclipse.etrice.generator.etricegen.SubSystemInstance;
+import org.eclipse.etrice.generator.java.gen.StdExtensions;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+import org.eclipse.xtext.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+@Singleton
+public class SubSystemRunnerGen {
+ @Inject
+ private JavaIoFileSystemAccess fileAccess;
+
+ @Inject
+ private StdExtensions stdExt;
+
+ public void doGenerate(final Root root) {
+ EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
+ for (final SubSystemInstance sc : _subSystemInstances) {
+ {
+ SubSystemClass _subSystemClass = sc.getSubSystemClass();
+ String _generationTargetPath = this.stdExt.getGenerationTargetPath(_subSystemClass);
+ SubSystemClass _subSystemClass_1 = sc.getSubSystemClass();
+ String _path = this.stdExt.getPath(_subSystemClass_1);
+ String _operator_plus = StringExtensions.operator_plus(_generationTargetPath, _path);
+ this.fileAccess.setOutputPath(_operator_plus);
+ String _name = sc.getName();
+ String _operator_plus_1 = StringExtensions.operator_plus(_name, "Runner.java");
+ SubSystemClass _subSystemClass_2 = sc.getSubSystemClass();
+ StringConcatenation _generate = this.generate(root, sc, _subSystemClass_2);
+ this.fileAccess.generateFile(_operator_plus_1, _generate);
+ }
+ }
+ }
+
+ public StringConcatenation generate(final Root root, final SubSystemInstance ssc, final SubSystemClass cc) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* @author generated by eTrice");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* this class contains the main function running component ");
+ String _name = ssc.getName();
+ _builder.append(_name, " ");
+ _builder.newLineIfNotEmpty();
+ _builder.append(" ");
+ _builder.append("* it instantiates ");
+ String _name_1 = ssc.getName();
+ _builder.append(_name_1, " ");
+ _builder.append(" and starts and ends the lifecycle");
+ _builder.newLineIfNotEmpty();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("package ");
+ String _package = this.stdExt.getPackage(cc);
+ _builder.append(_package, "");
+ _builder.append(";");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("import org.eclipse.etrice.runtime.java.modelbase.SubSystemRunnerBase;");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("class ");
+ String _name_2 = ssc.getName();
+ String _operator_plus = StringExtensions.operator_plus(_name_2, "Runner");
+ _builder.append(_operator_plus, "");
+ _builder.append(" extends SubSystemRunnerBase {");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("static ");
+ String _name_3 = ssc.getName();
+ _builder.append(_name_3, " ");
+ _builder.append(" main_component = new ");
+ String _name_4 = ssc.getName();
+ _builder.append(_name_4, " ");
+ _builder.append("(null, \"");
+ String _name_5 = ssc.getName();
+ _builder.append(_name_5, " ");
+ _builder.append("\");");
+ _builder.newLineIfNotEmpty();
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("/**");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* main function");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("* creates component and starts and stops the lifecycle");
+ _builder.newLine();
+ _builder.append(" ");
+ _builder.append("*/");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("public static void main(String[] args) {");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("System.out.println(\"*** T H E B E G I N ***\");");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("main_component.init(); // lifecycle init");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("main_component.start(); // lifecycle start");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// application runs until quit ");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("waitForQuit();");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("// end the lifecycle");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("main_component.stop(); // lifecycle stop");
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("main_component.destroy(); // lifecycle destroy");
+ _builder.newLine();
+ _builder.newLine();
+ _builder.append("\t\t");
+ _builder.append("System.out.println(\"*** T H E E N D ***\");");
+ _builder.newLine();
+ _builder.append("\t");
+ _builder.append("}");
+ _builder.newLine();
+ _builder.append("};");
+ _builder.newLine();
+ return _builder;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF index 86c874b75..6ab44def5 100644 --- a/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.etrice.generator/META-INF/MANIFEST.MF @@ -34,6 +34,6 @@ Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0", org.eclipse.emf.ecore;bundle-version="2.6.0";visibility:=reexport,
org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
org.eclipse.core.resources;bundle-version="3.7.100",
- org.eclipse.xtext.generator;bundle-version="2.0.0",
- org.eclipse.xtext;bundle-version="2.0.0"
+ org.eclipse.xtext.generator;bundle-version="2.1.1",
+ org.eclipse.xtext;bundle-version="2.1.1"
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomExtensions.xtend b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomExtensions.xtend index 7ef8b27fc..bf6b3e4f8 100644 --- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomExtensions.xtend +++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomExtensions.xtend @@ -16,18 +16,34 @@ package org.eclipse.etrice.generator.extensions -import org.eclipse.etrice.core.room.* -import org.eclipse.etrice.generator.etricegen.* -import org.eclipse.emf.ecore.* -import java.util.* -import java.io.File - -import static extension org.eclipse.xtend.util.stdlib.naming -import static extension org.eclipse.xtext.xtend2.lib.ResourceExtensions.* -import static extension org.eclipse.xtext.xtend2.lib.* - import com.google.inject.Inject - +import com.google.inject.Singleton +import java.io.File +import java.util.ArrayList +import java.util.List +import org.eclipse.emf.ecore.EObject +import org.eclipse.etrice.core.room.ActorClass +import org.eclipse.etrice.core.room.BaseState +import org.eclipse.etrice.core.room.ExternalPort +import org.eclipse.etrice.core.room.InitialTransition +import org.eclipse.etrice.core.room.Message +import org.eclipse.etrice.core.room.MessageHandler +import org.eclipse.etrice.core.room.Port +import org.eclipse.etrice.core.room.PortClass +import org.eclipse.etrice.core.room.ProtocolClass +import org.eclipse.etrice.core.room.RefinedState +import org.eclipse.etrice.core.room.SAPRef +import org.eclipse.etrice.core.room.ServiceImplementation +import org.eclipse.etrice.core.room.State +import org.eclipse.etrice.core.room.StateGraph +import org.eclipse.etrice.core.room.Transition +import org.eclipse.etrice.core.room.Trigger +import org.eclipse.etrice.generator.etricegen.ActiveTrigger +import org.eclipse.etrice.generator.etricegen.ExpandedActorClass +import org.eclipse.etrice.generator.etricegen.TransitionChain +import static extension org.eclipse.etrice.generator.extensions.RoomNameProv.* + +@Singleton class RoomExtensions { // for the time being we need a delegate to the static methods of the RoomNameProvider @@ -314,15 +330,15 @@ class RoomExtensions { } def String getStateId(State s) { - return nameProvider.getStateId(s) + return getStateId(s) } def String getStatePathName(State s) { - return nameProvider.getStatePathName(s); + return getStatePathName(s); } def String getChainId(TransitionChain t) { - return nameProvider.getChainId(t) + return getChainId(t) } def boolean hasGuard(Trigger tr) { diff --git a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomNameProv.java b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomNameProv.java index 9799bfc00..bbf7b74e7 100644 --- a/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomNameProv.java +++ b/plugins/org.eclipse.etrice.generator/src/org/eclipse/etrice/generator/extensions/RoomNameProv.java @@ -24,45 +24,45 @@ import org.eclipse.etrice.generator.etricegen.TransitionChain; */
public class RoomNameProv {
- public String getActionCodeOperationName(Transition t) {
+ public static String getActionCodeOperationName(Transition t) {
return "action_"+RoomNameProvider.getFullPath(t);
}
- public String getEntryCodeOperationName(State s) {
+ public static String getEntryCodeOperationName(State s) {
return "entry_"+getStatePathName(s);
}
- public String getExitCodeOperationName(State s) {
+ public static String getExitCodeOperationName(State s) {
return "exit_"+getStatePathName(s);
}
- public String getChainId(TransitionChain tc) {
+ public static String getChainId(TransitionChain tc) {
return "CHAIN_"+RoomNameProvider.getFullPath(tc.getTransition());
}
- public boolean isTopLevel(StateGraphNode s) {
+ public static boolean isTopLevel(StateGraphNode s) {
return !(s.eContainer().eContainer() instanceof State);
}
- public State getParentState(StateGraphNode s) {
+ public static State getParentState(StateGraphNode s) {
if (isTopLevel(s))
return null;
else
return (State) s.eContainer().eContainer();
}
- public String getStatePathName(State s) {
+ public static String getStatePathName(State s) {
return RoomNameProvider.getFullPath(s);
}
- public String getStateId(State s) {
+ public static String getStateId(State s) {
if (s==null)
return "STATE_"+RoomNameProvider.getStateName(s);
else
return "STATE_"+RoomNameProvider.getFullPath(s);
}
- public String getParentStateId(State s) {
+ public static String getParentStateId(State s) {
return getStateId(getParentState(s));
}
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/extensions/RoomExtensions.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/extensions/RoomExtensions.java index dfaadef34..1defa39c0 100644 --- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/extensions/RoomExtensions.java +++ b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/extensions/RoomExtensions.java @@ -1,786 +1,760 @@ -package org.eclipse.etrice.generator.extensions; - -import com.google.inject.Inject; -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.etrice.core.room.ActorClass; -import org.eclipse.etrice.core.room.DetailCode; -import org.eclipse.etrice.core.room.ExternalPort; -import org.eclipse.etrice.core.room.FreeType; -import org.eclipse.etrice.core.room.FreeTypedID; -import org.eclipse.etrice.core.room.Guard; -import org.eclipse.etrice.core.room.Message; -import org.eclipse.etrice.core.room.MessageHandler; -import org.eclipse.etrice.core.room.Operation; -import org.eclipse.etrice.core.room.Port; -import org.eclipse.etrice.core.room.PortClass; -import org.eclipse.etrice.core.room.ProtocolClass; -import org.eclipse.etrice.core.room.SAPRef; -import org.eclipse.etrice.core.room.SPPRef; -import org.eclipse.etrice.core.room.ServiceImplementation; -import org.eclipse.etrice.core.room.State; -import org.eclipse.etrice.core.room.StateGraph; -import org.eclipse.etrice.core.room.StateMachine; -import org.eclipse.etrice.core.room.Transition; -import org.eclipse.etrice.core.room.Trigger; -import org.eclipse.etrice.core.room.TriggeredTransition; -import org.eclipse.etrice.generator.etricegen.ActiveTrigger; -import org.eclipse.etrice.generator.etricegen.ExpandedActorClass; -import org.eclipse.etrice.generator.etricegen.TransitionChain; -import org.eclipse.etrice.generator.extensions.RoomNameProv; -import org.eclipse.xtext.xbase.lib.BooleanExtensions; -import org.eclipse.xtext.xbase.lib.ComparableExtensions; -import org.eclipse.xtext.xbase.lib.Functions.Function1; -import org.eclipse.xtext.xbase.lib.IntegerExtensions; -import org.eclipse.xtext.xbase.lib.IterableExtensions; -import org.eclipse.xtext.xbase.lib.ObjectExtensions; -import org.eclipse.xtext.xbase.lib.StringExtensions; - -@SuppressWarnings("all") -public class RoomExtensions { - - @Inject - private RoomNameProv nameProvider; - - public <T> List<T> union(final List<T> l1, final List<T> l2) { - { - ArrayList<T> _arrayList = new ArrayList<T>(); - ArrayList<T> ret = _arrayList; - ret.addAll(l1); - ret.addAll(l2); - return ret; - } - } - - public List<Port> punion(final List<Port> in1, final List<ExternalPort> in2) { - { - ArrayList<Port> _arrayList = new ArrayList<Port>(); - ArrayList<Port> ret = _arrayList; - for (ExternalPort ele : in2) { - Port _ifport = ele.getIfport(); - ret.add(_ifport); - } - ret.addAll(in1); - return ret; - } - } - - public String getGenerationPathSegment() { - return "/src-gen/"; - } - - public String getModelPath(final EObject e) { - { - Resource _eResource = e.eResource(); - Resource res = _eResource; - boolean _operator_equals = ObjectExtensions.operator_equals(res, null); - if (_operator_equals) { - return ""; - } else { - URI _uRI = res.getURI(); - String _fileString = _uRI.toFileString(); - return _fileString; - } - } - } - - public String getProjectPath(final EObject e) { - { - Resource _eResource = e.eResource(); - Resource res = _eResource; - boolean _operator_equals = ObjectExtensions.operator_equals(res, null); - if (_operator_equals) { - return ""; - } else { - { - File _file = new File(""); - File tmpf = _file; - URI _uRI = res.getURI(); - String _fileString = _uRI.toFileString(); - File _file_1 = new File(_fileString); - tmpf = _file_1; - boolean _isFile = tmpf.isFile(); - boolean _operator_not = BooleanExtensions.operator_not(_isFile); - if (_operator_not) { - return ""; - } - boolean isProject = false; - Boolean _xdowhileexpression; - do { - { - File _parentFile = tmpf.getParentFile(); - tmpf = _parentFile; - String[] _list = tmpf.list(); - String[] contents = _list; - for (String f : contents) { - boolean _equals = f.equals(".project"); - if (_equals) { - isProject = true; - } - } - } - boolean _operator_and = false; - boolean _operator_not_1 = BooleanExtensions.operator_not(isProject); - if (!_operator_not_1) { - _operator_and = false; - } else { - File _parentFile_1 = tmpf.getParentFile(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_parentFile_1, null); - _operator_and = BooleanExtensions.operator_and(_operator_not_1, _operator_notEquals); - } - _xdowhileexpression = _operator_and; - } while(_xdowhileexpression); - String _absolutePath = tmpf.getAbsolutePath(); - return _absolutePath; - } - } - } - } - - public String getGenerationTargetPath(final EObject e) { - String _projectPath = this.getProjectPath(e); - String _generationPathSegment = this.getGenerationPathSegment(); - String _operator_plus = StringExtensions.operator_plus(_projectPath, _generationPathSegment); - return _operator_plus; - } - - public List<Port> getEndPorts(final ActorClass ac) { - EList<Port> _intPorts = ac.getIntPorts(); - EList<ExternalPort> _extPorts = ac.getExtPorts(); - List<Port> _punion = this.punion(_intPorts, _extPorts); - return _punion; - } - - public String getPathName(final String path) { - String _replaceAll = path.replaceAll("/", "_"); - return _replaceAll; - } - - public String getPortClassName(final ProtocolClass p, final boolean conj) { - { - String _name = p.getName(); - String ret = _name; - if (conj) { - String _operator_plus = StringExtensions.operator_plus(ret, "ConjPort"); - ret = _operator_plus; - } else { - String _operator_plus_1 = StringExtensions.operator_plus(ret, "Port"); - ret = _operator_plus_1; - } - return ret; - } - } - - public String getPortClassName(final Port p) { - { - ProtocolClass _protocol = p.getProtocol(); - boolean _isConjugated = p.isConjugated(); - String _portClassName = this.getPortClassName(_protocol, _isConjugated); - String ret = _portClassName; - boolean _isReplicated = p.isReplicated(); - if (_isReplicated) { - String _operator_plus = StringExtensions.operator_plus(ret, "Repl"); - ret = _operator_plus; - } - return ret; - } - } - - public String getPortClassName(final ExternalPort p) { - Port _ifport = p.getIfport(); - String _portClassName = this.getPortClassName(_ifport); - return _portClassName; - } - - public String getPortClassName(final SAPRef sap) { - ProtocolClass _protocol = sap.getProtocol(); - String _portClassName = this.getPortClassName(_protocol, true); - return _portClassName; - } - - public String getPortClassName(final ServiceImplementation svc) { - SPPRef _spp = svc.getSpp(); - ProtocolClass _protocol = _spp.getProtocol(); - String _portClassName = this.getPortClassName(_protocol, false); - String _operator_plus = StringExtensions.operator_plus(_portClassName, "Repl"); - return _operator_plus; - } - - public List<Message> getAllIncomingMessages(final ProtocolClass pc) { - ProtocolClass _base = pc.getBase(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null); - if (_operator_notEquals) { - ProtocolClass _base_1 = pc.getBase(); - List<Message> _allIncomingMessages = this.getAllIncomingMessages(_base_1); - EList<Message> _incomingMessages = pc.getIncomingMessages(); - List<Message> _union = this.union(_allIncomingMessages, _incomingMessages); - return _union; - } else { - EList<Message> _incomingMessages_1 = pc.getIncomingMessages(); - return _incomingMessages_1; - } - } - - public List<Message> getAllOutgoingMessages(final ProtocolClass pc) { - EList<Message> _xifexpression = null; - ProtocolClass _base = pc.getBase(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null); - if (_operator_notEquals) { - ProtocolClass _base_1 = pc.getBase(); - List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(_base_1); - EList<Message> _outgoingMessages = pc.getOutgoingMessages(); - List<Message> _union = this.union(_allOutgoingMessages, _outgoingMessages); - return _union; - } else { - EList<Message> _outgoingMessages_1 = pc.getOutgoingMessages(); - _xifexpression = _outgoingMessages_1; - } - return _xifexpression; - } - - public List<Message> getIncoming(final ProtocolClass pc, final boolean conj) { - if (conj) { - List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(pc); - return _allOutgoingMessages; - } else { - List<Message> _allIncomingMessages = this.getAllIncomingMessages(pc); - return _allIncomingMessages; - } - } - - public List<Message> getOutgoing(final ProtocolClass pc, final boolean conj) { - if (conj) { - List<Message> _allIncomingMessages = this.getAllIncomingMessages(pc); - return _allIncomingMessages; - } else { - List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(pc); - return _allOutgoingMessages; - } - } - - public PortClass getPortClass(final ProtocolClass pc, final boolean conj) { - if (conj) { - PortClass _conjugate = pc.getConjugate(); - return _conjugate; - } else { - PortClass _regular = pc.getRegular(); - return _regular; - } - } - - public boolean handlesSend(final ProtocolClass pc, final boolean conj) { - { - PortClass _portClass = this.getPortClass(pc, conj); - boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null); - if (_operator_equals) { - return false; - } else { - PortClass _portClass_1 = this.getPortClass(pc, conj); - EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers(); - for (MessageHandler hdlr : _msgHandlers) { - List<Message> _outgoing = this.getOutgoing(pc, conj); - Message _msg = hdlr.getMsg(); - boolean _contains = _outgoing.contains(_msg); - if (_contains) { - return true; - } - } - } - return false; - } - } - - public boolean handlesReceive(final ProtocolClass pc, final boolean conj) { - { - PortClass _portClass = this.getPortClass(pc, conj); - boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null); - if (_operator_equals) { - return false; - } else { - PortClass _portClass_1 = this.getPortClass(pc, conj); - EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers(); - for (MessageHandler hdlr : _msgHandlers) { - List<Message> _incoming = this.getIncoming(pc, conj); - Message _msg = hdlr.getMsg(); - boolean _contains = _incoming.contains(_msg); - if (_contains) { - return true; - } - } - } - return false; - } - } - - public List<MessageHandler> getReceiveHandlers(final ProtocolClass pc, final boolean conj) { - PortClass _portClass = this.getPortClass(pc, conj); - boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null); - if (_operator_equals) { - ArrayList<MessageHandler> _arrayList = new ArrayList<MessageHandler>(); - return _arrayList; - } else { - { - ArrayList<MessageHandler> _arrayList_1 = new ArrayList<MessageHandler>(); - ArrayList<MessageHandler> res = _arrayList_1; - PortClass _portClass_1 = this.getPortClass(pc, conj); - EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers(); - for (MessageHandler hdlr : _msgHandlers) { - List<Message> _incoming = this.getIncoming(pc, conj); - Message _msg = hdlr.getMsg(); - boolean _contains = _incoming.contains(_msg); - if (_contains) { - res.add(hdlr); - } - } - return res; - } - } - } - - public List<MessageHandler> getSendHandlers(final ProtocolClass pc, final boolean conj) { - PortClass _portClass = this.getPortClass(pc, conj); - boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null); - if (_operator_equals) { - ArrayList<MessageHandler> _arrayList = new ArrayList<MessageHandler>(); - return _arrayList; - } else { - { - ArrayList<MessageHandler> _arrayList_1 = new ArrayList<MessageHandler>(); - ArrayList<MessageHandler> res = _arrayList_1; - PortClass _portClass_1 = this.getPortClass(pc, conj); - EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers(); - for (MessageHandler hdlr : _msgHandlers) { - List<Message> _outgoing = this.getOutgoing(pc, conj); - Message _msg = hdlr.getMsg(); - boolean _contains = _outgoing.contains(_msg); - if (_contains) { - res.add(hdlr); - } - } - return res; - } - } - } - - public MessageHandler getSendHandler(final Message m, final boolean conj) { - EObject _eContainer = m.eContainer(); - List<MessageHandler> _sendHandlers = this.getSendHandlers(((ProtocolClass) _eContainer), conj); - final Function1<MessageHandler,Boolean> _function = new Function1<MessageHandler,Boolean>() { - public Boolean apply(final MessageHandler e) { - Message _msg = e.getMsg(); - boolean _operator_equals = ObjectExtensions.operator_equals(_msg, m); - return ((Boolean)_operator_equals); - } - }; - MessageHandler _findFirst = IterableExtensions.<MessageHandler>findFirst(_sendHandlers, _function); - return _findFirst; - } - - public boolean isIncoming(final Message m) { - EObject _eContainer = m.eContainer(); - List<Message> _allIncomingMessages = this.getAllIncomingMessages(((ProtocolClass) _eContainer)); - boolean _contains = _allIncomingMessages.contains(m); - return _contains; - } - - public String getCodeName(final Message m) { - boolean _isIncoming = this.isIncoming(m); - if (_isIncoming) { - String _name = m.getName(); - String _operator_plus = StringExtensions.operator_plus("IN_", _name); - return _operator_plus; - } else { - String _name_1 = m.getName(); - String _operator_plus_1 = StringExtensions.operator_plus("OUT_", _name_1); - return _operator_plus_1; - } - } - - public boolean isLeaf(final State s) { - StateGraph _subgraph = s.getSubgraph(); - boolean _operator_equals = ObjectExtensions.operator_equals(_subgraph, null); - return _operator_equals; - } - - public List<State> getLeafStateList(final StateGraph sg) { - { - ArrayList<State> _arrayList = new ArrayList<State>(); - ArrayList<State> res = _arrayList; - EList<State> _states = sg.getStates(); - for (State s : _states) { - List<State> _leafStateList = this.getLeafStateList(s); - res.addAll(_leafStateList); - } - return res; - } - } - - public List<State> getLeafStateList(final State s) { - boolean _isLeaf = this.isLeaf(s); - if (_isLeaf) { - { - ArrayList<State> _arrayList = new ArrayList<State>(); - ArrayList<State> res = _arrayList; - res.add(s); - return res; - } - } else { - StateGraph _subgraph = s.getSubgraph(); - List<State> _leafStateList = this.getLeafStateList(_subgraph); - return _leafStateList; - } - } - - public List<State> getStateList(final StateGraph sg) { - { - ArrayList<State> _arrayList = new ArrayList<State>(); - ArrayList<State> ret = _arrayList; - EList<State> _states = sg.getStates(); - for (State e : _states) { - { - ret.add(e); - StateGraph _subgraph = e.getSubgraph(); - StateGraph tmp = _subgraph; - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(tmp, null); - if (_operator_notEquals) { - StateGraph _subgraph_1 = e.getSubgraph(); - List<State> _stateList = this.getStateList(_subgraph_1); - ret.addAll(_stateList); - } - } - } - return ret; - } - } - - public List<State> getBaseStateList(final StateGraph sg) { - { - ArrayList<State> _arrayList = new ArrayList<State>(); - ArrayList<State> ret = _arrayList; - List<State> _stateList = this.getStateList(sg); - for (State e : _stateList) { - if ((e instanceof org.eclipse.etrice.core.room.BaseState)) { - ret.add(e); - } - } - return ret; - } - } - - public List<State> getAllBaseStates(final ActorClass ac) { - List<State> _xifexpression = null; - ActorClass _base = ac.getBase(); - boolean _operator_equals = ObjectExtensions.operator_equals(_base, null); - if (_operator_equals) { - StateMachine _stateMachine = ac.getStateMachine(); - List<State> _baseStateList = this.getBaseStateList(_stateMachine); - return _baseStateList; - } else { - ActorClass _base_1 = ac.getBase(); - List<State> _allBaseStates = this.getAllBaseStates(_base_1); - StateMachine _stateMachine_1 = ac.getStateMachine(); - List<State> _baseStateList_1 = this.getBaseStateList(_stateMachine_1); - List<State> _union = this.union(_allBaseStates, _baseStateList_1); - _xifexpression = _union; - } - return _xifexpression; - } - - public boolean overridesStop(final ActorClass ac) { - boolean _operator_or = false; - EList<Operation> _operations = ac.getOperations(); - final Function1<Operation,Boolean> _function = new Function1<Operation,Boolean>() { - public Boolean apply(final Operation e) { - boolean _operator_and = false; - boolean _operator_and_1 = false; - String _name = e.getName(); - boolean _operator_equals = ObjectExtensions.operator_equals(_name, "stop"); - if (!_operator_equals) { - _operator_and_1 = false; - } else { - EList<FreeTypedID> _arguments = e.getArguments(); - boolean _isEmpty = _arguments.isEmpty(); - _operator_and_1 = BooleanExtensions.operator_and(_operator_equals, _isEmpty); - } - if (!_operator_and_1) { - _operator_and = false; - } else { - FreeType _returntype = e.getReturntype(); - boolean _operator_equals_1 = ObjectExtensions.operator_equals(_returntype, null); - _operator_and = BooleanExtensions.operator_and(_operator_and_1, _operator_equals_1); - } - return ((Boolean)_operator_and); - } - }; - boolean _exists = IterableExtensions.<Operation>exists(_operations, _function); - if (_exists) { - _operator_or = true; - } else { - boolean _operator_and_2 = false; - ActorClass _base = ac.getBase(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null); - if (!_operator_notEquals) { - _operator_and_2 = false; - } else { - ActorClass _base_1 = ac.getBase(); - boolean _overridesStop = this.overridesStop(_base_1); - _operator_and_2 = BooleanExtensions.operator_and(_operator_notEquals, _overridesStop); - } - _operator_or = BooleanExtensions.operator_or(_exists, _operator_and_2); - } - return _operator_or; - } - - public int getNumberOfInheritedStates(final ActorClass ac) { - ActorClass _base = ac.getBase(); - boolean _operator_equals = ObjectExtensions.operator_equals(_base, null); - if (_operator_equals) { - return 0; - } else { - ActorClass _base_1 = ac.getBase(); - StateMachine _stateMachine = _base_1.getStateMachine(); - List<State> _stateList = this.getStateList(_stateMachine); - int _size = _stateList.size(); - ActorClass _base_2 = ac.getBase(); - int _numberOfInheritedStates = this.getNumberOfInheritedStates(_base_2); - int _operator_plus = IntegerExtensions.operator_plus(((Integer)_size), ((Integer)_numberOfInheritedStates)); - return _operator_plus; - } - } - - public int getNumberOfInheritedBaseStates(final ActorClass ac) { - ActorClass _base = ac.getBase(); - boolean _operator_equals = ObjectExtensions.operator_equals(_base, null); - if (_operator_equals) { - return 0; - } else { - ActorClass _base_1 = ac.getBase(); - StateMachine _stateMachine = _base_1.getStateMachine(); - List<State> _baseStateList = this.getBaseStateList(_stateMachine); - int _size = _baseStateList.size(); - ActorClass _base_2 = ac.getBase(); - int _numberOfInheritedBaseStates = this.getNumberOfInheritedBaseStates(_base_2); - int _operator_plus = IntegerExtensions.operator_plus(((Integer)_size), ((Integer)_numberOfInheritedBaseStates)); - return _operator_plus; - } - } - - public String getStateId(final State s) { - String _stateId = this.nameProvider.getStateId(s); - return _stateId; - } - - public String getStatePathName(final State s) { - String _statePathName = this.nameProvider.getStatePathName(s); - return _statePathName; - } - - public String getChainId(final TransitionChain t) { - String _chainId = this.nameProvider.getChainId(t); - return _chainId; - } - - public boolean hasGuard(final Trigger tr) { - boolean _operator_and = false; - boolean _operator_and_1 = false; - Guard _guard = tr.getGuard(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_guard, null); - if (!_operator_notEquals) { - _operator_and_1 = false; - } else { - Guard _guard_1 = tr.getGuard(); - DetailCode _guard_2 = _guard_1.getGuard(); - boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_guard_2, null); - _operator_and_1 = BooleanExtensions.operator_and(_operator_notEquals, _operator_notEquals_1); - } - if (!_operator_and_1) { - _operator_and = false; - } else { - Guard _guard_3 = tr.getGuard(); - DetailCode _guard_4 = _guard_3.getGuard(); - EList<String> _commands = _guard_4.getCommands(); - int _size = _commands.size(); - boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0)); - _operator_and = BooleanExtensions.operator_and(_operator_and_1, _operator_greaterThan); - } - return _operator_and; - } - - public boolean hasGuard(final ExpandedActorClass ac, final ActiveTrigger at) { - { - boolean hasGuard = false; - EList<TriggeredTransition> _transitions = at.getTransitions(); - for (TriggeredTransition t : _transitions) { - EList<Trigger> _triggers = t.getTriggers(); - final Function1<Trigger,Boolean> _function = new Function1<Trigger,Boolean>() { - public Boolean apply(final Trigger e) { - boolean _operator_and = false; - String _trigger = at.getTrigger(); - boolean _isMatching = ac.isMatching(e, _trigger); - if (!_isMatching) { - _operator_and = false; - } else { - boolean _hasGuard = RoomExtensions.this.hasGuard(e); - _operator_and = BooleanExtensions.operator_and(_isMatching, _hasGuard); - } - return ((Boolean)_operator_and); - } - }; - boolean _exists = IterableExtensions.<Trigger>exists(_triggers, _function); - if (_exists) { - hasGuard = true; - } - } - return hasGuard; - } - } - - public boolean hasEntryCode(final State s) { - boolean _operator_and = false; - DetailCode _entryCode = s.getEntryCode(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_entryCode, null); - if (!_operator_notEquals) { - _operator_and = false; - } else { - DetailCode _entryCode_1 = s.getEntryCode(); - EList<String> _commands = _entryCode_1.getCommands(); - int _size = _commands.size(); - boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0)); - _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan); - } - return _operator_and; - } - - public boolean hasExitCode(final State s) { - boolean _operator_and = false; - DetailCode _exitCode = s.getExitCode(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_exitCode, null); - if (!_operator_notEquals) { - _operator_and = false; - } else { - DetailCode _exitCode_1 = s.getExitCode(); - EList<String> _commands = _exitCode_1.getCommands(); - int _size = _commands.size(); - boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0)); - _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan); - } - return _operator_and; - } - - public String getEntryCode(final ExpandedActorClass ac, final State s) { - if ((s instanceof org.eclipse.etrice.core.room.RefinedState)) { - String _entryCodeOperationName = this.nameProvider.getEntryCodeOperationName(s); - String _operator_plus = StringExtensions.operator_plus("super.", _entryCodeOperationName); - String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, "();\n"); - DetailCode _entryCode = s.getEntryCode(); - String _code = ac.getCode(_entryCode); - String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, _code); - return _operator_plus_2; - } else { - DetailCode _entryCode_1 = s.getEntryCode(); - String _code_1 = ac.getCode(_entryCode_1); - return _code_1; - } - } - - public String getExitCode(final ExpandedActorClass ac, final State s) { - String _xifexpression = null; - if ((s instanceof org.eclipse.etrice.core.room.RefinedState)) { - DetailCode _exitCode = s.getExitCode(); - String _code = ac.getCode(_exitCode); - String _operator_plus = StringExtensions.operator_plus(_code, "super."); - String _entryCodeOperationName = this.nameProvider.getEntryCodeOperationName(s); - String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, _entryCodeOperationName); - String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "();\n"); - return _operator_plus_2; - } else { - DetailCode _exitCode_1 = s.getExitCode(); - String _code_1 = ac.getCode(_exitCode_1); - _xifexpression = _code_1; - } - return _xifexpression; - } - - public boolean hasActionCode(final Transition t) { - boolean _operator_and = false; - DetailCode _action = t.getAction(); - boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_action, null); - if (!_operator_notEquals) { - _operator_and = false; - } else { - DetailCode _action_1 = t.getAction(); - EList<String> _commands = _action_1.getCommands(); - int _size = _commands.size(); - boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0)); - _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan); - } - return _operator_and; - } - - public String getActionCode(final ExpandedActorClass ac, final Transition t) { - DetailCode _action = t.getAction(); - String _code = ac.getCode(_action); - return _code; - } - - public String getContextId(final TransitionChain tc) { - State _stateContext = tc.getStateContext(); - String _stateId = this.nameProvider.getStateId(_stateContext); - return _stateId; - } - - public Transition getInitTransition(final StateGraph sg) { - { - EList<Transition> _transitions = sg.getTransitions(); - for (Transition tr : _transitions) { - if ((tr instanceof org.eclipse.etrice.core.room.InitialTransition)) { - return tr; - } - } - return null; - } - } - - public boolean hasInitTransition(final StateGraph sg) { - { - EList<Transition> _transitions = sg.getTransitions(); - for (Transition tr : _transitions) { - if ((tr instanceof org.eclipse.etrice.core.room.InitialTransition)) { - return true; - } - } - return false; - } - } - - public List<Transition> getTransitionList(final State s) { - boolean _isLeaf = this.isLeaf(s); - if (_isLeaf) { - ArrayList<Transition> _arrayList = new ArrayList<Transition>(); - return _arrayList; - } else { - StateGraph _subgraph = s.getSubgraph(); - List<Transition> _transitionList = this.getTransitionList(_subgraph); - return _transitionList; - } - } - - public List<Transition> getTransitionList(final StateGraph sg) { - { - EList<Transition> _transitions = sg.getTransitions(); - ArrayList<Transition> _arrayList = new ArrayList<Transition>(_transitions); - ArrayList<Transition> res = _arrayList; - EList<State> _states = sg.getStates(); - for (State s : _states) { - List<Transition> _transitionList = this.getTransitionList(s); - res.addAll(_transitionList); - } - return res; - } - } -}
\ No newline at end of file +package org.eclipse.etrice.generator.extensions;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.etrice.core.room.ActorClass;
+import org.eclipse.etrice.core.room.BaseState;
+import org.eclipse.etrice.core.room.DetailCode;
+import org.eclipse.etrice.core.room.ExternalPort;
+import org.eclipse.etrice.core.room.FreeType;
+import org.eclipse.etrice.core.room.FreeTypedID;
+import org.eclipse.etrice.core.room.Guard;
+import org.eclipse.etrice.core.room.InitialTransition;
+import org.eclipse.etrice.core.room.Message;
+import org.eclipse.etrice.core.room.MessageHandler;
+import org.eclipse.etrice.core.room.Operation;
+import org.eclipse.etrice.core.room.Port;
+import org.eclipse.etrice.core.room.PortClass;
+import org.eclipse.etrice.core.room.ProtocolClass;
+import org.eclipse.etrice.core.room.RefinedState;
+import org.eclipse.etrice.core.room.SAPRef;
+import org.eclipse.etrice.core.room.SPPRef;
+import org.eclipse.etrice.core.room.ServiceImplementation;
+import org.eclipse.etrice.core.room.State;
+import org.eclipse.etrice.core.room.StateGraph;
+import org.eclipse.etrice.core.room.StateMachine;
+import org.eclipse.etrice.core.room.Transition;
+import org.eclipse.etrice.core.room.Trigger;
+import org.eclipse.etrice.core.room.TriggeredTransition;
+import org.eclipse.etrice.generator.etricegen.ActiveTrigger;
+import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
+import org.eclipse.etrice.generator.etricegen.TransitionChain;
+import org.eclipse.etrice.generator.extensions.RoomNameProv;
+import org.eclipse.xtext.xbase.lib.BooleanExtensions;
+import org.eclipse.xtext.xbase.lib.ComparableExtensions;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IntegerExtensions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+@SuppressWarnings("all")
+@Singleton
+public class RoomExtensions {
+ @Inject
+ private RoomNameProv nameProvider;
+
+ public <T extends Object> List<T> union(final List<T> l1, final List<T> l2) {
+ ArrayList<T> _arrayList = new ArrayList<T>();
+ ArrayList<T> ret = _arrayList;
+ ret.addAll(l1);
+ ret.addAll(l2);
+ return ret;
+ }
+
+ public List<Port> punion(final List<Port> in1, final List<ExternalPort> in2) {
+ ArrayList<Port> _arrayList = new ArrayList<Port>();
+ ArrayList<Port> ret = _arrayList;
+ for (final ExternalPort ele : in2) {
+ Port _ifport = ele.getIfport();
+ ret.add(_ifport);
+ }
+ ret.addAll(in1);
+ return ret;
+ }
+
+ public String getGenerationPathSegment() {
+ return "/src-gen/";
+ }
+
+ public String getModelPath(final EObject e) {
+ Resource _eResource = e.eResource();
+ Resource res = _eResource;
+ boolean _operator_equals = ObjectExtensions.operator_equals(res, null);
+ if (_operator_equals) {
+ return "";
+ } else {
+ URI _uRI = res.getURI();
+ String _fileString = _uRI.toFileString();
+ return _fileString;
+ }
+ }
+
+ public String getProjectPath(final EObject e) {
+ Resource _eResource = e.eResource();
+ Resource res = _eResource;
+ boolean _operator_equals = ObjectExtensions.operator_equals(res, null);
+ if (_operator_equals) {
+ return "";
+ } else {
+ {
+ File _file = new File("");
+ File tmpf = _file;
+ URI _uRI = res.getURI();
+ String _fileString = _uRI.toFileString();
+ File _file_1 = new File(_fileString);
+ tmpf = _file_1;
+ boolean _isFile = tmpf.isFile();
+ boolean _operator_not = BooleanExtensions.operator_not(_isFile);
+ if (_operator_not) {
+ return "";
+ }
+ boolean isProject = false;
+ Boolean _xdowhileexpression;
+ do {
+ {
+ File _parentFile = tmpf.getParentFile();
+ tmpf = _parentFile;
+ String[] _list = tmpf.list();
+ String[] contents = _list;
+ for (final String f : contents) {
+ boolean _equals = f.equals(".project");
+ if (_equals) {
+ isProject = true;
+ }
+ }
+ }
+ boolean _operator_and = false;
+ boolean _operator_not_1 = BooleanExtensions.operator_not(isProject);
+ if (!_operator_not_1) {
+ _operator_and = false;
+ } else {
+ File _parentFile_1 = tmpf.getParentFile();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_parentFile_1, null);
+ _operator_and = BooleanExtensions.operator_and(_operator_not_1, _operator_notEquals);
+ }
+ _xdowhileexpression = _operator_and;
+ } while(_xdowhileexpression);
+ String _absolutePath = tmpf.getAbsolutePath();
+ return _absolutePath;
+ }
+ }
+ }
+
+ public String getGenerationTargetPath(final EObject e) {
+ String _projectPath = this.getProjectPath(e);
+ String _generationPathSegment = this.getGenerationPathSegment();
+ String _operator_plus = StringExtensions.operator_plus(_projectPath, _generationPathSegment);
+ return _operator_plus;
+ }
+
+ public List<Port> getEndPorts(final ActorClass ac) {
+ EList<Port> _intPorts = ac.getIntPorts();
+ EList<ExternalPort> _extPorts = ac.getExtPorts();
+ List<Port> _punion = this.punion(_intPorts, _extPorts);
+ return _punion;
+ }
+
+ public String getPathName(final String path) {
+ String _replaceAll = path.replaceAll("/", "_");
+ return _replaceAll;
+ }
+
+ public String getPortClassName(final ProtocolClass p, final boolean conj) {
+ String _name = p.getName();
+ String ret = _name;
+ if (conj) {
+ String _operator_plus = StringExtensions.operator_plus(ret, "ConjPort");
+ ret = _operator_plus;
+ } else {
+ String _operator_plus_1 = StringExtensions.operator_plus(ret, "Port");
+ ret = _operator_plus_1;
+ }
+ return ret;
+ }
+
+ public String getPortClassName(final Port p) {
+ ProtocolClass _protocol = p.getProtocol();
+ boolean _isConjugated = p.isConjugated();
+ String _portClassName = this.getPortClassName(_protocol, _isConjugated);
+ String ret = _portClassName;
+ boolean _isReplicated = p.isReplicated();
+ if (_isReplicated) {
+ String _operator_plus = StringExtensions.operator_plus(ret, "Repl");
+ ret = _operator_plus;
+ }
+ return ret;
+ }
+
+ public String getPortClassName(final ExternalPort p) {
+ Port _ifport = p.getIfport();
+ String _portClassName = this.getPortClassName(_ifport);
+ return _portClassName;
+ }
+
+ public String getPortClassName(final SAPRef sap) {
+ ProtocolClass _protocol = sap.getProtocol();
+ String _portClassName = this.getPortClassName(_protocol, true);
+ return _portClassName;
+ }
+
+ public String getPortClassName(final ServiceImplementation svc) {
+ SPPRef _spp = svc.getSpp();
+ ProtocolClass _protocol = _spp.getProtocol();
+ String _portClassName = this.getPortClassName(_protocol, false);
+ String _operator_plus = StringExtensions.operator_plus(_portClassName, "Repl");
+ return _operator_plus;
+ }
+
+ public List<Message> getAllIncomingMessages(final ProtocolClass pc) {
+ ProtocolClass _base = pc.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals) {
+ ProtocolClass _base_1 = pc.getBase();
+ List<Message> _allIncomingMessages = this.getAllIncomingMessages(_base_1);
+ EList<Message> _incomingMessages = pc.getIncomingMessages();
+ List<Message> _union = this.<Message>union(_allIncomingMessages, _incomingMessages);
+ return _union;
+ } else {
+ EList<Message> _incomingMessages_1 = pc.getIncomingMessages();
+ return _incomingMessages_1;
+ }
+ }
+
+ public List<Message> getAllOutgoingMessages(final ProtocolClass pc) {
+ EList<Message> _xifexpression = null;
+ ProtocolClass _base = pc.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (_operator_notEquals) {
+ ProtocolClass _base_1 = pc.getBase();
+ List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(_base_1);
+ EList<Message> _outgoingMessages = pc.getOutgoingMessages();
+ List<Message> _union = this.<Message>union(_allOutgoingMessages, _outgoingMessages);
+ return _union;
+ } else {
+ EList<Message> _outgoingMessages_1 = pc.getOutgoingMessages();
+ _xifexpression = _outgoingMessages_1;
+ }
+ return _xifexpression;
+ }
+
+ public List<Message> getIncoming(final ProtocolClass pc, final boolean conj) {
+ if (conj) {
+ List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(pc);
+ return _allOutgoingMessages;
+ } else {
+ List<Message> _allIncomingMessages = this.getAllIncomingMessages(pc);
+ return _allIncomingMessages;
+ }
+ }
+
+ public List<Message> getOutgoing(final ProtocolClass pc, final boolean conj) {
+ if (conj) {
+ List<Message> _allIncomingMessages = this.getAllIncomingMessages(pc);
+ return _allIncomingMessages;
+ } else {
+ List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(pc);
+ return _allOutgoingMessages;
+ }
+ }
+
+ public PortClass getPortClass(final ProtocolClass pc, final boolean conj) {
+ if (conj) {
+ PortClass _conjugate = pc.getConjugate();
+ return _conjugate;
+ } else {
+ PortClass _regular = pc.getRegular();
+ return _regular;
+ }
+ }
+
+ public boolean handlesSend(final ProtocolClass pc, final boolean conj) {
+ PortClass _portClass = this.getPortClass(pc, conj);
+ boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
+ if (_operator_equals) {
+ return false;
+ } else {
+ PortClass _portClass_1 = this.getPortClass(pc, conj);
+ EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
+ for (final MessageHandler hdlr : _msgHandlers) {
+ List<Message> _outgoing = this.getOutgoing(pc, conj);
+ Message _msg = hdlr.getMsg();
+ boolean _contains = _outgoing.contains(_msg);
+ if (_contains) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public boolean handlesReceive(final ProtocolClass pc, final boolean conj) {
+ PortClass _portClass = this.getPortClass(pc, conj);
+ boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
+ if (_operator_equals) {
+ return false;
+ } else {
+ PortClass _portClass_1 = this.getPortClass(pc, conj);
+ EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
+ for (final MessageHandler hdlr : _msgHandlers) {
+ List<Message> _incoming = this.getIncoming(pc, conj);
+ Message _msg = hdlr.getMsg();
+ boolean _contains = _incoming.contains(_msg);
+ if (_contains) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public List<MessageHandler> getReceiveHandlers(final ProtocolClass pc, final boolean conj) {
+ PortClass _portClass = this.getPortClass(pc, conj);
+ boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
+ if (_operator_equals) {
+ ArrayList<MessageHandler> _arrayList = new ArrayList<MessageHandler>();
+ return _arrayList;
+ } else {
+ {
+ ArrayList<MessageHandler> _arrayList_1 = new ArrayList<MessageHandler>();
+ ArrayList<MessageHandler> res = _arrayList_1;
+ PortClass _portClass_1 = this.getPortClass(pc, conj);
+ EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
+ for (final MessageHandler hdlr : _msgHandlers) {
+ List<Message> _incoming = this.getIncoming(pc, conj);
+ Message _msg = hdlr.getMsg();
+ boolean _contains = _incoming.contains(_msg);
+ if (_contains) {
+ res.add(hdlr);
+ }
+ }
+ return res;
+ }
+ }
+ }
+
+ public List<MessageHandler> getSendHandlers(final ProtocolClass pc, final boolean conj) {
+ PortClass _portClass = this.getPortClass(pc, conj);
+ boolean _operator_equals = ObjectExtensions.operator_equals(_portClass, null);
+ if (_operator_equals) {
+ ArrayList<MessageHandler> _arrayList = new ArrayList<MessageHandler>();
+ return _arrayList;
+ } else {
+ {
+ ArrayList<MessageHandler> _arrayList_1 = new ArrayList<MessageHandler>();
+ ArrayList<MessageHandler> res = _arrayList_1;
+ PortClass _portClass_1 = this.getPortClass(pc, conj);
+ EList<MessageHandler> _msgHandlers = _portClass_1.getMsgHandlers();
+ for (final MessageHandler hdlr : _msgHandlers) {
+ List<Message> _outgoing = this.getOutgoing(pc, conj);
+ Message _msg = hdlr.getMsg();
+ boolean _contains = _outgoing.contains(_msg);
+ if (_contains) {
+ res.add(hdlr);
+ }
+ }
+ return res;
+ }
+ }
+ }
+
+ public MessageHandler getSendHandler(final Message m, final boolean conj) {
+ EObject _eContainer = m.eContainer();
+ List<MessageHandler> _sendHandlers = this.getSendHandlers(((ProtocolClass) _eContainer), conj);
+ final Function1<MessageHandler,Boolean> _function = new Function1<MessageHandler,Boolean>() {
+ public Boolean apply(final MessageHandler e) {
+ Message _msg = e.getMsg();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_msg, m);
+ return ((Boolean)_operator_equals);
+ }
+ };
+ MessageHandler _findFirst = IterableExtensions.<MessageHandler>findFirst(_sendHandlers, _function);
+ return _findFirst;
+ }
+
+ public boolean isIncoming(final Message m) {
+ EObject _eContainer = m.eContainer();
+ List<Message> _allIncomingMessages = this.getAllIncomingMessages(((ProtocolClass) _eContainer));
+ boolean _contains = _allIncomingMessages.contains(m);
+ return _contains;
+ }
+
+ public String getCodeName(final Message m) {
+ boolean _isIncoming = this.isIncoming(m);
+ if (_isIncoming) {
+ String _name = m.getName();
+ String _operator_plus = StringExtensions.operator_plus("IN_", _name);
+ return _operator_plus;
+ } else {
+ String _name_1 = m.getName();
+ String _operator_plus_1 = StringExtensions.operator_plus("OUT_", _name_1);
+ return _operator_plus_1;
+ }
+ }
+
+ public boolean isLeaf(final State s) {
+ StateGraph _subgraph = s.getSubgraph();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_subgraph, null);
+ return _operator_equals;
+ }
+
+ public List<State> getLeafStateList(final StateGraph sg) {
+ ArrayList<State> _arrayList = new ArrayList<State>();
+ ArrayList<State> res = _arrayList;
+ EList<State> _states = sg.getStates();
+ for (final State s : _states) {
+ List<State> _leafStateList = this.getLeafStateList(s);
+ res.addAll(_leafStateList);
+ }
+ return res;
+ }
+
+ public List<State> getLeafStateList(final State s) {
+ boolean _isLeaf = this.isLeaf(s);
+ if (_isLeaf) {
+ {
+ ArrayList<State> _arrayList = new ArrayList<State>();
+ ArrayList<State> res = _arrayList;
+ res.add(s);
+ return res;
+ }
+ } else {
+ StateGraph _subgraph = s.getSubgraph();
+ List<State> _leafStateList = this.getLeafStateList(_subgraph);
+ return _leafStateList;
+ }
+ }
+
+ public List<State> getStateList(final StateGraph sg) {
+ ArrayList<State> _arrayList = new ArrayList<State>();
+ ArrayList<State> ret = _arrayList;
+ EList<State> _states = sg.getStates();
+ for (final State e : _states) {
+ {
+ ret.add(e);
+ StateGraph _subgraph = e.getSubgraph();
+ StateGraph tmp = _subgraph;
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(tmp, null);
+ if (_operator_notEquals) {
+ StateGraph _subgraph_1 = e.getSubgraph();
+ List<State> _stateList = this.getStateList(_subgraph_1);
+ ret.addAll(_stateList);
+ }
+ }
+ }
+ return ret;
+ }
+
+ public List<State> getBaseStateList(final StateGraph sg) {
+ ArrayList<State> _arrayList = new ArrayList<State>();
+ ArrayList<State> ret = _arrayList;
+ List<State> _stateList = this.getStateList(sg);
+ for (final State e : _stateList) {
+ if ((e instanceof BaseState)) {
+ ret.add(e);
+ }
+ }
+ return ret;
+ }
+
+ public List<State> getAllBaseStates(final ActorClass ac) {
+ List<State> _xifexpression = null;
+ ActorClass _base = ac.getBase();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_base, null);
+ if (_operator_equals) {
+ StateMachine _stateMachine = ac.getStateMachine();
+ List<State> _baseStateList = this.getBaseStateList(_stateMachine);
+ return _baseStateList;
+ } else {
+ ActorClass _base_1 = ac.getBase();
+ List<State> _allBaseStates = this.getAllBaseStates(_base_1);
+ StateMachine _stateMachine_1 = ac.getStateMachine();
+ List<State> _baseStateList_1 = this.getBaseStateList(_stateMachine_1);
+ List<State> _union = this.<State>union(_allBaseStates, _baseStateList_1);
+ _xifexpression = _union;
+ }
+ return _xifexpression;
+ }
+
+ public boolean overridesStop(final ActorClass ac) {
+ boolean _operator_or = false;
+ EList<Operation> _operations = ac.getOperations();
+ final Function1<Operation,Boolean> _function = new Function1<Operation,Boolean>() {
+ public Boolean apply(final Operation e) {
+ boolean _operator_and = false;
+ boolean _operator_and_1 = false;
+ String _name = e.getName();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_name, "stop");
+ if (!_operator_equals) {
+ _operator_and_1 = false;
+ } else {
+ EList<FreeTypedID> _arguments = e.getArguments();
+ boolean _isEmpty = _arguments.isEmpty();
+ _operator_and_1 = BooleanExtensions.operator_and(_operator_equals, _isEmpty);
+ }
+ if (!_operator_and_1) {
+ _operator_and = false;
+ } else {
+ FreeType _returntype = e.getReturntype();
+ boolean _operator_equals_1 = ObjectExtensions.operator_equals(_returntype, null);
+ _operator_and = BooleanExtensions.operator_and(_operator_and_1, _operator_equals_1);
+ }
+ return ((Boolean)_operator_and);
+ }
+ };
+ boolean _exists = IterableExtensions.<Operation>exists(_operations, _function);
+ if (_exists) {
+ _operator_or = true;
+ } else {
+ boolean _operator_and = false;
+ ActorClass _base = ac.getBase();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_base, null);
+ if (!_operator_notEquals) {
+ _operator_and = false;
+ } else {
+ ActorClass _base_1 = ac.getBase();
+ boolean _overridesStop = this.overridesStop(_base_1);
+ _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _overridesStop);
+ }
+ _operator_or = BooleanExtensions.operator_or(_exists, _operator_and);
+ }
+ return _operator_or;
+ }
+
+ public int getNumberOfInheritedStates(final ActorClass ac) {
+ ActorClass _base = ac.getBase();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_base, null);
+ if (_operator_equals) {
+ return 0;
+ } else {
+ ActorClass _base_1 = ac.getBase();
+ StateMachine _stateMachine = _base_1.getStateMachine();
+ List<State> _stateList = this.getStateList(_stateMachine);
+ int _size = _stateList.size();
+ ActorClass _base_2 = ac.getBase();
+ int _numberOfInheritedStates = this.getNumberOfInheritedStates(_base_2);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_size), ((Integer)_numberOfInheritedStates));
+ return _operator_plus;
+ }
+ }
+
+ public int getNumberOfInheritedBaseStates(final ActorClass ac) {
+ ActorClass _base = ac.getBase();
+ boolean _operator_equals = ObjectExtensions.operator_equals(_base, null);
+ if (_operator_equals) {
+ return 0;
+ } else {
+ ActorClass _base_1 = ac.getBase();
+ StateMachine _stateMachine = _base_1.getStateMachine();
+ List<State> _baseStateList = this.getBaseStateList(_stateMachine);
+ int _size = _baseStateList.size();
+ ActorClass _base_2 = ac.getBase();
+ int _numberOfInheritedBaseStates = this.getNumberOfInheritedBaseStates(_base_2);
+ int _operator_plus = IntegerExtensions.operator_plus(((Integer)_size), ((Integer)_numberOfInheritedBaseStates));
+ return _operator_plus;
+ }
+ }
+
+ public String getStateId(final State s) {
+ String _stateId = this.getStateId(s);
+ return _stateId;
+ }
+
+ public String getStatePathName(final State s) {
+ String _statePathName = this.getStatePathName(s);
+ return _statePathName;
+ }
+
+ public String getChainId(final TransitionChain t) {
+ String _chainId = this.getChainId(t);
+ return _chainId;
+ }
+
+ public boolean hasGuard(final Trigger tr) {
+ boolean _operator_and = false;
+ boolean _operator_and_1 = false;
+ Guard _guard = tr.getGuard();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_guard, null);
+ if (!_operator_notEquals) {
+ _operator_and_1 = false;
+ } else {
+ Guard _guard_1 = tr.getGuard();
+ DetailCode _guard_2 = _guard_1.getGuard();
+ boolean _operator_notEquals_1 = ObjectExtensions.operator_notEquals(_guard_2, null);
+ _operator_and_1 = BooleanExtensions.operator_and(_operator_notEquals, _operator_notEquals_1);
+ }
+ if (!_operator_and_1) {
+ _operator_and = false;
+ } else {
+ Guard _guard_3 = tr.getGuard();
+ DetailCode _guard_4 = _guard_3.getGuard();
+ EList<String> _commands = _guard_4.getCommands();
+ int _size = _commands.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ _operator_and = BooleanExtensions.operator_and(_operator_and_1, _operator_greaterThan);
+ }
+ return _operator_and;
+ }
+
+ public boolean hasGuard(final ExpandedActorClass ac, final ActiveTrigger at) {
+ boolean hasGuard = false;
+ EList<TriggeredTransition> _transitions = at.getTransitions();
+ for (final TriggeredTransition t : _transitions) {
+ EList<Trigger> _triggers = t.getTriggers();
+ final Function1<Trigger,Boolean> _function = new Function1<Trigger,Boolean>() {
+ public Boolean apply(final Trigger e) {
+ boolean _operator_and = false;
+ String _trigger = at.getTrigger();
+ boolean _isMatching = ac.isMatching(e, _trigger);
+ if (!_isMatching) {
+ _operator_and = false;
+ } else {
+ boolean _hasGuard = RoomExtensions.this.hasGuard(e);
+ _operator_and = BooleanExtensions.operator_and(_isMatching, _hasGuard);
+ }
+ return ((Boolean)_operator_and);
+ }
+ };
+ boolean _exists = IterableExtensions.<Trigger>exists(_triggers, _function);
+ if (_exists) {
+ hasGuard = true;
+ }
+ }
+ return hasGuard;
+ }
+
+ public boolean hasEntryCode(final State s) {
+ boolean _operator_and = false;
+ DetailCode _entryCode = s.getEntryCode();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_entryCode, null);
+ if (!_operator_notEquals) {
+ _operator_and = false;
+ } else {
+ DetailCode _entryCode_1 = s.getEntryCode();
+ EList<String> _commands = _entryCode_1.getCommands();
+ int _size = _commands.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan);
+ }
+ return _operator_and;
+ }
+
+ public boolean hasExitCode(final State s) {
+ boolean _operator_and = false;
+ DetailCode _exitCode = s.getExitCode();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_exitCode, null);
+ if (!_operator_notEquals) {
+ _operator_and = false;
+ } else {
+ DetailCode _exitCode_1 = s.getExitCode();
+ EList<String> _commands = _exitCode_1.getCommands();
+ int _size = _commands.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan);
+ }
+ return _operator_and;
+ }
+
+ public String getEntryCode(final ExpandedActorClass ac, final State s) {
+ if ((s instanceof RefinedState)) {
+ String _entryCodeOperationName = RoomNameProv.getEntryCodeOperationName(s);
+ String _operator_plus = StringExtensions.operator_plus("super.", _entryCodeOperationName);
+ String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, "();\n");
+ DetailCode _entryCode = s.getEntryCode();
+ String _code = ac.getCode(_entryCode);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, _code);
+ return _operator_plus_2;
+ } else {
+ DetailCode _entryCode_1 = s.getEntryCode();
+ String _code_1 = ac.getCode(_entryCode_1);
+ return _code_1;
+ }
+ }
+
+ public String getExitCode(final ExpandedActorClass ac, final State s) {
+ String _xifexpression = null;
+ if ((s instanceof RefinedState)) {
+ DetailCode _exitCode = s.getExitCode();
+ String _code = ac.getCode(_exitCode);
+ String _operator_plus = StringExtensions.operator_plus(_code, "super.");
+ String _entryCodeOperationName = RoomNameProv.getEntryCodeOperationName(s);
+ String _operator_plus_1 = StringExtensions.operator_plus(_operator_plus, _entryCodeOperationName);
+ String _operator_plus_2 = StringExtensions.operator_plus(_operator_plus_1, "();\n");
+ return _operator_plus_2;
+ } else {
+ DetailCode _exitCode_1 = s.getExitCode();
+ String _code_1 = ac.getCode(_exitCode_1);
+ _xifexpression = _code_1;
+ }
+ return _xifexpression;
+ }
+
+ public boolean hasActionCode(final Transition t) {
+ boolean _operator_and = false;
+ DetailCode _action = t.getAction();
+ boolean _operator_notEquals = ObjectExtensions.operator_notEquals(_action, null);
+ if (!_operator_notEquals) {
+ _operator_and = false;
+ } else {
+ DetailCode _action_1 = t.getAction();
+ EList<String> _commands = _action_1.getCommands();
+ int _size = _commands.size();
+ boolean _operator_greaterThan = ComparableExtensions.<Integer>operator_greaterThan(((Integer)_size), ((Integer)0));
+ _operator_and = BooleanExtensions.operator_and(_operator_notEquals, _operator_greaterThan);
+ }
+ return _operator_and;
+ }
+
+ public String getActionCode(final ExpandedActorClass ac, final Transition t) {
+ DetailCode _action = t.getAction();
+ String _code = ac.getCode(_action);
+ return _code;
+ }
+
+ public String getContextId(final TransitionChain tc) {
+ State _stateContext = tc.getStateContext();
+ String _stateId = this.getStateId(_stateContext);
+ return _stateId;
+ }
+
+ public Transition getInitTransition(final StateGraph sg) {
+ EList<Transition> _transitions = sg.getTransitions();
+ for (final Transition tr : _transitions) {
+ if ((tr instanceof InitialTransition)) {
+ return tr;
+ }
+ }
+ return null;
+ }
+
+ public boolean hasInitTransition(final StateGraph sg) {
+ EList<Transition> _transitions = sg.getTransitions();
+ for (final Transition tr : _transitions) {
+ if ((tr instanceof InitialTransition)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public List<Transition> getTransitionList(final State s) {
+ boolean _isLeaf = this.isLeaf(s);
+ if (_isLeaf) {
+ ArrayList<Transition> _arrayList = new ArrayList<Transition>();
+ return _arrayList;
+ } else {
+ StateGraph _subgraph = s.getSubgraph();
+ List<Transition> _transitionList = this.getTransitionList(_subgraph);
+ return _transitionList;
+ }
+ }
+
+ public List<Transition> getTransitionList(final StateGraph sg) {
+ EList<Transition> _transitions = sg.getTransitions();
+ ArrayList<Transition> _arrayList = new ArrayList<Transition>(_transitions);
+ ArrayList<Transition> res = _arrayList;
+ EList<State> _states = sg.getStates();
+ for (final State s : _states) {
+ List<Transition> _transitionList = this.getTransitionList(s);
+ res.addAll(_transitionList);
+ }
+ return res;
+ }
+}
diff --git a/plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF index d41aa0225..65c65629a 100644 --- a/plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.etrice.ui.behavior/META-INF/MANIFEST.MF @@ -4,23 +4,14 @@ Bundle-Name: Actor Behavior Diagram Editor Bundle-SymbolicName: org.eclipse.etrice.ui.behavior;singleton:=true
Bundle-Version: 0.1.0.qualifier
Bundle-Activator: org.eclipse.etrice.ui.behavior.Activator
-Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0",
- org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
+Require-Bundle: org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
org.eclipse.etrice.ui.common;bundle-version="0.1.0",
org.eclipse.graphiti;bundle-version="0.8.0",
org.eclipse.graphiti.ui;bundle-version="0.8.0",
- org.eclipse.ui;bundle-version="3.6.0",
- org.eclipse.ui.ide;bundle-version="3.6.0",
- org.eclipse.ui.forms;bundle-version="3.5.0",
org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100",
- org.eclipse.jface.databinding;bundle-version="1.4.0",
org.eclipse.core.databinding;bundle-version="1.3.100",
- org.eclipse.core.databinding.property;bundle-version="1.3.0",
- org.eclipse.core.databinding.beans;bundle-version="1.2.100",
org.eclipse.gef;bundle-version="3.6.1",
- org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
org.eclipse.emf.transaction;bundle-version="1.4.0",
- org.eclipse.xtext;bundle-version="2.0.0",
org.eclipse.xtext.ui;bundle-version="2.0.0",
org.eclipse.xtext.ui.shared;bundle-version="2.0.0"
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.etrice.ui.commands/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.ui.commands/META-INF/MANIFEST.MF index 980a0aa4c..260b2026c 100644 --- a/plugins/org.eclipse.etrice.ui.commands/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.etrice.ui.commands/META-INF/MANIFEST.MF @@ -5,19 +5,14 @@ Bundle-SymbolicName: org.eclipse.etrice.ui.commands; singleton:=true Bundle-Version: 0.1.0.qualifier
Bundle-Activator: org.eclipse.etrice.ui.commands.Activator
Bundle-Vendor: eTrice (Incubation)
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.etrice.core.room;bundle-version="0.1.0",
- org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
+Require-Bundle: org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
+ org.eclipse.etrice.ui.common;bundle-version="0.1.0",
org.eclipse.etrice.ui.structure;bundle-version="0.1.0",
org.eclipse.etrice.ui.behavior;bundle-version="0.1.0",
- org.eclipse.etrice.ui.common;bundle-version="0.1.0",
org.eclipse.graphiti;bundle-version="0.8.0",
- org.eclipse.graphiti.ui;bundle-version="0.8.0",
- org.eclipse.emf.edit;bundle-version="2.6.0",
- org.eclipse.emf.edit.ui;bundle-version="2.6.0",
org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100",
- org.eclipse.gef;bundle-version="3.6.1",
- org.eclipse.xtext.ui;bundle-version="2.0.0"
+ org.eclipse.xtext.ui;bundle-version="2.1.1",
+ org.eclipse.graphiti.ui;bundle-version="0.8.0",
+ org.eclipse.gef;bundle-version="3.7.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.etrice.ui.common/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.ui.common/META-INF/MANIFEST.MF index 3811d8452..a7b16603a 100644 --- a/plugins/org.eclipse.etrice.ui.common/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.etrice.ui.common/META-INF/MANIFEST.MF @@ -7,24 +7,16 @@ Bundle-Vendor: eTrice (Incubation) Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.core.databinding;bundle-version="1.3.100",
org.eclipse.core.databinding.beans;bundle-version="1.2.100",
- org.eclipse.core.runtime;bundle-version="3.6.0",
- org.eclipse.emf.ecore;bundle-version="2.6.0",
org.eclipse.jface.databinding;bundle-version="1.4.0",
- org.eclipse.jface;bundle-version="3.6.0",
- org.eclipse.ui.forms;bundle-version="3.5.0",
- org.eclipse.core.resources;bundle-version="3.6.0",
org.eclipse.emf.transaction;bundle-version="1.4.0",
- org.eclipse.etrice.core.room;bundle-version="0.1.0",
org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
org.eclipse.graphiti;bundle-version="0.8.0",
- org.eclipse.ui;bundle-version="3.6.1",
org.eclipse.ui.ide;bundle-version="3.6.0",
org.eclipse.graphiti.ui;bundle-version="0.7.0",
org.eclipse.gef;bundle-version="3.6.1",
org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100",
- org.eclipse.xtext;bundle-version="2.0.0",
- org.eclipse.xtext.ui;bundle-version="2.0.0",
- org.eclipse.xtext.ui.shared;bundle-version="2.0.0"
+ org.eclipse.xtext.ui;bundle-version="2.1.1",
+ org.eclipse.xtext.ui.shared;bundle-version="2.1.1"
Export-Package: org.eclipse.etrice.ui.common,
org.eclipse.etrice.ui.common.commands,
org.eclipse.etrice.ui.common.dialogs,
diff --git a/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF b/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF index 7f2e34f0e..4bd79a36b 100644 --- a/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.etrice.ui.structure/META-INF/MANIFEST.MF @@ -5,26 +5,17 @@ Bundle-SymbolicName: org.eclipse.etrice.ui.structure;singleton:=true Bundle-Version: 0.1.0.qualifier
Bundle-Activator: org.eclipse.etrice.ui.structure.Activator
Bundle-Vendor: eTrice (Incubation)
-Require-Bundle: org.eclipse.etrice.core.room;bundle-version="0.1.0",
- org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
+Require-Bundle: org.eclipse.etrice.core.room.ui;bundle-version="0.1.0",
org.eclipse.etrice.ui.common;bundle-version="0.1.0",
org.eclipse.etrice.ui.behavior;bundle-version="0.1.0",
org.eclipse.graphiti;bundle-version="0.8.0",
org.eclipse.graphiti.ui;bundle-version="0.8.0",
- org.eclipse.ui;bundle-version="3.6.0",
- org.eclipse.ui.ide;bundle-version="3.6.0",
- org.eclipse.ui.forms;bundle-version="3.5.0",
org.eclipse.ui.views.properties.tabbed;bundle-version="3.5.100",
- org.eclipse.jface.databinding;bundle-version="1.4.0",
org.eclipse.core.databinding;bundle-version="1.3.100",
- org.eclipse.core.databinding.property;bundle-version="1.3.0",
- org.eclipse.core.databinding.beans;bundle-version="1.2.100",
org.eclipse.gef;bundle-version="3.6.1",
- org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
org.eclipse.emf.transaction;bundle-version="1.4.0",
- org.eclipse.xtext;bundle-version="2.0.0",
- org.eclipse.xtext.ui;bundle-version="2.0.0",
- org.eclipse.xtext.ui.shared;bundle-version="2.0.0"
+ org.eclipse.xtext.ui;bundle-version="2.1.1",
+ org.eclipse.xtext.ui.shared;bundle-version="2.1.1"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.etrice.ui.structure,
diff --git a/releng/org.eclipse.etrice.releng/build.rmap b/releng/org.eclipse.etrice.releng/build.rmap index a9f300f7c..d5f8199d6 100644 --- a/releng/org.eclipse.etrice.releng/build.rmap +++ b/releng/org.eclipse.etrice.releng/build.rmap @@ -98,6 +98,12 @@ <bc:propertyRef key="eclipse.downloads"/>
</rm:uri>
</rm:provider>
+ <rm:provider componentTypes="eclipse.feature,osgi.bundle" resolutionFilter="(|(build.type=M)(build.type=R)(build.type=S))" readerType="p2" mutable="false">
+ <rm:property key="buckminster.mutable" value="false"/>
+ <rm:uri format="{0}/modeling/tmf/xtext/updates/composite/releases/">
+ <bc:propertyRef key="eclipse.downloads"/>
+ </rm:uri>
+ </rm:provider>
</rm:searchPath>
<rm:searchPath name="eclipse.license">
<rm:provider componentTypes="eclipse.feature" readerType="cvs">
|