summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortjung2012-09-08 14:59:47 (EDT)
committertjung2012-09-08 14:59:47 (EDT)
commit3abaa25dd1449b0bd08500703df1d7d7141d2cd7 (patch)
tree4f371fe458161dc5528865394ed7fabf32719f70
parent873d1ba8fc0592de341acec91d254940b8d4f591 (diff)
downloadorg.eclipse.etrice-3abaa25dd1449b0bd08500703df1d7d7141d2cd7.zip
org.eclipse.etrice-3abaa25dd1449b0bd08500703df1d7d7141d2cd7.tar.gz
org.eclipse.etrice-3abaa25dd1449b0bd08500703df1d7d7141d2cd7.tar.bz2
[tutorials] Hello World added
-rw-r--r--plugins/org.eclipse.etrice.core.config/xtend-gen/org/eclipse/etrice/core/generator/ConfigGenerator.java11
-rw-r--r--plugins/org.eclipse.etrice.doc/doc/034-getting-started_C.textile138
-rw-r--r--plugins/org.eclipse.etrice.doc/doc/etrice-index.txt1
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ActorClassGen.java781
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/CExtensions.java240
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/DataClassGen.java247
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/MainGen.java60
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java1185
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/StateMachineGen.java117
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/SubSystemClassGen.java1679
-rw-r--r--plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/SubSystemRunnerGen.java171
-rw-r--r--plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/DocGen.java1053
-rw-r--r--plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/InstanceDiagramGen.java173
-rw-r--r--plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/MainGen.java41
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java592
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java460
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/JavaExtensions.java144
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java60
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java790
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java81
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java910
-rw-r--r--plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java151
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/ConfigExtension.java270
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericActorClassGenerator.java90
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericProtocolClassGenerator.java119
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.java1392
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/PrepareFileSystem.java81
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/ProcedureHelpers.java843
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/RoomExtensions.java959
-rw-r--r--plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/TypeHelpers.java57
30 files changed, 139 insertions, 12757 deletions
diff --git a/plugins/org.eclipse.etrice.core.config/xtend-gen/org/eclipse/etrice/core/generator/ConfigGenerator.java b/plugins/org.eclipse.etrice.core.config/xtend-gen/org/eclipse/etrice/core/generator/ConfigGenerator.java
deleted file mode 100644
index 15a186d..0000000
--- a/plugins/org.eclipse.etrice.core.config/xtend-gen/org/eclipse/etrice/core/generator/ConfigGenerator.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.eclipse.etrice.core.generator;
-
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.xtext.generator.IFileSystemAccess;
-import org.eclipse.xtext.generator.IGenerator;
-
-@SuppressWarnings("all")
-public class ConfigGenerator implements IGenerator {
- public void doGenerate(final Resource resource, final IFileSystemAccess fsa) {
- }
-}
diff --git a/plugins/org.eclipse.etrice.doc/doc/034-getting-started_C.textile b/plugins/org.eclipse.etrice.doc/doc/034-getting-started_C.textile
new file mode 100644
index 0000000..2fe6ef6
--- /dev/null
+++ b/plugins/org.eclipse.etrice.doc/doc/034-getting-started_C.textile
@@ -0,0 +1,138 @@
+h1. Tutorial HelloWorld ( C )
+
+h2. Scope
+
+In this tutorial you will learn how to create a model for C from scratch. There are some more steps to do in C as in Java. The goal is to get familiar with the additional steps. The Java tutorial is a prerequisite for the following explanations.
+You will perform the following steps:
+
+# create a new model from scratch for C
+# create structure and behavior similar to Java
+# create a launch configuration for the C code generator
+# generate the source code
+# run the model
+
+Make sure that you have set up the workspace as described in _Setting up the workspace ( C )_.
+
+
+h2. Create a new model from scratch
+
+Before you can create a new C-model, you have to create a new C project as described in _Setting up the workspace ( C )_.
+Remember:
+- select the _C/C++_ perspective
+- From the main menue select _File->New->C Project_
+- Name the project _HelloWorldC_
+- Project type is _Executable / Empty C Project_
+- Toolchain is _MinGW_
+
+The workspace should look like this:
+
+!images/034-HelloWorldC01.png!
+
+The next step is to add the model folder:
+Right click on the new project. Select _New->Folder_ and name it _model_.
+
+!images/034-HelloWorldC02.png!
+
+Add the model file to the folder. Right click on the new folder. Select _New->file_ and name it _HelloWorldC.room_.
+
+!images/034-HelloWorldC03.png!
+
+Due to the file ending _.room_ the tool will ask you to add the Xtext nature. Answer with _Yes_.
+
+!images/034-HelloWorldC04.png!
+
+The workspace should look like this:
+
+!images/034-HelloWorldC05.png!
+
+
+
+h2. Create the HelloWorld model
+
+Once the model file is created and the Xtext nature is added, you can create the model as you did it for Java.
+Creating the model is not the focus of this tutorial. Therefore copy and paste the following code into your model file. Optionally you can open and layout the diagrams.
+Recognize the C specific parts:
+- Import CTypes instead of JavaTypes
+- The action code contains C instead of Java. Later versions will contain a common action language, but for the moment the action language is target specific.
+
+ToDo: shutdown must be not depend on the subsystem.
+
+bc..
+RoomModel HelloWorldCModel {
+ import room.basic.types.c.* from "../../org.eclipse.etrice.modellib.c/model/CTypes.room"
+ SubSystemClass HelloWorldCSubSysClass {
+ ActorRef HelloETriceTopRef:AHelloWorldCTop
+ }
+ ActorClass AHelloWorldCTop {
+ Structure { }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> state0 { }
+ State state0 {
+ entry {
+ "printf(\"HelloETrice !\\n\");"
+ "HelloETriceSubSysClass_shutdown();//exit(0);"
+ "\t\t\t\t\t\t"
+ }
+ }
+ }
+ }
+ }
+}
+bq.
+
+h2. Create a launch configuration to start the C codegenerator
+
+h2. Generate the code
+
+h2. Setup the include path
+
+h2. Run the model
+
+h2. Summary
+
+
+We will implement the Hello World code on the initial transition of the _HelloWorldTop_ actor. Therefore open the state machine editor by right clicking the _HelloWorldTop_ actor in the outline view and select _Edit Behavior_.
+
+!images/015-HelloWorld03.png!
+
+The state machine editor will be opened. Drag and drop an _Initial Point_ from the tool box to the diagram into the top level state. Drag and drop a _State_ from the tool box to the diagram. Confirm the dialogue with _ok_. Select the _Transition_ in the tool box and draw the transition from the _Initial Point_ to the State. Open the transition dialogue by double clicking the transition arrow and fill in the action code.
+
+bc. System.out.println("Hello World !");
+
+The result should look like this:
+
+!images/015-HelloWorld04.png!
+
+Save the diagram and inspect the model file. Note that the textual representation was created after saving the diagram.
+
+!images/015-HelloWorld05.png!
+
+
+h2. Build and run the model
+
+Now the model is finished and source code can be generated. The project wizard has created a launch configuration that is responsible for generating the source code. From _HelloWorld/_ right click *gen_HelloWorld.launch* and run it as gen_HelloWorld. All model files in the model directory will be generated.
+
+!images/015-HelloWorld06.png!
+
+The code will be generated to the src-gen directory. The main function will be contained in *SubSystem_HelloWorldRunner.java*. Select this file and run it as Java application.
+
+!images/015-HelloWorld07.png!
+
+
+The Hello World application starts and the string will be printed on the console window. To stop the application the user must type _quit_ in the console window.
+
+!images/015-HelloWorld08.png!
+
+h2. Open the Message Sequence Chart
+
+During runtime the application produced a MSC and wrote it to a file. Open HelloWorld/tmp/log/SubSystem_HelloWorld_Async.seq using Trace2UML (it is open source and can be obtained from http://trace2uml.tigris.org/). You should see something like this:
+
+!images/015-HelloWorld09.png!
+
+
+h2. Summary
+
+Now you have generated your first eTrice model from scratch. You can switch between diagram editor and model (.room file) and you can see what will be generated during editing and saving the diagram files.
+You should take a look at the generated source files to understand how the state machine is generated and the life cycle of the application. The next tutorials will deal with more complex hierarchies in structure and behavior.
+
diff --git a/plugins/org.eclipse.etrice.doc/doc/etrice-index.txt b/plugins/org.eclipse.etrice.doc/doc/etrice-index.txt
index f8ab133..785a293 100644
--- a/plugins/org.eclipse.etrice.doc/doc/etrice-index.txt
+++ b/plugins/org.eclipse.etrice.doc/doc/etrice-index.txt
@@ -8,5 +8,6 @@
025-tutorial-sending-data.textile
030-tutorial-ped-lights.textile
032-Setting-up-the-Workspace_C.textile
+034-getting-started_C.textile
040-room-concepts.textile
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ActorClassGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ActorClassGen.java
deleted file mode 100644
index c174aa5..0000000
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ActorClassGen.java
+++ /dev/null
@@ -1,781 +0,0 @@
-package org.eclipse.etrice.generator.c.gen;
-
-import com.google.common.base.Objects;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.util.HashSet;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.ActorCommunicationType;
-import org.eclipse.etrice.core.room.Annotation;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.CommunicationType;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.GeneralProtocolClass;
-import org.eclipse.etrice.core.room.Port;
-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.StandardOperation;
-import org.eclipse.etrice.core.room.StateGraph;
-import org.eclipse.etrice.core.room.util.RoomHelpers;
-import org.eclipse.etrice.generator.c.gen.CExtensions;
-import org.eclipse.etrice.generator.c.gen.StateMachineGen;
-import org.eclipse.etrice.generator.generic.GenericActorClassGenerator;
-import org.eclipse.etrice.generator.generic.ProcedureHelpers;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@Singleton
-@SuppressWarnings("all")
-public class ActorClassGen extends GenericActorClassGenerator {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private CExtensions _cExtensions;
-
- @Inject
- private RoomExtensions _roomExtensions;
-
- @Inject
- private ProcedureHelpers _procedureHelpers;
-
- @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._roomExtensions.getGenerationTargetPath(_actorClass);
- ActorClass _actorClass_1 = xpac.getActorClass();
- String _path = this._roomExtensions.getPath(_actorClass_1);
- String path = (_generationTargetPath + _path);
- ActorClass _actorClass_2 = xpac.getActorClass();
- String _cHeaderFileName = this._cExtensions.getCHeaderFileName(_actorClass_2);
- String _plus = ("generating ActorClass header \'" + _cHeaderFileName);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- this.fileAccess.setOutputPath(path);
- ActorClass _actorClass_3 = xpac.getActorClass();
- String _cHeaderFileName_1 = this._cExtensions.getCHeaderFileName(_actorClass_3);
- ActorClass _actorClass_4 = xpac.getActorClass();
- CharSequence _generateHeaderFile = this.generateHeaderFile(root, xpac, _actorClass_4);
- this.fileAccess.generateFile(_cHeaderFileName_1, _generateHeaderFile);
- boolean _hasBehaviorAnnotation = this.hasBehaviorAnnotation(xpac, "BehaviorManual");
- if (_hasBehaviorAnnotation) {
- ActorClass _actorClass_5 = xpac.getActorClass();
- String _name = _actorClass_5.getName();
- String _plus_4 = ("omitting ActorClass source for \'" + _name);
- String _plus_5 = (_plus_4 + "\' since @BehaviorManual is specified");
- this.logger.logInfo(_plus_5);
- } else {
- ActorClass _actorClass_6 = xpac.getActorClass();
- String _cSourceFileName = this._cExtensions.getCSourceFileName(_actorClass_6);
- String _plus_6 = ("generating ActorClass source \'" + _cSourceFileName);
- String _plus_7 = (_plus_6 + "\' in \'");
- String _plus_8 = (_plus_7 + path);
- String _plus_9 = (_plus_8 + "\'");
- this.logger.logInfo(_plus_9);
- this.fileAccess.setOutputPath(path);
- ActorClass _actorClass_7 = xpac.getActorClass();
- String _cSourceFileName_1 = this._cExtensions.getCSourceFileName(_actorClass_7);
- ActorClass _actorClass_8 = xpac.getActorClass();
- CharSequence _generateSourceFile = this.generateSourceFile(root, xpac, _actorClass_8);
- this.fileAccess.generateFile(_cSourceFileName_1, _generateSourceFile);
- }
- }
- }
- }
-
- private boolean hasBehaviorAnnotation(final ExpandedActorClass xpac, final String annotation) {
- ActorClass _actorClass = xpac.getActorClass();
- EList<Annotation> _behaviorAnnotations = _actorClass.getBehaviorAnnotations();
- boolean _notEquals = (!Objects.equal(_behaviorAnnotations, null));
- if (_notEquals) {
- ActorClass _actorClass_1 = xpac.getActorClass();
- EList<Annotation> _behaviorAnnotations_1 = _actorClass_1.getBehaviorAnnotations();
- final Function1<Annotation,Boolean> _function = new Function1<Annotation,Boolean>() {
- public Boolean apply(final Annotation e) {
- String _name = e.getName();
- boolean _equals = Objects.equal(_name, annotation);
- return Boolean.valueOf(_equals);
- }
- };
- Annotation _findFirst = IterableExtensions.<Annotation>findFirst(_behaviorAnnotations_1, _function);
- boolean _notEquals_1 = (!Objects.equal(_findFirst, null));
- if (_notEquals_1) {
- return true;
- }
- }
- return false;
- }
-
- private CharSequence generateHeaderFile(final Root root, final ExpandedActorClass xpac, final ActorClass ac) {
- CharSequence _xblockexpression = null;
- {
- List<Port> _allEndPorts = this._roomExtensions.getAllEndPorts(ac);
- final Function1<Port,Boolean> _function = new Function1<Port,Boolean>() {
- public Boolean apply(final Port p) {
- GeneralProtocolClass _protocol = p.getProtocol();
- CommunicationType _commType = ((ProtocolClass) _protocol).getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN);
- return Boolean.valueOf(_equals);
- }
- };
- Iterable<Port> eventPorts = IterableExtensions.<Port>filter(_allEndPorts, _function);
- List<Port> _allEndPorts_1 = this._roomExtensions.getAllEndPorts(ac);
- final Function1<Port,Boolean> _function_1 = new Function1<Port,Boolean>() {
- public Boolean apply(final Port p) {
- boolean _and = false;
- GeneralProtocolClass _protocol = p.getProtocol();
- CommunicationType _commType = ((ProtocolClass) _protocol).getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.DATA_DRIVEN);
- if (!_equals) {
- _and = false;
- } else {
- boolean _isConjugated = p.isConjugated();
- _and = (_equals && _isConjugated);
- }
- return Boolean.valueOf(_and);
- }
- };
- Iterable<Port> sendPorts = IterableExtensions.<Port>filter(_allEndPorts_1, _function_1);
- List<Port> _allEndPorts_2 = this._roomExtensions.getAllEndPorts(ac);
- final Function1<Port,Boolean> _function_2 = new Function1<Port,Boolean>() {
- public Boolean apply(final Port p) {
- boolean _and = false;
- GeneralProtocolClass _protocol = p.getProtocol();
- CommunicationType _commType = ((ProtocolClass) _protocol).getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.DATA_DRIVEN);
- if (!_equals) {
- _and = false;
- } else {
- boolean _isConjugated = p.isConjugated();
- boolean _not = (!_isConjugated);
- _and = (_equals && _not);
- }
- return Boolean.valueOf(_and);
- }
- };
- Iterable<Port> recvPorts = IterableExtensions.<Port>filter(_allEndPorts_2, _function_2);
- ActorCommunicationType _commType = ac.getCommType();
- boolean dataDriven = Objects.equal(_commType, ActorCommunicationType.DATA_DRIVEN);
- ActorCommunicationType _commType_1 = ac.getCommType();
- boolean async = Objects.equal(_commType_1, ActorCommunicationType.ASYNCHRONOUS);
- 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("* Header File of ActorClass ");
- String _name = ac.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* ");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- String _name_1 = ac.getName();
- CharSequence _generateIncludeGuardBegin = this._cExtensions.generateIncludeGuardBegin(_name_1);
- _builder.append(_generateIncludeGuardBegin, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("#include \"etDatatypes.h\"");
- _builder.newLine();
- _builder.append("#include \"messaging/etMessage.h\"");
- _builder.newLine();
- _builder.newLine();
- {
- HashSet<DataClass> _referencedDataClasses = root.getReferencedDataClasses(ac);
- for(final DataClass dataClass : _referencedDataClasses) {
- _builder.append("#include \"");
- String _name_2 = dataClass.getName();
- _builder.append(_name_2, "");
- _builder.append(".h\"");
- _builder.newLineIfNotEmpty();
- }
- }
- {
- EList<ProtocolClass> _referencedProtocolClasses = root.getReferencedProtocolClasses(ac);
- for(final ProtocolClass pc : _referencedProtocolClasses) {
- _builder.append("#include \"");
- String _name_3 = pc.getName();
- _builder.append(_name_3, "");
- _builder.append(".h\"");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- CharSequence _userCode = this._procedureHelpers.userCode(ac, 1);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("typedef struct ");
- String _name_4 = ac.getName();
- _builder.append(_name_4, "");
- _builder.append(" ");
- String _name_5 = ac.getName();
- _builder.append(_name_5, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/* const part of ActorClass (ROM) */");
- _builder.newLine();
- {
- boolean _and = false;
- boolean _and_1 = false;
- boolean _and_2 = false;
- boolean _isEmpty = IterableExtensions.isEmpty(eventPorts);
- if (!_isEmpty) {
- _and_2 = false;
- } else {
- boolean _isEmpty_1 = IterableExtensions.isEmpty(recvPorts);
- _and_2 = (_isEmpty && _isEmpty_1);
- }
- if (!_and_2) {
- _and_1 = false;
- } else {
- List<SAPRef> _allSAPs = this._roomExtensions.getAllSAPs(ac);
- boolean _isEmpty_2 = _allSAPs.isEmpty();
- _and_1 = (_and_2 && _isEmpty_2);
- }
- if (!_and_1) {
- _and = false;
- } else {
- List<ServiceImplementation> _allServiceImplementations = this._roomExtensions.getAllServiceImplementations(ac);
- boolean _isEmpty_3 = _allServiceImplementations.isEmpty();
- _and = (_and_1 && _isEmpty_3);
- }
- if (_and) {
- _builder.append("/* this actor class has no ports and thus no constant data */");
- _builder.newLine();
- } else {
- _builder.append("typedef struct ");
- String _name_6 = ac.getName();
- _builder.append(_name_6, "");
- _builder.append("_const {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("/* simple ports */");
- _builder.newLine();
- {
- for(final Port ep : eventPorts) {
- {
- int _multiplicity = ep.getMultiplicity();
- boolean _equals = (_multiplicity == 1);
- if (_equals) {
- _builder.append("\t");
- _builder.append("const ");
- String _portClassName = this._roomExtensions.getPortClassName(ep);
- _builder.append(_portClassName, " ");
- _builder.append(" ");
- String _name_7 = ep.getName();
- _builder.append(_name_7, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* data receive ports */");
- _builder.newLine();
- {
- for(final Port ep_1 : recvPorts) {
- {
- int _multiplicity_1 = ep_1.getMultiplicity();
- boolean _equals_1 = (_multiplicity_1 == 1);
- if (_equals_1) {
- _builder.append("\t");
- _builder.append("const ");
- String _portClassName_1 = this._roomExtensions.getPortClassName(ep_1);
- _builder.append(_portClassName_1, " ");
- _builder.append(" ");
- String _name_8 = ep_1.getName();
- _builder.append(_name_8, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* saps */");
- _builder.newLine();
- {
- List<SAPRef> _allSAPs_1 = this._roomExtensions.getAllSAPs(ac);
- for(final SAPRef sap : _allSAPs_1) {
- _builder.append("\t");
- _builder.append("const ");
- String _portClassName_2 = this._roomExtensions.getPortClassName(sap);
- _builder.append(_portClassName_2, " ");
- _builder.append(" ");
- String _name_9 = sap.getName();
- _builder.append(_name_9, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* replicated ports */");
- _builder.newLine();
- {
- List<Port> _allEndPorts_3 = this._roomExtensions.getAllEndPorts(ac);
- for(final Port ep_2 : _allEndPorts_3) {
- {
- int _multiplicity_2 = ep_2.getMultiplicity();
- boolean _notEquals = (_multiplicity_2 != 1);
- if (_notEquals) {
- _builder.append("\t");
- _builder.append("const etReplPort ");
- String _name_10 = ep_2.getName();
- _builder.append(_name_10, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* services */");
- _builder.newLine();
- {
- List<ServiceImplementation> _allServiceImplementations_1 = this._roomExtensions.getAllServiceImplementations(ac);
- for(final ServiceImplementation svc : _allServiceImplementations_1) {
- _builder.append("\t");
- _builder.append("const etReplPort ");
- SPPRef _spp = svc.getSpp();
- String _name_11 = _spp.getName();
- _builder.append(_name_11, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("} ");
- String _name_12 = ac.getName();
- _builder.append(_name_12, "");
- _builder.append("_const;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- {
- StateGraph _stateMachine = xpac.getStateMachine();
- boolean _isEmpty_4 = RoomHelpers.isEmpty(_stateMachine);
- boolean _not = (!_isEmpty_4);
- if (_not) {
- _builder.newLine();
- CharSequence _genHeaderConstants = this._stateMachineGen.genHeaderConstants(xpac);
- _builder.append(_genHeaderConstants, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("/* variable part of ActorClass (RAM) */");
- _builder.newLine();
- _builder.append("struct ");
- String _name_13 = ac.getName();
- _builder.append(_name_13, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- {
- boolean _and_3 = false;
- boolean _and_4 = false;
- boolean _and_5 = false;
- boolean _isEmpty_5 = IterableExtensions.isEmpty(eventPorts);
- if (!_isEmpty_5) {
- _and_5 = false;
- } else {
- boolean _isEmpty_6 = IterableExtensions.isEmpty(recvPorts);
- _and_5 = (_isEmpty_5 && _isEmpty_6);
- }
- if (!_and_5) {
- _and_4 = false;
- } else {
- List<SAPRef> _allSAPs_2 = this._roomExtensions.getAllSAPs(ac);
- boolean _isEmpty_7 = _allSAPs_2.isEmpty();
- _and_4 = (_and_5 && _isEmpty_7);
- }
- if (!_and_4) {
- _and_3 = false;
- } else {
- List<ServiceImplementation> _allServiceImplementations_2 = this._roomExtensions.getAllServiceImplementations(ac);
- boolean _isEmpty_8 = _allServiceImplementations_2.isEmpty();
- _and_3 = (_and_4 && _isEmpty_8);
- }
- boolean _not_1 = (!_and_3);
- if (_not_1) {
- _builder.append("\t");
- _builder.append("const ");
- String _name_14 = ac.getName();
- _builder.append(_name_14, " ");
- _builder.append("_const* const constData;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- }
- }
- _builder.append("\t");
- _builder.append("/* data send ports */");
- _builder.newLine();
- {
- for(final Port ep_3 : sendPorts) {
- {
- int _multiplicity_3 = ep_3.getMultiplicity();
- boolean _equals_2 = (_multiplicity_3 == 1);
- if (_equals_2) {
- _builder.append("\t");
- String _portClassName_3 = this._roomExtensions.getPortClassName(ep_3);
- _builder.append(_portClassName_3, " ");
- _builder.append(" ");
- String _name_15 = ep_3.getName();
- _builder.append(_name_15, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.newLine();
- _builder.append("\t");
- List<Attribute> _allAttributes = this._roomExtensions.getAllAttributes(ac);
- CharSequence _attributes = this._procedureHelpers.attributes(_allAttributes);
- _builder.append(_attributes, " ");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- {
- List<Attribute> _allAttributes_1 = this._roomExtensions.getAllAttributes(ac);
- for(final Attribute a : _allAttributes_1) {
- {
- String _defaultValueLiteral = a.getDefaultValueLiteral();
- boolean _notEquals_1 = (!Objects.equal(_defaultValueLiteral, null));
- if (_notEquals_1) {
- String _name_16 = ac.getName();
- String _plus = (_name_16 + " ");
- String _name_17 = a.getName();
- String _plus_1 = (_plus + _name_17);
- String _plus_2 = (_plus_1 + ": Attribute initialization not supported in C");
- this.logger.logInfo(_plus_2);
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("\t");
- _builder.newLine();
- {
- StateGraph _stateMachine_1 = xpac.getStateMachine();
- boolean _isEmpty_9 = RoomHelpers.isEmpty(_stateMachine_1);
- boolean _not_2 = (!_isEmpty_9);
- if (_not_2) {
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- CharSequence _genDataMembers = this._stateMachineGen.genDataMembers(xpac);
- _builder.append(_genDataMembers, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("};");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_18 = ac.getName();
- _builder.append(_name_18, "");
- _builder.append("_init(");
- String _name_19 = ac.getName();
- _builder.append(_name_19, "");
- _builder.append("* self);");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("void ");
- String _name_20 = ac.getName();
- _builder.append(_name_20, "");
- _builder.append("_receiveMessage(void* self, void* ifitem, const etMessage* msg);");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- {
- boolean _or = false;
- if (dataDriven) {
- _or = true;
- } else {
- _or = (dataDriven || async);
- }
- if (_or) {
- _builder.append("void ");
- String _name_21 = ac.getName();
- _builder.append(_name_21, "");
- _builder.append("_execute(");
- String _name_22 = ac.getName();
- _builder.append(_name_22, "");
- _builder.append("* self);");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- EList<StandardOperation> _operations = ac.getOperations();
- String _name_23 = ac.getName();
- CharSequence _operationsDeclaration = this._procedureHelpers.operationsDeclaration(_operations, _name_23);
- _builder.append(_operationsDeclaration, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- CharSequence _userCode_1 = this._procedureHelpers.userCode(ac, 2);
- _builder.append(_userCode_1, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- String _name_24 = ac.getName();
- CharSequence _generateIncludeGuardEnd = this._cExtensions.generateIncludeGuardEnd(_name_24);
- _builder.append(_generateIncludeGuardEnd, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private CharSequence generateSourceFile(final Root root, final ExpandedActorClass xpac, final ActorClass ac) {
- CharSequence _xblockexpression = null;
- {
- ActorCommunicationType _commType = ac.getCommType();
- boolean async = Objects.equal(_commType, ActorCommunicationType.ASYNCHRONOUS);
- ActorCommunicationType _commType_1 = ac.getCommType();
- boolean eventDriven = Objects.equal(_commType_1, ActorCommunicationType.EVENT_DRIVEN);
- ActorCommunicationType _commType_2 = ac.getCommType();
- boolean dataDriven = Objects.equal(_commType_2, ActorCommunicationType.DATA_DRIVEN);
- boolean _or = false;
- if (async) {
- _or = true;
- } else {
- _or = (async || eventDriven);
- }
- boolean handleEvents = _or;
- 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("* Source File of ActorClass ");
- String _name = ac.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* ");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- _builder.append("#include \"");
- String _cHeaderFileName = this._cExtensions.getCHeaderFileName(ac);
- _builder.append(_cHeaderFileName, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("#include \"modelbase/etActor.h\"");
- _builder.newLine();
- _builder.append("#include \"debugging/etLogger.h\"");
- _builder.newLine();
- _builder.append("#include \"debugging/etMSCLogger.h\"");
- _builder.newLine();
- _builder.append("#include \"etUnit/etUnit.h\"");
- _builder.newLine();
- _builder.append("#include \"platform/etMemory.h\"");
- _builder.newLine();
- _builder.newLine();
- {
- EList<ProtocolClass> _referencedProtocolClasses = root.getReferencedProtocolClasses(ac);
- for(final ProtocolClass pc : _referencedProtocolClasses) {
- _builder.append("#include \"");
- String _cHeaderFileName_1 = this._cExtensions.getCHeaderFileName(pc);
- _builder.append(_cHeaderFileName_1, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- CharSequence _userCode = this._procedureHelpers.userCode(ac, 3);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/* interface item IDs */");
- _builder.newLine();
- String _genInterfaceItemConstants = this.genInterfaceItemConstants(xpac, ac);
- _builder.append(_genInterfaceItemConstants, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- {
- StateGraph _stateMachine = xpac.getStateMachine();
- boolean _isEmpty = RoomHelpers.isEmpty(_stateMachine);
- boolean _not = (!_isEmpty);
- if (_not) {
- CharSequence _genStateMachine = this._stateMachineGen.genStateMachine(xpac);
- _builder.append(_genStateMachine, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("void ");
- String _name_1 = ac.getName();
- _builder.append(_name_1, "");
- _builder.append("_init(");
- String _name_2 = ac.getName();
- _builder.append(_name_2, "");
- _builder.append("* self){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"");
- String _name_3 = ac.getName();
- _builder.append(_name_3, " ");
- _builder.append("\", \"init\")");
- _builder.newLineIfNotEmpty();
- {
- StateGraph _stateMachine_1 = xpac.getStateMachine();
- boolean _isEmpty_1 = RoomHelpers.isEmpty(_stateMachine_1);
- boolean _not_1 = (!_isEmpty_1);
- if (_not_1) {
- _builder.append("\t");
- CharSequence _genInitialization = this._stateMachineGen.genInitialization(xpac);
- _builder.append(_genInitialization, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_4 = ac.getName();
- _builder.append(_name_4, "");
- _builder.append("_receiveMessage(void* self, void* ifitem, const etMessage* msg){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"");
- String _name_5 = ac.getName();
- _builder.append(_name_5, " ");
- _builder.append("\", \"_receiveMessage\")");
- _builder.newLineIfNotEmpty();
- {
- StateGraph _stateMachine_2 = xpac.getStateMachine();
- boolean _isEmpty_2 = RoomHelpers.isEmpty(_stateMachine_2);
- boolean _not_2 = (!_isEmpty_2);
- if (_not_2) {
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("receiveEvent(self");
- {
- if (handleEvents) {
- _builder.append(", (etPort*)ifitem, msg->evtID, (void*)(((char*)msg)+MEM_CEIL(sizeof(etMessage)))");
- }
- }
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- {
- boolean _or_1 = false;
- if (dataDriven) {
- _or_1 = true;
- } else {
- _or_1 = (dataDriven || async);
- }
- if (_or_1) {
- _builder.append("void ");
- String _name_6 = ac.getName();
- _builder.append(_name_6, "");
- _builder.append("_execute(");
- String _name_7 = ac.getName();
- _builder.append(_name_7, "");
- _builder.append("* self) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"");
- String _name_8 = ac.getName();
- _builder.append(_name_8, " ");
- _builder.append("\", \"_execute\")");
- _builder.newLineIfNotEmpty();
- {
- StateGraph _stateMachine_3 = xpac.getStateMachine();
- boolean _isEmpty_3 = RoomHelpers.isEmpty(_stateMachine_3);
- boolean _not_3 = (!_isEmpty_3);
- if (_not_3) {
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("receiveEvent(self");
- {
- if (handleEvents) {
- _builder.append(", NULL, 0, NULL");
- }
- }
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.newLine();
- CharSequence _operationsImplementation = this._procedureHelpers.operationsImplementation(ac);
- _builder.append(_operationsImplementation, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/CExtensions.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/CExtensions.java
deleted file mode 100644
index ca33e28..0000000
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/CExtensions.java
+++ /dev/null
@@ -1,240 +0,0 @@
-package org.eclipse.etrice.generator.c.gen;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.util.List;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.RoomClass;
-import org.eclipse.etrice.core.room.VarDecl;
-import org.eclipse.etrice.generator.generic.AbstractTransitionChainGenerator;
-import org.eclipse.etrice.generator.generic.ILanguageExtension;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.util.Pair;
-
-@Singleton
-@SuppressWarnings("all")
-public class CExtensions implements ILanguageExtension {
- @Inject
- private AbstractTransitionChainGenerator chainGenerator;
-
- public String getTypedDataDefinition(final Message m) {
- VarDecl _data = m.getData();
- return this.chainGenerator.generateTypedData(_data);
- }
-
- public String accessLevelPrivate() {
- return "static ";
- }
-
- public String accessLevelProtected() {
- return "static ";
- }
-
- public String accessLevelPublic() {
- return "";
- }
-
- public String memberAccess() {
- return "self->";
- }
-
- public String selfPointer(final String classname, final boolean hasArgs) {
- String _xifexpression = null;
- if (hasArgs) {
- _xifexpression = "* self, ";
- } else {
- _xifexpression = "* self";
- }
- String _plus = (classname + _xifexpression);
- return _plus;
- }
-
- public String selfPointer(final boolean hasArgs) {
- String _xifexpression = null;
- if (hasArgs) {
- _xifexpression = "self, ";
- } else {
- _xifexpression = "self";
- }
- return _xifexpression;
- }
-
- public String operationScope(final String classname, final boolean isDeclaration) {
- String _plus = (classname + "_");
- return _plus;
- }
-
- public String memberInDeclaration(final String namespace, final String member) {
- String _plus = (namespace + "_");
- return (_plus + member);
- }
-
- public String memberInUse(final String namespace, final String member) {
- String _plus = (namespace + "_");
- return (_plus + member);
- }
-
- /**
- * TODO: move specific code elsewhere
- */
- public String getCHeaderFileName(final RoomClass rc) {
- String _name = rc.getName();
- return (_name + ".h");
- }
-
- public String getCSourceFileName(final RoomClass rc) {
- String _name = rc.getName();
- return (_name + ".c");
- }
-
- public String getInstSourceFileName(final RoomClass rc) {
- String _name = rc.getName();
- return (_name + "_Inst.h");
- }
-
- public String getDispSourceFileName(final RoomClass rc) {
- String _name = rc.getName();
- return (_name + "_Disp.h");
- }
-
- public CharSequence getIncludeGuardString(final String filename) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("_");
- String _upperCase = filename.toUpperCase();
- _builder.append(_upperCase, "");
- _builder.append("_H_");
- return _builder;
- }
-
- public CharSequence generateIncludeGuardBegin(final String filename) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("#ifndef ");
- CharSequence _includeGuardString = this.getIncludeGuardString(filename);
- _builder.append(_includeGuardString, "");
- _builder.newLineIfNotEmpty();
- _builder.append("#define ");
- CharSequence _includeGuardString_1 = this.getIncludeGuardString(filename);
- _builder.append(_includeGuardString_1, "");
- _builder.newLineIfNotEmpty();
- return _builder;
- }
-
- public CharSequence generateIncludeGuardEnd(final String filename) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("#endif /* ");
- CharSequence _includeGuardString = this.getIncludeGuardString(filename);
- _builder.append(_includeGuardString, "");
- _builder.append(" */");
- _builder.newLineIfNotEmpty();
- return _builder;
- }
-
- public boolean usesInheritance() {
- return false;
- }
-
- public String genEnumeration(final String name, final List<Pair<String,String>> entries) {
- String _xblockexpression = null;
- {
- boolean _isEmpty = entries.isEmpty();
- if (_isEmpty) {
- return "/* empty enum not generated */";
- }
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("enum ");
- _builder.append(name, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- {
- boolean _hasElements = false;
- for(final Pair<String,String> entry : entries) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t");
- String _first = entry.getFirst();
- _builder.append(_first, " ");
- _builder.append(" = ");
- String _second = entry.getSecond();
- _builder.append(_second, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("};");
- _builder.newLine();
- String _string = _builder.toString();
- _xblockexpression = (_string);
- }
- return _xblockexpression;
- }
-
- public String booleanConstant(final boolean b) {
- String _xifexpression = null;
- if (b) {
- _xifexpression = "TRUE";
- } else {
- _xifexpression = "FALSE";
- }
- return _xifexpression;
- }
-
- public String pointerLiteral() {
- return "*";
- }
-
- public String nullPointer() {
- return "NULL";
- }
-
- public String voidPointer() {
- return "void*";
- }
-
- public String arrayDeclaration(final String type, final int size, final String name, final boolean isRef) {
- String _xifexpression = null;
- if (isRef) {
- String _plus = (type + "* ");
- String _plus_1 = (_plus + name);
- String _plus_2 = (_plus_1 + "[");
- String _plus_3 = (_plus_2 + Integer.valueOf(size));
- String _plus_4 = (_plus_3 + "]");
- _xifexpression = _plus_4;
- } else {
- String _plus_5 = (type + " ");
- String _plus_6 = (_plus_5 + name);
- String _plus_7 = (_plus_6 + "[");
- String _plus_8 = (_plus_7 + Integer.valueOf(size));
- String _plus_9 = (_plus_8 + "]");
- _xifexpression = _plus_9;
- }
- return _xifexpression;
- }
-
- public String constructorName(final String cls) {
- return "ctor";
- }
-
- public String destructorName(final String cls) {
- return "dtor";
- }
-
- public String constructorReturnType() {
- return "void";
- }
-
- public String destructorReturnType() {
- return "void";
- }
-
- public String toCharArrayExpr(final String s) {
- String _plus = ("\"" + s);
- String _plus_1 = (_plus + "\"");
- return _plus_1;
- }
-
- public String superCall(final String baseClassName, final String method, final String args) {
- return "";
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/DataClassGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/DataClassGen.java
deleted file mode 100644
index 61236fc..0000000
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/DataClassGen.java
+++ /dev/null
@@ -1,247 +0,0 @@
-package org.eclipse.etrice.generator.c.gen;
-
-import com.google.common.base.Objects;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.util.HashSet;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.StandardOperation;
-import org.eclipse.etrice.generator.c.gen.CExtensions;
-import org.eclipse.etrice.generator.generic.ProcedureHelpers;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-
-@Singleton
-@SuppressWarnings("all")
-public class DataClassGen {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private CExtensions _cExtensions;
-
- @Inject
- private RoomExtensions _roomExtensions;
-
- @Inject
- private ProcedureHelpers _procedureHelpers;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<DataClass> _usedDataClasses = root.getUsedDataClasses();
- for (final DataClass dc : _usedDataClasses) {
- {
- String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(dc);
- String _path = this._roomExtensions.getPath(dc);
- String path = (_generationTargetPath + _path);
- String _cHeaderFileName = this._cExtensions.getCHeaderFileName(dc);
- String _plus = ("generating DataClass header \'" + _cHeaderFileName);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- this.fileAccess.setOutputPath(path);
- String _cHeaderFileName_1 = this._cExtensions.getCHeaderFileName(dc);
- CharSequence _generateHeaderFile = this.generateHeaderFile(root, dc);
- this.fileAccess.generateFile(_cHeaderFileName_1, _generateHeaderFile);
- String _cSourceFileName = this._cExtensions.getCSourceFileName(dc);
- String _plus_4 = ("generating DataClass source \'" + _cSourceFileName);
- String _plus_5 = (_plus_4 + "\' in \'");
- String _plus_6 = (_plus_5 + path);
- String _plus_7 = (_plus_6 + "\'");
- this.logger.logInfo(_plus_7);
- this.fileAccess.setOutputPath(path);
- String _cSourceFileName_1 = this._cExtensions.getCSourceFileName(dc);
- CharSequence _generateSourceFile = this.generateSourceFile(root, dc);
- this.fileAccess.generateFile(_cSourceFileName_1, _generateSourceFile);
- }
- }
- }
-
- public CharSequence generateHeaderFile(final Root root, final DataClass dc) {
- 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("* Header File of DataClass ");
- String _name = dc.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* ");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- String _name_1 = dc.getName();
- CharSequence _generateIncludeGuardBegin = this._cExtensions.generateIncludeGuardBegin(_name_1);
- _builder.append(_generateIncludeGuardBegin, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("#include \"etDatatypes.h\"");
- _builder.newLine();
- _builder.newLine();
- {
- HashSet<DataClass> _referencedDataClasses = root.getReferencedDataClasses(dc);
- for(final DataClass dataClass : _referencedDataClasses) {
- _builder.append("#include \"");
- String _name_2 = dataClass.getName();
- _builder.append(_name_2, "");
- _builder.append(".h\"");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- CharSequence _userCode = this._procedureHelpers.userCode(dc, 1);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("typedef struct {");
- _builder.newLine();
- _builder.append("\t");
- List<Attribute> _allAttributes = this._roomExtensions.getAllAttributes(dc);
- CharSequence _attributes = this._procedureHelpers.attributes(_allAttributes);
- _builder.append(_attributes, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("} ");
- String _name_3 = dc.getName();
- _builder.append(_name_3, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- {
- List<Attribute> _allAttributes_1 = this._roomExtensions.getAllAttributes(dc);
- for(final Attribute a : _allAttributes_1) {
- {
- String _defaultValueLiteral = a.getDefaultValueLiteral();
- boolean _notEquals = (!Objects.equal(_defaultValueLiteral, null));
- if (_notEquals) {
- String _name_4 = dc.getName();
- String _plus = (_name_4 + " ");
- String _name_5 = a.getName();
- String _plus_1 = (_plus + _name_5);
- String _plus_2 = (_plus_1 + ": Attribute initialization not supported in C");
- this.logger.logInfo(_plus_2);
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.newLine();
- _builder.newLine();
- EList<StandardOperation> _operations = dc.getOperations();
- String _name_6 = dc.getName();
- CharSequence _operationsDeclaration = this._procedureHelpers.operationsDeclaration(_operations, _name_6);
- _builder.append(_operationsDeclaration, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/* deep copy */");
- _builder.newLine();
- _builder.append("void ");
- String _name_7 = dc.getName();
- _builder.append(_name_7, "");
- _builder.append("_deepCopy(");
- String _name_8 = dc.getName();
- _builder.append(_name_8, "");
- _builder.append("* source, ");
- String _name_9 = dc.getName();
- _builder.append(_name_9, "");
- _builder.append("* target);");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- CharSequence _userCode_1 = this._procedureHelpers.userCode(dc, 2);
- _builder.append(_userCode_1, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- String _name_10 = dc.getName();
- CharSequence _generateIncludeGuardEnd = this._cExtensions.generateIncludeGuardEnd(_name_10);
- _builder.append(_generateIncludeGuardEnd, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- return _builder;
- }
-
- public CharSequence generateSourceFile(final Root root, final DataClass dc) {
- 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("* Source File of DataClass ");
- String _name = dc.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* ");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- _builder.append("#include \"");
- String _cHeaderFileName = this._cExtensions.getCHeaderFileName(dc);
- _builder.append(_cHeaderFileName, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("#include <string.h>");
- _builder.newLine();
- _builder.newLine();
- CharSequence _userCode = this._procedureHelpers.userCode(dc, 3);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.newLine();
- EList<StandardOperation> _operations = dc.getOperations();
- String _name_1 = dc.getName();
- CharSequence _operationsImplementation = this._procedureHelpers.operationsImplementation(_operations, _name_1);
- _builder.append(_operationsImplementation, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("// deep copy");
- _builder.newLine();
- _builder.append("void ");
- String _name_2 = dc.getName();
- _builder.append(_name_2, "");
- _builder.append("_deepCopy(");
- String _name_3 = dc.getName();
- _builder.append(_name_3, "");
- _builder.append("* source, ");
- String _name_4 = dc.getName();
- _builder.append(_name_4, "");
- _builder.append("* target) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("memcpy(target, source, sizeof(");
- String _name_5 = dc.getName();
- _builder.append(_name_5, " ");
- _builder.append("));");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- return _builder;
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/MainGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/MainGen.java
deleted file mode 100644
index 26daa4b..0000000
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/MainGen.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.eclipse.etrice.generator.c.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.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.generator.c.gen.ActorClassGen;
-import org.eclipse.etrice.generator.c.gen.DataClassGen;
-import org.eclipse.etrice.generator.c.gen.ProtocolClassGen;
-import org.eclipse.etrice.generator.c.gen.SubSystemClassGen;
-import org.eclipse.etrice.generator.c.gen.SubSystemRunnerGen;
-import org.eclipse.etrice.generator.generic.PrepareFileSystem;
-import org.eclipse.xtext.generator.IFileSystemAccess;
-import org.eclipse.xtext.generator.IGenerator;
-
-@Singleton
-@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 (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 _not = (!_isLibrary);
- if (_not) {
- this.subsystemRunnerGen.doGenerate(e);
- }
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java
deleted file mode 100644
index 91dcd5e..0000000
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/ProtocolClassGen.java
+++ /dev/null
@@ -1,1185 +0,0 @@
-package org.eclipse.etrice.generator.c.gen;
-
-import com.google.common.base.Objects;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.util.HashSet;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.CommunicationType;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.DataType;
-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.PortClass;
-import org.eclipse.etrice.core.room.PortOperation;
-import org.eclipse.etrice.core.room.PrimitiveType;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.core.room.VarDecl;
-import org.eclipse.etrice.generator.c.gen.CExtensions;
-import org.eclipse.etrice.generator.generic.GenericProtocolClassGenerator;
-import org.eclipse.etrice.generator.generic.ProcedureHelpers;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.etrice.generator.generic.TypeHelpers;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@Singleton
-@SuppressWarnings("all")
-public class ProtocolClassGen extends GenericProtocolClassGenerator {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private CExtensions _cExtensions;
-
- @Inject
- private RoomExtensions _roomExtensions;
-
- @Inject
- private ProcedureHelpers _procedureHelpers;
-
- @Inject
- private TypeHelpers _typeHelpers;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<ProtocolClass> _usedProtocolClasses = root.getUsedProtocolClasses();
- for (final ProtocolClass pc : _usedProtocolClasses) {
- {
- String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(pc);
- String _path = this._roomExtensions.getPath(pc);
- String path = (_generationTargetPath + _path);
- String _cHeaderFileName = this._cExtensions.getCHeaderFileName(pc);
- String _plus = ("generating ProtocolClass header \'" + _cHeaderFileName);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- this.fileAccess.setOutputPath(path);
- String _cHeaderFileName_1 = this._cExtensions.getCHeaderFileName(pc);
- CharSequence _generateHeaderFile = this.generateHeaderFile(root, pc);
- this.fileAccess.generateFile(_cHeaderFileName_1, _generateHeaderFile);
- String _cSourceFileName = this._cExtensions.getCSourceFileName(pc);
- String _plus_4 = ("generating ProtocolClass source \'" + _cSourceFileName);
- String _plus_5 = (_plus_4 + "\' in \'");
- String _plus_6 = (_plus_5 + path);
- String _plus_7 = (_plus_6 + "\'");
- this.logger.logInfo(_plus_7);
- this.fileAccess.setOutputPath(path);
- String _cSourceFileName_1 = this._cExtensions.getCSourceFileName(pc);
- CharSequence _generateSourceFile = this.generateSourceFile(root, pc);
- this.fileAccess.generateFile(_cSourceFileName_1, _generateSourceFile);
- }
- }
- }
-
- private CharSequence generateHeaderFile(final Root root, final ProtocolClass pc) {
- 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("* Header File of ProtocolClass ");
- String _name = pc.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* ");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- String _name_1 = pc.getName();
- CharSequence _generateIncludeGuardBegin = this._cExtensions.generateIncludeGuardBegin(_name_1);
- _builder.append(_generateIncludeGuardBegin, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("#include \"etDatatypes.h\"");
- _builder.newLine();
- _builder.append("#include \"modelbase/etPort.h\"");
- _builder.newLine();
- _builder.newLine();
- CharSequence _userCode = this._procedureHelpers.userCode(pc, 1);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- {
- HashSet<DataClass> _referencedDataClasses = root.getReferencedDataClasses(pc);
- for(final DataClass dataClass : _referencedDataClasses) {
- _builder.append("#include \"");
- String _name_2 = dataClass.getName();
- _builder.append(_name_2, "");
- _builder.append(".h\"");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- {
- CommunicationType _commType = pc.getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN);
- if (_equals) {
- _builder.newLine();
- _builder.append("/* message IDs */");
- _builder.newLine();
- String _genMessageIDs = this.genMessageIDs(pc);
- _builder.append(_genMessageIDs, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/*--------------------- port structs and methods */");
- _builder.newLine();
- CharSequence _portClassHeader = this.portClassHeader(pc, Boolean.valueOf(false));
- _builder.append(_portClassHeader, "");
- _builder.newLineIfNotEmpty();
- CharSequence _portClassHeader_1 = this.portClassHeader(pc, Boolean.valueOf(true));
- _builder.append(_portClassHeader_1, "");
- _builder.newLineIfNotEmpty();
- } else {
- CommunicationType _commType_1 = pc.getCommType();
- boolean _equals_1 = Objects.equal(_commType_1, CommunicationType.DATA_DRIVEN);
- if (_equals_1) {
- _builder.append("/*--------------------- port structs and methods */");
- _builder.newLine();
- CharSequence _genDataDrivenPortHeaders = this.genDataDrivenPortHeaders(pc);
- _builder.append(_genDataDrivenPortHeaders, "");
- _builder.newLineIfNotEmpty();
- } else {
- CommunicationType _commType_2 = pc.getCommType();
- boolean _equals_2 = Objects.equal(_commType_2, CommunicationType.SYNCHRONOUS);
- if (_equals_2) {
- _builder.append("#error \"synchronoue protocols not implemented yet\"");
- _builder.newLine();
- }
- }
- }
- }
- _builder.newLine();
- _builder.append("/*--------------------- debug helpers */");
- _builder.newLine();
- _builder.newLine();
- _builder.append("/* get message string for message id */");
- _builder.newLine();
- _builder.append("const char* ");
- String _name_3 = pc.getName();
- _builder.append(_name_3, "");
- _builder.append("_getMessageString(int msg_id);");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- CharSequence _userCode_1 = this._procedureHelpers.userCode(pc, 2);
- _builder.append(_userCode_1, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- String _name_4 = pc.getName();
- CharSequence _generateIncludeGuardEnd = this._cExtensions.generateIncludeGuardEnd(_name_4);
- _builder.append(_generateIncludeGuardEnd, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- return _builder;
- }
-
- private CharSequence generateSourceFile(final Root root, final ProtocolClass pc) {
- 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("* Source File of ProtocolClass ");
- String _name = pc.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* ");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- _builder.append("#include \"");
- String _cHeaderFileName = this._cExtensions.getCHeaderFileName(pc);
- _builder.append(_cHeaderFileName, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.append("#include \"debugging/etMSCLogger.h\"");
- _builder.newLine();
- _builder.newLine();
- CharSequence _userCode = this._procedureHelpers.userCode(pc, 3);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/*--------------------- port methods */");
- _builder.newLine();
- {
- CommunicationType _commType = pc.getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN);
- if (_equals) {
- CharSequence _portClassSource = this.portClassSource(pc, Boolean.valueOf(false));
- _builder.append(_portClassSource, "");
- _builder.newLineIfNotEmpty();
- CharSequence _portClassSource_1 = this.portClassSource(pc, Boolean.valueOf(true));
- _builder.append(_portClassSource_1, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/*--------------------- debug helpers */");
- _builder.newLine();
- CharSequence _generateDebugHelpersImplementation = this.generateDebugHelpersImplementation(root, pc);
- _builder.append(_generateDebugHelpersImplementation, "");
- _builder.newLineIfNotEmpty();
- } else {
- CommunicationType _commType_1 = pc.getCommType();
- boolean _equals_1 = Objects.equal(_commType_1, CommunicationType.DATA_DRIVEN);
- if (_equals_1) {
- CharSequence _genDataDrivenPortSources = this.genDataDrivenPortSources(pc);
- _builder.append(_genDataDrivenPortSources, "");
- _builder.newLineIfNotEmpty();
- } else {
- CommunicationType _commType_2 = pc.getCommType();
- boolean _equals_2 = Objects.equal(_commType_2, CommunicationType.SYNCHRONOUS);
- if (_equals_2) {
- _builder.append("#error \"synchronous protocols not implemented yet\"");
- _builder.newLine();
- }
- }
- }
- }
- return _builder;
- }
-
- private CharSequence portClassHeader(final ProtocolClass pc, final Boolean conj) {
- CharSequence _xblockexpression = null;
- {
- String portClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue());
- String replPortClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue(), true);
- List<Message> _xifexpression = null;
- if ((conj).booleanValue()) {
- List<Message> _allIncomingMessages = this._roomExtensions.getAllIncomingMessages(pc);
- _xifexpression = _allIncomingMessages;
- } else {
- List<Message> _allOutgoingMessages = this._roomExtensions.getAllOutgoingMessages(pc);
- _xifexpression = _allOutgoingMessages;
- }
- List<Message> messages = _xifexpression;
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("typedef etPort ");
- _builder.append(portClassName, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("typedef etReplPort ");
- _builder.append(replPortClassName, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- {
- PortClass _portClass = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- boolean _notEquals = (!Objects.equal(_portClass, null));
- if (_notEquals) {
- {
- PortClass _portClass_1 = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- EList<Attribute> _attributes = _portClass_1.getAttributes();
- boolean _isEmpty = _attributes.isEmpty();
- boolean _not = (!_isEmpty);
- if (_not) {
- _builder.append("/* variable part of PortClass (RAM) */");
- _builder.newLine();
- _builder.append("typedef struct ");
- _builder.append(portClassName, "");
- _builder.append("_var ");
- _builder.append(portClassName, "");
- _builder.append("_var; ");
- _builder.newLineIfNotEmpty();
- _builder.append("struct ");
- _builder.append(portClassName, "");
- _builder.append("_var {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- PortClass _portClass_2 = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- EList<Attribute> _attributes_1 = _portClass_2.getAttributes();
- CharSequence _attributes_2 = this._procedureHelpers.attributes(_attributes_1);
- _builder.append(_attributes_2, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("};");
- _builder.newLine();
- {
- PortClass _portClass_3 = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- EList<Attribute> _attributes_3 = _portClass_3.getAttributes();
- for(final Attribute a : _attributes_3) {
- {
- String _defaultValueLiteral = a.getDefaultValueLiteral();
- boolean _notEquals_1 = (!Objects.equal(_defaultValueLiteral, null));
- if (_notEquals_1) {
- String _plus = (portClassName + " ");
- String _name = a.getName();
- String _plus_1 = (_plus + _name);
- String _plus_2 = (_plus_1 + ": Attribute initialization not supported in C");
- this.logger.logInfo(_plus_2);
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- }
- }
- }
- }
- _builder.newLine();
- {
- for(final Message message : messages) {
- VarDecl _data = message.getData();
- boolean hasData = (!Objects.equal(_data, null));
- _builder.newLineIfNotEmpty();
- String _xifexpression_1 = null;
- if (hasData) {
- VarDecl _data_1 = message.getData();
- RefableType _refType = _data_1.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- _xifexpression_1 = _typeName;
- } else {
- _xifexpression_1 = "";
- }
- String typeName = _xifexpression_1;
- _builder.newLineIfNotEmpty();
- String _xifexpression_2 = null;
- boolean _and = false;
- if (!hasData) {
- _and = false;
- } else {
- boolean _or = false;
- VarDecl _data_2 = message.getData();
- RefableType _refType_1 = _data_2.getRefType();
- DataType _type_1 = _refType_1.getType();
- boolean _not_1 = (!(_type_1 instanceof PrimitiveType));
- if (_not_1) {
- _or = true;
- } else {
- VarDecl _data_3 = message.getData();
- RefableType _refType_2 = _data_3.getRefType();
- boolean _isRef = _refType_2.isRef();
- _or = (_not_1 || _isRef);
- }
- _and = (hasData && _or);
- }
- if (_and) {
- _xifexpression_2 = "*";
- } else {
- _xifexpression_2 = "";
- }
- String refp = _xifexpression_2;
- _builder.newLineIfNotEmpty();
- String _xifexpression_3 = null;
- if (hasData) {
- String _plus_3 = (", " + typeName);
- String _plus_4 = (_plus_3 + refp);
- String _plus_5 = (_plus_4 + " data");
- _xifexpression_3 = _plus_5;
- } else {
- _xifexpression_3 = "";
- }
- String data = _xifexpression_3;
- _builder.newLineIfNotEmpty();
- String _name_1 = message.getName();
- String _messageSignature = this.messageSignature(portClassName, _name_1, "", data);
- _builder.append(_messageSignature, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- String _name_2 = message.getName();
- String _messageSignature_1 = this.messageSignature(replPortClassName, _name_2, "_broadcast", data);
- _builder.append(_messageSignature_1, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- String _name_3 = message.getName();
- String _plus_6 = (", int idx" + data);
- String _messageSignature_2 = this.messageSignature(replPortClassName, _name_3, "", _plus_6);
- _builder.append(_messageSignature_2, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- {
- PortClass _portClass_4 = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- boolean _notEquals_2 = (!Objects.equal(_portClass_4, null));
- if (_notEquals_2) {
- PortClass _portClass_5 = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- EList<PortOperation> _operations = _portClass_5.getOperations();
- CharSequence _operationsDeclaration = this._procedureHelpers.operationsDeclaration(_operations, portClassName);
- _builder.append(_operationsDeclaration, "");
- _builder.newLineIfNotEmpty();
- PortClass _portClass_6 = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- EList<PortOperation> _operations_1 = _portClass_6.getOperations();
- CharSequence _operationsDeclaration_1 = this._procedureHelpers.operationsDeclaration(_operations_1, replPortClassName);
- _builder.append(_operationsDeclaration_1, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- {
- boolean _handlesReceive = this._roomExtensions.handlesReceive(pc, (conj).booleanValue());
- if (_handlesReceive) {
- {
- List<MessageHandler> _receiveHandlers = this._roomExtensions.getReceiveHandlers(pc, (conj).booleanValue());
- for(final MessageHandler h : _receiveHandlers) {
- _builder.append("void ");
- _builder.append(portClassName, "");
- _builder.append("_");
- Message _msg = h.getMsg();
- String _name_4 = _msg.getName();
- _builder.append(_name_4, "");
- _builder.append("_receiveHandler(");
- _builder.append(portClassName, "");
- _builder.append("* self, const etMessage* msg, void * actor, etActorReceiveMessage receiveMessageFunc);");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("etInt32 ");
- _builder.append(replPortClassName, "");
- _builder.append("_getReplication(const ");
- _builder.append(replPortClassName, "");
- _builder.append("* self);");
- _builder.newLineIfNotEmpty();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private CharSequence genDataDrivenPortHeaders(final ProtocolClass pc) {
- CharSequence _xblockexpression = null;
- {
- List<Message> _allIncomingMessages = this._roomExtensions.getAllIncomingMessages(pc);
- final Function1<Message,Boolean> _function = new Function1<Message,Boolean>() {
- public Boolean apply(final Message m) {
- VarDecl _data = m.getData();
- boolean _notEquals = (!Objects.equal(_data, null));
- return Boolean.valueOf(_notEquals);
- }
- };
- Iterable<Message> sentMsgs = IterableExtensions.<Message>filter(_allIncomingMessages, _function);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/* data driven send port (conjugated) */");
- _builder.newLine();
- _builder.append("typedef struct {");
- _builder.newLine();
- {
- for(final Message msg : sentMsgs) {
- _builder.append("\t");
- VarDecl _data = msg.getData();
- RefableType _refType = _data.getRefType();
- DataType _type = _refType.getType();
- String typeName = this._typeHelpers.typeName(_type);
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _xifexpression = null;
- VarDecl _data_1 = msg.getData();
- RefableType _refType_1 = _data_1.getRefType();
- boolean _isRef = _refType_1.isRef();
- if (_isRef) {
- _xifexpression = "*";
- } else {
- _xifexpression = "";
- }
- String refp = _xifexpression;
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append(typeName, " ");
- _builder.append(refp, " ");
- _builder.append(" ");
- String _name = msg.getName();
- _builder.append(_name, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("}");
- _builder.newLine();
- String _portClassName = this._roomExtensions.getPortClassName(pc, true);
- _builder.append(_portClassName, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/* data driven receive port (regular) */");
- _builder.newLine();
- _builder.append("typedef struct {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("const ");
- String _portClassName_1 = this._roomExtensions.getPortClassName(pc, true);
- _builder.append(_portClassName_1, " ");
- _builder.append("* peer;");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- String _portClassName_2 = this._roomExtensions.getPortClassName(pc, false);
- _builder.append(_portClassName_2, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- {
- for(final Message message : sentMsgs) {
- VarDecl _data_2 = message.getData();
- boolean hasData = (!Objects.equal(_data_2, null));
- _builder.newLineIfNotEmpty();
- String _xifexpression_1 = null;
- if (hasData) {
- VarDecl _data_3 = message.getData();
- RefableType _refType_2 = _data_3.getRefType();
- DataType _type_1 = _refType_2.getType();
- String _typeName = this._typeHelpers.typeName(_type_1);
- _xifexpression_1 = _typeName;
- } else {
- _xifexpression_1 = "";
- }
- String typeName_1 = _xifexpression_1;
- _builder.newLineIfNotEmpty();
- String _xifexpression_2 = null;
- boolean _and = false;
- if (!hasData) {
- _and = false;
- } else {
- VarDecl _data_4 = message.getData();
- RefableType _refType_3 = _data_4.getRefType();
- DataType _type_2 = _refType_3.getType();
- boolean _not = (!(_type_2 instanceof PrimitiveType));
- _and = (hasData && _not);
- }
- if (_and) {
- _xifexpression_2 = "*";
- } else {
- _xifexpression_2 = "";
- }
- String refp_1 = _xifexpression_2;
- _builder.newLineIfNotEmpty();
- String _xifexpression_3 = null;
- if (hasData) {
- String _plus = (", " + typeName_1);
- String _plus_1 = (_plus + refp_1);
- String _plus_2 = (_plus_1 + " data");
- _xifexpression_3 = _plus_2;
- } else {
- _xifexpression_3 = "";
- }
- String data = _xifexpression_3;
- _builder.newLineIfNotEmpty();
- String _portClassName_3 = this._roomExtensions.getPortClassName(pc, true);
- String _name_1 = message.getName();
- String _messageSetterSignature = this.messageSetterSignature(_portClassName_3, _name_1, data);
- _builder.append(_messageSetterSignature, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- String _portClassName_4 = this._roomExtensions.getPortClassName(pc, false);
- String _name_2 = message.getName();
- String _messageGetterSignature = this.messageGetterSignature(_portClassName_4, _name_2, typeName_1);
- _builder.append(_messageGetterSignature, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private CharSequence genDataDrivenPortSources(final ProtocolClass pc) {
- CharSequence _xblockexpression = null;
- {
- List<Message> _allIncomingMessages = this._roomExtensions.getAllIncomingMessages(pc);
- final Function1<Message,Boolean> _function = new Function1<Message,Boolean>() {
- public Boolean apply(final Message m) {
- VarDecl _data = m.getData();
- boolean _notEquals = (!Objects.equal(_data, null));
- return Boolean.valueOf(_notEquals);
- }
- };
- Iterable<Message> messages = IterableExtensions.<Message>filter(_allIncomingMessages, _function);
- StringConcatenation _builder = new StringConcatenation();
- {
- for(final Message message : messages) {
- VarDecl _data = message.getData();
- RefableType _refType = _data.getRefType();
- DataType _type = _refType.getType();
- String typeName = this._typeHelpers.typeName(_type);
- _builder.newLineIfNotEmpty();
- String _xifexpression = null;
- VarDecl _data_1 = message.getData();
- RefableType _refType_1 = _data_1.getRefType();
- DataType _type_1 = _refType_1.getType();
- boolean _not = (!(_type_1 instanceof PrimitiveType));
- if (_not) {
- _xifexpression = "*";
- } else {
- _xifexpression = "";
- }
- String refp = _xifexpression;
- _builder.newLineIfNotEmpty();
- String _plus = (", " + typeName);
- String _plus_1 = (_plus + refp);
- String data = (_plus_1 + " data");
- _builder.newLineIfNotEmpty();
- String _portClassName = this._roomExtensions.getPortClassName(pc, true);
- String _name = message.getName();
- String _messageSetterSignature = this.messageSetterSignature(_portClassName, _name, data);
- _builder.append(_messageSetterSignature, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("self->");
- String _name_1 = message.getName();
- _builder.append(_name_1, " ");
- _builder.append(" = data;");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- String _portClassName_1 = this._roomExtensions.getPortClassName(pc, false);
- String _name_2 = message.getName();
- String _messageGetterSignature = this.messageGetterSignature(_portClassName_1, _name_2, typeName);
- _builder.append(_messageGetterSignature, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("return self->peer->");
- String _name_3 = message.getName();
- _builder.append(_name_3, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private CharSequence portClassSource(final ProtocolClass pc, final Boolean conj) {
- CharSequence _xblockexpression = null;
- {
- String portClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue());
- String replPortClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue(), true);
- List<Message> _xifexpression = null;
- if ((conj).booleanValue()) {
- List<Message> _allIncomingMessages = this._roomExtensions.getAllIncomingMessages(pc);
- _xifexpression = _allIncomingMessages;
- } else {
- List<Message> _allOutgoingMessages = this._roomExtensions.getAllOutgoingMessages(pc);
- _xifexpression = _allOutgoingMessages;
- }
- List<Message> messages = _xifexpression;
- String _xifexpression_1 = null;
- if ((conj).booleanValue()) {
- _xifexpression_1 = "IN_";
- } else {
- _xifexpression_1 = "OUT_";
- }
- String dir = _xifexpression_1;
- StringConcatenation _builder = new StringConcatenation();
- {
- for(final Message message : messages) {
- VarDecl _data = message.getData();
- boolean hasData = (!Objects.equal(_data, null));
- _builder.newLineIfNotEmpty();
- String _xifexpression_2 = null;
- if (hasData) {
- VarDecl _data_1 = message.getData();
- RefableType _refType = _data_1.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- _xifexpression_2 = _typeName;
- } else {
- _xifexpression_2 = "";
- }
- String typeName = _xifexpression_2;
- _builder.newLineIfNotEmpty();
- String _xifexpression_3 = null;
- boolean _and = false;
- if (!hasData) {
- _and = false;
- } else {
- VarDecl _data_2 = message.getData();
- RefableType _refType_1 = _data_2.getRefType();
- boolean _isRef = _refType_1.isRef();
- _and = (hasData && _isRef);
- }
- if (_and) {
- _xifexpression_3 = "*";
- } else {
- _xifexpression_3 = "";
- }
- String refp = _xifexpression_3;
- _builder.newLineIfNotEmpty();
- String _xifexpression_4 = null;
- boolean _and_1 = false;
- if (!hasData) {
- _and_1 = false;
- } else {
- boolean _or = false;
- VarDecl _data_3 = message.getData();
- RefableType _refType_2 = _data_3.getRefType();
- DataType _type_1 = _refType_2.getType();
- boolean _not = (!(_type_1 instanceof PrimitiveType));
- if (_not) {
- _or = true;
- } else {
- VarDecl _data_4 = message.getData();
- RefableType _refType_3 = _data_4.getRefType();
- boolean _isRef_1 = _refType_3.isRef();
- _or = (_not || _isRef_1);
- }
- _and_1 = (hasData && _or);
- }
- if (_and_1) {
- _xifexpression_4 = "*";
- } else {
- _xifexpression_4 = "";
- }
- String refpd = _xifexpression_4;
- _builder.newLineIfNotEmpty();
- String _xifexpression_5 = null;
- boolean _and_2 = false;
- boolean _and_3 = false;
- if (!hasData) {
- _and_3 = false;
- } else {
- VarDecl _data_5 = message.getData();
- RefableType _refType_4 = _data_5.getRefType();
- DataType _type_2 = _refType_4.getType();
- boolean _not_1 = (!(_type_2 instanceof PrimitiveType));
- _and_3 = (hasData && _not_1);
- }
- if (!_and_3) {
- _and_2 = false;
- } else {
- VarDecl _data_6 = message.getData();
- RefableType _refType_5 = _data_6.getRefType();
- boolean _isRef_2 = _refType_5.isRef();
- boolean _not_2 = (!_isRef_2);
- _and_2 = (_and_3 && _not_2);
- }
- if (_and_2) {
- _xifexpression_5 = "";
- } else {
- _xifexpression_5 = "&";
- }
- String refa = _xifexpression_5;
- _builder.newLineIfNotEmpty();
- String _xifexpression_6 = null;
- if (hasData) {
- String _plus = (", " + typeName);
- String _plus_1 = (_plus + refpd);
- String _plus_2 = (_plus_1 + " data");
- _xifexpression_6 = _plus_2;
- } else {
- _xifexpression_6 = "";
- }
- String data = _xifexpression_6;
- _builder.newLineIfNotEmpty();
- String _xifexpression_7 = null;
- if (hasData) {
- _xifexpression_7 = ", data";
- } else {
- _xifexpression_7 = "";
- }
- String dataCall = _xifexpression_7;
- _builder.newLineIfNotEmpty();
- MessageHandler hdlr = this._roomExtensions.getSendHandler(message, (conj).booleanValue());
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- String _name = message.getName();
- String _messageSignature = this.messageSignature(portClassName, _name, "", data);
- _builder.append(_messageSignature, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- {
- boolean _notEquals = (!Objects.equal(hdlr, null));
- if (_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("ET_MSC_LOGGER_SYNC_ENTRY(\"");
- _builder.append(portClassName, " ");
- _builder.append("\", \"");
- String _name_1 = message.getName();
- _builder.append(_name_1, " ");
- _builder.append("\")");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- String _name_2 = pc.getName();
- String _name_3 = message.getName();
- String _plus_3 = (dir + _name_3);
- String _memberInUse = this._cExtensions.memberInUse(_name_2, _plus_3);
- String _plus_4 = (typeName + refp);
- String _plus_5 = (refa + "data");
- String _sendMessageCall = this.sendMessageCall(hasData, "self", _memberInUse, _plus_4, _plus_5);
- _builder.append(_sendMessageCall, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- }
- }
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- String _name_4 = message.getName();
- String _messageSignature_1 = this.messageSignature(replPortClassName, _name_4, "_broadcast", data);
- _builder.append(_messageSignature_1, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- {
- boolean _notEquals_1 = (!Objects.equal(hdlr, null));
- if (_notEquals_1) {
- _builder.append("\t");
- _builder.append("int i;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("for (i=0; i<((etReplPort*)self)->size; ++i) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append(portClassName, " ");
- _builder.append("_");
- String _name_5 = message.getName();
- _builder.append(_name_5, " ");
- _builder.append("((etPort*)&((etReplPort*)self)->ports[i]");
- _builder.append(dataCall, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}\t\t\t\t\t");
- _builder.newLine();
- } else {
- _builder.append("\t");
- _builder.append("int i;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"");
- _builder.append(replPortClassName, " ");
- _builder.append("\", \"");
- String _name_6 = message.getName();
- _builder.append(_name_6, " ");
- _builder.append("\")");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("for (i=0; i<((etReplPort*)self)->size; ++i) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- String _name_7 = pc.getName();
- String _name_8 = message.getName();
- String _plus_6 = (dir + _name_8);
- String _memberInUse_1 = this._cExtensions.memberInUse(_name_7, _plus_6);
- String _plus_7 = (typeName + refp);
- String _plus_8 = (refa + "data");
- String _sendMessageCall_1 = this.sendMessageCall(hasData, "((etPort*)&((etReplPort*)self)->ports[i])", _memberInUse_1, _plus_7, _plus_8);
- _builder.append(_sendMessageCall_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- }
- }
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- String _name_9 = message.getName();
- String _plus_9 = (", int idx" + data);
- String _messageSignature_2 = this.messageSignature(replPortClassName, _name_9, "", _plus_9);
- _builder.append(_messageSignature_2, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- {
- boolean _notEquals_2 = (!Objects.equal(hdlr, null));
- if (_notEquals_2) {
- _builder.append("\t");
- _builder.append(portClassName, " ");
- _builder.append("_");
- String _name_10 = message.getName();
- _builder.append(_name_10, " ");
- _builder.append("((etPort*)&((etReplPort*)self)->ports[idx]");
- _builder.append(dataCall, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- } else {
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"");
- _builder.append(replPortClassName, " ");
- _builder.append("\", \"");
- String _name_11 = message.getName();
- _builder.append(_name_11, " ");
- _builder.append("\")");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("if (0<=idx && idx<((etReplPort*)self)->size) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- String _name_12 = pc.getName();
- String _name_13 = message.getName();
- String _plus_10 = (dir + _name_13);
- String _memberInUse_2 = this._cExtensions.memberInUse(_name_12, _plus_10);
- String _plus_11 = (typeName + refp);
- String _plus_12 = (refa + "data");
- String _sendMessageCall_2 = this.sendMessageCall(hasData, "((etPort*)&((etReplPort*)self)->ports[idx])", _memberInUse_2, _plus_11, _plus_12);
- _builder.append(_sendMessageCall_2, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- }
- }
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.newLine();
- {
- PortClass _portClass = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- boolean _notEquals_3 = (!Objects.equal(_portClass, null));
- if (_notEquals_3) {
- PortClass _portClass_1 = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- EList<PortOperation> _operations = _portClass_1.getOperations();
- CharSequence _operationsImplementation = this._procedureHelpers.operationsImplementation(_operations, portClassName);
- _builder.append(_operationsImplementation, "");
- _builder.newLineIfNotEmpty();
- PortClass _portClass_2 = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- EList<PortOperation> _operations_1 = _portClass_2.getOperations();
- CharSequence _operationsImplementation_1 = this._procedureHelpers.operationsImplementation(_operations_1, replPortClassName);
- _builder.append(_operationsImplementation_1, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("// getReplication");
- _builder.newLine();
- _builder.append("etInt32 ");
- _builder.append(replPortClassName, "");
- _builder.append("_getReplication(const ");
- _builder.append(replPortClassName, "");
- _builder.append("* self) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("return ((etReplPort*)self)->size;");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- {
- boolean _handlesReceive = this._roomExtensions.handlesReceive(pc, (conj).booleanValue());
- if (_handlesReceive) {
- CharSequence _genReceiveHandlers = this.genReceiveHandlers(pc, conj);
- _builder.append(_genReceiveHandlers, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private String sendMessageCall(final boolean hasData, final String self, final String msg, final String typeName, final String data) {
- String _xifexpression = null;
- if (hasData) {
- String _plus = ("etPort_sendMessage(" + self);
- String _plus_1 = (_plus + ", ");
- String _plus_2 = (_plus_1 + msg);
- String _plus_3 = (_plus_2 + ", sizeof(");
- String _plus_4 = (_plus_3 + typeName);
- String _plus_5 = (_plus_4 + "), ");
- String _plus_6 = (_plus_5 + data);
- String _plus_7 = (_plus_6 + ");");
- _xifexpression = _plus_7;
- } else {
- String _plus_8 = ("etPort_sendMessage(" + self);
- String _plus_9 = (_plus_8 + ", ");
- String _plus_10 = (_plus_9 + msg);
- String _plus_11 = (_plus_10 + ", 0, NULL);");
- _xifexpression = _plus_11;
- }
- return _xifexpression;
- }
-
- private String messageSignature(final String className, final String messageName, final String methodSuffix, final String data) {
- String _plus = ("void " + className);
- String _plus_1 = (_plus + "_");
- String _plus_2 = (_plus_1 + messageName);
- String _plus_3 = (_plus_2 + methodSuffix);
- String _plus_4 = (_plus_3 + "(const ");
- String _plus_5 = (_plus_4 + className);
- String _plus_6 = (_plus_5 + "* self");
- String _plus_7 = (_plus_6 + data);
- String _plus_8 = (_plus_7 + ")");
- return _plus_8;
- }
-
- private String messageSetterSignature(final String className, final String messageName, final String data) {
- String _plus = ("void " + className);
- String _plus_1 = (_plus + "_");
- String _plus_2 = (_plus_1 + messageName);
- String _plus_3 = (_plus_2 + "_set(");
- String _plus_4 = (_plus_3 + className);
- String _plus_5 = (_plus_4 + "* self");
- String _plus_6 = (_plus_5 + data);
- String _plus_7 = (_plus_6 + ")");
- return _plus_7;
- }
-
- private String messageGetterSignature(final String className, final String messageName, final String type) {
- String _plus = (type + " ");
- String _plus_1 = (_plus + className);
- String _plus_2 = (_plus_1 + "_");
- String _plus_3 = (_plus_2 + messageName);
- String _plus_4 = (_plus_3 + "_get(const ");
- String _plus_5 = (_plus_4 + className);
- String _plus_6 = (_plus_5 + "* const self)");
- return _plus_6;
- }
-
- private CharSequence genReceiveHandlers(final ProtocolClass pc, final Boolean conj) {
- CharSequence _xblockexpression = null;
- {
- String portClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue());
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/* receiver handlers */");
- _builder.newLine();
- {
- List<MessageHandler> _receiveHandlers = this._roomExtensions.getReceiveHandlers(pc, (conj).booleanValue());
- for(final MessageHandler h : _receiveHandlers) {
- _builder.append("void ");
- _builder.append(portClassName, "");
- _builder.append("_");
- Message _msg = h.getMsg();
- String _name = _msg.getName();
- _builder.append(_name, "");
- _builder.append("_receiveHandler(");
- _builder.append(portClassName, "");
- _builder.append("* self, const etMessage* msg, void * actor, etActorReceiveMessage receiveMessageFunc){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- DetailCode _detailCode = h.getDetailCode();
- CharSequence _userCode = this._procedureHelpers.userCode(_detailCode);
- _builder.append(_userCode, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("/* hand over the message to the actor: */");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* (*receiveMessageFunc)(actor, self, msg); */");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private CharSequence generateDebugHelpersImplementation(final Root root, final ProtocolClass pc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.newLine();
- _builder.append("/* message names as strings for debugging (generate MSC) */");
- _builder.newLine();
- _builder.append("static const char* const ");
- String _name = pc.getName();
- _builder.append(_name, "");
- _builder.append("_messageStrings[] = {\"MIN\", ");
- {
- List<Message> _allOutgoingMessages = this._roomExtensions.getAllOutgoingMessages(pc);
- for(final Message m : _allOutgoingMessages) {
- _builder.append("\"");
- String _name_1 = m.getName();
- _builder.append(_name_1, "");
- _builder.append("\",");
- }
- }
- {
- List<Message> _allIncomingMessages = this._roomExtensions.getAllIncomingMessages(pc);
- for(final Message m_1 : _allIncomingMessages) {
- _builder.append("\"");
- String _name_2 = m_1.getName();
- _builder.append(_name_2, "");
- _builder.append("\", ");
- }
- }
- _builder.append("\"MAX\"};");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("const char* ");
- String _name_3 = pc.getName();
- _builder.append(_name_3, "");
- _builder.append("_getMessageString(int msg_id) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("if (msg_id<");
- String _name_4 = pc.getName();
- _builder.append(_name_4, " ");
- _builder.append("_MSG_MIN || msg_id>");
- String _name_5 = pc.getName();
- _builder.append(_name_5, " ");
- _builder.append("_MSG_MAX+1){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("/* id out of range */");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("return \"Message ID out of range\";");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("else{");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("return ");
- String _name_6 = pc.getName();
- _builder.append(_name_6, " ");
- _builder.append("_messageStrings[msg_id];");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- return _builder;
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/StateMachineGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/StateMachineGen.java
deleted file mode 100644
index de6d18f..0000000
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/StateMachineGen.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package org.eclipse.etrice.generator.c.gen;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.util.List;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.State;
-import org.eclipse.etrice.generator.generic.GenericStateMachineGenerator;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-
-@Singleton
-@SuppressWarnings("all")
-public class StateMachineGen extends GenericStateMachineGenerator {
- @Inject
- private RoomExtensions _roomExtensions;
-
- public CharSequence genHeaderConstants(final ExpandedActorClass xpac) {
- CharSequence _xblockexpression = null;
- {
- final ActorClass ac = xpac.getActorClass();
- List<State> _allBaseStates = this._roomExtensions.getAllBaseStates(ac);
- int _size = _allBaseStates.size();
- List<State> _allLeafStates = this._roomExtensions.getAllLeafStates(ac);
- int _size_1 = _allLeafStates.size();
- int _minus = (_size - _size_1);
- final int historySize = (_minus + 2);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/* constant for state machine data */");
- _builder.newLine();
- _builder.append("#define ");
- String _name = ac.getName();
- String _upperCase = _name.toUpperCase();
- _builder.append(_upperCase, "");
- _builder.append("_HISTORY_SIZE ");
- _builder.append(historySize, "");
- _builder.newLineIfNotEmpty();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public CharSequence genDataMembers(final ExpandedActorClass xpac) {
- CharSequence _xblockexpression = null;
- {
- final ActorClass ac = xpac.getActorClass();
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/* state machine variables */");
- _builder.newLine();
- _builder.append("etInt16 state;");
- _builder.newLine();
- _builder.append("etInt16 history[");
- String _name = ac.getName();
- String _upperCase = _name.toUpperCase();
- _builder.append(_upperCase, "");
- _builder.append("_HISTORY_SIZE];");
- _builder.newLineIfNotEmpty();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public CharSequence genInitialization(final ExpandedActorClass xpac) {
- CharSequence _xblockexpression = null;
- {
- final ActorClass ac = xpac.getActorClass();
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("self->state = STATE_TOP;");
- _builder.newLine();
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("int i;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("for (i=0; i<");
- String _name = ac.getName();
- String _upperCase = _name.toUpperCase();
- _builder.append(_upperCase, " ");
- _builder.append("_HISTORY_SIZE; ++i)");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("self->history[i] = NO_STATE;");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.append("executeInitTransition(self);");
- _builder.newLine();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public CharSequence genExtra(final ExpandedActorClass xpac) {
- CharSequence _xblockexpression = null;
- {
- final ActorClass ac = xpac.getActorClass();
- StringConcatenation _builder = new StringConcatenation();
- _builder.newLine();
- String _accessLevelPrivate = this.langExt.accessLevelPrivate();
- _builder.append(_accessLevelPrivate, "");
- _builder.append("void setState(");
- String _name = ac.getName();
- _builder.append(_name, "");
- _builder.append("* self, int new_state) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("self->state = new_state;");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/SubSystemClassGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/SubSystemClassGen.java
deleted file mode 100644
index ddf22e2..0000000
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/SubSystemClassGen.java
+++ /dev/null
@@ -1,1679 +0,0 @@
-package org.eclipse.etrice.generator.c.gen;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.Iterables;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.etrice.core.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.core.genmodel.etricegen.InterfaceItemInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.PortInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.ActorCommunicationType;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.CommunicationType;
-import org.eclipse.etrice.core.room.DataType;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.InterfaceItem;
-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.RefableType;
-import org.eclipse.etrice.core.room.StandardOperation;
-import org.eclipse.etrice.core.room.SubSystemClass;
-import org.eclipse.etrice.core.room.util.RoomHelpers;
-import org.eclipse.etrice.generator.c.gen.CExtensions;
-import org.eclipse.etrice.generator.generic.ILanguageExtension;
-import org.eclipse.etrice.generator.generic.ProcedureHelpers;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.etrice.generator.generic.TypeHelpers;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-import org.eclipse.xtext.xbase.lib.ListExtensions;
-
-@Singleton
-@SuppressWarnings("all")
-public class SubSystemClassGen {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private CExtensions stdExt;
-
- @Inject
- private RoomExtensions roomExt;
-
- @Inject
- private ProcedureHelpers helpers;
-
- @Inject
- private TypeHelpers _typeHelpers;
-
- @Inject
- private ILanguageExtension languageExt;
-
- @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.roomExt.getGenerationTargetPath(_subSystemClass);
- SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass();
- String _path = this.roomExt.getPath(_subSystemClass_1);
- String path = (_generationTargetPath + _path);
- SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass();
- String file = this.stdExt.getCHeaderFileName(_subSystemClass_2);
- String _plus = ("generating SubSystemClass declaration: \'" + file);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- this.fileAccess.setOutputPath(path);
- SubSystemClass _subSystemClass_3 = ssi.getSubSystemClass();
- CharSequence _generateHeaderFile = this.generateHeaderFile(root, ssi, _subSystemClass_3);
- this.fileAccess.generateFile(file, _generateHeaderFile);
- SubSystemClass _subSystemClass_4 = ssi.getSubSystemClass();
- String _cSourceFileName = this.stdExt.getCSourceFileName(_subSystemClass_4);
- file = _cSourceFileName;
- String _plus_4 = ("generating SubSystemClass implementation: \'" + file);
- String _plus_5 = (_plus_4 + "\' in \'");
- String _plus_6 = (_plus_5 + path);
- String _plus_7 = (_plus_6 + "\'");
- this.logger.logInfo(_plus_7);
- this.fileAccess.setOutputPath(path);
- SubSystemClass _subSystemClass_5 = ssi.getSubSystemClass();
- CharSequence _generateSourceFile = this.generateSourceFile(root, ssi, _subSystemClass_5);
- this.fileAccess.generateFile(file, _generateSourceFile);
- SubSystemClass _subSystemClass_6 = ssi.getSubSystemClass();
- String _instSourceFileName = this.stdExt.getInstSourceFileName(_subSystemClass_6);
- file = _instSourceFileName;
- String _plus_8 = ("generating SubSystemClass instance file: \'" + file);
- String _plus_9 = (_plus_8 + "\' in \'");
- String _plus_10 = (_plus_9 + path);
- String _plus_11 = (_plus_10 + "\'");
- this.logger.logInfo(_plus_11);
- this.fileAccess.setOutputPath(path);
- SubSystemClass _subSystemClass_7 = ssi.getSubSystemClass();
- CharSequence _generateInstanceFile = this.generateInstanceFile(root, ssi, _subSystemClass_7);
- this.fileAccess.generateFile(file, _generateInstanceFile);
- SubSystemClass _subSystemClass_8 = ssi.getSubSystemClass();
- String _dispSourceFileName = this.stdExt.getDispSourceFileName(_subSystemClass_8);
- file = _dispSourceFileName;
- String _plus_12 = ("generating SubSystemClass dispatcher file: \'" + file);
- String _plus_13 = (_plus_12 + "\' in \'");
- String _plus_14 = (_plus_13 + path);
- String _plus_15 = (_plus_14 + "\'");
- this.logger.logInfo(_plus_15);
- this.fileAccess.setOutputPath(path);
- SubSystemClass _subSystemClass_9 = ssi.getSubSystemClass();
- CharSequence _generateDispatcherFile = this.generateDispatcherFile(root, ssi, _subSystemClass_9);
- this.fileAccess.generateFile(file, _generateDispatcherFile);
- }
- }
- }
-
- private CharSequence generateHeaderFile(final Root root, final SubSystemInstance ssi, final SubSystemClass ssc) {
- 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("* Header File of SubSystemClass ");
- String _name = ssc.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* ");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- String _name_1 = ssc.getName();
- CharSequence _generateIncludeGuardBegin = this.stdExt.generateIncludeGuardBegin(_name_1);
- _builder.append(_generateIncludeGuardBegin, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- DetailCode _userCode1 = ssc.getUserCode1();
- CharSequence _userCode = this.helpers.userCode(_userCode1);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.newLine();
- _builder.append("/* lifecycle functions");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* init -> start -> run (loop) -> stop -> destroy");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_2 = ssc.getName();
- _builder.append(_name_2, "");
- _builder.append("_init(void);\t\t/* lifecycle init \t */");
- _builder.newLineIfNotEmpty();
- _builder.append("void ");
- String _name_3 = ssc.getName();
- _builder.append(_name_3, "");
- _builder.append("_start(void);\t/* lifecycle start \t */");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("void ");
- String _name_4 = ssc.getName();
- _builder.append(_name_4, "");
- _builder.append("_run(void);\t\t/* lifecycle run \t */");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("void ");
- String _name_5 = ssc.getName();
- _builder.append(_name_5, "");
- _builder.append("_stop(void); \t/* lifecycle stop\t */");
- _builder.newLineIfNotEmpty();
- _builder.append("void ");
- String _name_6 = ssc.getName();
- _builder.append(_name_6, "");
- _builder.append("_destroy(void); \t/* lifecycle destroy */");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("void ");
- String _name_7 = ssc.getName();
- _builder.append(_name_7, "");
- _builder.append("_shutdown(void); /* shutdown the dispatcher loop */");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- DetailCode _userCode2 = ssc.getUserCode2();
- CharSequence _userCode_1 = this.helpers.userCode(_userCode2);
- _builder.append(_userCode_1, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- String _name_8 = ssc.getName();
- CharSequence _generateIncludeGuardEnd = this.stdExt.generateIncludeGuardEnd(_name_8);
- _builder.append(_generateIncludeGuardEnd, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.newLine();
- return _builder;
- }
-
- private CharSequence generateSourceFile(final Root root, final SubSystemInstance ssi, final SubSystemClass ssc) {
- 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("* Source File of SubSystemClass ");
- String _name = ssc.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* ");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- _builder.append("#include \"");
- String _cHeaderFileName = this.stdExt.getCHeaderFileName(ssc);
- _builder.append(_cHeaderFileName, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/* include instances for all classes */");
- _builder.newLine();
- _builder.append("#include \"");
- String _instSourceFileName = this.stdExt.getInstSourceFileName(ssc);
- _builder.append(_instSourceFileName, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.append("#include \"");
- String _dispSourceFileName = this.stdExt.getDispSourceFileName(ssc);
- _builder.append(_dispSourceFileName, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("#include \"debugging/etLogger.h\"");
- _builder.newLine();
- _builder.append("#include \"debugging/etMSCLogger.h\"");
- _builder.newLine();
- _builder.newLine();
- _builder.append("#include \"platform/etTimer.h\"");
- _builder.newLine();
- _builder.append("#include \"etGlobalFlags.h\"");
- _builder.newLine();
- _builder.newLine();
- DetailCode _userCode3 = ssc.getUserCode3();
- CharSequence _userCode = this.helpers.userCode(_userCode3);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/* data for SubSysten ");
- String _name_1 = ssc.getName();
- _builder.append(_name_1, "");
- _builder.append(" */");
- _builder.newLineIfNotEmpty();
- _builder.append("typedef struct ");
- String _name_2 = ssc.getName();
- _builder.append(_name_2, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("char *name;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("volatile int shutdownRequest;");
- _builder.newLine();
- _builder.append("} ");
- String _name_3 = ssc.getName();
- _builder.append(_name_3, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("static ");
- String _name_4 = ssc.getName();
- _builder.append(_name_4, "");
- _builder.append(" ");
- String _name_5 = ssc.getName();
- _builder.append(_name_5, "");
- _builder.append("Inst = {\"");
- String _name_6 = ssc.getName();
- _builder.append(_name_6, "");
- _builder.append("\",0};");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("void ");
- String _name_7 = ssc.getName();
- _builder.append(_name_7, "");
- _builder.append("_initActorInstances(void);");
- _builder.newLineIfNotEmpty();
- _builder.append("void ");
- String _name_8 = ssc.getName();
- _builder.append(_name_8, "");
- _builder.append("_constructActorInstances(void);");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("void ");
- String _name_9 = ssc.getName();
- _builder.append(_name_9, "");
- _builder.append("_init(void){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"SubSys\", \"init\")");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etLogger_logInfoF(\"%s_init\", ");
- String _name_10 = ssc.getName();
- _builder.append(_name_10, " ");
- _builder.append("Inst.name);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* construct all actors */");
- _builder.newLine();
- _builder.append("\t");
- String _name_11 = ssc.getName();
- _builder.append(_name_11, " ");
- _builder.append("_constructActorInstances();");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* initialization of all message services */");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etMessageService_init(&msgService_Thread1, msgBuffer_Thread1, MESSAGE_POOL_MAX, MESSAGE_BLOCK_SIZE, MsgDispatcher_Thread1_receiveMessage);");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* init all actors */");
- _builder.newLine();
- _builder.append("\t");
- String _name_12 = ssc.getName();
- _builder.append(_name_12, " ");
- _builder.append("_initActorInstances();");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_13 = ssc.getName();
- _builder.append(_name_13, "");
- _builder.append("_start(void){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"SubSys\", \"start\")");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etLogger_logInfoF(\"%s_start\", ");
- String _name_14 = ssc.getName();
- _builder.append(_name_14, " ");
- _builder.append("Inst.name);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_15 = ssc.getName();
- _builder.append(_name_15, "");
- _builder.append("_run(void){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"SubSys\", \"run\")");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("#ifdef ET_RUNTIME_ENDLESS");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("while(!(");
- String _name_16 = ssc.getName();
- _builder.append(_name_16, " ");
- _builder.append("Inst.shutdownRequest)){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("if (etTimer_executeNeeded()){");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("etMessageService_execute(&msgService_Thread1);");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- CharSequence _generateDatadrivenExecutes = this.generateDatadrivenExecutes(root, ssi);
- _builder.append(_generateDatadrivenExecutes, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("#else");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("uint32 loopCounter = 0;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("while(!(");
- String _name_17 = ssc.getName();
- _builder.append(_name_17, " ");
- _builder.append("Inst.shutdownRequest)){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("if (etTimer_executeNeeded()){");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("etMessageService_execute(&msgService_Thread1);");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- CharSequence _generateDatadrivenExecutes_1 = this.generateDatadrivenExecutes(root, ssi);
- _builder.append(_generateDatadrivenExecutes_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t\t");
- _builder.append("etLogger_logInfo(\"Execute\");");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("if (loopCounter++ > ET_RUNTIME_MAXLOOP){");
- _builder.newLine();
- _builder.append("\t\t\t\t\t");
- _builder.append("break;");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("#endif");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_18 = ssc.getName();
- _builder.append(_name_18, "");
- _builder.append("_stop(void){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"SubSys\", \"stop\")");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etLogger_logInfoF(\"%s_stop\", ");
- String _name_19 = ssc.getName();
- _builder.append(_name_19, " ");
- _builder.append("Inst.name);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_20 = ssc.getName();
- _builder.append(_name_20, "");
- _builder.append("_destroy(void){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"SubSys\", \"destroy\")");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etLogger_logInfoF(\"%s_destroy\", ");
- String _name_21 = ssc.getName();
- _builder.append(_name_21, " ");
- _builder.append("Inst.name);");
- _builder.newLineIfNotEmpty();
- {
- EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances();
- List<ActorInstance> _reverseView = ListExtensions.<ActorInstance>reverseView(_allContainedInstances);
- for(final ActorInstance ai : _reverseView) {
- {
- ActorClass _actorClass = ai.getActorClass();
- EList<StandardOperation> _operations = _actorClass.getOperations();
- final Function1<StandardOperation,Boolean> _function = new Function1<StandardOperation,Boolean>() {
- public Boolean apply(final StandardOperation op) {
- boolean _isDestructor = op.isDestructor();
- return Boolean.valueOf(_isDestructor);
- }
- };
- Iterable<StandardOperation> _filter = IterableExtensions.<StandardOperation>filter(_operations, _function);
- boolean _isEmpty = IterableExtensions.isEmpty(_filter);
- boolean _not = (!_isEmpty);
- if (_not) {
- _builder.append("\t");
- ActorClass _actorClass_1 = ai.getActorClass();
- String _name_22 = _actorClass_1.getName();
- String _destructorName = this.languageExt.destructorName(_name_22);
- _builder.append(_destructorName, " ");
- _builder.append("(&");
- String _path = ai.getPath();
- String _pathName = this.roomExt.getPathName(_path);
- _builder.append(_pathName, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_23 = ssc.getName();
- _builder.append(_name_23, "");
- _builder.append("_shutdown(void){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"SubSys\", \"shutdown\")");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etLogger_logInfoF(\"%s_shutdown\", ");
- String _name_24 = ssc.getName();
- _builder.append(_name_24, " ");
- _builder.append("Inst.name);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _name_25 = ssc.getName();
- _builder.append(_name_25, " ");
- _builder.append("Inst.shutdownRequest = 1;");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_26 = ssc.getName();
- _builder.append(_name_26, "");
- _builder.append("_constructActorInstances(void){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"");
- String _name_27 = ssc.getName();
- _builder.append(_name_27, " ");
- _builder.append("\", \"constructActorInstances\")");
- _builder.newLineIfNotEmpty();
- {
- EList<ActorInstance> _allContainedInstances_1 = ssi.getAllContainedInstances();
- for(final ActorInstance ai_1 : _allContainedInstances_1) {
- {
- ActorClass _actorClass_2 = ai_1.getActorClass();
- EList<StandardOperation> _operations_1 = _actorClass_2.getOperations();
- final Function1<StandardOperation,Boolean> _function_1 = new Function1<StandardOperation,Boolean>() {
- public Boolean apply(final StandardOperation op) {
- boolean _isConstructor = RoomHelpers.isConstructor(op);
- return Boolean.valueOf(_isConstructor);
- }
- };
- Iterable<StandardOperation> _filter_1 = IterableExtensions.<StandardOperation>filter(_operations_1, _function_1);
- boolean _isEmpty_1 = IterableExtensions.isEmpty(_filter_1);
- boolean _not_1 = (!_isEmpty_1);
- if (_not_1) {
- _builder.append("\t");
- ActorClass _actorClass_3 = ai_1.getActorClass();
- String _name_28 = _actorClass_3.getName();
- String _constructorName = this.languageExt.constructorName(_name_28);
- _builder.append(_constructorName, " ");
- _builder.append("(&");
- String _path_1 = ai_1.getPath();
- String _pathName_1 = this.roomExt.getPathName(_path_1);
- _builder.append(_pathName_1, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("void ");
- String _name_29 = ssc.getName();
- _builder.append(_name_29, "");
- _builder.append("_initActorInstances(void){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"");
- String _name_30 = ssc.getName();
- _builder.append(_name_30, " ");
- _builder.append("\", \"initActorInstances\")");
- _builder.newLineIfNotEmpty();
- {
- EList<ActorInstance> _allContainedInstances_2 = ssi.getAllContainedInstances();
- for(final ActorInstance ai_2 : _allContainedInstances_2) {
- _builder.append("\t");
- ActorClass _actorClass_4 = ai_2.getActorClass();
- String _name_31 = _actorClass_4.getName();
- _builder.append(_name_31, " ");
- _builder.append("_init(&");
- String _path_2 = ai_2.getPath();
- String _pathName_2 = this.roomExt.getPathName(_path_2);
- _builder.append(_pathName_2, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- return _builder;
- }
-
- private CharSequence generateInstanceFile(final Root root, final SubSystemInstance ssi, final SubSystemClass ssc) {
- 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("* Instance File of SubSystemClass ");
- String _name = ssc.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* - instantiation of all actor instances and port instances");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("* - configuration of data and connection of ports");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- _builder.append("#include \"messaging/etMessageService.h\"");
- _builder.newLine();
- _builder.append("#include \"platform/etMemory.h\"");
- _builder.newLine();
- _builder.newLine();
- _builder.append("/* instantiation of message services */");
- _builder.newLine();
- _builder.newLine();
- _builder.append("/* MessageService for Thread1 */");
- _builder.newLine();
- _builder.append("static uint8 msgBuffer_Thread1[MESSAGE_POOL_MAX*MESSAGE_BLOCK_SIZE];");
- _builder.newLine();
- _builder.append("static etMessageService msgService_Thread1;");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- _builder.append("/* include all used ActorClasses */");
- _builder.newLine();
- {
- EList<ActorClass> _usedActorClasses = root.getUsedActorClasses();
- for(final ActorClass actorClass : _usedActorClasses) {
- _builder.append("#include \"");
- String _name_1 = actorClass.getName();
- _builder.append(_name_1, "");
- _builder.append(".h\"");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("/* include all used ProtcolClasses */");
- _builder.newLine();
- {
- EList<ProtocolClass> _usedProtocolClasses = root.getUsedProtocolClasses();
- for(final ProtocolClass protocolClass : _usedProtocolClasses) {
- _builder.append("#include \"");
- String _name_2 = protocolClass.getName();
- _builder.append(_name_2, "");
- _builder.append(".h\"");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.newLine();
- _builder.append("/* declarations of all ActorClass instances (const and variable structs) */");
- _builder.newLine();
- _builder.newLine();
- _builder.append("/* forward declaration of variable actor structs */");
- _builder.newLine();
- {
- EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances();
- for(final ActorInstance ai : _allContainedInstances) {
- _builder.append("static ");
- ActorClass _actorClass = ai.getActorClass();
- String _name_3 = _actorClass.getName();
- _builder.append(_name_3, "");
- _builder.append(" ");
- String _path = ai.getPath();
- String _pathName = this.roomExt.getPathName(_path);
- _builder.append(_pathName, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("/* forward declaration of variable port structs */\t\t");
- _builder.newLine();
- {
- EList<ActorInstance> _allContainedInstances_1 = ssi.getAllContainedInstances();
- for(final ActorInstance ai_1 : _allContainedInstances_1) {
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances = ai_1.getOrderedIfItemInstances();
- boolean _isEmpty = _orderedIfItemInstances.isEmpty();
- if (_isEmpty) {
- _builder.append("/*nothing to do */");
- _builder.newLine();
- } else {
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_1 = ai_1.getOrderedIfItemInstances();
- for(final InterfaceItemInstance pi : _orderedIfItemInstances_1) {
- {
- ProtocolClass _protocol = pi.getProtocol();
- boolean _isConjugated = this.roomExt.isConjugated(pi);
- PortClass _portClass = this.roomExt.getPortClass(_protocol, _isConjugated);
- boolean _notEquals = (!Objects.equal(_portClass, null));
- if (_notEquals) {
- {
- ProtocolClass _protocol_1 = pi.getProtocol();
- boolean _isConjugated_1 = this.roomExt.isConjugated(pi);
- PortClass _portClass_1 = this.roomExt.getPortClass(_protocol_1, _isConjugated_1);
- EList<Attribute> _attributes = _portClass_1.getAttributes();
- boolean _isEmpty_1 = _attributes.isEmpty();
- boolean _not = (!_isEmpty_1);
- if (_not) {
- {
- boolean _isReplicated = pi.isReplicated();
- if (_isReplicated) {
- _builder.append("static ");
- ProtocolClass _protocol_2 = pi.getProtocol();
- boolean _isConjugated_2 = this.roomExt.isConjugated(pi);
- String _portClassName = this.roomExt.getPortClassName(_protocol_2, _isConjugated_2);
- _builder.append(_portClassName, "");
- _builder.append("_var ");
- String _path_1 = pi.getPath();
- String _pathName_1 = this.roomExt.getPathName(_path_1);
- _builder.append(_pathName_1, "");
- _builder.append("_var[");
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- int _size = _peers.size();
- _builder.append(_size, "");
- _builder.append("]={");
- String _genReplPortAttributeInitializer = this.genReplPortAttributeInitializer(pi);
- _builder.append(_genReplPortAttributeInitializer, "");
- _builder.append("};");
- _builder.newLineIfNotEmpty();
- } else {
- _builder.append("static ");
- ProtocolClass _protocol_3 = pi.getProtocol();
- boolean _isConjugated_3 = this.roomExt.isConjugated(pi);
- String _portClassName_1 = this.roomExt.getPortClassName(_protocol_3, _isConjugated_3);
- _builder.append(_portClassName_1, "");
- _builder.append("_var ");
- String _path_2 = pi.getPath();
- String _pathName_2 = this.roomExt.getPathName(_path_2);
- _builder.append(_pathName_2, "");
- _builder.append("_var={");
- CharSequence _genPortAttributeInitializer = this.genPortAttributeInitializer(pi);
- _builder.append(_genPortAttributeInitializer, "");
- _builder.append("};");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- _builder.newLine();
- {
- EList<ActorInstance> _allContainedInstances_2 = ssi.getAllContainedInstances();
- for(final ActorInstance ai_2 : _allContainedInstances_2) {
- _builder.newLine();
- _builder.append("/* instance ");
- String _path_3 = ai_2.getPath();
- String _pathName_3 = this.roomExt.getPathName(_path_3);
- _builder.append(_pathName_3, "");
- _builder.append(" */");
- _builder.newLineIfNotEmpty();
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_2 = ai_2.getOrderedIfItemInstances();
- boolean _isEmpty_2 = _orderedIfItemInstances_2.isEmpty();
- if (_isEmpty_2) {
- _builder.append("/* no ports/saps/services - nothing to initialize statically */");
- _builder.newLine();
- } else {
- CharSequence _genActorInstanceInitializer = this.genActorInstanceInitializer(root, ai_2);
- _builder.append(_genActorInstanceInitializer, "");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.newLine();
- return _builder;
- }
-
- private String genReplPortAttributeInitializer(final InterfaceItemInstance pi) {
- int i = 0;
- String retval = "";
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- int _size = _peers.size();
- i = _size;
- boolean _greaterThan = (i > 0);
- boolean _while = _greaterThan;
- while (_while) {
- {
- String _plus = (retval + "\r\n\t\t\t{");
- CharSequence _genPortAttributeInitializer = this.genPortAttributeInitializer(pi);
- String _plus_1 = (_plus + _genPortAttributeInitializer);
- String _plus_2 = (_plus_1 + "}");
- retval = _plus_2;
- int _minus = (i - 1);
- i = _minus;
- boolean _greaterThan_1 = (i > 0);
- if (_greaterThan_1) {
- String _plus_3 = (retval + ",");
- retval = _plus_3;
- }
- }
- boolean _greaterThan_1 = (i > 0);
- _while = _greaterThan_1;
- }
- return retval;
- }
-
- private CharSequence genPortAttributeInitializer(final InterfaceItemInstance pi) {
- StringConcatenation _builder = new StringConcatenation();
- {
- ProtocolClass _protocol = pi.getProtocol();
- boolean _isConjugated = this.roomExt.isConjugated(pi);
- PortClass _portClass = this.roomExt.getPortClass(_protocol, _isConjugated);
- EList<Attribute> _attributes = _portClass.getAttributes();
- boolean _hasElements = false;
- for(final Attribute attr : _attributes) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(",", "");
- }
- {
- String _defaultValueLiteral = attr.getDefaultValueLiteral();
- boolean _notEquals = (!Objects.equal(_defaultValueLiteral, null));
- if (_notEquals) {
- String _defaultValueLiteral_1 = attr.getDefaultValueLiteral();
- _builder.append(_defaultValueLiteral_1, "");
- } else {
- RefableType _refType = attr.getRefType();
- DataType _type = _refType.getType();
- String _defaultValue = this._typeHelpers.defaultValue(_type);
- _builder.append(_defaultValue, "");
- }
- }
- }
- }
- return _builder;
- }
-
- private CharSequence genActorInstanceInitializer(final Root root, final ActorInstance ai) {
- CharSequence _xblockexpression = null;
- {
- String _path = ai.getPath();
- String instName = this.roomExt.getPathName(_path);
- ArrayList<InterfaceItemInstance> _arrayList = new ArrayList<InterfaceItemInstance>();
- ArrayList<InterfaceItemInstance> replPorts = _arrayList;
- EList<InterfaceItemInstance> _orderedIfItemInstances = ai.getOrderedIfItemInstances();
- final Function1<InterfaceItemInstance,Boolean> _function = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance e) {
- boolean _isReplicated = e.isReplicated();
- return Boolean.valueOf(_isReplicated);
- }
- };
- Iterable<InterfaceItemInstance> _filter = IterableExtensions.<InterfaceItemInstance>filter(_orderedIfItemInstances, _function);
- Iterables.<InterfaceItemInstance>addAll(replPorts, _filter);
- final Function1<InterfaceItemInstance,Boolean> _function_1 = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance e) {
- EList<InterfaceItemInstance> _peers = e.getPeers();
- boolean _isEmpty = _peers.isEmpty();
- boolean _not = (!_isEmpty);
- return Boolean.valueOf(_not);
- }
- };
- InterfaceItemInstance _findFirst = IterableExtensions.<InterfaceItemInstance>findFirst(replPorts, _function_1);
- boolean haveReplSubPorts = (!Objects.equal(_findFirst, null));
- EList<InterfaceItemInstance> _orderedIfItemInstances_1 = ai.getOrderedIfItemInstances();
- final Function1<InterfaceItemInstance,Boolean> _function_2 = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance e) {
- boolean _isSimple = e.isSimple();
- return Boolean.valueOf(_isSimple);
- }
- };
- Iterable<InterfaceItemInstance> simplePorts = IterableExtensions.<InterfaceItemInstance>filter(_orderedIfItemInstances_1, _function_2);
- ArrayList<InterfaceItemInstance> _arrayList_1 = new ArrayList<InterfaceItemInstance>();
- ArrayList<InterfaceItemInstance> eventPorts = _arrayList_1;
- final Function1<InterfaceItemInstance,Boolean> _function_3 = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance p) {
- ProtocolClass _protocol = p.getProtocol();
- CommunicationType _commType = _protocol.getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN);
- return Boolean.valueOf(_equals);
- }
- };
- Iterable<InterfaceItemInstance> _filter_1 = IterableExtensions.<InterfaceItemInstance>filter(simplePorts, _function_3);
- Iterable<InterfaceItemInstance> _union = this.roomExt.<InterfaceItemInstance>union(_filter_1, replPorts);
- Iterables.<InterfaceItemInstance>addAll(eventPorts, _union);
- final Function1<InterfaceItemInstance,Boolean> _function_4 = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance p) {
- ProtocolClass _protocol = p.getProtocol();
- CommunicationType _commType = _protocol.getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.DATA_DRIVEN);
- return Boolean.valueOf(_equals);
- }
- };
- Iterable<InterfaceItemInstance> dataPorts = IterableExtensions.<InterfaceItemInstance>filter(simplePorts, _function_4);
- final Function1<InterfaceItemInstance,Boolean> _function_5 = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance p) {
- boolean _and = false;
- if (!(p instanceof PortInstance)) {
- _and = false;
- } else {
- Port _port = ((PortInstance) p).getPort();
- boolean _isConjugated = _port.isConjugated();
- boolean _not = (!_isConjugated);
- _and = ((p instanceof PortInstance) && _not);
- }
- return Boolean.valueOf(_and);
- }
- };
- Iterable<InterfaceItemInstance> recvPorts = IterableExtensions.<InterfaceItemInstance>filter(dataPorts, _function_5);
- HashMap<InterfaceItemInstance,Integer> _hashMap = new HashMap<InterfaceItemInstance,Integer>();
- HashMap<InterfaceItemInstance,Integer> offsets = _hashMap;
- int offset = 0;
- for (final InterfaceItemInstance p : replPorts) {
- {
- offsets.put(p, Integer.valueOf(offset));
- EList<InterfaceItemInstance> _peers = p.getPeers();
- int _size = _peers.size();
- int _plus = (offset + _size);
- offset = _plus;
- }
- }
- String _xifexpression = null;
- if (haveReplSubPorts) {
- String _plus = (instName + "_repl_sub_ports");
- _xifexpression = _plus;
- } else {
- _xifexpression = "NULL";
- }
- String replSubPortsArray = _xifexpression;
- StringConcatenation _builder = new StringConcatenation();
- {
- if (haveReplSubPorts) {
- _builder.append("static const etReplSubPort ");
- _builder.append(replSubPortsArray, "");
- _builder.append("[");
- _builder.append(offset, "");
- _builder.append("] = {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("/* Replicated Sub Ports: {varData, msgService, peerAddress, localId, index} */");
- _builder.newLine();
- {
- final Function1<InterfaceItemInstance,Boolean> _function_6 = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance e) {
- EList<InterfaceItemInstance> _peers = e.getPeers();
- boolean _isEmpty = _peers.isEmpty();
- boolean _not = (!_isEmpty);
- return Boolean.valueOf(_not);
- }
- };
- Iterable<InterfaceItemInstance> _filter_2 = IterableExtensions.<InterfaceItemInstance>filter(replPorts, _function_6);
- boolean _hasElements = false;
- for(final InterfaceItemInstance pi : _filter_2) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t");
- String _genReplSubPortInitializers = this.genReplSubPortInitializers(root, ai, pi);
- _builder.append(_genReplSubPortInitializers, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("};");
- _builder.newLine();
- }
- }
- {
- boolean _and = false;
- boolean _isEmpty = eventPorts.isEmpty();
- if (!_isEmpty) {
- _and = false;
- } else {
- boolean _isEmpty_1 = IterableExtensions.isEmpty(recvPorts);
- _and = (_isEmpty && _isEmpty_1);
- }
- boolean _not = (!_and);
- if (_not) {
- _builder.append("static const ");
- ActorClass _actorClass = ai.getActorClass();
- String _name = _actorClass.getName();
- _builder.append(_name, "");
- _builder.append("_const ");
- _builder.append(instName, "");
- _builder.append("_const = {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("/* Ports: {varData, msgService, peerAddress, localId} */");
- _builder.newLine();
- {
- boolean _hasElements_1 = false;
- for(final InterfaceItemInstance pi_1 : eventPorts) {
- if (!_hasElements_1) {
- _hasElements_1 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- {
- boolean _isSimple = pi_1.isSimple();
- if (_isSimple) {
- _builder.append("\t");
- String _genPortInitializer = this.genPortInitializer(root, ai, pi_1);
- _builder.append(_genPortInitializer, " ");
- _builder.newLineIfNotEmpty();
- } else {
- _builder.append("\t");
- _builder.append("{");
- EList<InterfaceItemInstance> _peers = pi_1.getPeers();
- int _size = _peers.size();
- _builder.append(_size, " ");
- _builder.append(", ");
- _builder.append(replSubPortsArray, " ");
- _builder.append("+");
- Integer _get = offsets.get(pi_1);
- _builder.append(_get, " ");
- _builder.append("}");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("\t");
- {
- boolean _and_1 = false;
- boolean _isEmpty_2 = eventPorts.isEmpty();
- boolean _not_1 = (!_isEmpty_2);
- if (!_not_1) {
- _and_1 = false;
- } else {
- boolean _isEmpty_3 = IterableExtensions.isEmpty(recvPorts);
- boolean _not_2 = (!_isEmpty_3);
- _and_1 = (_not_1 && _not_2);
- }
- if (_and_1) {
- _builder.append(",");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* data receive ports */");
- _builder.newLine();
- {
- boolean _hasElements_2 = false;
- for(final InterfaceItemInstance pi_2 : recvPorts) {
- if (!_hasElements_2) {
- _hasElements_2 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t");
- String _genRecvPortInitializer = this.genRecvPortInitializer(root, ai, pi_2);
- _builder.append(_genRecvPortInitializer, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("};");
- _builder.newLine();
- _builder.append("static ");
- ActorClass _actorClass_1 = ai.getActorClass();
- String _name_1 = _actorClass_1.getName();
- _builder.append(_name_1, "");
- _builder.append(" ");
- _builder.append(instName, "");
- _builder.append(" = {&");
- _builder.append(instName, "");
- _builder.append("_const};");
- _builder.newLineIfNotEmpty();
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private String genPortInitializer(final Root root, final ActorInstance ai, final InterfaceItemInstance pi) {
- String _xblockexpression = null;
- {
- int _xifexpression = (int) 0;
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- boolean _isEmpty = _peers.isEmpty();
- if (_isEmpty) {
- _xifexpression = 0;
- } else {
- EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
- InterfaceItemInstance _get = _peers_1.get(0);
- int _objId = _get.getObjId();
- _xifexpression = _objId;
- }
- int objId = _xifexpression;
- int _xifexpression_1 = (int) 0;
- EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
- boolean _isEmpty_1 = _peers_2.isEmpty();
- if (_isEmpty_1) {
- _xifexpression_1 = 0;
- } else {
- EList<InterfaceItemInstance> _peers_3 = pi.getPeers();
- InterfaceItemInstance _get_1 = _peers_3.get(0);
- EList<InterfaceItemInstance> _peers_4 = _get_1.getPeers();
- int _indexOf = _peers_4.indexOf(pi);
- _xifexpression_1 = _indexOf;
- }
- int idx = _xifexpression_1;
- String _interfaceItemInstanceData = this.getInterfaceItemInstanceData(pi);
- String _plus = ("{" + _interfaceItemInstanceData);
- String _plus_1 = (_plus + ",");
- String _plus_2 = (_plus_1 + "&msgService_Thread1, ");
- int _plus_3 = (objId + idx);
- String _plus_4 = (_plus_2 + Integer.valueOf(_plus_3));
- String _plus_5 = (_plus_4 + ", ");
- ExpandedActorClass _expandedActorClass = root.getExpandedActorClass(ai);
- InterfaceItem _interfaceItem = pi.getInterfaceItem();
- int _interfaceItemLocalId = _expandedActorClass.getInterfaceItemLocalId(_interfaceItem);
- int _plus_6 = (_interfaceItemLocalId + 1);
- String _plus_7 = (_plus_5 + Integer.valueOf(_plus_6));
- String _plus_8 = (_plus_7 + "} /* Port ");
- String _name = pi.getName();
- String _plus_9 = (_plus_8 + _name);
- String _plus_10 = (_plus_9 + " */");
- _xblockexpression = (_plus_10);
- }
- return _xblockexpression;
- }
-
- private String getInterfaceItemInstanceData(final InterfaceItemInstance pi) {
- ProtocolClass _protocol = pi.getProtocol();
- boolean _isConjugated = this.roomExt.isConjugated(pi);
- PortClass _portClass = this.roomExt.getPortClass(_protocol, _isConjugated);
- boolean _equals = Objects.equal(_portClass, null);
- if (_equals) {
- return "0";
- }
- ProtocolClass _protocol_1 = pi.getProtocol();
- boolean _isConjugated_1 = this.roomExt.isConjugated(pi);
- PortClass _portClass_1 = this.roomExt.getPortClass(_protocol_1, _isConjugated_1);
- EList<Attribute> _attributes = _portClass_1.getAttributes();
- boolean _isEmpty = _attributes.isEmpty();
- if (_isEmpty) {
- return "0";
- } else {
- String _path = pi.getPath();
- String _pathName = this.roomExt.getPathName(_path);
- String _plus = ("&" + _pathName);
- return (_plus + "_var");
- }
- }
-
- private String genRecvPortInitializer(final Root root, final ActorInstance ai, final InterfaceItemInstance pi) {
- String _xblockexpression = null;
- {
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- boolean _isEmpty = _peers.isEmpty();
- if (_isEmpty) {
- return "{NULL}";
- }
- EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
- InterfaceItemInstance peer = _peers_1.get(0);
- EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
- InterfaceItemInstance _get = _peers_2.get(0);
- EObject _eContainer = _get.eContainer();
- ActorInstance peerInst = ((ActorInstance) _eContainer);
- String _path = peerInst.getPath();
- String instName = this.roomExt.getPathName(_path);
- String _plus = ("{&" + instName);
- String _plus_1 = (_plus + ".");
- String _name = peer.getName();
- String _plus_2 = (_plus_1 + _name);
- String _plus_3 = (_plus_2 + "}");
- _xblockexpression = (_plus_3);
- }
- return _xblockexpression;
- }
-
- private String genReplSubPortInitializers(final Root root, final ActorInstance ai, final InterfaceItemInstance pi) {
- String result = "";
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- for (final InterfaceItemInstance p : _peers) {
- {
- EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
- int idx = _peers_1.indexOf(p);
- String _xifexpression = null;
- EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
- int _size = _peers_2.size();
- int _minus = (_size - 1);
- boolean _lessThan = (idx < _minus);
- if (_lessThan) {
- _xifexpression = ",";
- } else {
- _xifexpression = "";
- }
- String comma = _xifexpression;
- String iiiD = this.getInterfaceItemInstanceData(pi);
- String _xifexpression_1 = null;
- boolean _equals = iiiD.equals("0");
- if (_equals) {
- String _plus = (iiiD + ",");
- _xifexpression_1 = _plus;
- } else {
- String _plus_1 = (iiiD + "[");
- String _plus_2 = (_plus_1 + Integer.valueOf(idx));
- String _plus_3 = (_plus_2 + "],");
- _xifexpression_1 = _plus_3;
- }
- iiiD = _xifexpression_1;
- String _plus_4 = (result +
- "{");
- String _plus_5 = (_plus_4 + iiiD);
- String _plus_6 = (_plus_5 + "&msgService_Thread1, ");
- int _objId = p.getObjId();
- String _plus_7 = (_plus_6 + Integer.valueOf(_objId));
- String _plus_8 = (_plus_7 + ", ");
- ExpandedActorClass _expandedActorClass = root.getExpandedActorClass(ai);
- InterfaceItem _interfaceItem = pi.getInterfaceItem();
- int _interfaceItemLocalId = _expandedActorClass.getInterfaceItemLocalId(_interfaceItem);
- int _plus_9 = (_interfaceItemLocalId + 1);
- String _plus_10 = (_plus_8 + Integer.valueOf(_plus_9));
- String _plus_11 = (_plus_10 + ", ");
- String _plus_12 = (_plus_11 + Integer.valueOf(idx));
- String _plus_13 = (_plus_12 + "}");
- String _plus_14 = (_plus_13 + comma);
- String _plus_15 = (_plus_14 + " /* Repl Sub Port ");
- String _name = pi.getName();
- String _plus_16 = (_plus_15 + _name);
- String _plus_17 = (_plus_16 + " idx +");
- String _plus_18 = (_plus_17 + Integer.valueOf(idx));
- String _plus_19 = (_plus_18 + "*/\n");
- result = _plus_19;
- }
- }
- return result;
- }
-
- private CharSequence generateDispatcherFile(final Root root, final SubSystemInstance ssi, final SubSystemClass ssc) {
- 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("* Dispatcher File of SubSystemClass ");
- String _name = ssc.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* - one generated dispatcher for each MessageService (Thread)");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- _builder.append("#include \"messaging/etMessageReceiver.h\"");
- _builder.newLine();
- _builder.append("#include \"debugging/etLogger.h\"");
- _builder.newLine();
- _builder.append("#include \"debugging/etMSCLogger.h\"");
- _builder.newLine();
- _builder.newLine();
- _builder.append("static void MsgDispatcher_Thread1_receiveMessage(const etMessage* msg){");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_ENTRY(\"MsgDispatcher_Thread1\", \"receiveMessage\")");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("switch(msg->address){");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- {
- EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances();
- for(final ActorInstance ai : _allContainedInstances) {
- _builder.append("\t\t");
- _builder.append("/* interface items of ");
- String _path = ai.getPath();
- _builder.append(_path, " ");
- _builder.append(" */");
- _builder.newLineIfNotEmpty();
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances = ai.getOrderedIfItemInstances();
- final Function1<InterfaceItemInstance,Boolean> _function = new Function1<InterfaceItemInstance,Boolean>() {
- public Boolean apply(final InterfaceItemInstance p) {
- ProtocolClass _protocol = p.getProtocol();
- CommunicationType _commType = _protocol.getCommType();
- boolean _equals = Objects.equal(_commType, CommunicationType.EVENT_DRIVEN);
- return Boolean.valueOf(_equals);
- }
- };
- Iterable<InterfaceItemInstance> _filter = IterableExtensions.<InterfaceItemInstance>filter(_orderedIfItemInstances, _function);
- for(final InterfaceItemInstance pi : _filter) {
- {
- boolean _isReplicated = pi.isReplicated();
- if (_isReplicated) {
- {
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- for(final InterfaceItemInstance peer : _peers) {
- _builder.append("\t\t");
- _builder.append("case ");
- int _objId = pi.getObjId();
- EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
- int _indexOf = _peers_1.indexOf(peer);
- int _plus = (_objId + _indexOf);
- _builder.append(_plus, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- {
- ProtocolClass _protocol = pi.getProtocol();
- boolean _isConjugated = this.roomExt.isConjugated(pi);
- boolean _handlesReceive = this.roomExt.handlesReceive(_protocol, _isConjugated);
- if (_handlesReceive) {
- _builder.append("\t\t");
- _builder.append("switch (msg->evtID){");
- _builder.newLine();
- {
- ProtocolClass _protocol_1 = pi.getProtocol();
- boolean _isConjugated_1 = this.roomExt.isConjugated(pi);
- List<MessageHandler> _receiveHandlers = this.roomExt.getReceiveHandlers(_protocol_1, _isConjugated_1);
- for(final MessageHandler h : _receiveHandlers) {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("case ");
- ProtocolClass _protocol_2 = pi.getProtocol();
- String _name_1 = _protocol_2.getName();
- _builder.append(_name_1, " ");
- _builder.append("_");
- Message _msg = h.getMsg();
- String _codeName = this.roomExt.getCodeName(_msg);
- _builder.append(_codeName, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t");
- ProtocolClass _protocol_3 = pi.getProtocol();
- boolean _isConjugated_2 = this.roomExt.isConjugated(pi);
- String _portClassName = this.roomExt.getPortClassName(_protocol_3, _isConjugated_2);
- _builder.append(_portClassName, " ");
- _builder.append("_");
- Message _msg_1 = h.getMsg();
- String _name_2 = _msg_1.getName();
- _builder.append(_name_2, " ");
- _builder.append("_receiveHandler((etPort *)&");
- String _path_1 = ai.getPath();
- String _pathName = this.roomExt.getPathName(_path_1);
- _builder.append(_pathName, " ");
- _builder.append("_const.");
- String _name_3 = pi.getName();
- _builder.append(_name_3, " ");
- _builder.append(".ports[");
- EList<InterfaceItemInstance> _peers_2 = pi.getPeers();
- int _indexOf_1 = _peers_2.indexOf(peer);
- _builder.append(_indexOf_1, " ");
- _builder.append("],msg,(void*)&");
- String _path_2 = ai.getPath();
- String _pathName_1 = this.roomExt.getPathName(_path_2);
- _builder.append(_pathName_1, " ");
- _builder.append(",");
- ActorClass _actorClass = ai.getActorClass();
- String _name_4 = _actorClass.getName();
- _builder.append(_name_4, " ");
- _builder.append("_receiveMessage);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("default: ");
- ActorClass _actorClass_1 = ai.getActorClass();
- String _name_5 = _actorClass_1.getName();
- _builder.append(_name_5, " ");
- _builder.append("_receiveMessage((void*)&");
- String _path_3 = ai.getPath();
- String _pathName_2 = this.roomExt.getPathName(_path_3);
- _builder.append(_pathName_2, " ");
- _builder.append(",(etPort*)&");
- String _path_4 = ai.getPath();
- String _pathName_3 = this.roomExt.getPathName(_path_4);
- _builder.append(_pathName_3, " ");
- _builder.append("_const.");
- String _name_6 = pi.getName();
- _builder.append(_name_6, " ");
- _builder.append(".ports[");
- EList<InterfaceItemInstance> _peers_3 = pi.getPeers();
- int _indexOf_2 = _peers_3.indexOf(peer);
- _builder.append(_indexOf_2, " ");
- _builder.append("], msg);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("}\t\t\t\t\t\t\t\t\t\t");
- _builder.newLine();
- } else {
- _builder.append("\t\t");
- ActorClass _actorClass_2 = ai.getActorClass();
- String _name_7 = _actorClass_2.getName();
- _builder.append(_name_7, " ");
- _builder.append("_receiveMessage((void*)&");
- String _path_5 = ai.getPath();
- String _pathName_4 = this.roomExt.getPathName(_path_5);
- _builder.append(_pathName_4, " ");
- _builder.append(",(etPort*)&");
- String _path_6 = ai.getPath();
- String _pathName_5 = this.roomExt.getPathName(_path_6);
- _builder.append(_pathName_5, " ");
- _builder.append("_const.");
- String _name_8 = pi.getName();
- _builder.append(_name_8, " ");
- _builder.append(".ports[");
- EList<InterfaceItemInstance> _peers_4 = pi.getPeers();
- int _indexOf_3 = _peers_4.indexOf(peer);
- _builder.append(_indexOf_3, " ");
- _builder.append("], msg);");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- } else {
- _builder.append("\t\t");
- _builder.append("case ");
- int _objId_1 = pi.getObjId();
- _builder.append(_objId_1, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- {
- ProtocolClass _protocol_4 = pi.getProtocol();
- boolean _isConjugated_3 = this.roomExt.isConjugated(pi);
- boolean _handlesReceive_1 = this.roomExt.handlesReceive(_protocol_4, _isConjugated_3);
- if (_handlesReceive_1) {
- _builder.append("\t\t");
- _builder.append("switch (msg->evtID){");
- _builder.newLine();
- {
- ProtocolClass _protocol_5 = pi.getProtocol();
- boolean _isConjugated_4 = this.roomExt.isConjugated(pi);
- List<MessageHandler> _receiveHandlers_1 = this.roomExt.getReceiveHandlers(_protocol_5, _isConjugated_4);
- for(final MessageHandler h_1 : _receiveHandlers_1) {
- _builder.append("\t\t");
- _builder.append("case ");
- ProtocolClass _protocol_6 = pi.getProtocol();
- String _name_9 = _protocol_6.getName();
- _builder.append(_name_9, " ");
- _builder.append("_");
- Message _msg_2 = h_1.getMsg();
- String _codeName_1 = this.roomExt.getCodeName(_msg_2);
- _builder.append(_codeName_1, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- ProtocolClass _protocol_7 = pi.getProtocol();
- boolean _isConjugated_5 = this.roomExt.isConjugated(pi);
- String _portClassName_1 = this.roomExt.getPortClassName(_protocol_7, _isConjugated_5);
- _builder.append(_portClassName_1, " ");
- _builder.append("_");
- Message _msg_3 = h_1.getMsg();
- String _name_10 = _msg_3.getName();
- _builder.append(_name_10, " ");
- _builder.append("_receiveHandler((etPort *)&");
- String _path_7 = ai.getPath();
- String _pathName_6 = this.roomExt.getPathName(_path_7);
- _builder.append(_pathName_6, " ");
- _builder.append("_const.");
- String _name_11 = pi.getName();
- _builder.append(_name_11, " ");
- _builder.append(",msg,(void*)&");
- String _path_8 = ai.getPath();
- String _pathName_7 = this.roomExt.getPathName(_path_8);
- _builder.append(_pathName_7, " ");
- _builder.append(",");
- ActorClass _actorClass_3 = ai.getActorClass();
- String _name_12 = _actorClass_3.getName();
- _builder.append(_name_12, " ");
- _builder.append("_receiveMessage);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- _builder.append("\t\t");
- _builder.append("default: ");
- ActorClass _actorClass_4 = ai.getActorClass();
- String _name_13 = _actorClass_4.getName();
- _builder.append(_name_13, " ");
- _builder.append("_receiveMessage((void*)&");
- String _path_9 = ai.getPath();
- String _pathName_8 = this.roomExt.getPathName(_path_9);
- _builder.append(_pathName_8, " ");
- _builder.append(",(etPort*)&");
- String _path_10 = ai.getPath();
- String _pathName_9 = this.roomExt.getPathName(_path_10);
- _builder.append(_pathName_9, " ");
- _builder.append("_const.");
- String _name_14 = pi.getName();
- _builder.append(_name_14, " ");
- _builder.append(", msg);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("break;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- } else {
- _builder.append("\t\t");
- ActorClass _actorClass_5 = ai.getActorClass();
- String _name_15 = _actorClass_5.getName();
- _builder.append(_name_15, " ");
- _builder.append("_receiveMessage((void*)&");
- String _path_11 = ai.getPath();
- String _pathName_10 = this.roomExt.getPathName(_path_11);
- _builder.append(_pathName_10, " ");
- _builder.append(",(etPort*)&");
- String _path_12 = ai.getPath();
- String _pathName_11 = this.roomExt.getPathName(_path_12);
- _builder.append(_pathName_11, " ");
- _builder.append("_const.");
- String _name_16 = pi.getName();
- _builder.append(_name_16, " ");
- _builder.append(", msg);");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- }
- }
- }
- }
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("default:");
- _builder.newLine();
- _builder.append("\t\t\t");
- _builder.append("etLogger_logErrorF(\"MessageService_Thread1_receiveMessage: address %d does not exist \", msg->address);");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("break;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_SYNC_EXIT");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- return _builder;
- }
-
- private CharSequence generateDatadrivenExecutes(final Root root, final SubSystemInstance ssi) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<ActorInstance> _allContainedInstances = ssi.getAllContainedInstances();
- for(final ActorInstance ai : _allContainedInstances) {
- {
- boolean _or = false;
- ActorClass _actorClass = ai.getActorClass();
- ActorCommunicationType _commType = _actorClass.getCommType();
- boolean _equals = Objects.equal(_commType, ActorCommunicationType.ASYNCHRONOUS);
- if (_equals) {
- _or = true;
- } else {
- ActorClass _actorClass_1 = ai.getActorClass();
- ActorCommunicationType _commType_1 = _actorClass_1.getCommType();
- boolean _equals_1 = Objects.equal(_commType_1, ActorCommunicationType.DATA_DRIVEN);
- _or = (_equals || _equals_1);
- }
- if (_or) {
- ActorClass _actorClass_2 = ai.getActorClass();
- String _name = _actorClass_2.getName();
- _builder.append(_name, "");
- _builder.append("_execute(&");
- String _path = ai.getPath();
- String _pathName = this.roomExt.getPathName(_path);
- _builder.append(_pathName, "");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- return _builder;
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/SubSystemRunnerGen.java b/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/SubSystemRunnerGen.java
deleted file mode 100644
index a1a5d02..0000000
--- a/plugins/org.eclipse.etrice.generator.c/xtend-gen/org/eclipse/etrice/generator/c/gen/SubSystemRunnerGen.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package org.eclipse.etrice.generator.c.gen;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
-import org.eclipse.etrice.core.room.SubSystemClass;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-
-@Singleton
-@SuppressWarnings("all")
-public class SubSystemRunnerGen {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private RoomExtensions roomExt;
-
- public void doGenerate(final Root root) {
- EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
- for (final SubSystemInstance sc : _subSystemInstances) {
- {
- SubSystemClass _subSystemClass = sc.getSubSystemClass();
- String _generationTargetPath = this.roomExt.getGenerationTargetPath(_subSystemClass);
- SubSystemClass _subSystemClass_1 = sc.getSubSystemClass();
- String _path = this.roomExt.getPath(_subSystemClass_1);
- String _plus = (_generationTargetPath + _path);
- this.fileAccess.setOutputPath(_plus);
- String _name = sc.getName();
- String _plus_1 = (_name + "_Runner.c");
- SubSystemClass _subSystemClass_2 = sc.getSubSystemClass();
- CharSequence _generateSourceFile = this.generateSourceFile(root, sc, _subSystemClass_2);
- this.fileAccess.generateFile(_plus_1, _generateSourceFile);
- }
- }
- }
-
- public CharSequence generateSourceFile(final Root root, final SubSystemInstance ssi, final SubSystemClass ssc) {
- 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 = ssi.getName();
- _builder.append(_name, " ");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("* it instantiates ");
- String _name_1 = ssi.getName();
- _builder.append(_name_1, " ");
- _builder.append(" and starts and ends the lifecycle");
- _builder.newLineIfNotEmpty();
- _builder.append(" ");
- _builder.append("*/");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- _builder.append("#include \"");
- String _name_2 = ssi.getName();
- _builder.append(_name_2, "");
- _builder.append(".h\"");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("#include \"debugging/etLogger.h\"");
- _builder.newLine();
- _builder.append("#include \"debugging/etMSCLogger.h\"");
- _builder.newLine();
- _builder.append("#include \"platform/etPlatform.h\"");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- _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.newLine();
- _builder.append("int main(void) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etUserEntry(); /* platform specific */");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etLogger_logInfo(\"*** T H E B E G I N ***\");");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_OPEN(\"main\");");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* startup sequence of lifecycle */");
- _builder.newLine();
- _builder.append("\t");
- String _name_3 = ssi.getName();
- _builder.append(_name_3, " ");
- _builder.append("_init(); \t\t/* lifecycle init */");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _name_4 = ssi.getName();
- _builder.append(_name_4, " ");
- _builder.append("_start(); \t/* lifecycle start */");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etUserPreRun(); /* platform specific */");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* run Scheduler */");
- _builder.newLine();
- _builder.append("\t");
- String _name_5 = ssi.getName();
- _builder.append(_name_5, " ");
- _builder.append("_run();");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etUserPostRun(); /* platform specific */");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("/* shutdown sequence of lifecycle */");
- _builder.newLine();
- _builder.append("\t");
- String _name_6 = ssi.getName();
- _builder.append(_name_6, " ");
- _builder.append("_stop(); \t\t/* lifecycle stop */");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _name_7 = ssi.getName();
- _builder.append(_name_7, " ");
- _builder.append("_destroy(); \t/* lifecycle destroy */");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ET_MSC_LOGGER_CLOSE");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etLogger_logInfo(\"*** T H E E N D ***\");");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("etUserExit(); /* platform specific */");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("return 0;");
- _builder.newLine();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- return _builder;
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/DocGen.java b/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/DocGen.java
deleted file mode 100644
index ce99ce1..0000000
--- a/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/DocGen.java
+++ /dev/null
@@ -1,1053 +0,0 @@
-package org.eclipse.etrice.generator.doc.gen;
-
-import com.google.common.base.Objects;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.io.File;
-import java.util.Arrays;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.ChoicePoint;
-import org.eclipse.etrice.core.room.CompoundProtocolClass;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.DataType;
-import org.eclipse.etrice.core.room.Documentation;
-import org.eclipse.etrice.core.room.GeneralProtocolClass;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.StandardOperation;
-import org.eclipse.etrice.core.room.State;
-import org.eclipse.etrice.core.room.StateGraph;
-import org.eclipse.etrice.core.room.SubProtocol;
-import org.eclipse.etrice.core.room.SubSystemClass;
-import org.eclipse.etrice.core.room.VarDecl;
-import org.eclipse.etrice.core.room.util.RoomHelpers;
-import org.eclipse.etrice.generator.base.IRoomGenerator;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@Singleton
-@SuppressWarnings("all")
-public class DocGen implements IRoomGenerator {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private RoomExtensions roomExt;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<RoomModel> _models = root.getModels();
- for (final RoomModel model : _models) {
- {
- String path = this.roomExt.getDocGenerationTargetPath(model);
- String _name = model.getName();
- String file = (_name + ".tex");
- String _plus = ("generating LaTeX documentation: \'" + file);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- this.fileAccess.setOutputPath(path);
- CharSequence _generateModelDoc = this.generateModelDoc(root, model);
- this.fileAccess.generateFile(file, _generateModelDoc);
- }
- }
- }
-
- public CharSequence generateModelDoc(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\documentclass[titlepage]{article}");
- _builder.newLine();
- _builder.append("\\usepackage{graphicx}");
- _builder.newLine();
- _builder.append("\\usepackage[a4paper,text={160mm,255mm},centering,headsep=5mm,footskip=10mm]{geometry}");
- _builder.newLine();
- _builder.append("\\usepackage{nonfloat}");
- _builder.newLine();
- _builder.append("\\parindent 0pt");
- _builder.newLine();
- _builder.append("\\makeatletter");
- _builder.newLine();
- _builder.append("\\newcommand\\level[1]{%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\ifcase#1\\relax\\expandafter\\chapter\\or");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\expandafter\\section\\or");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\expandafter\\subsection\\or");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\expandafter\\subsubsection\\else");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\next{\\@level{#1}}\\expandafter\\next");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\fi}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\newcommand{\\@level}[1]{%");
- _builder.newLine();
- _builder.append("\\@startsection{level#1}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{#1}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{\\z@}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{-3.25ex\\@plus -1ex \\@minus -.2ex}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{1.5ex \\@plus .2ex}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{\\normalfont\\normalsize\\bfseries}}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\newdimen\\@leveldim");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\newdimen\\@dotsdim");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{\\normalfont\\normalsize");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\sbox\\z@{0}\\global\\@leveldim=\\wd\\z@");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\sbox\\z@{.}\\global\\@dotsdim=\\wd\\z@");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("} ");
- _builder.newLine();
- _builder.append("\\newcounter{level4}[subsubsection]");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\@namedef{thelevel4}{\\thesubsubsection.\\arabic{level4}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\@namedef{level4mark}#1{}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\l@section{\\@dottedtocline{1}{0pt}{\\dimexpr\\@leveldim*4+\\@dotsdim*1+6pt\\relax}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\l@subsection{\\@dottedtocline{2}{0pt}{\\dimexpr\\@leveldim*5+\\@dotsdim*2+6pt\\relax}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\l@subsubsection{\\@dottedtocline{3}{0pt}{\\dimexpr\\@leveldim*6+\\@dotsdim*3+6pt\\relax}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\@namedef{l@level4}{\\@dottedtocline{4}{0pt}{\\dimexpr\\@leveldim*7+\\@dotsdim*4+6pt\\relax}}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\count@=4");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\def\\@ncp#1{\\number\\numexpr\\count@+#1\\relax}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\loop\\ifnum\\count@<100");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\begingroup\\edef\\x{\\endgroup");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\newcounter{level\\@ncp{1}}[level\\number\\count@]");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\@namedef{thelevel\\@ncp{1}}{%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\@nameuse{thelevel\\@ncp{0}}.\\noexpand\\arabic{level\\@ncp{0}}}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\@namedef{level\\@ncp{1}mark}####1{}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\noexpand\\@namedef{l@level\\@ncp{1}}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("{\\noexpand\\@dottedtocline{\\@ncp{1}}{0pt}{\\the\\dimexpr\\@leveldim*\\@ncp{5}+\\@dotsdim*\\@ncp{0}\\relax}}}%");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\x");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\advance\\count@\\@ne");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\repeat");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\makeatother");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\setcounter{secnumdepth}{100}");
- _builder.newLine();
- _builder.append(" ");
- _builder.append("\\setcounter{tocdepth}{100}");
- _builder.newLine();
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\title{");
- String _name = model.getName();
- _builder.append(_name, "");
- _builder.append(" Modeldocumentation}");
- _builder.newLineIfNotEmpty();
- _builder.append("\\date{\\today}");
- _builder.newLine();
- _builder.append("\\author{generated by eTrice}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\begin{document}");
- _builder.newLine();
- _builder.append("\\pagestyle{plain}");
- _builder.newLine();
- _builder.append("\\maketitle");
- _builder.newLine();
- _builder.append("\\tableofcontents");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\newpage");
- _builder.newLine();
- _builder.append("\\listoffigures");
- _builder.newLine();
- _builder.append("\\newpage");
- _builder.newLine();
- _builder.append("\\section{Model Description}");
- _builder.newLine();
- Documentation _docu = model.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu);
- _builder.append(_generateDocText, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Subsystem Description}");
- _builder.newLine();
- CharSequence _generateAllSubSysClassDocs = this.generateAllSubSysClassDocs(root, model);
- _builder.append(_generateAllSubSysClassDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Protocol Class Description}");
- _builder.newLine();
- CharSequence _generateAllProtocolClassDocs = this.generateAllProtocolClassDocs(root, model);
- _builder.append(_generateAllProtocolClassDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Data Class Description}");
- _builder.newLine();
- CharSequence _generateAllDataClassDocs = this.generateAllDataClassDocs(root, model);
- _builder.append(_generateAllDataClassDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\section{Actor Class Description}");
- _builder.newLine();
- CharSequence _generateAllActorClassDocs = this.generateAllActorClassDocs(root, model);
- _builder.append(_generateAllActorClassDocs, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\end{document}");
- _builder.newLine();
- return _builder;
- }
-
- public CharSequence generateAllSubSysClassDocs(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<SubSystemClass> _subSystemClasses = model.getSubSystemClasses();
- for(final SubSystemClass ssc : _subSystemClasses) {
- CharSequence _generateSubSysClassDoc = this.generateSubSysClassDoc(root, model, ssc);
- _builder.append(_generateSubSysClassDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- public CharSequence generateSubSysClassDoc(final Root root, final RoomModel model, final SubSystemClass ssc) {
- CharSequence _xblockexpression = null;
- {
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String _plus = (_docGenerationTargetPath + "images\\");
- String _name = ssc.getName();
- String _plus_1 = (_plus + _name);
- String filename = (_plus_1 + "_structure.jpg");
- String _replaceAll = filename.replaceAll("\\\\", "/");
- filename = _replaceAll;
- String latexFilename = filename.replaceAll("/", "//");
- String _docGenerationTargetPath_1 = this.roomExt.getDocGenerationTargetPath(model);
- String _plus_2 = (_docGenerationTargetPath_1 + "images\\");
- String _name_1 = ssc.getName();
- String _plus_3 = (_plus_2 + _name_1);
- String filenamei = (_plus_3 + "_instanceTree.jpg");
- String _replaceAll_1 = filenamei.replaceAll("\\\\", "/");
- filenamei = _replaceAll_1;
- String latexFilenamei = filenamei.replaceAll("/", "//");
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\level{2}{");
- String _name_2 = ssc.getName();
- _builder.append(_name_2, "");
- _builder.append("}");
- _builder.newLineIfNotEmpty();
- Documentation _docu = ssc.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu);
- _builder.append(_generateDocText, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\level{3}{Structure}");
- _builder.newLine();
- {
- String _fileExists = this.fileExists(filename);
- boolean _equals = _fileExists.equals("true");
- if (_equals) {
- String _name_3 = ssc.getName();
- String _plus_4 = (_name_3 + " Structure");
- CharSequence _includeGraphics = this.includeGraphics(latexFilename, "0.4", _plus_4);
- _builder.append(_includeGraphics, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\\level{3}{Instance Tree}");
- _builder.newLine();
- {
- String _fileExists_1 = this.fileExists(filename);
- boolean _equals_1 = _fileExists_1.equals("true");
- if (_equals_1) {
- String _name_4 = ssc.getName();
- String _plus_5 = (_name_4 + " Instance Tree");
- CharSequence _includeGraphics_1 = this.includeGraphics(latexFilenamei, "0.5", _plus_5);
- _builder.append(_includeGraphics_1, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public CharSequence generateAllDataClassDocs(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<DataClass> _dataClasses = model.getDataClasses();
- for(final DataClass dc : _dataClasses) {
- CharSequence _generateDataClassDoc = this.generateDataClassDoc(root, dc);
- _builder.append(_generateDataClassDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- public CharSequence generateDataClassDoc(final Root root, final DataClass dc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\level{2} {");
- String _name = dc.getName();
- _builder.append(_name, "");
- _builder.append("}");
- _builder.newLineIfNotEmpty();
- Documentation _docu = dc.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu);
- _builder.append(_generateDocText, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\level{3}{Attributes}");
- _builder.newLine();
- EList<Attribute> _attributes = dc.getAttributes();
- CharSequence _generateAttributesDoc = this.generateAttributesDoc(_attributes);
- _builder.append(_generateAttributesDoc, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\\level{3}{Operations}");
- _builder.newLine();
- EList<StandardOperation> _operations = dc.getOperations();
- CharSequence _generateOperationsDoc = this.generateOperationsDoc(_operations);
- _builder.append(_generateOperationsDoc, "");
- _builder.newLineIfNotEmpty();
- return _builder;
- }
-
- public CharSequence generateAllProtocolClassDocs(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<GeneralProtocolClass> _protocolClasses = model.getProtocolClasses();
- for(final GeneralProtocolClass pc : _protocolClasses) {
- CharSequence _generateProtocolClassDoc = this.generateProtocolClassDoc(root, pc);
- _builder.append(_generateProtocolClassDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- protected CharSequence _generateProtocolClassDoc(final Root root, final ProtocolClass pc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\t");
- _builder.append("\\level{2} {");
- String _name = pc.getName();
- _builder.append(_name, " ");
- _builder.append("}");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- Documentation _docu = pc.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu);
- _builder.append(_generateDocText, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\\level{3}{Incoming Messages}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\begin{tabular}[ht]{|l|l|l|}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("Message & Data & Description\\\\");
- _builder.newLine();
- {
- List<Message> _allIncomingMessages = this.roomExt.getAllIncomingMessages(pc);
- for(final Message ims : _allIncomingMessages) {
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- String _name_1 = ims.getName();
- _builder.append(_name_1, " ");
- _builder.append(" & ");
- {
- VarDecl _data = ims.getData();
- boolean _notEquals = (!Objects.equal(_data, null));
- if (_notEquals) {
- _builder.append(" ");
- VarDecl _data_1 = ims.getData();
- String _name_2 = _data_1.getName();
- _builder.append(_name_2, " ");
- _builder.append(" ");
- }
- }
- _builder.append(" & ");
- Documentation _docu_1 = ims.getDocu();
- CharSequence _generateDocText_1 = this.generateDocText(_docu_1);
- _builder.append(_generateDocText_1, " ");
- _builder.append("\\\\");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\end{tabular}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\level{3}{Outgoing Messages}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\begin{tabular}[ht]{|l|l|l|}");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("Message & Data & Description\\\\");
- _builder.newLine();
- {
- List<Message> _allOutgoingMessages = this.roomExt.getAllOutgoingMessages(pc);
- for(final Message oms : _allOutgoingMessages) {
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- String _name_3 = oms.getName();
- _builder.append(_name_3, " ");
- _builder.append(" & ");
- {
- VarDecl _data_2 = oms.getData();
- boolean _notEquals_1 = (!Objects.equal(_data_2, null));
- if (_notEquals_1) {
- _builder.append(" ");
- VarDecl _data_3 = oms.getData();
- String _name_4 = _data_3.getName();
- _builder.append(_name_4, " ");
- _builder.append(" ");
- }
- }
- _builder.append(" & ");
- Documentation _docu_2 = oms.getDocu();
- CharSequence _generateDocText_2 = this.generateDocText(_docu_2);
- _builder.append(_generateDocText_2, " ");
- _builder.append("\\\\");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\\end{tabular}\t\t\t");
- _builder.newLine();
- return _builder;
- }
-
- protected CharSequence _generateProtocolClassDoc(final Root root, final CompoundProtocolClass pc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\level{2} {");
- String _name = pc.getName();
- _builder.append(_name, "");
- _builder.append("}");
- _builder.newLineIfNotEmpty();
- Documentation _docu = pc.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu);
- _builder.append(_generateDocText, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\level{3}{Sub Protocols}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("\\begin{tabular}[ht]{|l|l|}");
- _builder.newLine();
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("Name & Protocol\\\\");
- _builder.newLine();
- {
- EList<SubProtocol> _subProtocols = pc.getSubProtocols();
- for(final SubProtocol sub : _subProtocols) {
- _builder.append("\\hline");
- _builder.newLine();
- String _name_1 = sub.getName();
- _builder.append(_name_1, "");
- _builder.append(" & ");
- GeneralProtocolClass _protocol = sub.getProtocol();
- String _name_2 = _protocol.getName();
- _builder.append(_name_2, "");
- _builder.append("\\\\");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\\end{tabular}");
- _builder.newLine();
- return _builder;
- }
-
- public CharSequence generateAllActorClassDocs(final Root root, final RoomModel model) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<ActorClass> _actorClasses = model.getActorClasses();
- for(final ActorClass ac : _actorClasses) {
- CharSequence _generateActorClassDoc = this.generateActorClassDoc(root, model, ac);
- _builder.append(_generateActorClassDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- public CharSequence generateActorClassDoc(final Root root, final RoomModel model, final ActorClass ac) {
- CharSequence _xblockexpression = null;
- {
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String _plus = (_docGenerationTargetPath + "images\\");
- String _name = ac.getName();
- String _plus_1 = (_plus + _name);
- String filename = (_plus_1 + "_structure.jpg");
- String _replaceAll = filename.replaceAll("\\\\", "/");
- filename = _replaceAll;
- String latexFilename = filename.replaceAll("/", "//");
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\level{2}{");
- String _name_1 = ac.getName();
- _builder.append(_name_1, "");
- _builder.append("}");
- _builder.newLineIfNotEmpty();
- Documentation _docu = ac.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu);
- _builder.append(_generateDocText, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\level{3}{Structure}");
- _builder.newLine();
- _builder.newLine();
- {
- String _fileExists = this.fileExists(filename);
- boolean _equals = _fileExists.equals("true");
- if (_equals) {
- String _name_2 = ac.getName();
- String _plus_2 = (_name_2 + " Structure");
- CharSequence _includeGraphics = this.includeGraphics(latexFilename, "0.4", _plus_2);
- _builder.append(_includeGraphics, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("\\level{3}{Attributes}");
- _builder.newLine();
- EList<Attribute> _attributes = ac.getAttributes();
- CharSequence _generateAttributesDoc = this.generateAttributesDoc(_attributes);
- _builder.append(_generateAttributesDoc, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\\level{3}{Operations}");
- _builder.newLine();
- EList<StandardOperation> _operations = ac.getOperations();
- CharSequence _generateOperationsDoc = this.generateOperationsDoc(_operations);
- _builder.append(_generateOperationsDoc, "");
- _builder.newLineIfNotEmpty();
- {
- boolean _hasNonEmptyStateMachine = RoomHelpers.hasNonEmptyStateMachine(ac);
- if (_hasNonEmptyStateMachine) {
- _builder.append("\\level{3}{Statemachine}");
- _builder.newLine();
- CharSequence _generateFsmDoc = this.generateFsmDoc(model, ac);
- _builder.append(_generateFsmDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public CharSequence generateFsmDoc(final RoomModel model, final ActorClass ac) {
- CharSequence _xblockexpression = null;
- {
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String _plus = (_docGenerationTargetPath + "images\\");
- String _name = ac.getName();
- String _plus_1 = (_plus + _name);
- String filename = (_plus_1 + "_behavior.jpg");
- String _replaceAll = filename.replaceAll("\\\\", "/");
- filename = _replaceAll;
- String latexFilename = filename.replaceAll("/", "//");
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\level{4}{Top Level}");
- _builder.newLine();
- {
- String _fileExists = this.fileExists(filename);
- boolean _equals = _fileExists.equals("true");
- if (_equals) {
- String _name_1 = ac.getName();
- String _plus_2 = (_name_1 + " Top State");
- CharSequence _includeGraphics = this.includeGraphics(latexFilename, "0.4", _plus_2);
- _builder.append(_includeGraphics, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("\\begin{par}");
- _builder.newLine();
- {
- StateGraph _stateMachine = ac.getStateMachine();
- EList<State> _states = _stateMachine.getStates();
- for(final State s : _states) {
- {
- Documentation _docu = s.getDocu();
- boolean _notEquals = (!Objects.equal(_docu, null));
- if (_notEquals) {
- _builder.append("\\textbf{State description} \\textit{");
- String _statePathName = this.roomExt.getStatePathName(s);
- String _replaceAll_1 = _statePathName.replaceAll("_", "\\\\_");
- _builder.append(_replaceAll_1, "");
- _builder.append("}:");
- _builder.newLineIfNotEmpty();
- _builder.append("\\newline");
- _builder.newLine();
- Documentation _docu_1 = s.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu_1);
- _builder.append(_generateDocText, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\newline\\newline");
- _builder.newLine();
- }
- }
- }
- }
- _builder.newLine();
- {
- StateGraph _stateMachine_1 = ac.getStateMachine();
- EList<ChoicePoint> _chPoints = _stateMachine_1.getChPoints();
- for(final ChoicePoint c : _chPoints) {
- {
- Documentation _docu_2 = c.getDocu();
- boolean _notEquals_1 = (!Objects.equal(_docu_2, null));
- if (_notEquals_1) {
- _builder.append("\\textbf{Choicepoint description} \\textit{");
- String _name_2 = c.getName();
- _builder.append(_name_2, "");
- _builder.append("}:");
- _builder.newLineIfNotEmpty();
- _builder.append("\\newline");
- _builder.newLine();
- Documentation _docu_3 = c.getDocu();
- CharSequence _generateDocText_1 = this.generateDocText(_docu_3);
- _builder.append(_generateDocText_1, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\newline\\newline");
- _builder.newLine();
- }
- }
- }
- }
- _builder.append("\\end{par}");
- _builder.newLine();
- _builder.newLine();
- {
- StateGraph _stateMachine_2 = ac.getStateMachine();
- EList<State> _states_1 = _stateMachine_2.getStates();
- for(final State s_1 : _states_1) {
- {
- boolean _isLeaf = this.roomExt.isLeaf(s_1);
- boolean _not = (!_isLeaf);
- if (_not) {
- CharSequence _generateStateDoc = this.generateStateDoc(model, ac, s_1);
- _builder.append(_generateStateDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public CharSequence generateStateDoc(final RoomModel model, final ActorClass ac, final State state) {
- CharSequence _xblockexpression = null;
- {
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String _plus = (_docGenerationTargetPath + "images\\");
- String _name = ac.getName();
- String _plus_1 = (_plus + _name);
- String _plus_2 = (_plus_1 + "_");
- String _statePathName = this.roomExt.getStatePathName(state);
- String _plus_3 = (_plus_2 + _statePathName);
- String filename = (_plus_3 + "_behavior.jpg");
- String _replaceAll = filename.replaceAll("\\\\", "/");
- filename = _replaceAll;
- String latexFilename = filename.replaceAll("/", "//");
- String _plus_4 = ("Gen Filename: " + filename);
- this.logger.logInfo(_plus_4);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\level{4}{Subgraph ");
- String _statePathName_1 = this.roomExt.getStatePathName(state);
- String _replaceAll_1 = _statePathName_1.replaceAll("_", "\\\\_");
- _builder.append(_replaceAll_1, "");
- _builder.append("}");
- _builder.newLineIfNotEmpty();
- {
- String _fileExists = this.fileExists(filename);
- boolean _equals = _fileExists.equals("true");
- if (_equals) {
- String _name_1 = ac.getName();
- String _plus_5 = (_name_1 + "_");
- String _statePathName_2 = this.roomExt.getStatePathName(state);
- String _plus_6 = (_plus_5 + _statePathName_2);
- CharSequence _includeGraphics = this.includeGraphics(latexFilename, "0.4", _plus_6);
- _builder.append(_includeGraphics, "");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- _builder.append("\\begin{par}");
- _builder.newLine();
- {
- StateGraph _subgraph = state.getSubgraph();
- EList<State> _states = _subgraph.getStates();
- for(final State s : _states) {
- {
- Documentation _docu = s.getDocu();
- boolean _notEquals = (!Objects.equal(_docu, null));
- if (_notEquals) {
- _builder.append("\\textbf{State description} \\textit{");
- String _statePathName_3 = this.roomExt.getStatePathName(s);
- String _replaceAll_2 = _statePathName_3.replaceAll("_", "\\\\_");
- _builder.append(_replaceAll_2, "");
- _builder.append("}:");
- _builder.newLineIfNotEmpty();
- _builder.append("\\newline");
- _builder.newLine();
- Documentation _docu_1 = s.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu_1);
- _builder.append(_generateDocText, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\newline\\newline");
- _builder.newLine();
- }
- }
- }
- }
- _builder.newLine();
- {
- StateGraph _subgraph_1 = state.getSubgraph();
- EList<ChoicePoint> _chPoints = _subgraph_1.getChPoints();
- for(final ChoicePoint c : _chPoints) {
- {
- Documentation _docu_2 = c.getDocu();
- boolean _notEquals_1 = (!Objects.equal(_docu_2, null));
- if (_notEquals_1) {
- _builder.append("\\textbf{Choicepoint description} \\textit{");
- String _name_2 = c.getName();
- _builder.append(_name_2, "");
- _builder.append("}:");
- _builder.newLineIfNotEmpty();
- _builder.append("\\newline");
- _builder.newLine();
- Documentation _docu_3 = c.getDocu();
- CharSequence _generateDocText_1 = this.generateDocText(_docu_3);
- _builder.append(_generateDocText_1, "");
- _builder.newLineIfNotEmpty();
- _builder.append("\\newline\\newline");
- _builder.newLine();
- }
- }
- }
- }
- _builder.append("\\end{par}");
- _builder.newLine();
- _builder.append("\t");
- _builder.newLine();
- {
- StateGraph _subgraph_2 = state.getSubgraph();
- EList<State> _states_1 = _subgraph_2.getStates();
- for(final State s_1 : _states_1) {
- {
- boolean _isLeaf = this.roomExt.isLeaf(s_1);
- boolean _not = (!_isLeaf);
- if (_not) {
- CharSequence _generateStateDoc = this.generateStateDoc(model, ac, s_1);
- _builder.append(_generateStateDoc, "");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public CharSequence generateAttributesDoc(final List<Attribute> attributes) {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _isEmpty = attributes.isEmpty();
- boolean _not = (!_isEmpty);
- if (_not) {
- _builder.append("\\begin{tabular}[ht]{|l|l|l|}");
- _builder.newLine();
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("Name & Type & Description\\\\");
- _builder.newLine();
- {
- for(final Attribute at : attributes) {
- _builder.append("\\hline");
- _builder.newLine();
- String _name = at.getName();
- _builder.append(_name, "");
- _builder.append(" & ");
- RefableType _refType = at.getRefType();
- DataType _type = _refType.getType();
- String _name_1 = _type.getName();
- _builder.append(_name_1, "");
- _builder.append(" & ");
- Documentation _docu = at.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu);
- _builder.append(_generateDocText, "");
- _builder.append("\\\\");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\\end{tabular}");
- _builder.newLine();
- }
- }
- return _builder;
- }
-
- public CharSequence generateOperationsDoc(final List<StandardOperation> operations) {
- StringConcatenation _builder = new StringConcatenation();
- {
- for(final StandardOperation op : operations) {
- _builder.append("\\begin{tabular}[ht]{|l|l|}");
- _builder.newLine();
- _builder.append("\\hline\t\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("Name: & ");
- String _name = op.getName();
- _builder.append(_name, " ");
- _builder.append("\\\\");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("ReturnType: & ");
- {
- RefableType _returntype = op.getReturntype();
- boolean _notEquals = (!Objects.equal(_returntype, null));
- if (_notEquals) {
- RefableType _returntype_1 = op.getReturntype();
- DataType _type = _returntype_1.getType();
- String _name_1 = _type.getName();
- _builder.append(_name_1, " ");
- } else {
- _builder.append("void");
- }
- }
- _builder.append("\\\\");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("Arguments: & ");
- {
- EList<VarDecl> _arguments = op.getArguments();
- boolean _hasElements = false;
- for(final VarDecl pa : _arguments) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(", ", " ");
- }
- String _name_2 = pa.getName();
- _builder.append(_name_2, " ");
- _builder.append(":");
- RefableType _refType = pa.getRefType();
- DataType _type_1 = _refType.getType();
- String _name_3 = _type_1.getName();
- _builder.append(_name_3, " ");
- }
- }
- _builder.append("\\\\");
- _builder.newLineIfNotEmpty();
- {
- Documentation _docu = op.getDocu();
- boolean _notEquals_1 = (!Objects.equal(_docu, null));
- if (_notEquals_1) {
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- {
- Documentation _docu_1 = op.getDocu();
- String _string = _docu_1.toString();
- int _length = _string.length();
- boolean _greaterThan = (_length > 85);
- if (_greaterThan) {
- _builder.append("\t");
- _builder.append("\\multicolumn{2} {|p{13cm}|} {");
- Documentation _docu_2 = op.getDocu();
- CharSequence _generateDocText = this.generateDocText(_docu_2);
- _builder.append(_generateDocText, " ");
- _builder.append("}\\\\");
- _builder.newLineIfNotEmpty();
- } else {
- _builder.append("\t");
- _builder.append("\\multicolumn{2} {|l|} {");
- Documentation _docu_3 = op.getDocu();
- CharSequence _generateDocText_1 = this.generateDocText(_docu_3);
- _builder.append(_generateDocText_1, " ");
- _builder.append("}\\\\");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("\t");
- _builder.append("\\hline");
- _builder.newLine();
- _builder.append("\\end{tabular}");
- _builder.newLine();
- _builder.append("\\newline\\newline\\newline");
- _builder.newLine();
- }
- }
- return _builder;
- }
-
- public CharSequence generateDocText(final Documentation doc) {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _notEquals = (!Objects.equal(doc, null));
- if (_notEquals) {
- EList<String> _text = doc.getText();
- String _join = IterableExtensions.join(_text);
- _builder.append(_join, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- public String fileExists(final String f) {
- File _file = new File(f);
- final File file = _file;
- final boolean exist = file.exists();
- boolean _equals = (exist == true);
- if (_equals) {
- String _plus = ("File found ! " + f);
- this.logger.logInfo(_plus);
- return "true";
- } else {
- String _plus_1 = ("File not found ! " + f);
- this.logger.logInfo(_plus_1);
- return "false";
- }
- }
-
- public CharSequence includeGraphics(final String filename, final String scale, final String caption) {
- CharSequence _xblockexpression = null;
- {
- String latexCaption = caption.replaceAll("_", "\\\\_");
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("\\begin{center}");
- _builder.newLine();
- _builder.append("\\includegraphics[scale=");
- _builder.append(scale, "");
- _builder.append("]{");
- _builder.append(filename, "");
- _builder.append("}");
- _builder.newLineIfNotEmpty();
- _builder.append("\\figcaption{");
- _builder.append(latexCaption, "");
- _builder.append("}");
- _builder.newLineIfNotEmpty();
- _builder.append("\\end{center}");
- _builder.newLine();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public String irgendwas(final Root root, final ActorClass ac) {
- String _name = ac.getName();
- return (_name + ".bla");
- }
-
- public CharSequence generateProtocolClassDoc(final Root root, final GeneralProtocolClass pc) {
- if (pc instanceof CompoundProtocolClass) {
- return _generateProtocolClassDoc(root, (CompoundProtocolClass)pc);
- } else if (pc instanceof ProtocolClass) {
- return _generateProtocolClassDoc(root, (ProtocolClass)pc);
- } else {
- throw new IllegalArgumentException("Unhandled parameter types: " +
- Arrays.<Object>asList(root, pc).toString());
- }
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/InstanceDiagramGen.java b/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/InstanceDiagramGen.java
deleted file mode 100644
index fd37ab8..0000000
--- a/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/InstanceDiagramGen.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package org.eclipse.etrice.generator.doc.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.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.genmodel.etricegen.StructureInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.SubSystemClass;
-import org.eclipse.etrice.generator.base.IRoomGenerator;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.Exceptions;
-
-@Singleton
-@SuppressWarnings("all")
-public class InstanceDiagramGen implements IRoomGenerator {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private RoomExtensions roomExt;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<RoomModel> _models = root.getModels();
- for (final RoomModel model : _models) {
- {
- String _docGenerationTargetPath = this.roomExt.getDocGenerationTargetPath(model);
- String path = (_docGenerationTargetPath + "/images");
- this.fileAccess.setOutputPath(path);
- String file2 = "dot2jpg.bat";
- EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
- for (final SubSystemInstance sc : _subSystemInstances) {
- {
- String _name = sc.getName();
- String file = (_name + "_instanceTree.dot");
- String _plus = ("generating LaTeX documentation: \'" + file);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- SubSystemClass _subSystemClass = sc.getSubSystemClass();
- CharSequence _generate = this.generate(root, sc, _subSystemClass);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- CharSequence _generate2jpg = this.generate2jpg(root);
- this.fileAccess.generateFile(file2, _generate2jpg);
- this.runDot2Jpg();
- }
- }
- }
-
- public CharSequence generate2jpg(final Root root) {
- StringConcatenation _builder = new StringConcatenation();
- {
- EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
- for(final SubSystemInstance sc : _subSystemInstances) {
- _builder.append("dot -Tjpg -o ");
- String _name = sc.getName();
- _builder.append(_name, "");
- _builder.append("_instanceTree.jpg ");
- String _name_1 = sc.getName();
- _builder.append(_name_1, "");
- _builder.append("_instanceTree.dot");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- public CharSequence generate(final Root root, final SubSystemInstance ssi, final SubSystemClass ssc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("digraph ");
- String _name = ssi.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 = ssi.getPath();
- String _pathName = this.roomExt.getPathName(_path);
- _builder.append(_pathName, " ");
- _builder.append(" [label=\"");
- String _name_1 = ssc.getName();
- _builder.append(_name_1, " ");
- _builder.append("\\n(");
- String _name_2 = ssi.getName();
- _builder.append(_name_2, " ");
- _builder.append(")\" style=filled color=yellow];");
- _builder.newLineIfNotEmpty();
- {
- EList<ActorInstance> _instances = ssi.getInstances();
- for(final ActorInstance ai : _instances) {
- _builder.append("\t");
- CharSequence _instance = this.instance(ai);
- _builder.append(_instance, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("}");
- _builder.newLine();
- return _builder;
- }
-
- public CharSequence 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.roomExt.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.roomExt.getPathName(_path_1);
- _builder.append(_pathName_1, "");
- _builder.append(" -> ");
- String _path_2 = ai.getPath();
- String _pathName_2 = this.roomExt.getPathName(_path_2);
- _builder.append(_pathName_2, "");
- _builder.append("; ");
- _builder.newLineIfNotEmpty();
- {
- EList<ActorInstance> _instances = ai.getInstances();
- for(final ActorInstance sub_ai : _instances) {
- CharSequence _instance = this.instance(sub_ai);
- _builder.append(_instance, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- public Process runDot2Jpg() {
- Process _xtrycatchfinallyexpression = null;
- try {
- Runtime _runtime = Runtime.getRuntime();
- Process _exec = _runtime.exec("dot2jpg.bat");
- _xtrycatchfinallyexpression = _exec;
- } catch (final Throwable _t) {
- if (_t instanceof Exception) {
- final Exception e = (Exception)_t;
- e.printStackTrace();
- } else {
- throw Exceptions.sneakyThrow(_t);
- }
- }
- return _xtrycatchfinallyexpression;
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/MainGen.java b/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/MainGen.java
deleted file mode 100644
index 28eaa6e..0000000
--- a/plugins/org.eclipse.etrice.generator.doc/xtend-gen/org/eclipse/etrice/generator/doc/gen/MainGen.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.eclipse.etrice.generator.doc.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.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.generator.doc.gen.DocGen;
-import org.eclipse.etrice.generator.doc.gen.InstanceDiagramGen;
-import org.eclipse.etrice.generator.generic.PrepareFileSystem;
-import org.eclipse.xtext.generator.IFileSystemAccess;
-import org.eclipse.xtext.generator.IGenerator;
-
-@Singleton
-@SuppressWarnings("all")
-public class MainGen implements IGenerator {
- @Inject
- private InstanceDiagramGen instanceDiagramGen;
-
- @Inject
- private PrepareFileSystem prepFS;
-
- @Inject
- private DocGen docGen;
-
- 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.instanceDiagramGen.doGenerate(e);
- this.docGen.doGenerate(e);
- }
-}
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
deleted file mode 100644
index 3671821..0000000
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ActorClassGen.java
+++ /dev/null
@@ -1,592 +0,0 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.common.base.Objects;
-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.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-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.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.StandardOperation;
-import org.eclipse.etrice.core.room.util.RoomHelpers;
-import org.eclipse.etrice.generator.base.AbstractGenerator;
-import org.eclipse.etrice.generator.generic.GenericActorClassGenerator;
-import org.eclipse.etrice.generator.generic.ProcedureHelpers;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.etrice.generator.java.gen.JavaExtensions;
-import org.eclipse.etrice.generator.java.gen.StateMachineGen;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@Singleton
-@SuppressWarnings("all")
-public class ActorClassGen extends GenericActorClassGenerator {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private JavaExtensions _javaExtensions;
-
- @Inject
- private RoomExtensions _roomExtensions;
-
- @Inject
- private ProcedureHelpers _procedureHelpers;
-
- @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._roomExtensions.getGenerationTargetPath(_actorClass);
- ActorClass _actorClass_1 = xpac.getActorClass();
- String _path = this._roomExtensions.getPath(_actorClass_1);
- String path = (_generationTargetPath + _path);
- ActorClass _actorClass_2 = xpac.getActorClass();
- String file = this._javaExtensions.getJavaFileName(_actorClass_2);
- String _plus = ("generating ActorClass implementation \'" + file);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- this.fileAccess.setOutputPath(path);
- ActorClass _actorClass_3 = xpac.getActorClass();
- CharSequence _generate = this.generate(root, xpac, _actorClass_3);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- }
-
- public CharSequence generate(final Root root, final ExpandedActorClass xpac, final ActorClass ac) {
- CharSequence _xblockexpression = null;
- {
- EList<StandardOperation> _operations = ac.getOperations();
- final Function1<StandardOperation,Boolean> _function = new Function1<StandardOperation,Boolean>() {
- public Boolean apply(final StandardOperation op) {
- boolean _isConstructor = RoomHelpers.isConstructor(op);
- return Boolean.valueOf(_isConstructor);
- }
- };
- Iterable<StandardOperation> _filter = IterableExtensions.<StandardOperation>filter(_operations, _function);
- final StandardOperation ctor = IterableExtensions.<StandardOperation>head(_filter);
- EList<StandardOperation> _operations_1 = ac.getOperations();
- final Function1<StandardOperation,Boolean> _function_1 = new Function1<StandardOperation,Boolean>() {
- public Boolean apply(final StandardOperation op) {
- boolean _isDestructor = op.isDestructor();
- return Boolean.valueOf(_isDestructor);
- }
- };
- Iterable<StandardOperation> _filter_1 = IterableExtensions.<StandardOperation>filter(_operations_1, _function_1);
- final StandardOperation dtor = IterableExtensions.<StandardOperation>head(_filter_1);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("package ");
- String _package = this._roomExtensions.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.append("import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;");
- _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> _referencedProtocolClasses = root.getReferencedProtocolClasses(ac);
- for(final ProtocolClass pc : _referencedProtocolClasses) {
- _builder.append("import ");
- String _package_1 = this._roomExtensions.getPackage(pc);
- _builder.append(_package_1, "");
- _builder.append(".");
- String _name_1 = pc.getName();
- _builder.append(_name_1, "");
- _builder.append(".*;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- CharSequence _userCode = this._procedureHelpers.userCode(ac, 1);
- _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 _notEquals = (!Objects.equal(_base, null));
- if (_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");
- CharSequence _userCode_1 = this._procedureHelpers.userCode(ac, 2);
- _builder.append(_userCode_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("//--------------------- ports");
- _builder.newLine();
- {
- List<Port> _endPorts = this._roomExtensions.getEndPorts(ac);
- for(final Port ep : _endPorts) {
- _builder.append("\t");
- _builder.append("protected ");
- String _portClassName = this._roomExtensions.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.newLine();
- _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._roomExtensions.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.newLine();
- _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._roomExtensions.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();
- _builder.append("\t");
- String _genInterfaceItemConstants = this.genInterfaceItemConstants(xpac, ac);
- _builder.append(_genInterfaceItemConstants, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t");
- EList<Attribute> _attributes = ac.getAttributes();
- CharSequence _attributes_1 = this._procedureHelpers.attributes(_attributes);
- _builder.append(_attributes_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- CharSequence _operationsImplementation = this._procedureHelpers.operationsImplementation(ac);
- _builder.append(_operationsImplementation, " ");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("//--------------------- construction");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- String _name_7 = ac.getName();
- _builder.append(_name_7, " ");
- _builder.append("(IRTObject parent, String name, Address[][] port_addr, Address[][] peer_addr){");
- _builder.newLineIfNotEmpty();
- {
- ActorClass _base_2 = ac.getBase();
- boolean _equals = Objects.equal(_base_2, null);
- if (_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_8 = ac.getName();
- _builder.append(_name_8, " ");
- _builder.append("\");");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- EList<Attribute> _attributes_2 = ac.getAttributes();
- CharSequence _attributeInitialization = this._procedureHelpers.attributeInitialization(_attributes_2, false);
- _builder.append(_attributeInitialization, " ");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// own ports");
- _builder.newLine();
- {
- List<Port> _endPorts_1 = this._roomExtensions.getEndPorts(ac);
- for(final Port ep_1 : _endPorts_1) {
- _builder.append("\t\t");
- String _name_9 = ep_1.getName();
- _builder.append(_name_9, " ");
- _builder.append(" = new ");
- String _portClassName_3 = this._roomExtensions.getPortClassName(ep_1);
- _builder.append(_portClassName_3, " ");
- _builder.append("(this, \"");
- String _name_10 = ep_1.getName();
- _builder.append(_name_10, " ");
- _builder.append("\", IFITEM_");
- String _name_11 = ep_1.getName();
- _builder.append(_name_11, " ");
- _builder.append(", ");
- {
- int _multiplicity = ep_1.getMultiplicity();
- boolean _equals_1 = (_multiplicity == 1);
- if (_equals_1) {
- _builder.append("0, ");
- }
- }
- _builder.append("port_addr[IFITEM_");
- String _name_12 = ep_1.getName();
- _builder.append(_name_12, " ");
- _builder.append("]");
- {
- int _multiplicity_1 = ep_1.getMultiplicity();
- boolean _equals_2 = (_multiplicity_1 == 1);
- if (_equals_2) {
- _builder.append("[0]");
- }
- }
- _builder.append(", peer_addr[IFITEM_");
- String _name_13 = ep_1.getName();
- _builder.append(_name_13, " ");
- _builder.append("]");
- {
- int _multiplicity_2 = ep_1.getMultiplicity();
- boolean _equals_3 = (_multiplicity_2 == 1);
- if (_equals_3) {
- _builder.append("[0]");
- }
- }
- _builder.append("); ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// own saps");
- _builder.newLine();
- {
- EList<SAPRef> _strSAPs_1 = ac.getStrSAPs();
- for(final SAPRef sap_1 : _strSAPs_1) {
- _builder.append("\t\t");
- String _name_14 = sap_1.getName();
- _builder.append(_name_14, " ");
- _builder.append(" = new ");
- String _portClassName_4 = this._roomExtensions.getPortClassName(sap_1);
- _builder.append(_portClassName_4, " ");
- _builder.append("(this, \"");
- String _name_15 = sap_1.getName();
- _builder.append(_name_15, " ");
- _builder.append("\", IFITEM_");
- String _name_16 = sap_1.getName();
- _builder.append(_name_16, " ");
- _builder.append(", 0, port_addr[IFITEM_");
- String _name_17 = sap_1.getName();
- _builder.append(_name_17, " ");
- _builder.append("][0], peer_addr[IFITEM_");
- String _name_18 = sap_1.getName();
- _builder.append(_name_18, " ");
- _builder.append("][0]); ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// own service implementations");
- _builder.newLine();
- {
- EList<ServiceImplementation> _serviceImplementations_1 = ac.getServiceImplementations();
- for(final ServiceImplementation svc_1 : _serviceImplementations_1) {
- _builder.append("\t\t");
- SPPRef _spp_1 = svc_1.getSpp();
- String _name_19 = _spp_1.getName();
- _builder.append(_name_19, " ");
- _builder.append(" = new ");
- String _portClassName_5 = this._roomExtensions.getPortClassName(svc_1);
- _builder.append(_portClassName_5, " ");
- _builder.append("(this, \"");
- SPPRef _spp_2 = svc_1.getSpp();
- String _name_20 = _spp_2.getName();
- _builder.append(_name_20, " ");
- _builder.append("\", IFITEM_");
- SPPRef _spp_3 = svc_1.getSpp();
- String _name_21 = _spp_3.getName();
- _builder.append(_name_21, " ");
- _builder.append(", port_addr[IFITEM_");
- SPPRef _spp_4 = svc_1.getSpp();
- String _name_22 = _spp_4.getName();
- _builder.append(_name_22, " ");
- _builder.append("], peer_addr[IFITEM_");
- SPPRef _spp_5 = svc_1.getSpp();
- String _name_23 = _spp_5.getName();
- _builder.append(_name_23, " ");
- _builder.append("]); ");
- _builder.newLineIfNotEmpty();
- }
- }
- {
- boolean _notEquals_1 = (!Objects.equal(ctor, null));
- if (_notEquals_1) {
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("// user defined constructor body");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- AbstractGenerator _instance = AbstractGenerator.getInstance();
- DetailCode _detailCode = ctor.getDetailCode();
- String _translatedCode = _instance.getTranslatedCode(_detailCode);
- _builder.append(_translatedCode, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t");
- EList<Attribute> _attributes_3 = ac.getAttributes();
- String _name_24 = ac.getName();
- CharSequence _attributeSettersGettersImplementation = this._procedureHelpers.attributeSettersGettersImplementation(_attributes_3, _name_24);
- _builder.append(_attributeSettersGettersImplementation, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("//--------------------- port getters");
- _builder.newLine();
- {
- List<Port> _endPorts_2 = this._roomExtensions.getEndPorts(ac);
- for(final Port ep_2 : _endPorts_2) {
- _builder.append("\t");
- String _portClassName_6 = this._roomExtensions.getPortClassName(ep_2);
- String _name_25 = ep_2.getName();
- String _name_26 = ac.getName();
- CharSequence _terImplementation = this._procedureHelpers.getterImplementation(_portClassName_6, _name_25, _name_26);
- _builder.append(_terImplementation, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- {
- EList<SAPRef> _strSAPs_2 = ac.getStrSAPs();
- for(final SAPRef sap_2 : _strSAPs_2) {
- _builder.append("\t");
- String _portClassName_7 = this._roomExtensions.getPortClassName(sap_2);
- String _name_27 = sap_2.getName();
- String _name_28 = ac.getName();
- CharSequence _terImplementation_1 = this._procedureHelpers.getterImplementation(_portClassName_7, _name_27, _name_28);
- _builder.append(_terImplementation_1, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- {
- EList<ServiceImplementation> _serviceImplementations_2 = ac.getServiceImplementations();
- for(final ServiceImplementation svc_2 : _serviceImplementations_2) {
- _builder.append("\t");
- String _portClassName_8 = this._roomExtensions.getPortClassName(svc_2);
- SPPRef _spp_6 = svc_2.getSpp();
- String _name_29 = _spp_6.getName();
- String _name_30 = ac.getName();
- CharSequence _terImplementation_2 = this._procedureHelpers.getterImplementation(_portClassName_8, _name_29, _name_30);
- _builder.append(_terImplementation_2, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _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._roomExtensions.overridesStop(ac);
- boolean _not = (!_overridesStop);
- if (_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();
- {
- boolean _notEquals_2 = (!Objects.equal(dtor, null));
- if (_notEquals_2) {
- _builder.append("\t\t");
- String _name_31 = ac.getName();
- String _destructorCall = this._procedureHelpers.destructorCall(_name_31);
- _builder.append(_destructorCall, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- {
- boolean _hasNonEmptyStateMachine = RoomHelpers.hasNonEmptyStateMachine(ac);
- if (_hasNonEmptyStateMachine) {
- _builder.append("\t");
- CharSequence _genStateMachine = this._stateMachineGen.genStateMachine(xpac);
- _builder.append(_genStateMachine, " ");
- _builder.newLineIfNotEmpty();
- } else {
- boolean _hasStateMachine = xpac.hasStateMachine();
- boolean _not_1 = (!_hasStateMachine);
- if (_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();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-}
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
deleted file mode 100644
index a187baa..0000000
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/DataClassGen.java
+++ /dev/null
@@ -1,460 +0,0 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.common.base.Objects;
-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.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.ComplexType;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.DataType;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.StandardOperation;
-import org.eclipse.etrice.core.room.util.RoomHelpers;
-import org.eclipse.etrice.generator.generic.ProcedureHelpers;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.etrice.generator.java.gen.JavaExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@Singleton
-@SuppressWarnings("all")
-public class DataClassGen {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private JavaExtensions _javaExtensions;
-
- @Inject
- private RoomExtensions _roomExtensions;
-
- @Inject
- private ProcedureHelpers _procedureHelpers;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<DataClass> _usedDataClasses = root.getUsedDataClasses();
- for (final DataClass dc : _usedDataClasses) {
- {
- String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(dc);
- String _path = this._roomExtensions.getPath(dc);
- String path = (_generationTargetPath + _path);
- String file = this._javaExtensions.getJavaFileName(dc);
- String _plus = ("generating DataClass implementation \'" + file);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- this.fileAccess.setOutputPath(path);
- CharSequence _generate = this.generate(root, dc);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- }
-
- public CharSequence generate(final Root root, final DataClass dc) {
- CharSequence _xblockexpression = null;
- {
- EList<StandardOperation> _operations = dc.getOperations();
- final Function1<StandardOperation,Boolean> _function = new Function1<StandardOperation,Boolean>() {
- public Boolean apply(final StandardOperation op) {
- boolean _isConstructor = RoomHelpers.isConstructor(op);
- return Boolean.valueOf(_isConstructor);
- }
- };
- Iterable<StandardOperation> _filter = IterableExtensions.<StandardOperation>filter(_operations, _function);
- final StandardOperation ctor = IterableExtensions.<StandardOperation>head(_filter);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("package ");
- String _package = this._roomExtensions.getPackage(dc);
- _builder.append(_package, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- EList<RoomModel> models = root.getReferencedModels(dc);
- _builder.newLineIfNotEmpty();
- {
- for(final RoomModel model : models) {
- _builder.append("import ");
- String _name = model.getName();
- _builder.append(_name, "");
- _builder.append(".*;");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.newLine();
- CharSequence _userCode = this._procedureHelpers.userCode(dc, 1);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.newLine();
- _builder.append("public class ");
- String _name_1 = dc.getName();
- _builder.append(_name_1, "");
- {
- DataClass _base = dc.getBase();
- boolean _notEquals = (!Objects.equal(_base, null));
- if (_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");
- _builder.newLine();
- _builder.append("\t");
- CharSequence _userCode_1 = this._procedureHelpers.userCode(dc, 2);
- _builder.append(_userCode_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- EList<Attribute> _attributes = dc.getAttributes();
- CharSequence _attributes_1 = this._procedureHelpers.attributes(_attributes);
- _builder.append(_attributes_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- EList<Attribute> _attributes_2 = dc.getAttributes();
- String _name_3 = dc.getName();
- CharSequence _attributeSettersGettersImplementation = this._procedureHelpers.attributeSettersGettersImplementation(_attributes_2, _name_3);
- _builder.append(_attributeSettersGettersImplementation, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- EList<StandardOperation> _operations_1 = dc.getOperations();
- String _name_4 = dc.getName();
- CharSequence _operationsImplementation = this._procedureHelpers.operationsImplementation(_operations_1, _name_4);
- _builder.append(_operationsImplementation, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("// default constructor");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- String _name_5 = dc.getName();
- _builder.append(_name_5, " ");
- _builder.append("() {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("super();");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- EList<Attribute> _attributes_3 = dc.getAttributes();
- CharSequence _attributeInitialization = this._procedureHelpers.attributeInitialization(_attributes_3, true);
- _builder.append(_attributeInitialization, " ");
- _builder.newLineIfNotEmpty();
- {
- boolean _notEquals_1 = (!Objects.equal(ctor, null));
- if (_notEquals_1) {
- _builder.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("// user defined constructor body");
- _builder.newLine();
- {
- DetailCode _detailCode = ctor.getDetailCode();
- EList<String> _commands = _detailCode.getCommands();
- for(final String l : _commands) {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append(l, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _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("// constructor using fields");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- String _name_6 = dc.getName();
- _builder.append(_name_6, " ");
- _builder.append("(");
- String _argList = this.argList(dc);
- _builder.append(_argList, " ");
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- {
- DataClass _base_2 = dc.getBase();
- boolean _notEquals_2 = (!Objects.equal(_base_2, null));
- if (_notEquals_2) {
- _builder.append("\t\t");
- _builder.append("super(");
- DataClass _base_3 = dc.getBase();
- String _paramList = this.paramList(_base_3);
- _builder.append(_paramList, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- } else {
- _builder.append("\t\t");
- _builder.append("super();");
- _builder.newLine();
- }
- }
- _builder.append("\t\t");
- _builder.newLine();
- {
- EList<Attribute> _attributes_4 = dc.getAttributes();
- for(final Attribute a : _attributes_4) {
- _builder.append("\t\t");
- _builder.append("this.");
- String _name_7 = a.getName();
- _builder.append(_name_7, " ");
- _builder.append(" = ");
- String _name_8 = a.getName();
- _builder.append(_name_8, " ");
- _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_9 = dc.getName();
- _builder.append(_name_9, " ");
- _builder.append(" deepCopy() {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- String _name_10 = dc.getName();
- _builder.append(_name_10, " ");
- _builder.append(" copy = new ");
- String _name_11 = dc.getName();
- _builder.append(_name_11, " ");
- _builder.append("();");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- String _deepCopy = this.deepCopy(dc);
- _builder.append(_deepCopy, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("return copy;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("};");
- _builder.newLine();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public String paramList(final DataClass _dc) {
- String result = "";
- DataClass dc = _dc;
- boolean _notEquals = (!Objects.equal(dc, null));
- boolean _while = _notEquals;
- while (_while) {
- {
- EList<Attribute> _attributes = dc.getAttributes();
- CharSequence _paramList = this.paramList(_attributes);
- String _string = _paramList.toString();
- String _plus = (_string + result);
- result = _plus;
- DataClass _base = dc.getBase();
- dc = _base;
- boolean _notEquals_1 = (!Objects.equal(dc, null));
- if (_notEquals_1) {
- String _plus_1 = (", " + result);
- result = _plus_1;
- }
- }
- boolean _notEquals_1 = (!Objects.equal(dc, null));
- _while = _notEquals_1;
- }
- return result;
- }
-
- public CharSequence paramList(final List<Attribute> attributes) {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _hasElements = false;
- for(final Attribute a : attributes) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(", ", "");
- }
- String _name = a.getName();
- _builder.append(_name, "");
- }
- }
- return _builder;
- }
-
- public String argList(final DataClass _dc) {
- String result = "";
- DataClass dc = _dc;
- boolean _notEquals = (!Objects.equal(dc, null));
- boolean _while = _notEquals;
- while (_while) {
- {
- EList<Attribute> _attributes = dc.getAttributes();
- CharSequence _argList = this._procedureHelpers.argList(_attributes);
- String _string = _argList.toString();
- String _plus = (_string + result);
- result = _plus;
- DataClass _base = dc.getBase();
- dc = _base;
- boolean _notEquals_1 = (!Objects.equal(dc, null));
- if (_notEquals_1) {
- String _plus_1 = (", " + result);
- result = _plus_1;
- }
- }
- boolean _notEquals_1 = (!Objects.equal(dc, null));
- _while = _notEquals_1;
- }
- return result;
- }
-
- public String deepCopy(final DataClass _dc) {
- String result = "";
- DataClass dc = _dc;
- boolean _notEquals = (!Objects.equal(dc, null));
- boolean _while = _notEquals;
- while (_while) {
- {
- EList<Attribute> _attributes = dc.getAttributes();
- CharSequence _deepCopy = this.deepCopy(_attributes);
- String _string = _deepCopy.toString();
- String _plus = (_string + result);
- result = _plus;
- DataClass _base = dc.getBase();
- dc = _base;
- }
- boolean _notEquals_1 = (!Objects.equal(dc, null));
- _while = _notEquals_1;
- }
- return result;
- }
-
- public CharSequence deepCopy(final List<Attribute> attributes) {
- StringConcatenation _builder = new StringConcatenation();
- {
- for(final Attribute a : attributes) {
- {
- RefableType _refType = a.getRefType();
- DataType _type = _refType.getType();
- if ((_type instanceof ComplexType)) {
- _builder.append("if (");
- String _name = a.getName();
- _builder.append(_name, "");
- _builder.append("!=null) {");
- _builder.newLineIfNotEmpty();
- {
- int _size = a.getSize();
- boolean _equals = (_size == 0);
- if (_equals) {
- _builder.append("\t");
- _builder.append("copy.");
- String _name_1 = a.getName();
- _builder.append(_name_1, " ");
- _builder.append(" = ");
- String _name_2 = a.getName();
- _builder.append(_name_2, " ");
- _builder.append(".deepCopy();");
- _builder.newLineIfNotEmpty();
- } else {
- _builder.append("\t");
- _builder.append("for (int i=0;i<");
- String _name_3 = a.getName();
- _builder.append(_name_3, " ");
- _builder.append(".length;i++){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("copy.");
- String _name_4 = a.getName();
- _builder.append(_name_4, " ");
- _builder.append("[i] = ");
- String _name_5 = a.getName();
- _builder.append(_name_5, " ");
- _builder.append("[i].deepCopy();");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("}");
- _builder.newLine();
- } else {
- {
- int _size_1 = a.getSize();
- boolean _equals_1 = (_size_1 == 0);
- if (_equals_1) {
- _builder.append("copy.");
- String _name_6 = a.getName();
- _builder.append(_name_6, "");
- _builder.append(" = ");
- String _name_7 = a.getName();
- _builder.append(_name_7, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- } else {
- _builder.append("for (int i=0;i<");
- String _name_8 = a.getName();
- _builder.append(_name_8, "");
- _builder.append(".length;i++){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("copy.");
- String _name_9 = a.getName();
- _builder.append(_name_9, " ");
- _builder.append("[i] = ");
- String _name_10 = a.getName();
- _builder.append(_name_10, " ");
- _builder.append("[i];");
- _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/JavaExtensions.java b/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/JavaExtensions.java
deleted file mode 100644
index 0fb47b0..0000000
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/JavaExtensions.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.util.List;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.RoomClass;
-import org.eclipse.etrice.core.room.VarDecl;
-import org.eclipse.etrice.generator.generic.AbstractTransitionChainGenerator;
-import org.eclipse.etrice.generator.generic.ILanguageExtension;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.util.Pair;
-
-@Singleton
-@SuppressWarnings("all")
-public class JavaExtensions implements ILanguageExtension {
- @Inject
- private AbstractTransitionChainGenerator chainGenerator;
-
- public String getTypedDataDefinition(final Message m) {
- VarDecl _data = m.getData();
- return this.chainGenerator.generateTypedData(_data);
- }
-
- public String getJavaFileName(final RoomClass rc) {
- String _name = rc.getName();
- String _plus = (_name + ".java");
- return _plus;
- }
-
- public String accessLevelPrivate() {
- return "private ";
- }
-
- public String accessLevelProtected() {
- return "protected ";
- }
-
- public String accessLevelPublic() {
- return "public ";
- }
-
- public String memberAccess() {
- return "this.";
- }
-
- public String selfPointer(final String classname, final boolean hasArgs) {
- return "";
- }
-
- public String selfPointer(final boolean hasArgs) {
- return "";
- }
-
- public String operationScope(final String classname, final boolean isDeclaration) {
- return "";
- }
-
- public String memberInDeclaration(final String namespace, final String member) {
- return member;
- }
-
- public String memberInUse(final String namespace, final String member) {
- String _plus = (namespace + ".");
- return (_plus + member);
- }
-
- public boolean usesInheritance() {
- return true;
- }
-
- public String genEnumeration(final String name, final List<Pair<String,String>> entries) {
- StringConcatenation _builder = new StringConcatenation();
- {
- for(final Pair<String,String> entry : entries) {
- _builder.append("public static final int ");
- String _first = entry.getFirst();
- _builder.append(_first, "");
- _builder.append(" = ");
- String _second = entry.getSecond();
- _builder.append(_second, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- String _string = _builder.toString();
- return _string;
- }
-
- public String booleanConstant(final boolean b) {
- String _string = Boolean.valueOf(b).toString();
- return _string;
- }
-
- public String pointerLiteral() {
- return "";
- }
-
- public String nullPointer() {
- return "null";
- }
-
- public String voidPointer() {
- return "Object";
- }
-
- public String arrayDeclaration(final String type, final int size, final String name, final boolean isRef) {
- String _plus = (type + " ");
- String _plus_1 = (_plus + name);
- String _plus_2 = (_plus_1 + "[]");
- return _plus_2;
- }
-
- public String constructorName(final String cls) {
- return cls;
- }
-
- public String destructorName(final String cls) {
- String _plus = (cls + "_dtor");
- return _plus;
- }
-
- public String constructorReturnType() {
- return "";
- }
-
- public String destructorReturnType() {
- return "void";
- }
-
- public String toCharArrayExpr(final String s) {
- String _plus = ("\"" + s);
- String _plus_1 = (_plus + "\".toCharArray()");
- return _plus_1;
- }
-
- public String superCall(final String baseClassName, final String method, final String args) {
- String _plus = ("super." + method);
- String _plus_1 = (_plus + "(");
- String _plus_2 = (_plus_1 + args);
- String _plus_3 = (_plus_2 + ");");
- return _plus_3;
- }
-}
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
deleted file mode 100644
index fba8b06..0000000
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/MainGen.java
+++ /dev/null
@@ -1,60 +0,0 @@
-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.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.generator.generic.PrepareFileSystem;
-import org.eclipse.etrice.generator.java.gen.ActorClassGen;
-import org.eclipse.etrice.generator.java.gen.DataClassGen;
-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;
-
-@Singleton
-@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 (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 _not = (!_isLibrary);
- if (_not) {
- this.subsystemRunnerGen.doGenerate(e);
- }
- }
-}
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
deleted file mode 100644
index 7b20909..0000000
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/ProtocolClassGen.java
+++ /dev/null
@@ -1,790 +0,0 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.common.base.Objects;
-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.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.DataType;
-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.PortClass;
-import org.eclipse.etrice.core.room.PortOperation;
-import org.eclipse.etrice.core.room.PrimitiveType;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.VarDecl;
-import org.eclipse.etrice.generator.generic.GenericProtocolClassGenerator;
-import org.eclipse.etrice.generator.generic.ProcedureHelpers;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.etrice.generator.generic.TypeHelpers;
-import org.eclipse.etrice.generator.java.gen.DataClassGen;
-import org.eclipse.etrice.generator.java.gen.JavaExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-
-@Singleton
-@SuppressWarnings("all")
-public class ProtocolClassGen extends GenericProtocolClassGenerator {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private JavaExtensions _javaExtensions;
-
- @Inject
- private RoomExtensions _roomExtensions;
-
- @Inject
- private ProcedureHelpers _procedureHelpers;
-
- @Inject
- private TypeHelpers _typeHelpers;
-
- @Inject
- private DataClassGen _dataClassGen;
-
- @Inject
- private ILogger logger;
-
- public void doGenerate(final Root root) {
- EList<ProtocolClass> _usedProtocolClasses = root.getUsedProtocolClasses();
- for (final ProtocolClass pc : _usedProtocolClasses) {
- {
- String _generationTargetPath = this._roomExtensions.getGenerationTargetPath(pc);
- String _path = this._roomExtensions.getPath(pc);
- String path = (_generationTargetPath + _path);
- String file = this._javaExtensions.getJavaFileName(pc);
- String _plus = ("generating ProtocolClass implementation \'" + file);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- this.fileAccess.setOutputPath(path);
- CharSequence _generate = this.generate(root, pc);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- }
-
- public CharSequence generate(final Root root, final ProtocolClass pc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("package ");
- String _package = this._roomExtensions.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();
- CharSequence _userCode = this._procedureHelpers.userCode(pc, 1);
- _builder.append(_userCode, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- EList<RoomModel> models = root.getReferencedModels(pc);
- _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");
- String _genMessageIDs = this.genMessageIDs(pc);
- _builder.append(_genMessageIDs, " ");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- CharSequence _userCode_1 = this._procedureHelpers.userCode(pc, 2);
- _builder.append(_userCode_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("\t");
- _builder.append("private static String messageStrings[] = {\"MIN\", ");
- {
- List<Message> _allOutgoingMessages = this._roomExtensions.getAllOutgoingMessages(pc);
- for(final Message m : _allOutgoingMessages) {
- _builder.append("\"");
- String _name_2 = m.getName();
- _builder.append(_name_2, " ");
- _builder.append("\",");
- }
- }
- _builder.append(" ");
- {
- List<Message> _allIncomingMessages = this._roomExtensions.getAllIncomingMessages(pc);
- for(final Message m_1 : _allIncomingMessages) {
- _builder.append("\"");
- String _name_3 = m_1.getName();
- _builder.append(_name_3, " ");
- _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<MSG_MIN || 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");
- CharSequence _portClass = this.portClass(pc, Boolean.valueOf(false));
- _builder.append(_portClass, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- CharSequence _portClass_1 = this.portClass(pc, Boolean.valueOf(true));
- _builder.append(_portClass_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- return _builder;
- }
-
- public CharSequence portClass(final ProtocolClass pc, final Boolean conj) {
- CharSequence _xblockexpression = null;
- {
- PortClass pclass = this._roomExtensions.getPortClass(pc, (conj).booleanValue());
- String portClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue());
- String replPortClassName = this._roomExtensions.getPortClassName(pc, (conj).booleanValue(), true);
- StringConcatenation _builder = new StringConcatenation();
- _builder.newLine();
- _builder.append("// port class");
- _builder.newLine();
- _builder.append("static public class ");
- _builder.append(portClassName, "");
- _builder.append(" extends PortBase {");
- _builder.newLineIfNotEmpty();
- {
- boolean _notEquals = (!Objects.equal(pclass, null));
- if (_notEquals) {
- _builder.append("\t");
- DetailCode _userCode = pclass.getUserCode();
- CharSequence _userCode_1 = this._procedureHelpers.userCode(_userCode);
- _builder.append(_userCode_1, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("// constructors");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("public ");
- _builder.append(portClassName, " ");
- _builder.append("(IEventReceiver actor, String name, int localId, Address addr, Address peerAddress) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("this(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(portClassName, " ");
- _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();
- {
- boolean _notEquals_1 = (!Objects.equal(pclass, null));
- if (_notEquals_1) {
- _builder.append("\t\t");
- EList<Attribute> _attributes = pclass.getAttributes();
- CharSequence _attributeInitialization = this._procedureHelpers.attributeInitialization(_attributes, true);
- _builder.append(_attributeInitialization, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _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("DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);");
- _builder.newLine();
- _builder.append("\t\t\t\t");
- _builder.append("}");
- _builder.newLine();
- {
- boolean _handlesReceive = this._roomExtensions.handlesReceive(pc, (conj).booleanValue());
- if (_handlesReceive) {
- _builder.append("\t\t\t\t");
- _builder.append("switch (msg.getEvtId()) {");
- _builder.newLine();
- {
- List<MessageHandler> _receiveHandlers = this._roomExtensions.getReceiveHandlers(pc, (conj).booleanValue());
- for(final MessageHandler hdlr : _receiveHandlers) {
- _builder.append("\t\t\t\t");
- _builder.append("\t");
- _builder.append("case ");
- Message _msg = hdlr.getMsg();
- String _codeName = this._roomExtensions.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._roomExtensions.handlesReceive(pc, (conj).booleanValue());
- 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 _notEquals_2 = (!Objects.equal(pclass, null));
- if (_notEquals_2) {
- _builder.append("\t");
- EList<Attribute> _attributes_1 = pclass.getAttributes();
- CharSequence _attributes_2 = this._procedureHelpers.attributes(_attributes_1);
- _builder.append(_attributes_2, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("// TODO JH: Avoid collision attr getters/setter <-> user operations");
- _builder.newLine();
- _builder.append("\t");
- EList<Attribute> _attributes_3 = pclass.getAttributes();
- CharSequence _attributeSettersGettersImplementation = this._procedureHelpers.attributeSettersGettersImplementation(_attributes_3, null);
- _builder.append(_attributeSettersGettersImplementation, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- EList<PortOperation> _operations = pclass.getOperations();
- CharSequence _operationsImplementation = this._procedureHelpers.operationsImplementation(_operations, portClassName);
- _builder.append(_operationsImplementation, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("// sent messages");
- _builder.newLine();
- {
- List<Message> _outgoing = this._roomExtensions.getOutgoing(pc, (conj).booleanValue());
- for(final Message m : _outgoing) {
- _builder.append("\t");
- CharSequence _sendMessage = this.sendMessage(m, (conj).booleanValue());
- _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(replPortClassName, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("private ArrayList<");
- _builder.append(portClassName, " ");
- _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(replPortClassName, " ");
- _builder.append("(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==null? 0:addr.length;");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("ports = new ArrayList<");
- String _name = pc.getName();
- _builder.append(_name, " ");
- _builder.append(".");
- _builder.append(portClassName, " ");
- _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(portClassName, " ");
- _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(portClassName, " ");
- _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).booleanValue()) {
- _builder.append("\t");
- _builder.append("// incoming messages");
- _builder.newLine();
- {
- List<Message> _allIncomingMessages = this._roomExtensions.getAllIncomingMessages(pc);
- for(final Message m_1 : _allIncomingMessages) {
- _builder.append("\t");
- CharSequence _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).");
- CharSequence _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._roomExtensions.getAllOutgoingMessages(pc);
- for(final Message m_2 : _allOutgoingMessages) {
- _builder.append("\t");
- CharSequence _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).");
- CharSequence _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();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public CharSequence messageSignature(final Message m) {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _isPriv = m.isPriv();
- if (_isPriv) {
- _builder.append("private");
- } else {
- _builder.append("public");
- }
- }
- _builder.append(" void ");
- String _name = m.getName();
- _builder.append(_name, "");
- _builder.append("(");
- {
- VarDecl _data = m.getData();
- boolean _notEquals = (!Objects.equal(_data, null));
- if (_notEquals) {
- VarDecl _data_1 = m.getData();
- RefableType _refType = _data_1.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- _builder.append(_typeName, "");
- _builder.append(" ");
- VarDecl _data_2 = m.getData();
- String _name_1 = _data_2.getName();
- _builder.append(_name_1, "");
- }
- }
- _builder.append(")");
- return _builder;
- }
-
- public CharSequence messageSignatureExplicit(final Message m) {
- CharSequence _xblockexpression = null;
- {
- VarDecl _data = m.getData();
- RefableType _refType = _data.getRefType();
- DataType _type = _refType.getType();
- DataClass dc = ((DataClass) _type);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("public void ");
- String _name = m.getName();
- _builder.append(_name, "");
- _builder.append("(");
- String _argList = this._dataClassGen.argList(dc);
- _builder.append(_argList, "");
- _builder.append(")");
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- public CharSequence messageCall(final Message m) {
- StringConcatenation _builder = new StringConcatenation();
- String _name = m.getName();
- _builder.append(_name, "");
- _builder.append("(");
- {
- VarDecl _data = m.getData();
- boolean _notEquals = (!Objects.equal(_data, null));
- if (_notEquals) {
- _builder.append(" ");
- VarDecl _data_1 = m.getData();
- String _name_1 = _data_1.getName();
- _builder.append(_name_1, "");
- }
- }
- _builder.append(")");
- return _builder;
- }
-
- public CharSequence sendMessage(final Message m, final boolean conj) {
- CharSequence _xblockexpression = null;
- {
- String _xifexpression = null;
- if (conj) {
- _xifexpression = "IN";
- } else {
- _xifexpression = "OUT";
- }
- String dir = _xifexpression;
- MessageHandler hdlr = this._roomExtensions.getSendHandler(m, conj);
- StringConcatenation _builder = new StringConcatenation();
- CharSequence _messageSignature = this.messageSignature(m);
- _builder.append(_messageSignature, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- {
- boolean _notEquals = (!Objects.equal(hdlr, null));
- if (_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("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");
- _builder.append("\t");
- {
- VarDecl _data = m.getData();
- boolean _equals = Objects.equal(_data, null);
- if (_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");
- _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(", ");
- VarDecl _data_1 = m.getData();
- String _name_4 = _data_1.getName();
- _builder.append(_name_4, " ");
- {
- boolean _and = false;
- VarDecl _data_2 = m.getData();
- RefableType _refType = _data_2.getRefType();
- boolean _isRef = _refType.isRef();
- boolean _not = (!_isRef);
- if (!_not) {
- _and = false;
- } else {
- VarDecl _data_3 = m.getData();
- RefableType _refType_1 = _data_3.getRefType();
- DataType _type = _refType_1.getType();
- boolean _not_1 = (!(_type instanceof PrimitiveType));
- _and = (_not && _not_1);
- }
- if (_and) {
- _builder.append(".deepCopy()");
- }
- }
- _builder.append("));");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.append("}");
- _builder.newLine();
- {
- boolean _and_1 = false;
- VarDecl _data_4 = m.getData();
- boolean _notEquals_1 = (!Objects.equal(_data_4, null));
- if (!_notEquals_1) {
- _and_1 = false;
- } else {
- VarDecl _data_5 = m.getData();
- RefableType _refType_2 = _data_5.getRefType();
- DataType _type_1 = _refType_2.getType();
- _and_1 = (_notEquals_1 && (_type_1 instanceof DataClass));
- }
- if (_and_1) {
- CharSequence _messageSignatureExplicit = this.messageSignatureExplicit(m);
- _builder.append(_messageSignatureExplicit, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _name_5 = m.getName();
- _builder.append(_name_5, " ");
- _builder.append("(new ");
- VarDecl _data_6 = m.getData();
- RefableType _refType_3 = _data_6.getRefType();
- DataType _type_2 = _refType_3.getType();
- String _name_6 = _type_2.getName();
- _builder.append(_name_6, " ");
- _builder.append("(");
- VarDecl _data_7 = m.getData();
- RefableType _refType_4 = _data_7.getRefType();
- DataType _type_3 = _refType_4.getType();
- String _paramList = this._dataClassGen.paramList(((DataClass) _type_3));
- _builder.append(_paramList, " ");
- _builder.append("));");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-}
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
deleted file mode 100644
index bb397d6..0000000
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/StateMachineGen.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.eclipse.etrice.generator.java.gen;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.util.List;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.State;
-import org.eclipse.etrice.generator.generic.GenericStateMachineGenerator;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-
-@Singleton
-@SuppressWarnings("all")
-public class StateMachineGen extends GenericStateMachineGenerator {
- @Inject
- private RoomExtensions _roomExtensions;
-
- public CharSequence genExtra(final ExpandedActorClass xpac) {
- CharSequence _xblockexpression = null;
- {
- final ActorClass ac = xpac.getActorClass();
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("// state names");
- _builder.newLine();
- _builder.append("protected static final String stateStrings[] = {\"<no state>\",\"<top>\",");
- {
- List<State> _allBaseStatesLeavesLast = this._roomExtensions.getAllBaseStatesLeavesLast(ac);
- boolean _hasElements = false;
- for(final State state : _allBaseStatesLeavesLast) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(",", "");
- }
- _builder.append("\"");
- String _statePathName = this._roomExtensions.getStatePathName(state);
- _builder.append(_statePathName, "");
- _builder.append("\"");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("};");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("// history");
- _builder.newLine();
- _builder.append("protected int history[] = {NO_STATE,NO_STATE");
- {
- List<State> _allBaseStates = this._roomExtensions.getAllBaseStates(ac);
- for(final State state_1 : _allBaseStates) {
- _builder.append(",NO_STATE");
- }
- }
- _builder.append("};");
- _builder.newLineIfNotEmpty();
- _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("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();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-}
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
deleted file mode 100644
index 7703de0..0000000
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemClassGen.java
+++ /dev/null
@@ -1,910 +0,0 @@
-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.emf.ecore.EObject;
-import org.eclipse.etrice.core.config.AttrInstanceConfig;
-import org.eclipse.etrice.core.config.LiteralArray;
-import org.eclipse.etrice.core.config.PortInstanceConfig;
-import org.eclipse.etrice.core.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.InterfaceItemInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.DataType;
-import org.eclipse.etrice.core.room.InterfaceItem;
-import org.eclipse.etrice.core.room.LogicalThread;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.core.room.SubSystemClass;
-import org.eclipse.etrice.generator.base.Indexed;
-import org.eclipse.etrice.generator.generic.ConfigExtension;
-import org.eclipse.etrice.generator.generic.ProcedureHelpers;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.etrice.generator.generic.TypeHelpers;
-import org.eclipse.etrice.generator.java.gen.JavaExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-
-@Singleton
-@SuppressWarnings("all")
-public class SubSystemClassGen {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private JavaExtensions _javaExtensions;
-
- @Inject
- private RoomExtensions _roomExtensions;
-
- @Inject
- private ConfigExtension _configExtension;
-
- @Inject
- private ProcedureHelpers _procedureHelpers;
-
- @Inject
- private TypeHelpers _typeHelpers;
-
- @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._roomExtensions.getGenerationTargetPath(_subSystemClass);
- SubSystemClass _subSystemClass_1 = ssi.getSubSystemClass();
- String _path = this._roomExtensions.getPath(_subSystemClass_1);
- String path = (_generationTargetPath + _path);
- SubSystemClass _subSystemClass_2 = ssi.getSubSystemClass();
- String file = this._javaExtensions.getJavaFileName(_subSystemClass_2);
- String _plus = ("generating SubSystemClass implementation: \'" + file);
- String _plus_1 = (_plus + "\' in \'");
- String _plus_2 = (_plus_1 + path);
- String _plus_3 = (_plus_2 + "\'");
- this.logger.logInfo(_plus_3);
- this.fileAccess.setOutputPath(path);
- SubSystemClass _subSystemClass_3 = ssi.getSubSystemClass();
- CharSequence _generate = this.generate(root, ssi, _subSystemClass_3);
- this.fileAccess.generateFile(file, _generate);
- }
- }
- }
-
- public CharSequence generate(final Root root, final SubSystemInstance comp, final SubSystemClass cc) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("package ");
- String _package = this._roomExtensions.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> models = root.getReferencedModels(cc);
- _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();
- CharSequence _userCode = this._procedureHelpers.userCode(cc, 1);
- _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");
- CharSequence _userCode_1 = this._procedureHelpers.userCode(cc, 2);
- _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 _plus = (_indexOf + 1);
- _builder.append(_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._roomExtensions.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 _isReplicated = pi.isReplicated();
- if (_isReplicated) {
- {
- EList<InterfaceItemInstance> _peers = pi.getPeers();
- for(final InterfaceItemInstance peer : _peers) {
- _builder.append("\t\t");
- EList<InterfaceItemInstance> _peers_1 = pi.getPeers();
- int i = _peers_1.indexOf(peer);
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("Address addr_item_");
- String _path_3 = pi.getPath();
- String _pathName_1 = this._roomExtensions.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 _plus_1 = (_objId_1 + i);
- _builder.append(_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._roomExtensions.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 = _allContainedInstances_3.size();
- _builder.append(_size, " ");
- _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_2 = _allContainedInstances_5.indexOf(ai_2);
- _builder.append(_indexOf_2, " ");
- _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_3 = _allContainedInstances_6.indexOf(_eContainer_1);
- _builder.append(_indexOf_3, " ");
- _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._roomExtensions.getPathName(_path_5);
- _builder.append(_pathName_3, " ");
- _builder.append("}");
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_1 = ai_2.getOrderedIfItemInstances();
- boolean _isEmpty = _orderedIfItemInstances_1.isEmpty();
- boolean _not = (!_isEmpty);
- if (_not) {
- _builder.append(",");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_2 = ai_2.getOrderedIfItemInstances();
- boolean _hasElements = false;
- for(final InterfaceItemInstance pi_1 : _orderedIfItemInstances_2) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- {
- boolean _isReplicated_1 = pi_1.isReplicated();
- if (_isReplicated_1) {
- {
- EList<InterfaceItemInstance> _peers_2 = pi_1.getPeers();
- boolean _isEmpty_1 = _peers_2.isEmpty();
- if (_isEmpty_1) {
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("null");
- _builder.newLine();
- } else {
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("{");
- _builder.newLine();
- {
- EList<InterfaceItemInstance> _peers_3 = pi_1.getPeers();
- boolean _hasElements_1 = false;
- for(final InterfaceItemInstance peer_1 : _peers_3) {
- if (!_hasElements_1) {
- _hasElements_1 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("addr_item_");
- String _path_6 = pi_1.getPath();
- String _pathName_4 = this._roomExtensions.getPathName(_path_6);
- _builder.append(_pathName_4, " ");
- _builder.append("_");
- EList<InterfaceItemInstance> _peers_4 = pi_1.getPeers();
- int _indexOf_4 = _peers_4.indexOf(peer_1);
- _builder.append(_indexOf_4, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- } else {
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("addr_item_");
- String _path_7 = pi_1.getPath();
- String _pathName_5 = this._roomExtensions.getPathName(_path_7);
- _builder.append(_pathName_5, " ");
- _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("\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_5 = _allContainedInstances_7.indexOf(ai_2);
- _builder.append(_indexOf_5, " ");
- _builder.append("}");
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_3 = ai_2.getOrderedIfItemInstances();
- boolean _isEmpty_2 = _orderedIfItemInstances_3.isEmpty();
- boolean _not_1 = (!_isEmpty_2);
- if (_not_1) {
- _builder.append(",");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- EList<InterfaceItemInstance> _orderedIfItemInstances_4 = ai_2.getOrderedIfItemInstances();
- boolean _hasElements_2 = false;
- for(final InterfaceItemInstance pi_2 : _orderedIfItemInstances_4) {
- if (!_hasElements_2) {
- _hasElements_2 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- {
- boolean _and = false;
- boolean _isReplicated_2 = pi_2.isReplicated();
- if (!_isReplicated_2) {
- _and = false;
- } else {
- EList<InterfaceItemInstance> _peers_5 = pi_2.getPeers();
- boolean _isEmpty_3 = _peers_5.isEmpty();
- _and = (_isReplicated_2 && _isEmpty_3);
- }
- if (_and) {
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("null");
- _builder.newLine();
- } else {
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("{");
- _builder.newLine();
- {
- EList<InterfaceItemInstance> _peers_6 = pi_2.getPeers();
- boolean _isEmpty_4 = _peers_6.isEmpty();
- if (_isEmpty_4) {
- _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 _hasElements_3 = false;
- for(final InterfaceItemInstance pp : _peers_7) {
- if (!_hasElements_3) {
- _hasElements_3 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- {
- boolean _isReplicated_3 = pp.isReplicated();
- if (_isReplicated_3) {
- _builder.append("\t\t");
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("addr_item_");
- String _path_8 = pp.getPath();
- String _pathName_6 = this._roomExtensions.getPathName(_path_8);
- _builder.append(_pathName_6, " ");
- _builder.append("_");
- EList<InterfaceItemInstance> _peers_8 = pp.getPeers();
- int _indexOf_6 = _peers_8.indexOf(pi_2);
- _builder.append(_indexOf_6, " ");
- _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._roomExtensions.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.append("\t\t");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("// apply instance attribute configurations");
- _builder.newLine();
- {
- EList<ActorInstance> _allContainedInstances_8 = comp.getAllContainedInstances();
- for(final ActorInstance ai_3 : _allContainedInstances_8) {
- _builder.append("\t\t");
- List<AttrInstanceConfig> attrConfigs = this._configExtension.getConfigAttributes(ai_3);
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- List<PortInstanceConfig> portConfigs = this._configExtension.getConfigPorts(ai_3);
- _builder.newLineIfNotEmpty();
- {
- boolean _or = false;
- boolean _isEmpty_5 = attrConfigs.isEmpty();
- boolean _not_2 = (!_isEmpty_5);
- if (_not_2) {
- _or = true;
- } else {
- boolean _isEmpty_6 = portConfigs.isEmpty();
- boolean _not_3 = (!_isEmpty_6);
- _or = (_not_2 || _not_3);
- }
- if (_or) {
- _builder.append("\t\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- String aiName = "inst";
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- ActorClass _actorClass_1 = ai_3.getActorClass();
- String _name_6 = _actorClass_1.getName();
- _builder.append(_name_6, " ");
- _builder.append(" ");
- _builder.append(aiName, " ");
- _builder.append(" = (");
- ActorClass _actorClass_2 = ai_3.getActorClass();
- String _name_7 = _actorClass_2.getName();
- _builder.append(_name_7, " ");
- _builder.append(") instances[");
- EList<ActorInstance> _allContainedInstances_9 = comp.getAllContainedInstances();
- int _indexOf_7 = _allContainedInstances_9.indexOf(ai_3);
- _builder.append(_indexOf_7, " ");
- _builder.append("];");
- _builder.newLineIfNotEmpty();
- {
- for(final AttrInstanceConfig attrConfig : attrConfigs) {
- _builder.append("\t\t");
- _builder.append("\t");
- Attribute a = attrConfig.getAttribute();
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- LiteralArray _value_1 = attrConfig.getValue();
- String value = this._configExtension.stringValue(_value_1, a);
- _builder.newLineIfNotEmpty();
- {
- boolean _isArray = this._configExtension.isArray(a);
- boolean _not_4 = (!_isArray);
- if (_not_4) {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append(aiName, " ");
- _builder.append(".");
- String _name_8 = a.getName();
- ActorClass _actorClass_3 = ai_3.getActorClass();
- String _name_9 = _actorClass_3.getName();
- CharSequence _invokeSetter = this._procedureHelpers.invokeSetter(_name_8, _name_9, value);
- _builder.append(_invokeSetter, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- } else {
- boolean _startsWith = value.startsWith("{");
- if (_startsWith) {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append(aiName, " ");
- _builder.append(".");
- String _name_10 = a.getName();
- ActorClass _actorClass_4 = ai_3.getActorClass();
- String _name_11 = _actorClass_4.getName();
- RefableType _refType = a.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- String _plus_2 = ("new " + _typeName);
- String _plus_3 = (_plus_2 + "[]");
- String _plus_4 = (_plus_3 + value);
- CharSequence _invokeSetter_1 = this._procedureHelpers.invokeSetter(_name_10, _name_11, _plus_4);
- _builder.append(_invokeSetter_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- } else {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t");
- RefableType _refType_1 = a.getRefType();
- DataType _type_1 = _refType_1.getType();
- String _typeName_1 = this._typeHelpers.typeName(_type_1);
- _builder.append(_typeName_1, " ");
- _builder.append("[] array = ");
- _builder.append(aiName, " ");
- _builder.append(".");
- String _name_12 = a.getName();
- ActorClass _actorClass_5 = ai_3.getActorClass();
- String _name_13 = _actorClass_5.getName();
- CharSequence _invokeGetter = this._procedureHelpers.invokeGetter(_name_12, _name_13);
- _builder.append(_invokeGetter, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("for (int i=0;i<");
- int _size_1 = a.getSize();
- _builder.append(_size_1, " ");
- _builder.append(";i++){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t\t");
- _builder.append("array[i] = ");
- _builder.append(value, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- }
- }
- {
- for(final PortInstanceConfig portConfig : portConfigs) {
- _builder.append("\t\t");
- _builder.append("\t");
- InterfaceItem item = portConfig.getItem();
- _builder.newLineIfNotEmpty();
- {
- EList<AttrInstanceConfig> _attributes = portConfig.getAttributes();
- for(final AttrInstanceConfig attrConfig_1 : _attributes) {
- _builder.append("\t\t");
- _builder.append("\t");
- Attribute a_1 = attrConfig_1.getAttribute();
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- LiteralArray _value_2 = attrConfig_1.getValue();
- String value_1 = this._configExtension.stringValue(_value_2, a_1);
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- String _plus_5 = (aiName + ".");
- String _name_14 = item.getName();
- String _portClassName = this._roomExtensions.getPortClassName(item);
- CharSequence _invokeGetter_1 = this._procedureHelpers.invokeGetter(_name_14, _portClassName);
- String refToItem = (_plus_5 + _invokeGetter_1);
- _builder.newLineIfNotEmpty();
- {
- boolean _isArray_1 = this._configExtension.isArray(a_1);
- boolean _not_5 = (!_isArray_1);
- if (_not_5) {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append(refToItem, " ");
- _builder.append(".");
- String _name_15 = a_1.getName();
- String _portClassName_1 = this._roomExtensions.getPortClassName(item);
- CharSequence _invokeSetter_2 = this._procedureHelpers.invokeSetter(_name_15, _portClassName_1, value_1);
- _builder.append(_invokeSetter_2, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- } else {
- boolean _startsWith_1 = value_1.startsWith("{");
- if (_startsWith_1) {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append(refToItem, " ");
- _builder.append(".");
- String _name_16 = a_1.getName();
- ActorClass _actorClass_6 = ai_3.getActorClass();
- String _name_17 = _actorClass_6.getName();
- RefableType _refType_2 = a_1.getRefType();
- DataType _type_2 = _refType_2.getType();
- String _typeName_2 = this._typeHelpers.typeName(_type_2);
- String _plus_6 = ("new " + _typeName_2);
- String _plus_7 = (_plus_6 + "[]");
- String _plus_8 = (_plus_7 + value_1);
- CharSequence _invokeSetter_3 = this._procedureHelpers.invokeSetter(_name_16, _name_17, _plus_8);
- _builder.append(_invokeSetter_3, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- } else {
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t");
- RefableType _refType_3 = a_1.getRefType();
- DataType _type_3 = _refType_3.getType();
- String _typeName_3 = this._typeHelpers.typeName(_type_3);
- _builder.append(_typeName_3, " ");
- _builder.append("[] array = ");
- _builder.append(refToItem, " ");
- _builder.append(".");
- String _name_18 = a_1.getName();
- ActorClass _actorClass_7 = ai_3.getActorClass();
- String _name_19 = _actorClass_7.getName();
- CharSequence _invokeGetter_2 = this._procedureHelpers.invokeGetter(_name_18, _name_19);
- _builder.append(_invokeGetter_2, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("for (int i=0;i<");
- int _size_2 = a_1.getSize();
- _builder.append(_size_2, " ");
- _builder.append(";i++){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\t");
- _builder.append("\t\t");
- _builder.append("array[i] = ");
- _builder.append(value_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("\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("}");
- _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_10 = comp.getAllContainedInstances();
- boolean _hasElements_4 = false;
- for(final ActorInstance ai_4 : _allContainedInstances_10) {
- if (!_hasElements_4) {
- _hasElements_4 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t\t\t\t\t");
- _builder.append("addr_item_SystemPort_");
- EList<ActorInstance> _allContainedInstances_11 = comp.getAllContainedInstances();
- int _indexOf_8 = _allContainedInstances_11.indexOf(ai_4);
- _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_12 = comp.getAllContainedInstances();
- boolean _hasElements_5 = false;
- for(final ActorInstance ai_5 : _allContainedInstances_12) {
- if (!_hasElements_5) {
- _hasElements_5 = true;
- } else {
- _builder.appendImmediate(",", " ");
- }
- _builder.append("\t\t\t\t\t");
- _builder.append("addr_item_");
- String _path_10 = ai_5.getPath();
- String _pathName_8 = this._roomExtensions.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
deleted file mode 100644
index 99ffe08..0000000
--- a/plugins/org.eclipse.etrice.generator.java/xtend-gen/org/eclipse/etrice/generator/java/gen/SubSystemRunnerGen.java
+++ /dev/null
@@ -1,151 +0,0 @@
-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.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.genmodel.etricegen.SubSystemInstance;
-import org.eclipse.etrice.core.room.SubSystemClass;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-
-@Singleton
-@SuppressWarnings("all")
-public class SubSystemRunnerGen {
- @Inject
- private JavaIoFileSystemAccess fileAccess;
-
- @Inject
- private RoomExtensions roomExt;
-
- public void doGenerate(final Root root) {
- EList<SubSystemInstance> _subSystemInstances = root.getSubSystemInstances();
- for (final SubSystemInstance sc : _subSystemInstances) {
- {
- SubSystemClass _subSystemClass = sc.getSubSystemClass();
- String _generationTargetPath = this.roomExt.getGenerationTargetPath(_subSystemClass);
- SubSystemClass _subSystemClass_1 = sc.getSubSystemClass();
- String _path = this.roomExt.getPath(_subSystemClass_1);
- String _plus = (_generationTargetPath + _path);
- this.fileAccess.setOutputPath(_plus);
- String _name = sc.getName();
- String _plus_1 = (_name + "Runner.java");
- SubSystemClass _subSystemClass_2 = sc.getSubSystemClass();
- CharSequence _generate = this.generate(root, sc, _subSystemClass_2);
- this.fileAccess.generateFile(_plus_1, _generate);
- }
- }
- }
-
- public CharSequence 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.roomExt.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 _plus = (_name_2 + "Runner");
- _builder.append(_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/xtend-gen/org/eclipse/etrice/generator/generic/ConfigExtension.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/ConfigExtension.java
deleted file mode 100644
index e930c7b..0000000
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/ConfigExtension.java
+++ /dev/null
@@ -1,270 +0,0 @@
-package org.eclipse.etrice.generator.generic;
-
-import com.google.common.base.Objects;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.etrice.core.config.ActorClassConfig;
-import org.eclipse.etrice.core.config.ActorInstanceConfig;
-import org.eclipse.etrice.core.config.AttrClassConfig;
-import org.eclipse.etrice.core.config.AttrInstanceConfig;
-import org.eclipse.etrice.core.config.BooleanLiteral;
-import org.eclipse.etrice.core.config.IntLiteral;
-import org.eclipse.etrice.core.config.Literal;
-import org.eclipse.etrice.core.config.LiteralArray;
-import org.eclipse.etrice.core.config.PortClassConfig;
-import org.eclipse.etrice.core.config.PortInstanceConfig;
-import org.eclipse.etrice.core.config.ProtocolClassConfig;
-import org.eclipse.etrice.core.config.RealLiteral;
-import org.eclipse.etrice.core.config.StringLiteral;
-import org.eclipse.etrice.core.genmodel.etricegen.ActorInstance;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.DataType;
-import org.eclipse.etrice.core.room.LiteralType;
-import org.eclipse.etrice.core.room.PortClass;
-import org.eclipse.etrice.core.room.PrimitiveType;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.generator.base.ConfigHelper;
-import org.eclipse.etrice.generator.generic.ILanguageExtension;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@Singleton
-@SuppressWarnings("all")
-public class ConfigExtension {
- @Inject
- private ILanguageExtension languageExt;
-
- public String getInitValue(final Attribute a) {
- String value = this.getConfigDefaultValue(a);
- boolean _equals = Objects.equal(value, null);
- if (_equals) {
- String _defaultValueLiteral = a.getDefaultValueLiteral();
- value = _defaultValueLiteral;
- }
- return value;
- }
-
- public String getConfigDefaultValue(final Attribute attr) {
- EObject _eContainer = attr.eContainer();
- if ((_eContainer instanceof ActorClass)) {
- EObject _eContainer_1 = attr.eContainer();
- ActorClass ac = ((ActorClass) _eContainer_1);
- ActorClassConfig _classConfig = this.getClassConfig(ac);
- EList<AttrClassConfig> _attributes = _classConfig==null?(EList<AttrClassConfig>)null:_classConfig.getAttributes();
- return _attributes==null?(String)null:this.getConfigValue(_attributes, attr);
- } else {
- EObject _eContainer_2 = attr.eContainer();
- if ((_eContainer_2 instanceof PortClass)) {
- EObject _eContainer_3 = attr.eContainer();
- PortClass pc = ((PortClass) _eContainer_3);
- EObject _eContainer_4 = pc.eContainer();
- ProtocolClass protocol = ((ProtocolClass) _eContainer_4);
- ProtocolClassConfig prcConfig = this.getProtocolConfig(((ProtocolClass) protocol));
- PortClass _regular = protocol.getRegular();
- boolean _equals = pc.equals(_regular);
- if (_equals) {
- PortClassConfig _regular_1 = prcConfig==null?(PortClassConfig)null:prcConfig.getRegular();
- EList<AttrClassConfig> _attributes_1 = _regular_1==null?(EList<AttrClassConfig>)null:_regular_1.getAttributes();
- return _attributes_1==null?(String)null:this.getConfigValue(_attributes_1, attr);
- } else {
- PortClassConfig _conjugated = prcConfig==null?(PortClassConfig)null:prcConfig.getConjugated();
- EList<AttrClassConfig> _attributes_2 = _conjugated==null?(EList<AttrClassConfig>)null:_conjugated.getAttributes();
- return _attributes_2==null?(String)null:this.getConfigValue(_attributes_2, attr);
- }
- }
- }
- return null;
- }
-
- public String getConfigValue(final List<AttrClassConfig> attrConfigs, final Attribute attr) {
- final Function1<AttrClassConfig,Boolean> _function = new Function1<AttrClassConfig,Boolean>() {
- public Boolean apply(final AttrClassConfig attrConfig) {
- Attribute _attribute = attrConfig.getAttribute();
- boolean _equals = _attribute.equals(attr);
- return Boolean.valueOf(_equals);
- }
- };
- AttrClassConfig _findFirst = IterableExtensions.<AttrClassConfig>findFirst(attrConfigs, _function);
- LiteralArray _value = _findFirst==null?(LiteralArray)null:_findFirst.getValue();
- String _stringValue = _value==null?(String)null:this.stringValue(_value, attr);
- return _stringValue;
- }
-
- public ActorClassConfig getClassConfig(final ActorClass ac) {
- ActorClassConfig _get = ConfigHelper.actorMap.get(ac);
- return _get;
- }
-
- public ProtocolClassConfig getProtocolConfig(final ProtocolClass prc) {
- ProtocolClassConfig _get = ConfigHelper.protocolMap.get(prc);
- return _get;
- }
-
- public String stringValue(final LiteralArray literalArray, final Attribute attr) {
- String string = "";
- boolean _and = false;
- boolean _isArray = this.isArray(attr);
- if (!_isArray) {
- _and = false;
- } else {
- EList<Literal> _literals = literalArray.getLiterals();
- int _size = _literals.size();
- boolean _greaterThan = (_size > 1);
- _and = (_isArray && _greaterThan);
- }
- if (_and) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("{ ");
- {
- EList<Literal> _literals_1 = literalArray.getLiterals();
- for(final Literal literal : _literals_1) {
- String _stringValue = this.stringValue(literal);
- _builder.append(_stringValue, "");
- _builder.append(", ");
- }
- }
- String _plus = (string + _builder.toString());
- string = _plus;
- int _length = string.length();
- int _minus = (_length - 2);
- String _substring = string.substring(0, _minus);
- StringConcatenation _builder_1 = new StringConcatenation();
- _builder_1.append(" ");
- _builder_1.append("}");
- String _plus_1 = (_substring + _builder_1.toString());
- string = _plus_1;
- } else {
- EList<Literal> _literals_2 = literalArray.getLiterals();
- Literal _get = _literals_2.get(0);
- String _stringValue_1 = this.stringValue(_get);
- string = _stringValue_1;
- }
- return string;
- }
-
- private String stringValue(final Literal literal) {
- String _switchResult = null;
- boolean _matched = false;
- if (!_matched) {
- if (literal instanceof BooleanLiteral) {
- final BooleanLiteral _booleanLiteral = (BooleanLiteral)literal;
- _matched=true;
- boolean _isIsTrue = _booleanLiteral.isIsTrue();
- String _string = Boolean.valueOf(_isIsTrue).toString();
- _switchResult = _string;
- }
- }
- if (!_matched) {
- if (literal instanceof IntLiteral) {
- final IntLiteral _intLiteral = (IntLiteral)literal;
- _matched=true;
- int _value = _intLiteral.getValue();
- String _string = Integer.valueOf(_value).toString();
- _switchResult = _string;
- }
- }
- if (!_matched) {
- if (literal instanceof RealLiteral) {
- final RealLiteral _realLiteral = (RealLiteral)literal;
- _matched=true;
- double _value = _realLiteral.getValue();
- String _string = Double.valueOf(_value).toString();
- _switchResult = _string;
- }
- }
- if (!_matched) {
- if (literal instanceof StringLiteral) {
- final StringLiteral _stringLiteral = (StringLiteral)literal;
- _matched=true;
- String _xblockexpression = null;
- {
- String _value = _stringLiteral.getValue();
- String value = _value.toString();
- String _xifexpression = null;
- int _length = value.length();
- boolean _equals = (_length == 1);
- if (_equals) {
- String _plus = ("\'" + value);
- String _plus_1 = (_plus + "\'");
- _xifexpression = _plus_1;
- } else {
- String _charArrayExpr = this.languageExt.toCharArrayExpr(value);
- _xifexpression = _charArrayExpr;
- }
- _xblockexpression = (_xifexpression);
- }
- _switchResult = _xblockexpression;
- }
- }
- return _switchResult;
- }
-
- public boolean isArray(final Attribute attr) {
- boolean _xblockexpression = false;
- {
- boolean isChar = false;
- RefableType _refType = attr.getRefType();
- DataType _type = _refType.getType();
- if ((_type instanceof PrimitiveType)) {
- RefableType _refType_1 = attr.getRefType();
- DataType _type_1 = _refType_1.getType();
- PrimitiveType primitive = ((PrimitiveType) _type_1);
- LiteralType _type_2 = primitive.getType();
- boolean _equals = Objects.equal(_type_2, LiteralType.CHAR);
- isChar = _equals;
- }
- boolean _and = false;
- boolean _not = (!isChar);
- if (!_not) {
- _and = false;
- } else {
- int _size = attr.getSize();
- boolean _greaterThan = (_size > 0);
- _and = (_not && _greaterThan);
- }
- _xblockexpression = (_and);
- }
- return _xblockexpression;
- }
-
- public List<AttrInstanceConfig> getConfigAttributes(final ActorInstance ai) {
- ArrayList<AttrInstanceConfig> _arrayList = new ArrayList<AttrInstanceConfig>();
- ArrayList<AttrInstanceConfig> attrConfigs = _arrayList;
- String _path = ai.getPath();
- ActorInstanceConfig config = ConfigHelper.instanceMap.get(_path);
- boolean _notEquals = (!Objects.equal(config, null));
- if (_notEquals) {
- EList<AttrInstanceConfig> _attributes = config.getAttributes();
- for (final AttrInstanceConfig attrConfig : _attributes) {
- LiteralArray _value = attrConfig.getValue();
- boolean _notEquals_1 = (!Objects.equal(_value, null));
- if (_notEquals_1) {
- attrConfigs.add(attrConfig);
- }
- }
- }
- return attrConfigs;
- }
-
- public List<PortInstanceConfig> getConfigPorts(final ActorInstance ai) {
- ArrayList<PortInstanceConfig> _arrayList = new ArrayList<PortInstanceConfig>();
- ArrayList<PortInstanceConfig> portConfigs = _arrayList;
- String _path = ai.getPath();
- ActorInstanceConfig config = ConfigHelper.instanceMap.get(_path);
- boolean _notEquals = (!Objects.equal(config, null));
- if (_notEquals) {
- EList<PortInstanceConfig> _ports = config.getPorts();
- for (final PortInstanceConfig portConfig : _ports) {
- portConfigs.add(portConfig);
- }
- }
- return portConfigs;
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericActorClassGenerator.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericActorClassGenerator.java
deleted file mode 100644
index fb9ff20..0000000
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericActorClassGenerator.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.eclipse.etrice.generator.generic;
-
-import com.google.inject.Inject;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.Port;
-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.generator.generic.ILanguageExtension;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtext.util.Pair;
-import org.eclipse.xtext.util.Tuples;
-
-@SuppressWarnings("all")
-public class GenericActorClassGenerator {
- @Inject
- private ILanguageExtension langExt;
-
- @Inject
- private RoomExtensions roomExt;
-
- public String genInterfaceItemConstants(final ExpandedActorClass xpac, final ActorClass ac) {
- List<Port> _xifexpression = null;
- boolean _usesInheritance = this.langExt.usesInheritance();
- if (_usesInheritance) {
- List<Port> _endPorts = this.roomExt.getEndPorts(ac);
- _xifexpression = _endPorts;
- } else {
- List<Port> _allEndPorts = this.roomExt.getAllEndPorts(ac);
- _xifexpression = _allEndPorts;
- }
- List<Port> endPorts = _xifexpression;
- List<SAPRef> _xifexpression_1 = null;
- boolean _usesInheritance_1 = this.langExt.usesInheritance();
- if (_usesInheritance_1) {
- EList<SAPRef> _strSAPs = ac.getStrSAPs();
- _xifexpression_1 = _strSAPs;
- } else {
- List<SAPRef> _allSAPs = this.roomExt.getAllSAPs(ac);
- _xifexpression_1 = _allSAPs;
- }
- List<SAPRef> strSAPs = _xifexpression_1;
- List<ServiceImplementation> _xifexpression_2 = null;
- boolean _usesInheritance_2 = this.langExt.usesInheritance();
- if (_usesInheritance_2) {
- EList<ServiceImplementation> _serviceImplementations = ac.getServiceImplementations();
- _xifexpression_2 = _serviceImplementations;
- } else {
- List<ServiceImplementation> _allServiceImplementations = this.roomExt.getAllServiceImplementations(ac);
- _xifexpression_2 = _allServiceImplementations;
- }
- List<ServiceImplementation> svcImpls = _xifexpression_2;
- ArrayList<Pair<String,String>> _arrayList = new ArrayList<Pair<String,String>>();
- ArrayList<Pair<String,String>> list = _arrayList;
- for (final Port ep : endPorts) {
- String _name = ep.getName();
- String _plus = ("IFITEM_" + _name);
- int _interfaceItemLocalId = xpac.getInterfaceItemLocalId(ep);
- int _plus_1 = (1 + _interfaceItemLocalId);
- String _string = Integer.valueOf(_plus_1).toString();
- Pair<String,String> _pair = Tuples.<String, String>pair(_plus, _string);
- list.add(_pair);
- }
- for (final SAPRef sap : strSAPs) {
- String _name_1 = sap.getName();
- String _plus_2 = ("IFITEM_" + _name_1);
- int _interfaceItemLocalId_1 = xpac.getInterfaceItemLocalId(sap);
- int _plus_3 = (1 + _interfaceItemLocalId_1);
- String _string_1 = Integer.valueOf(_plus_3).toString();
- Pair<String,String> _pair_1 = Tuples.<String, String>pair(_plus_2, _string_1);
- list.add(_pair_1);
- }
- for (final ServiceImplementation svc : svcImpls) {
- SPPRef _spp = svc.getSpp();
- String _name_2 = _spp.getName();
- String _plus_4 = ("IFITEM_" + _name_2);
- SPPRef _spp_1 = svc.getSpp();
- int _interfaceItemLocalId_2 = xpac.getInterfaceItemLocalId(_spp_1);
- int _plus_5 = (1 + _interfaceItemLocalId_2);
- String _string_2 = Integer.valueOf(_plus_5).toString();
- Pair<String,String> _pair_2 = Tuples.<String, String>pair(_plus_4, _string_2);
- list.add(_pair_2);
- }
- return this.langExt.genEnumeration("interface_items", list);
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericProtocolClassGenerator.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericProtocolClassGenerator.java
deleted file mode 100644
index 66a2003..0000000
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericProtocolClassGenerator.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package org.eclipse.etrice.generator.generic;
-
-import com.google.inject.Inject;
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.etrice.core.room.GeneralProtocolClass;
-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.Port;
-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.generator.generic.ILanguageExtension;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtext.util.Pair;
-import org.eclipse.xtext.util.Tuples;
-
-@SuppressWarnings("all")
-public class GenericProtocolClassGenerator {
- @Inject
- private ILanguageExtension langExt;
-
- @Inject
- private RoomExtensions roomExt;
-
- public String genMessageIDs(final ProtocolClass pc) {
- int offset = 0;
- ArrayList<Pair<String,String>> _arrayList = new ArrayList<Pair<String,String>>();
- ArrayList<Pair<String,String>> list = _arrayList;
- String _name = pc.getName();
- String _memberInDeclaration = this.langExt.memberInDeclaration(_name, "MSG_MIN");
- String _string = Integer.valueOf(offset).toString();
- Pair<String,String> _pair = Tuples.<String, String>pair(_memberInDeclaration, _string);
- list.add(_pair);
- List<Message> _allOutgoingMessages = this.roomExt.getAllOutgoingMessages(pc);
- for (final Message msg : _allOutgoingMessages) {
- {
- int _plus = (offset + 1);
- offset = _plus;
- String _name_1 = pc.getName();
- String _name_2 = msg.getName();
- String _plus_1 = ("OUT_" + _name_2);
- String _memberInDeclaration_1 = this.langExt.memberInDeclaration(_name_1, _plus_1);
- String _string_1 = Integer.valueOf(offset).toString();
- Pair<String,String> _pair_1 = Tuples.<String, String>pair(_memberInDeclaration_1, _string_1);
- list.add(_pair_1);
- }
- }
- List<Message> _allIncomingMessages = this.roomExt.getAllIncomingMessages(pc);
- for (final Message msg_1 : _allIncomingMessages) {
- {
- int _plus = (offset + 1);
- offset = _plus;
- String _name_1 = pc.getName();
- String _name_2 = msg_1.getName();
- String _plus_1 = ("IN_" + _name_2);
- String _memberInDeclaration_1 = this.langExt.memberInDeclaration(_name_1, _plus_1);
- String _string_1 = Integer.valueOf(offset).toString();
- Pair<String,String> _pair_1 = Tuples.<String, String>pair(_memberInDeclaration_1, _string_1);
- list.add(_pair_1);
- }
- }
- int _plus = (offset + 1);
- offset = _plus;
- String _name_1 = pc.getName();
- String _memberInDeclaration_1 = this.langExt.memberInDeclaration(_name_1, "MSG_MAX");
- String _string_1 = Integer.valueOf(offset).toString();
- Pair<String,String> _pair_1 = Tuples.<String, String>pair(_memberInDeclaration_1, _string_1);
- list.add(_pair_1);
- String _name_2 = pc.getName();
- String _memberInDeclaration_2 = this.langExt.memberInDeclaration(_name_2, "msg_ids");
- return this.langExt.genEnumeration(_memberInDeclaration_2, list);
- }
-
- public String getMessageID(final MessageFromIf mif) {
- Message _message = mif.getMessage();
- InterfaceItem _from = mif.getFrom();
- return this.getMessageID(_message, _from);
- }
-
- public String getMessageID(final Message msg, final InterfaceItem item) {
- if ((item instanceof Port)) {
- Port p = ((Port) item);
- String _xifexpression = null;
- boolean _isConjugated = p.isConjugated();
- if (_isConjugated) {
- _xifexpression = "OUT_";
- } else {
- _xifexpression = "IN_";
- }
- String direction = _xifexpression;
- GeneralProtocolClass _protocol = p.getProtocol();
- String _name = _protocol.getName();
- String _name_1 = msg.getName();
- String _plus = (direction + _name_1);
- return this.langExt.memberInUse(_name, _plus);
- } else {
- if ((item instanceof SAPRef)) {
- SAPRef sap = ((SAPRef) item);
- ProtocolClass _protocol_1 = sap.getProtocol();
- String _name_2 = _protocol_1.getName();
- String _name_3 = msg.getName();
- String _plus_1 = ("OUT_" + _name_3);
- return this.langExt.memberInUse(_name_2, _plus_1);
- } else {
- if ((item instanceof SPPRef)) {
- SPPRef spp = ((SPPRef) item);
- ProtocolClass _protocol_2 = spp.getProtocol();
- String _name_4 = _protocol_2.getName();
- String _name_5 = msg.getName();
- String _plus_2 = ("IN_" + _name_5);
- return this.langExt.memberInUse(_name_4, _plus_2);
- }
- }
- }
- return "unknown interface item";
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.java
deleted file mode 100644
index 37a70ec..0000000
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/GenericStateMachineGenerator.java
+++ /dev/null
@@ -1,1392 +0,0 @@
-package org.eclipse.etrice.generator.generic;
-
-import com.google.common.base.Objects;
-import com.google.inject.Inject;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.etrice.core.genmodel.etricegen.ActiveTrigger;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedRefinedState;
-import org.eclipse.etrice.core.genmodel.etricegen.TransitionChain;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.ActorCommunicationType;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.Guard;
-import org.eclipse.etrice.core.room.GuardedTransition;
-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.Transition;
-import org.eclipse.etrice.core.room.Trigger;
-import org.eclipse.etrice.core.room.TriggeredTransition;
-import org.eclipse.etrice.generator.base.AbstractGenerator;
-import org.eclipse.etrice.generator.base.CodegenHelpers;
-import org.eclipse.etrice.generator.generic.AbstractTransitionChainGenerator;
-import org.eclipse.etrice.generator.generic.GenericProtocolClassGenerator;
-import org.eclipse.etrice.generator.generic.ILanguageExtension;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.util.Pair;
-import org.eclipse.xtext.util.Tuples;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@SuppressWarnings("all")
-public class GenericStateMachineGenerator {
- @Inject
- protected ILanguageExtension langExt;
-
- @Inject
- protected RoomExtensions _roomExtensions;
-
- @Inject
- protected GenericProtocolClassGenerator pcGen;
-
- @Inject
- protected AbstractTransitionChainGenerator languageGen;
-
- private String genStateIdConstants(final ExpandedActorClass xpac) {
- final ActorClass ac = xpac.getActorClass();
- int _xifexpression = (int) 0;
- boolean _usesInheritance = this.langExt.usesInheritance();
- if (_usesInheritance) {
- int _numberOfInheritedBaseStates = this._roomExtensions.getNumberOfInheritedBaseStates(ac);
- _xifexpression = _numberOfInheritedBaseStates;
- } else {
- _xifexpression = 0;
- }
- int offset = (2 + _xifexpression);
- List<State> _xifexpression_1 = null;
- boolean _usesInheritance_1 = this.langExt.usesInheritance();
- if (_usesInheritance_1) {
- StateGraph _stateMachine = ac.getStateMachine();
- List<State> _baseStateList = this._roomExtensions.getBaseStateList(_stateMachine);
- _xifexpression_1 = _baseStateList;
- } else {
- StateGraph _stateMachine_1 = xpac.getStateMachine();
- List<State> _baseStateList_1 = this._roomExtensions.getBaseStateList(_stateMachine_1);
- _xifexpression_1 = _baseStateList_1;
- }
- List<State> baseStates = _xifexpression_1;
- ArrayList<State> _leafStatesLast = this._roomExtensions.getLeafStatesLast(baseStates);
- baseStates = _leafStatesLast;
- ArrayList<Pair<String,String>> _arrayList = new ArrayList<Pair<String,String>>();
- ArrayList<Pair<String,String>> list = _arrayList;
- boolean _usesInheritance_2 = this.langExt.usesInheritance();
- boolean _not = (!_usesInheritance_2);
- if (_not) {
- Pair<String,String> _pair = Tuples.<String, String>pair("NO_STATE", "0");
- list.add(_pair);
- Pair<String,String> _pair_1 = Tuples.<String, String>pair("STATE_TOP", "1");
- list.add(_pair_1);
- }
- for (final State state : baseStates) {
- {
- String _stateId = this._roomExtensions.getStateId(state);
- String _string = Integer.valueOf(offset).toString();
- Pair<String,String> _pair_2 = Tuples.<String, String>pair(_stateId, _string);
- list.add(_pair_2);
- int _plus = (offset + 1);
- offset = _plus;
- }
- }
- return this.langExt.genEnumeration("state_ids", list);
- }
-
- private String genTransitionChainConstants(final ExpandedActorClass xpac) {
- final ActorClass ac = xpac.getActorClass();
- EList<TransitionChain> _xifexpression = null;
- boolean _usesInheritance = this.langExt.usesInheritance();
- if (_usesInheritance) {
- EList<TransitionChain> _ownTransitionChains = xpac.getOwnTransitionChains();
- _xifexpression = _ownTransitionChains;
- } else {
- EList<TransitionChain> _transitionChains = xpac.getTransitionChains();
- _xifexpression = _transitionChains;
- }
- EList<TransitionChain> chains = _xifexpression;
- int _xifexpression_1 = (int) 0;
- boolean _usesInheritance_1 = this.langExt.usesInheritance();
- if (_usesInheritance_1) {
- EList<TransitionChain> _transitionChains_1 = xpac.getTransitionChains();
- int _size = _transitionChains_1.size();
- int _size_1 = chains.size();
- int _minus = (_size - _size_1);
- _xifexpression_1 = _minus;
- } else {
- _xifexpression_1 = 0;
- }
- int offset = _xifexpression_1;
- ArrayList<Pair<String,String>> _arrayList = new ArrayList<Pair<String,String>>();
- ArrayList<Pair<String,String>> list = _arrayList;
- for (final TransitionChain chain : chains) {
- {
- int _plus = (offset + 1);
- offset = _plus;
- String _chainId = this._roomExtensions.getChainId(chain);
- String _string = Integer.valueOf(offset).toString();
- Pair<String,String> _pair = Tuples.<String, String>pair(_chainId, _string);
- list.add(_pair);
- }
- }
- return this.langExt.genEnumeration("chain_ids", list);
- }
-
- private String genTriggerConstants(final ExpandedActorClass xpac) {
- final ActorClass ac = xpac.getActorClass();
- EList<MessageFromIf> _xifexpression = null;
- boolean _usesInheritance = this.langExt.usesInheritance();
- if (_usesInheritance) {
- EList<MessageFromIf> _ownTriggers = xpac.getOwnTriggers();
- _xifexpression = _ownTriggers;
- } else {
- EList<MessageFromIf> _triggers = xpac.getTriggers();
- _xifexpression = _triggers;
- }
- final EList<MessageFromIf> triggers = _xifexpression;
- ArrayList<Pair<String,String>> _arrayList = new ArrayList<Pair<String,String>>();
- final ArrayList<Pair<String,String>> list = _arrayList;
- Pair<String,String> _pair = Tuples.<String, String>pair("POLLING", "0");
- list.add(_pair);
- for (final MessageFromIf mif : triggers) {
- String _triggerCodeName = xpac.getTriggerCodeName(mif);
- InterfaceItem _from = mif.getFrom();
- String _name = _from.getName();
- String _plus = ("IFITEM_" + _name);
- String _plus_1 = (_plus + " + EVT_SHIFT*");
- String _messageID = this.pcGen.getMessageID(mif);
- String _plus_2 = (_plus_1 + _messageID);
- Pair<String,String> _pair_1 = Tuples.<String, String>pair(_triggerCodeName, _plus_2);
- list.add(_pair_1);
- }
- return this.langExt.genEnumeration("triggers", list);
- }
-
- public CharSequence genStateMachine(final ExpandedActorClass xpac) {
- CharSequence _xblockexpression = null;
- {
- final ActorClass ac = xpac.getActorClass();
- ActorCommunicationType _commType = ac.getCommType();
- final boolean async = Objects.equal(_commType, ActorCommunicationType.ASYNCHRONOUS);
- ActorCommunicationType _commType_1 = ac.getCommType();
- final boolean eventDriven = Objects.equal(_commType_1, ActorCommunicationType.EVENT_DRIVEN);
- ActorCommunicationType _commType_2 = ac.getCommType();
- final boolean dataDriven = Objects.equal(_commType_2, ActorCommunicationType.DATA_DRIVEN);
- boolean _or = false;
- if (async) {
- _or = true;
- } else {
- _or = (async || eventDriven);
- }
- final boolean handleEvents = _or;
- StringConcatenation _builder = new StringConcatenation();
- _builder.newLine();
- _builder.append("/* state IDs */");
- _builder.newLine();
- String _genStateIdConstants = this.genStateIdConstants(xpac);
- _builder.append(_genStateIdConstants, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/* transition chains */");
- _builder.newLine();
- String _genTransitionChainConstants = this.genTransitionChainConstants(xpac);
- _builder.append(_genTransitionChainConstants, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/* triggers */");
- _builder.newLine();
- String _genTriggerConstants = this.genTriggerConstants(xpac);
- _builder.append(_genTriggerConstants, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- CharSequence _genExtra = this.genExtra(xpac);
- _builder.append(_genExtra, "");
- _builder.newLineIfNotEmpty();
- _builder.newLine();
- _builder.append("/* Entry and Exit Codes */");
- _builder.newLine();
- {
- StateGraph _stateMachine = xpac.getStateMachine();
- List<State> _stateList = this._roomExtensions.getStateList(_stateMachine);
- for(final State state : _stateList) {
- {
- boolean _or_1 = false;
- boolean _usesInheritance = this.langExt.usesInheritance();
- boolean _not = (!_usesInheritance);
- if (_not) {
- _or_1 = true;
- } else {
- boolean _isOwnObject = xpac.isOwnObject(state);
- _or_1 = (_not || _isOwnObject);
- }
- if (_or_1) {
- CharSequence _genActionCodeMethods = this.genActionCodeMethods(xpac, state);
- _builder.append(_genActionCodeMethods, "");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- _builder.newLine();
- _builder.append("/* Action Codes */");
- _builder.newLine();
- {
- StateGraph _stateMachine_1 = xpac.getStateMachine();
- List<Transition> _transitionList = this._roomExtensions.getTransitionList(_stateMachine_1);
- for(final Transition tr : _transitionList) {
- {
- boolean _and = false;
- boolean _or_2 = false;
- boolean _usesInheritance_1 = this.langExt.usesInheritance();
- boolean _not_1 = (!_usesInheritance_1);
- if (_not_1) {
- _or_2 = true;
- } else {
- boolean _isOwnObject_1 = xpac.isOwnObject(tr);
- _or_2 = (_not_1 || _isOwnObject_1);
- }
- if (!_or_2) {
- _and = false;
- } else {
- boolean _hasActionCode = this._roomExtensions.hasActionCode(tr);
- _and = (_or_2 && _hasActionCode);
- }
- if (_and) {
- TransitionChain _chain = xpac.getChain(tr);
- Transition start = _chain.getTransition();
- _builder.newLineIfNotEmpty();
- boolean _and_1 = false;
- if (!(start instanceof NonInitialTransition)) {
- _and_1 = false;
- } else {
- boolean _not_2 = (!(start instanceof GuardedTransition));
- _and_1 = ((start instanceof NonInitialTransition) && _not_2);
- }
- boolean hasArgs = _and_1;
- _builder.newLineIfNotEmpty();
- String _accessLevelProtected = this.langExt.accessLevelProtected();
- _builder.append(_accessLevelProtected, "");
- _builder.append("void ");
- String _actionCodeOperationName = CodegenHelpers.getActionCodeOperationName(tr);
- _builder.append(_actionCodeOperationName, "");
- _builder.append("(");
- String _name = ac.getName();
- String _selfPointer = this.langExt.selfPointer(_name, hasArgs);
- _builder.append(_selfPointer, "");
- {
- if (hasArgs) {
- _builder.append("InterfaceItemBase ifitem");
- String _generateArgumentList = this.languageGen.generateArgumentList(xpac, tr);
- _builder.append(_generateArgumentList, "");
- }
- }
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- AbstractGenerator _instance = AbstractGenerator.getInstance();
- DetailCode _action = tr.getAction();
- String _translatedCode = _instance.getTranslatedCode(_action);
- _builder.append(_translatedCode, " ");
- _builder.newLineIfNotEmpty();
- _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();
- String _accessLevelPrivate = this.langExt.accessLevelPrivate();
- _builder.append(_accessLevelPrivate, "");
- _builder.append("void exitTo(");
- String _name_1 = ac.getName();
- String _selfPointer_1 = this.langExt.selfPointer(_name_1, true);
- _builder.append(_selfPointer_1, "");
- _builder.append("int current, int to, boolean handler) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("while (current!=to) {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("switch (current) {");
- _builder.newLine();
- {
- StateGraph _stateMachine_2 = xpac.getStateMachine();
- List<State> _baseStateList = this._roomExtensions.getBaseStateList(_stateMachine_2);
- for(final State state_1 : _baseStateList) {
- _builder.append("\t\t\t");
- _builder.append("case ");
- String _stateId = this._roomExtensions.getStateId(state_1);
- _builder.append(_stateId, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- {
- boolean _hasExitCode = this._roomExtensions.hasExitCode(state_1);
- if (_hasExitCode) {
- _builder.append("if (!handler) ");
- String _exitCodeOperationName = CodegenHelpers.getExitCodeOperationName(state_1);
- _builder.append(_exitCodeOperationName, " ");
- _builder.append("(");
- String _selfPointer_2 = this.langExt.selfPointer(false);
- _builder.append(_selfPointer_2, " ");
- _builder.append(");");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- String _memberAccess = this.langExt.memberAccess();
- _builder.append(_memberAccess, " ");
- _builder.append("history[");
- String _parentStateId = CodegenHelpers.getParentStateId(state_1);
- _builder.append(_parentStateId, " ");
- _builder.append("] = ");
- String _stateId_1 = this._roomExtensions.getStateId(state_1);
- _builder.append(_stateId_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("current = ");
- String _parentStateId_1 = CodegenHelpers.getParentStateId(state_1);
- _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.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();
- String _accessLevelPrivate_1 = this.langExt.accessLevelPrivate();
- _builder.append(_accessLevelPrivate_1, "");
- _builder.append("int executeTransitionChain(");
- String _name_2 = ac.getName();
- String _selfPointer_3 = this.langExt.selfPointer(_name_2, true);
- _builder.append(_selfPointer_3, "");
- _builder.append("int chain");
- {
- if (handleEvents) {
- _builder.append(", InterfaceItemBase ifitem, ");
- String _voidPointer = this.langExt.voidPointer();
- _builder.append(_voidPointer, "");
- _builder.append(" generic_data");
- }
- }
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("switch (chain) {");
- _builder.newLine();
- _builder.append("\t\t");
- EList<TransitionChain> allchains = xpac.getTransitionChains();
- _builder.newLineIfNotEmpty();
- {
- for(final TransitionChain tc : allchains) {
- _builder.append("\t\t");
- _builder.append("case ");
- String _chainId = this._roomExtensions.getChainId(tc);
- _builder.append(_chainId, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("\t");
- String _generateExecuteChain = this.languageGen.generateExecuteChain(xpac, tc);
- _builder.append(_generateExecuteChain, " ");
- _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.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();
- String _accessLevelPrivate_2 = this.langExt.accessLevelPrivate();
- _builder.append(_accessLevelPrivate_2, "");
- _builder.append("int enterHistory(");
- String _name_3 = ac.getName();
- String _selfPointer_4 = this.langExt.selfPointer(_name_3, true);
- _builder.append(_selfPointer_4, "");
- _builder.append("int state, boolean handler, boolean skip_entry) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("while (");
- String _booleanConstant = this.langExt.booleanConstant(true);
- _builder.append(_booleanConstant, " ");
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("switch (state) {");
- _builder.newLine();
- {
- StateGraph _stateMachine_3 = xpac.getStateMachine();
- List<State> _baseStateList_1 = this._roomExtensions.getBaseStateList(_stateMachine_3);
- for(final State state_2 : _baseStateList_1) {
- _builder.append("\t\t\t");
- _builder.append("case ");
- String _stateId_2 = this._roomExtensions.getStateId(state_2);
- _builder.append(_stateId_2, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- {
- boolean _hasEntryCode = this._roomExtensions.hasEntryCode(state_2);
- if (_hasEntryCode) {
- _builder.append("if (!(skip_entry || handler)) ");
- String _entryCodeOperationName = CodegenHelpers.getEntryCodeOperationName(state_2);
- _builder.append(_entryCodeOperationName, " ");
- _builder.append("(");
- String _selfPointer_5 = this.langExt.selfPointer(false);
- _builder.append(_selfPointer_5, " ");
- _builder.append(");");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- boolean _isLeaf = this._roomExtensions.isLeaf(state_2);
- 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_3 = this._roomExtensions.getStateId(state_2);
- _builder.append(_stateId_3, " ");
- _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_2.getSubgraph();
- boolean _hasInitTransition = this._roomExtensions.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 (");
- String _memberAccess_1 = this.langExt.memberAccess();
- _builder.append(_memberAccess_1, " ");
- _builder.append("history[");
- String _stateId_4 = this._roomExtensions.getStateId(state_2);
- _builder.append(_stateId_4, " ");
- _builder.append("]==NO_STATE) {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- StateGraph _subgraph_1 = state_2.getSubgraph();
- Transition sub_initt = this._roomExtensions.getInitTransition(_subgraph_1);
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("state = executeTransitionChain(");
- String _selfPointer_6 = this.langExt.selfPointer(true);
- _builder.append(_selfPointer_6, " ");
- TransitionChain _chain_1 = xpac.getChain(sub_initt);
- String _chainId_1 = this._roomExtensions.getChainId(_chain_1);
- _builder.append(_chainId_1, " ");
- {
- if (handleEvents) {
- _builder.append(", ");
- String _nullPointer = this.langExt.nullPointer();
- _builder.append(_nullPointer, " ");
- _builder.append(", ");
- String _nullPointer_1 = this.langExt.nullPointer();
- _builder.append(_nullPointer_1, " ");
- }
- }
- _builder.append(");");
- _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 = ");
- String _memberAccess_2 = this.langExt.memberAccess();
- _builder.append(_memberAccess_2, " ");
- _builder.append("history[");
- String _stateId_5 = this._roomExtensions.getStateId(state_2);
- _builder.append(_stateId_5, " ");
- _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 = ");
- String _memberAccess_3 = this.langExt.memberAccess();
- _builder.append(_memberAccess_3, " ");
- _builder.append("history[");
- String _stateId_6 = this._roomExtensions.getStateId(state_2);
- _builder.append(_stateId_6, " ");
- _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 = ");
- String _memberAccess_4 = this.langExt.memberAccess();
- _builder.append(_memberAccess_4, " ");
- _builder.append("history[STATE_TOP];");
- _builder.newLineIfNotEmpty();
- _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 = ");
- String _booleanConstant_1 = this.langExt.booleanConstant(false);
- _builder.append(_booleanConstant_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _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();
- {
- boolean _usesInheritance_2 = this.langExt.usesInheritance();
- if (_usesInheritance_2) {
- String _accessLevelPublic = this.langExt.accessLevelPublic();
- _builder.append(_accessLevelPublic, "");
- } else {
- String _accessLevelPrivate_3 = this.langExt.accessLevelPrivate();
- _builder.append(_accessLevelPrivate_3, "");
- }
- }
- _builder.append("void executeInitTransition(");
- String _name_4 = ac.getName();
- String _selfPointer_7 = this.langExt.selfPointer(_name_4, false);
- _builder.append(_selfPointer_7, "");
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- StateGraph _stateMachine_4 = xpac.getStateMachine();
- Transition initt = this._roomExtensions.getInitTransition(_stateMachine_4);
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("int chain = ");
- TransitionChain _chain_2 = xpac.getChain(initt);
- String _chainId_2 = this._roomExtensions.getChainId(_chain_2);
- _builder.append(_chainId_2, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("int next = executeTransitionChain(");
- String _selfPointer_8 = this.langExt.selfPointer(true);
- _builder.append(_selfPointer_8, " ");
- _builder.append("chain");
- {
- if (handleEvents) {
- _builder.append(", ");
- String _nullPointer_2 = this.langExt.nullPointer();
- _builder.append(_nullPointer_2, " ");
- _builder.append(", ");
- String _nullPointer_3 = this.langExt.nullPointer();
- _builder.append(_nullPointer_3, " ");
- }
- }
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("next = enterHistory(");
- String _selfPointer_9 = this.langExt.selfPointer(true);
- _builder.append(_selfPointer_9, " ");
- _builder.append("next, ");
- String _booleanConstant_2 = this.langExt.booleanConstant(false);
- _builder.append(_booleanConstant_2, " ");
- _builder.append(", ");
- String _booleanConstant_3 = this.langExt.booleanConstant(false);
- _builder.append(_booleanConstant_3, " ");
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("setState(");
- String _selfPointer_10 = this.langExt.selfPointer(true);
- _builder.append(_selfPointer_10, " ");
- _builder.append("next);");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- _builder.newLine();
- _builder.append("/* receiveEvent contains the main implementation of the FSM */");
- _builder.newLine();
- {
- boolean _usesInheritance_3 = this.langExt.usesInheritance();
- if (_usesInheritance_3) {
- String _accessLevelPublic_1 = this.langExt.accessLevelPublic();
- _builder.append(_accessLevelPublic_1, "");
- } else {
- String _accessLevelPrivate_4 = this.langExt.accessLevelPrivate();
- _builder.append(_accessLevelPrivate_4, "");
- }
- }
- _builder.append("void receiveEvent(");
- String _name_5 = ac.getName();
- String _selfPointer_11 = this.langExt.selfPointer(_name_5, handleEvents);
- _builder.append(_selfPointer_11, "");
- {
- if (handleEvents) {
- _builder.append("InterfaceItemBase ifitem, int evt, ");
- String _voidPointer_1 = this.langExt.voidPointer();
- _builder.append(_voidPointer_1, "");
- _builder.append(" generic_data");
- }
- }
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- {
- if (async) {
- _builder.append("\t");
- _builder.append("int trigger = (ifitem==");
- String _nullPointer_4 = this.langExt.nullPointer();
- _builder.append(_nullPointer_4, " ");
- _builder.append(")? POLLING : ");
- {
- boolean _usesInheritance_4 = this.langExt.usesInheritance();
- if (_usesInheritance_4) {
- _builder.append("ifitem.getLocalId()");
- } else {
- _builder.append("ifitem->localId");
- }
- }
- _builder.append(" + EVT_SHIFT*evt;");
- _builder.newLineIfNotEmpty();
- } else {
- if (eventDriven) {
- _builder.append("\t");
- _builder.append("int trigger = ");
- {
- boolean _usesInheritance_5 = this.langExt.usesInheritance();
- if (_usesInheritance_5) {
- _builder.append("ifitem.getLocalId()");
- } else {
- _builder.append("ifitem->localId");
- }
- }
- _builder.append(" + EVT_SHIFT*evt;");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- _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 = ");
- String _booleanConstant_4 = this.langExt.booleanConstant(false);
- _builder.append(_booleanConstant_4, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("boolean skip_entry = ");
- String _booleanConstant_5 = this.langExt.booleanConstant(false);
- _builder.append(_booleanConstant_5, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.newLine();
- {
- if (handleEvents) {
- _builder.append("\t");
- _builder.append("if (!handleSystemEvent(ifitem, evt, generic_data)) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- CharSequence _genStateSwitch = this.genStateSwitch(xpac);
- _builder.append(_genStateSwitch, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- } else {
- _builder.append("\t");
- CharSequence _genStateSwitch_1 = this.genStateSwitch(xpac);
- _builder.append(_genStateSwitch_1, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- _builder.append("\t");
- _builder.append("if (chain != NOT_CAUGHT) {");
- _builder.newLine();
- _builder.append("\t\t");
- _builder.append("exitTo(");
- String _selfPointer_12 = this.langExt.selfPointer(true);
- _builder.append(_selfPointer_12, " ");
- String _memberAccess_5 = this.langExt.memberAccess();
- _builder.append(_memberAccess_5, " ");
- _builder.append("state, catching_state, is_handler);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("int next = executeTransitionChain(");
- String _selfPointer_13 = this.langExt.selfPointer(true);
- _builder.append(_selfPointer_13, " ");
- _builder.append("chain");
- {
- if (handleEvents) {
- _builder.append(", ifitem, generic_data");
- }
- }
- _builder.append(");");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("next = enterHistory(");
- String _selfPointer_14 = this.langExt.selfPointer(true);
- _builder.append(_selfPointer_14, " ");
- _builder.append("next, is_handler, skip_entry);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t\t");
- _builder.append("setState(");
- String _selfPointer_15 = this.langExt.selfPointer(true);
- _builder.append(_selfPointer_15, " ");
- _builder.append("next);");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- _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();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private CharSequence genStateSwitch(final ExpandedActorClass xpac) {
- CharSequence _xblockexpression = null;
- {
- ActorClass _actorClass = xpac.getActorClass();
- ActorCommunicationType _commType = _actorClass.getCommType();
- boolean async = Objects.equal(_commType, ActorCommunicationType.ASYNCHRONOUS);
- ActorClass _actorClass_1 = xpac.getActorClass();
- ActorCommunicationType _commType_1 = _actorClass_1.getCommType();
- boolean eventDriven = Objects.equal(_commType_1, ActorCommunicationType.EVENT_DRIVEN);
- ActorClass _actorClass_2 = xpac.getActorClass();
- ActorCommunicationType _commType_2 = _actorClass_2.getCommType();
- boolean dataDriven = Objects.equal(_commType_2, ActorCommunicationType.DATA_DRIVEN);
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("switch (");
- String _memberAccess = this.langExt.memberAccess();
- _builder.append(_memberAccess, "");
- _builder.append("state) {");
- _builder.newLineIfNotEmpty();
- {
- StateGraph _stateMachine = xpac.getStateMachine();
- List<State> _leafStateList = this._roomExtensions.getLeafStateList(_stateMachine);
- for(final State state : _leafStateList) {
- _builder.append("\t");
- _builder.append("case ");
- String _stateId = this._roomExtensions.getStateId(state);
- _builder.append(_stateId, " ");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- {
- if (async) {
- _builder.append("\t");
- _builder.append("\t");
- EList<ActiveTrigger> atlist = xpac.getActiveTriggers(state);
- _builder.newLineIfNotEmpty();
- {
- boolean _isEmpty = atlist.isEmpty();
- boolean _not = (!_isEmpty);
- if (_not) {
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("switch(trigger) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("case POLLING:");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- CharSequence _genDataDrivenTriggers = this.genDataDrivenTriggers(xpac, state);
- _builder.append(_genDataDrivenTriggers, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- CharSequence _genEventDrivenTriggers = this.genEventDrivenTriggers(xpac, state, atlist);
- _builder.append(_genEventDrivenTriggers, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- } else {
- _builder.append("\t");
- _builder.append("\t");
- CharSequence _genDataDrivenTriggers_1 = this.genDataDrivenTriggers(xpac, state);
- _builder.append(_genDataDrivenTriggers_1, " ");
- _builder.newLineIfNotEmpty();
- }
- }
- } else {
- if (dataDriven) {
- _builder.append("\t");
- _builder.append("\t");
- CharSequence _genDataDrivenTriggers_2 = this.genDataDrivenTriggers(xpac, state);
- _builder.append(_genDataDrivenTriggers_2, " ");
- _builder.newLineIfNotEmpty();
- } else {
- if (eventDriven) {
- _builder.append("\t");
- _builder.append("\t");
- EList<ActiveTrigger> atlist_1 = xpac.getActiveTriggers(state);
- _builder.newLineIfNotEmpty();
- {
- boolean _isEmpty_1 = atlist_1.isEmpty();
- boolean _not_1 = (!_isEmpty_1);
- if (_not_1) {
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("switch(trigger) {");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("\t");
- CharSequence _genEventDrivenTriggers_1 = this.genEventDrivenTriggers(xpac, state, atlist_1);
- _builder.append(_genEventDrivenTriggers_1, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- }
- }
- }
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("break;");
- _builder.newLine();
- }
- }
- _builder.append("}");
- _builder.newLine();
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private CharSequence genDataDrivenTriggers(final ExpandedActorClass xpac, final State state) {
- StringConcatenation _builder = new StringConcatenation();
- CharSequence _genDoCodes = this.genDoCodes(state);
- _builder.append(_genDoCodes, "");
- _builder.newLineIfNotEmpty();
- List<Transition> _outgoingTransitionsHierarchical = this._roomExtensions.getOutgoingTransitionsHierarchical(xpac, state);
- final Function1<Transition,Boolean> _function = new Function1<Transition,Boolean>() {
- public Boolean apply(final Transition t) {
- return Boolean.valueOf((t instanceof GuardedTransition));
- }
- };
- Iterable<Transition> transitions = IterableExtensions.<Transition>filter(_outgoingTransitionsHierarchical, _function);
- _builder.newLineIfNotEmpty();
- {
- for(final Transition tr : transitions) {
- _builder.append("if (");
- AbstractGenerator _instance = AbstractGenerator.getInstance();
- DetailCode _guard = ((GuardedTransition) tr).getGuard();
- String _translatedCode = _instance.getTranslatedCode(_guard);
- _builder.append(_translatedCode, "");
- _builder.append(")");
- _builder.newLineIfNotEmpty();
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t");
- TransitionChain chain = xpac.getChain(tr);
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("chain = ");
- String _chainId = this._roomExtensions.getChainId(chain);
- _builder.append(_chainId, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("catching_state = ");
- String _contextId = this._roomExtensions.getContextId(chain);
- _builder.append(_contextId, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- {
- boolean _isHandler = chain.isHandler();
- if (_isHandler) {
- _builder.append("is_handler = TRUE;");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- {
- boolean _isSkipEntry = chain.isSkipEntry();
- if (_isSkipEntry) {
- _builder.append("skip_entry = TRUE;");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- {
- Transition _last = IterableExtensions.<Transition>last(transitions);
- boolean _notEquals = (!Objects.equal(tr, _last));
- if (_notEquals) {
- _builder.append("else ");
- _builder.newLine();
- }
- }
- }
- }
- return _builder;
- }
-
- private CharSequence genEventDrivenTriggers(final ExpandedActorClass xpac, final State state, final List<ActiveTrigger> atlist) {
- StringConcatenation _builder = new StringConcatenation();
- {
- for(final ActiveTrigger at : atlist) {
- _builder.append("case ");
- String _trigger = at.getTrigger();
- String _triggerCodeName = xpac.getTriggerCodeName(_trigger);
- _builder.append(_triggerCodeName, "");
- _builder.append(":");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- boolean needData = this._roomExtensions.hasGuard(xpac, at);
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- {
- if (needData) {
- _builder.append("{ ");
- Message _msg = at.getMsg();
- String _typedDataDefinition = this.langExt.getTypedDataDefinition(_msg);
- _builder.append(_typedDataDefinition, " ");
- }
- }
- _builder.newLineIfNotEmpty();
- {
- EList<TriggeredTransition> _transitions = at.getTransitions();
- boolean _hasElements = false;
- for(final TriggeredTransition tt : _transitions) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(" else ", " ");
- }
- _builder.append("\t");
- TransitionChain chain = xpac.getChain(tt);
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- Transition _transition = chain.getTransition();
- String _trigger_1 = at.getTrigger();
- CharSequence _guard = this.guard(_transition, _trigger_1, xpac);
- _builder.append(_guard, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("{");
- _builder.newLine();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("chain = ");
- String _chainId = this._roomExtensions.getChainId(chain);
- _builder.append(_chainId, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- _builder.append("catching_state = ");
- String _contextId = this._roomExtensions.getContextId(chain);
- _builder.append(_contextId, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- {
- boolean _isHandler = chain.isHandler();
- if (_isHandler) {
- _builder.append("is_handler = ");
- String _booleanConstant = this.langExt.booleanConstant(true);
- _builder.append(_booleanConstant, " ");
- _builder.append(";");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("\t");
- {
- boolean _isSkipEntry = chain.isSkipEntry();
- if (_isSkipEntry) {
- _builder.append("skip_entry = ");
- String _booleanConstant_1 = this.langExt.booleanConstant(true);
- _builder.append(_booleanConstant_1, " ");
- _builder.append(";");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("}");
- _builder.newLine();
- }
- }
- _builder.append("\t");
- {
- if (needData) {
- _builder.append("}");
- }
- }
- _builder.newLineIfNotEmpty();
- _builder.append("break;");
- _builder.newLine();
- }
- }
- return _builder;
- }
-
- public CharSequence genExtra(final ExpandedActorClass xpac) {
- StringConcatenation _builder = new StringConcatenation();
- return _builder;
- }
-
- private CharSequence _guard(final TriggeredTransition tt, final String trigger, final ExpandedActorClass ac) {
- CharSequence _xblockexpression = null;
- {
- 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.valueOf(_isMatching);
- }
- };
- Trigger tr = IterableExtensions.<Trigger>findFirst(_triggers, _function);
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _hasGuard = this._roomExtensions.hasGuard(tr);
- if (_hasGuard) {
- _builder.append("if (");
- AbstractGenerator _instance = AbstractGenerator.getInstance();
- Guard _guard = tr.getGuard();
- DetailCode _guard_1 = _guard.getGuard();
- String _translatedCode = _instance.getTranslatedCode(_guard_1);
- _builder.append(_translatedCode, "");
- _builder.append(")");
- _builder.newLineIfNotEmpty();
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private CharSequence _guard(final Transition t, final String trigger, final ExpandedActorClass ac) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/* error */");
- _builder.newLine();
- return _builder;
- }
-
- private CharSequence genDoCodes(final State state) {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _hasDoCode = this._roomExtensions.hasDoCode(state);
- if (_hasDoCode) {
- String _doCodeOperationName = CodegenHelpers.getDoCodeOperationName(state);
- _builder.append(_doCodeOperationName, "");
- _builder.append("(self);");
- _builder.newLineIfNotEmpty();
- }
- }
- {
- EObject _eContainer = state.eContainer();
- EObject _eContainer_1 = _eContainer.eContainer();
- if ((_eContainer_1 instanceof State)) {
- EObject _eContainer_2 = state.eContainer();
- EObject _eContainer_3 = _eContainer_2.eContainer();
- CharSequence _genDoCodes = this.genDoCodes(((State) _eContainer_3));
- _builder.append(_genDoCodes, "");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- private CharSequence genActionCodeMethods(final ExpandedActorClass xpac, final State state) {
- CharSequence _xblockexpression = null;
- {
- ActorClass _actorClass = xpac.getActorClass();
- String _name = _actorClass.getName();
- final String selfPtr = this.langExt.selfPointer(_name, false);
- final String entryOp = CodegenHelpers.getEntryCodeOperationName(state);
- final String exitOp = CodegenHelpers.getExitCodeOperationName(state);
- final String doOp = CodegenHelpers.getDoCodeOperationName(state);
- AbstractGenerator _instance = AbstractGenerator.getInstance();
- DetailCode _entryCode = state.getEntryCode();
- String entry = _instance.getTranslatedCode(_entryCode);
- AbstractGenerator _instance_1 = AbstractGenerator.getInstance();
- DetailCode _exitCode = state.getExitCode();
- String exit = _instance_1.getTranslatedCode(_exitCode);
- AbstractGenerator _instance_2 = AbstractGenerator.getInstance();
- DetailCode _doCode = state.getDoCode();
- String docode = _instance_2.getTranslatedCode(_doCode);
- if ((state instanceof ExpandedRefinedState)) {
- final ExpandedRefinedState rs = ((ExpandedRefinedState) state);
- AbstractGenerator _instance_3 = AbstractGenerator.getInstance();
- DetailCode _inheritedEntry = rs.getInheritedEntry();
- final String inhEntry = _instance_3.getTranslatedCode(_inheritedEntry);
- AbstractGenerator _instance_4 = AbstractGenerator.getInstance();
- DetailCode _inheritedExit = rs.getInheritedExit();
- final String inhExit = _instance_4.getTranslatedCode(_inheritedExit);
- AbstractGenerator _instance_5 = AbstractGenerator.getInstance();
- DetailCode _inheritedDo = rs.getInheritedDo();
- final String inhDo = _instance_5.getTranslatedCode(_inheritedDo);
- boolean _usesInheritance = this.langExt.usesInheritance();
- if (_usesInheritance) {
- ActorClass _actorClass_1 = xpac.getActorClass();
- ActorClass _base = _actorClass_1.getBase();
- final String baseName = _base.getName();
- DetailCode _inheritedEntry_1 = rs.getInheritedEntry();
- boolean _empty = this._roomExtensions.empty(_inheritedEntry_1);
- boolean _not = (!_empty);
- if (_not) {
- String _superCall = this.langExt.superCall(baseName, entryOp, "");
- String _plus = (_superCall + entry);
- entry = _plus;
- }
- DetailCode _inheritedExit_1 = rs.getInheritedExit();
- boolean _empty_1 = this._roomExtensions.empty(_inheritedExit_1);
- boolean _not_1 = (!_empty_1);
- if (_not_1) {
- String _superCall_1 = this.langExt.superCall(baseName, exitOp, "");
- String _plus_1 = (exit + _superCall_1);
- exit = _plus_1;
- }
- DetailCode _inheritedDo_1 = rs.getInheritedDo();
- boolean _empty_2 = this._roomExtensions.empty(_inheritedDo_1);
- boolean _not_2 = (!_empty_2);
- if (_not_2) {
- String _superCall_2 = this.langExt.superCall(baseName, doOp, "");
- String _plus_2 = (_superCall_2 + docode);
- docode = _plus_2;
- }
- } else {
- String _plus_3 = (inhEntry + entry);
- entry = _plus_3;
- String _plus_4 = (exit + inhExit);
- exit = _plus_4;
- String _plus_5 = (inhDo + docode);
- docode = _plus_5;
- }
- }
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _isEmpty = entry.isEmpty();
- boolean _not_3 = (!_isEmpty);
- if (_not_3) {
- String _accessLevelProtected = this.langExt.accessLevelProtected();
- _builder.append(_accessLevelProtected, "");
- _builder.append("void ");
- _builder.append(entryOp, "");
- _builder.append("(");
- _builder.append(selfPtr, "");
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append(entry, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- {
- boolean _isEmpty_1 = exit.isEmpty();
- boolean _not_4 = (!_isEmpty_1);
- if (_not_4) {
- String _accessLevelProtected_1 = this.langExt.accessLevelProtected();
- _builder.append(_accessLevelProtected_1, "");
- _builder.append("void ");
- _builder.append(exitOp, "");
- _builder.append("(");
- _builder.append(selfPtr, "");
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append(exit, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- {
- boolean _isEmpty_2 = docode.isEmpty();
- boolean _not_5 = (!_isEmpty_2);
- if (_not_5) {
- String _accessLevelProtected_2 = this.langExt.accessLevelProtected();
- _builder.append(_accessLevelProtected_2, "");
- _builder.append(" void ");
- _builder.append(doOp, "");
- _builder.append("(");
- _builder.append(selfPtr, "");
- _builder.append(") {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append(docode, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- _xblockexpression = (_builder);
- }
- return _xblockexpression;
- }
-
- private CharSequence guard(final Transition tt, final String trigger, final ExpandedActorClass ac) {
- if (tt instanceof TriggeredTransition) {
- return _guard((TriggeredTransition)tt, trigger, ac);
- } else if (tt != null) {
- return _guard(tt, trigger, ac);
- } else {
- throw new IllegalArgumentException("Unhandled parameter types: " +
- Arrays.<Object>asList(tt, trigger, ac).toString());
- }
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/PrepareFileSystem.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/PrepareFileSystem.java
deleted file mode 100644
index 828ac29..0000000
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/PrepareFileSystem.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package org.eclipse.etrice.generator.generic;
-
-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.genmodel.base.ILogger;
-import org.eclipse.etrice.core.genmodel.etricegen.Root;
-import org.eclipse.etrice.core.room.RoomModel;
-import org.eclipse.etrice.generator.generic.RoomExtensions;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
-
-@Singleton
-@SuppressWarnings("all")
-public class PrepareFileSystem {
- @Inject
- private RoomExtensions roomExt;
-
- @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.roomExt.getGenerationTargetPath(mdl);
- pathes.add(_generationTargetPath);
- }
- }
- }
- for (final String path : pathes) {
- {
- String _plus = ("clearing " + path);
- this.logger.logInfo(_plus);
- File _file = new File(path);
- File f = _file;
- this.eraseContents(f);
- this.fileAccess.setOutputPath(path);
- CharSequence _readmeText = this.readmeText();
- this.fileAccess.generateFile("readme.txt", _readmeText);
- }
- }
- }
-
- public void eraseContents(final File f) {
- boolean _isDirectory = f.isDirectory();
- if (_isDirectory) {
- File[] children = f.listFiles();
- for (final File child : children) {
- {
- this.eraseContents(child);
- child.delete();
- }
- }
- }
- }
-
- public CharSequence 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/xtend-gen/org/eclipse/etrice/generator/generic/ProcedureHelpers.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/ProcedureHelpers.java
deleted file mode 100644
index b3dfaad..0000000
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/ProcedureHelpers.java
+++ /dev/null
@@ -1,843 +0,0 @@
-package org.eclipse.etrice.generator.generic;
-
-import com.google.common.base.Objects;
-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.genmodel.base.ILogger;
-import org.eclipse.etrice.core.room.ActorClass;
-import org.eclipse.etrice.core.room.ActorContainerClass;
-import org.eclipse.etrice.core.room.Attribute;
-import org.eclipse.etrice.core.room.ComplexType;
-import org.eclipse.etrice.core.room.DataClass;
-import org.eclipse.etrice.core.room.DataType;
-import org.eclipse.etrice.core.room.DetailCode;
-import org.eclipse.etrice.core.room.Operation;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.core.room.StandardOperation;
-import org.eclipse.etrice.core.room.VarDecl;
-import org.eclipse.etrice.core.room.util.RoomHelpers;
-import org.eclipse.etrice.generator.base.AbstractGenerator;
-import org.eclipse.etrice.generator.generic.ConfigExtension;
-import org.eclipse.etrice.generator.generic.ILanguageExtension;
-import org.eclipse.etrice.generator.generic.TypeHelpers;
-import org.eclipse.xtend2.lib.StringConcatenation;
-import org.eclipse.xtext.xbase.lib.Conversions;
-import org.eclipse.xtext.xbase.lib.StringExtensions;
-
-@Singleton
-@SuppressWarnings("all")
-public class ProcedureHelpers {
- @Inject
- private ILanguageExtension languageExt;
-
- @Inject
- private ConfigExtension _configExtension;
-
- @Inject
- private TypeHelpers _typeHelpers;
-
- @Inject
- private ILogger logger;
-
- public CharSequence userCode(final DataClass dc, final int id) {
- CharSequence _switchResult = null;
- boolean _matched = false;
- if (!_matched) {
- if (Objects.equal(id,1)) {
- _matched=true;
- String _deepUserCode1 = RoomHelpers.getDeepUserCode1(dc);
- CharSequence _userCode = this.userCode(_deepUserCode1);
- _switchResult = _userCode;
- }
- }
- if (!_matched) {
- if (Objects.equal(id,2)) {
- _matched=true;
- String _deepUserCode2 = RoomHelpers.getDeepUserCode2(dc);
- CharSequence _userCode_1 = this.userCode(_deepUserCode2);
- _switchResult = _userCode_1;
- }
- }
- if (!_matched) {
- if (Objects.equal(id,3)) {
- _matched=true;
- String _deepUserCode3 = RoomHelpers.getDeepUserCode3(dc);
- CharSequence _userCode_2 = this.userCode(_deepUserCode3);
- _switchResult = _userCode_2;
- }
- }
- return _switchResult;
- }
-
- public CharSequence userCode(final ProtocolClass pc, final int id) {
- CharSequence _switchResult = null;
- boolean _matched = false;
- if (!_matched) {
- if (Objects.equal(id,1)) {
- _matched=true;
- String _deepUserCode1 = RoomHelpers.getDeepUserCode1(pc);
- CharSequence _userCode = this.userCode(_deepUserCode1);
- _switchResult = _userCode;
- }
- }
- if (!_matched) {
- if (Objects.equal(id,2)) {
- _matched=true;
- String _deepUserCode2 = RoomHelpers.getDeepUserCode2(pc);
- CharSequence _userCode_1 = this.userCode(_deepUserCode2);
- _switchResult = _userCode_1;
- }
- }
- if (!_matched) {
- if (Objects.equal(id,3)) {
- _matched=true;
- String _deepUserCode3 = RoomHelpers.getDeepUserCode3(pc);
- CharSequence _userCode_2 = this.userCode(_deepUserCode3);
- _switchResult = _userCode_2;
- }
- }
- return _switchResult;
- }
-
- public CharSequence userCode(final ActorContainerClass ac, final int id) {
- CharSequence _switchResult = null;
- boolean _matched = false;
- if (!_matched) {
- if (Objects.equal(id,1)) {
- _matched=true;
- String _deepUserCode1 = RoomHelpers.getDeepUserCode1(ac);
- CharSequence _userCode = this.userCode(_deepUserCode1);
- _switchResult = _userCode;
- }
- }
- if (!_matched) {
- if (Objects.equal(id,2)) {
- _matched=true;
- String _deepUserCode2 = RoomHelpers.getDeepUserCode2(ac);
- CharSequence _userCode_1 = this.userCode(_deepUserCode2);
- _switchResult = _userCode_1;
- }
- }
- if (!_matched) {
- if (Objects.equal(id,3)) {
- _matched=true;
- String _deepUserCode3 = RoomHelpers.getDeepUserCode3(ac);
- CharSequence _userCode_2 = this.userCode(_deepUserCode3);
- _switchResult = _userCode_2;
- }
- }
- return _switchResult;
- }
-
- public CharSequence userCode(final DetailCode dc) {
- String _detailCode = RoomHelpers.getDetailCode(dc);
- CharSequence _userCode = this.userCode(_detailCode);
- return _userCode;
- }
-
- private CharSequence userCode(final String code) {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _and = false;
- boolean _notEquals = (!Objects.equal(code, null));
- if (!_notEquals) {
- _and = false;
- } else {
- boolean _isEmpty = code.isEmpty();
- boolean _not = (!_isEmpty);
- _and = (_notEquals && _not);
- }
- if (_and) {
- _builder.append("/*--------------------- begin user code ---------------------*/");
- _builder.newLine();
- _builder.append(code, "");
- _builder.newLineIfNotEmpty();
- _builder.append("/*--------------------- end user code ---------------------*/");
- _builder.newLine();
- }
- }
- return _builder;
- }
-
- /**
- * TODO: add ref type
- */
- public CharSequence attributes(final List<Attribute> attribs) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/*--------------------- attributes ---------------------*/");
- _builder.newLine();
- {
- for(final Attribute attribute : attribs) {
- {
- int _size = attribute.getSize();
- boolean _equals = (_size == 0);
- if (_equals) {
- RefableType _refType = attribute.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- _builder.append(_typeName, "");
- {
- RefableType _refType_1 = attribute.getRefType();
- boolean _isRef = _refType_1.isRef();
- if (_isRef) {
- String _pointerLiteral = this.languageExt.pointerLiteral();
- _builder.append(_pointerLiteral, "");
- }
- }
- _builder.append(" ");
- String _name = attribute.getName();
- _builder.append(_name, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- } else {
- RefableType _refType_2 = attribute.getRefType();
- DataType _type_1 = _refType_2.getType();
- String _typeName_1 = this._typeHelpers.typeName(_type_1);
- int _size_1 = attribute.getSize();
- String _name_1 = attribute.getName();
- RefableType _refType_3 = attribute.getRefType();
- boolean _isRef_1 = _refType_3.isRef();
- String _arrayDeclaration = this.languageExt.arrayDeclaration(_typeName_1, _size_1, _name_1, _isRef_1);
- _builder.append(_arrayDeclaration, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- return _builder;
- }
-
- public String arrayInitializer(final Attribute att) {
- String _xifexpression = null;
- String _defaultValueLiteral = att.getDefaultValueLiteral();
- boolean _notEquals = (!Objects.equal(_defaultValueLiteral, null));
- if (_notEquals) {
- String _defaultValueLiteral_1 = att.getDefaultValueLiteral();
- _xifexpression = _defaultValueLiteral_1;
- } else {
- RefableType _refType = att.getRefType();
- DataType _type = _refType.getType();
- String _defaultValue = this._typeHelpers.defaultValue(_type);
- _xifexpression = _defaultValue;
- }
- String dflt = _xifexpression;
- boolean _startsWith = dflt.startsWith("{");
- if (_startsWith) {
- String[] _split = dflt.split(",");
- int _size = ((List<String>)Conversions.doWrapArray(_split)).size();
- int _size_1 = att.getSize();
- boolean _notEquals_1 = (_size != _size_1);
- if (_notEquals_1) {
- String _name = att.getName();
- String _plus = ("WARNING: array size determined by initializer differs from attribute size (" + _name);
- String _plus_1 = (_plus + "[");
- int _size_2 = att.getSize();
- String _plus_2 = (_plus_1 + Integer.valueOf(_size_2));
- String _plus_3 = (_plus_2 + "] <-> ");
- String _plus_4 = (_plus_3 + dflt);
- String _plus_5 = (_plus_4 + ")");
- this.logger.logInfo(_plus_5);
- }
- return dflt;
- }
- String result = "{";
- int i = 0;
- int _size_3 = att.getSize();
- boolean _lessThan = (i < _size_3);
- boolean _while = _lessThan;
- while (_while) {
- {
- String _plus_6 = (result + dflt);
- result = _plus_6;
- int _plus_7 = (i + 1);
- i = _plus_7;
- int _size_4 = att.getSize();
- boolean _lessThan_1 = (i < _size_4);
- if (_lessThan_1) {
- String _plus_8 = (result + ", ");
- result = _plus_8;
- }
- }
- int _size_4 = att.getSize();
- boolean _lessThan_1 = (i < _size_4);
- _while = _lessThan_1;
- }
- return (result + "}");
- }
-
- public CharSequence attributeInitialization(final List<Attribute> attribs, final boolean useClassDefaultsOnly) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("// initialize attributes");
- _builder.newLine();
- {
- for(final Attribute a : attribs) {
- String value = this._configExtension.getInitValue(a);
- _builder.newLineIfNotEmpty();
- {
- boolean _notEquals = (!Objects.equal(value, null));
- if (_notEquals) {
- {
- boolean _isArray = this._configExtension.isArray(a);
- boolean _not = (!_isArray);
- if (_not) {
- String _name = a.getName();
- _builder.append(_name, "");
- _builder.append(" = ");
- _builder.append(value, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- } else {
- boolean _startsWith = value.startsWith("{");
- if (_startsWith) {
- String _name_1 = a.getName();
- _builder.append(_name_1, "");
- _builder.append(" = new ");
- RefableType _refType = a.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- _builder.append(_typeName, "");
- _builder.append("[] ");
- _builder.append(value, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- } else {
- String _name_2 = a.getName();
- _builder.append(_name_2, "");
- _builder.append(" = new ");
- RefableType _refType_1 = a.getRefType();
- DataType _type_1 = _refType_1.getType();
- String _typeName_1 = this._typeHelpers.typeName(_type_1);
- _builder.append(_typeName_1, "");
- _builder.append("[");
- int _size = a.getSize();
- _builder.append(_size, "");
- _builder.append("];");
- _builder.newLineIfNotEmpty();
- _builder.append("for (int i=0;i<");
- int _size_1 = a.getSize();
- _builder.append(_size_1, "");
- _builder.append(";i++){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _name_3 = a.getName();
- _builder.append(_name_3, " ");
- _builder.append("[i] = ");
- _builder.append(value, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- } else {
- boolean _or = false;
- boolean _or_1 = false;
- RefableType _refType_2 = a.getRefType();
- DataType _type_2 = _refType_2.getType();
- if ((_type_2 instanceof ComplexType)) {
- _or_1 = true;
- } else {
- int _size_2 = a.getSize();
- boolean _greaterThan = (_size_2 > 1);
- _or_1 = ((_type_2 instanceof ComplexType) || _greaterThan);
- }
- if (_or_1) {
- _or = true;
- } else {
- boolean _not_1 = (!useClassDefaultsOnly);
- _or = (_or_1 || _not_1);
- }
- if (_or) {
- {
- int _size_3 = a.getSize();
- boolean _equals = (_size_3 == 0);
- if (_equals) {
- {
- RefableType _refType_3 = a.getRefType();
- boolean _isRef = _refType_3.isRef();
- if (_isRef) {
- String _name_4 = a.getName();
- _builder.append(_name_4, "");
- _builder.append(" = ");
- String _nullPointer = this.languageExt.nullPointer();
- _builder.append(_nullPointer, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- } else {
- String _name_5 = a.getName();
- _builder.append(_name_5, "");
- _builder.append(" = ");
- RefableType _refType_4 = a.getRefType();
- DataType _type_3 = _refType_4.getType();
- String _defaultValue = this._typeHelpers.defaultValue(_type_3);
- _builder.append(_defaultValue, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- } else {
- String _name_6 = a.getName();
- _builder.append(_name_6, "");
- _builder.append(" = new ");
- RefableType _refType_5 = a.getRefType();
- DataType _type_4 = _refType_5.getType();
- String _typeName_2 = this._typeHelpers.typeName(_type_4);
- _builder.append(_typeName_2, "");
- _builder.append("[");
- int _size_4 = a.getSize();
- _builder.append(_size_4, "");
- _builder.append("];");
- _builder.newLineIfNotEmpty();
- {
- boolean _not_2 = (!useClassDefaultsOnly);
- if (_not_2) {
- _builder.append("for (int i=0;i<");
- int _size_5 = a.getSize();
- _builder.append(_size_5, "");
- _builder.append(";i++){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- String _name_7 = a.getName();
- _builder.append(_name_7, " ");
- _builder.append("[i] = ");
- {
- RefableType _refType_6 = a.getRefType();
- boolean _isRef_1 = _refType_6.isRef();
- if (_isRef_1) {
- String _nullPointer_1 = this.languageExt.nullPointer();
- _builder.append(_nullPointer_1, " ");
- } else {
- RefableType _refType_7 = a.getRefType();
- DataType _type_5 = _refType_7.getType();
- String _defaultValue_1 = this._typeHelpers.defaultValue(_type_5);
- _builder.append(_defaultValue_1, " ");
- }
- }
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return _builder;
- }
-
- public CharSequence attributeSettersGettersDeclaration(final List<Attribute> attribs, final String classname) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("//--------------------- attribute setters and getters");
- _builder.newLine();
- {
- for(final Attribute attribute : attribs) {
- CharSequence _setterHeader = this.setterHeader(attribute, classname);
- _builder.append(_setterHeader, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- CharSequence _terHeader = this.getterHeader(attribute, classname);
- _builder.append(_terHeader, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- return _builder;
- }
-
- public CharSequence attributeSettersGettersImplementation(final List<Attribute> attribs, final String classname) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("//--------------------- attribute setters and getters");
- _builder.newLine();
- {
- for(final Attribute attribute : attribs) {
- CharSequence _setterHeader = this.setterHeader(attribute, classname);
- _builder.append(_setterHeader, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t ");
- String _memberAccess = this.languageExt.memberAccess();
- _builder.append(_memberAccess, " ");
- String _name = attribute.getName();
- _builder.append(_name, " ");
- _builder.append(" = ");
- String _name_1 = attribute.getName();
- _builder.append(_name_1, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- CharSequence _terHeader = this.getterHeader(attribute, classname);
- _builder.append(_terHeader, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("return ");
- String _memberAccess_1 = this.languageExt.memberAccess();
- _builder.append(_memberAccess_1, " ");
- String _name_2 = attribute.getName();
- _builder.append(_name_2, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- return _builder;
- }
-
- private CharSequence setterHeader(final Attribute attribute, final String classname) {
- StringConcatenation _builder = new StringConcatenation();
- String _accessLevelPublic = this.languageExt.accessLevelPublic();
- _builder.append(_accessLevelPublic, "");
- _builder.append("void set");
- String _name = attribute.getName();
- String _firstUpper = StringExtensions.toFirstUpper(_name);
- _builder.append(_firstUpper, "");
- _builder.append(" (");
- String _selfPointer = this.languageExt.selfPointer(classname, true);
- _builder.append(_selfPointer, "");
- RefableType _refType = attribute.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- _builder.append(_typeName, "");
- {
- int _size = attribute.getSize();
- boolean _notEquals = (_size != 0);
- if (_notEquals) {
- _builder.append("[]");
- }
- }
- _builder.append(" ");
- String _name_1 = attribute.getName();
- _builder.append(_name_1, "");
- _builder.append(")");
- return _builder;
- }
-
- private CharSequence getterHeader(final Attribute attribute, final String classname) {
- StringConcatenation _builder = new StringConcatenation();
- String _accessLevelPublic = this.languageExt.accessLevelPublic();
- _builder.append(_accessLevelPublic, "");
- RefableType _refType = attribute.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- _builder.append(_typeName, "");
- {
- int _size = attribute.getSize();
- boolean _notEquals = (_size != 0);
- if (_notEquals) {
- _builder.append("[]");
- }
- }
- _builder.append(" get");
- String _name = attribute.getName();
- String _firstUpper = StringExtensions.toFirstUpper(_name);
- _builder.append(_firstUpper, "");
- _builder.append(" (");
- String _selfPointer = this.languageExt.selfPointer(classname, false);
- _builder.append(_selfPointer, "");
- _builder.append(")");
- return _builder;
- }
-
- public CharSequence argList(final List<Attribute> attributes) {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _hasElements = false;
- for(final Attribute a : attributes) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(", ", "");
- }
- RefableType _refType = a.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- _builder.append(_typeName, "");
- {
- int _size = a.getSize();
- boolean _greaterThan = (_size > 1);
- if (_greaterThan) {
- _builder.append("[]");
- }
- }
- _builder.append(" ");
- String _name = a.getName();
- _builder.append(_name, "");
- }
- }
- return _builder;
- }
-
- public CharSequence getterImplementation(final String typeName, final String name, final String classname) {
- StringConcatenation _builder = new StringConcatenation();
- String _accessLevelPublic = this.languageExt.accessLevelPublic();
- _builder.append(_accessLevelPublic, "");
- _builder.append(typeName, "");
- _builder.append(" get");
- String _firstUpper = StringExtensions.toFirstUpper(name);
- _builder.append(_firstUpper, "");
- _builder.append(" (");
- String _selfPointer = this.languageExt.selfPointer(classname, false);
- _builder.append(_selfPointer, "");
- _builder.append("){");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- _builder.append("return ");
- String _memberAccess = this.languageExt.memberAccess();
- _builder.append(_memberAccess, " ");
- _builder.append(name, " ");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- return _builder;
- }
-
- public CharSequence invokeGetter(final String name, final String classname) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("get");
- String _firstUpper = StringExtensions.toFirstUpper(name);
- _builder.append(_firstUpper, "");
- _builder.append("(");
- String _selfPointer = this.languageExt.selfPointer(classname, true);
- _builder.append(_selfPointer, "");
- _builder.append(")");
- return _builder;
- }
-
- public CharSequence invokeSetter(final String name, final String classname, final String value) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("set");
- String _firstUpper = StringExtensions.toFirstUpper(name);
- _builder.append(_firstUpper, "");
- _builder.append("(");
- String _selfPointer = this.languageExt.selfPointer(classname, true);
- _builder.append(_selfPointer, "");
- _builder.append(value, "");
- _builder.append(")");
- return _builder;
- }
-
- public CharSequence operationsDeclaration(final List<? extends Operation> operations, final String classname) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/*--------------------- operations ---------------------*/");
- _builder.newLine();
- {
- for(final Operation operation : operations) {
- {
- boolean _and = false;
- boolean _usesInheritance = this.languageExt.usesInheritance();
- if (!_usesInheritance) {
- _and = false;
- } else {
- boolean _isConstructor = RoomHelpers.isConstructor(operation);
- _and = (_usesInheritance && _isConstructor);
- }
- boolean _not = (!_and);
- if (_not) {
- CharSequence _operationSignature = this.operationSignature(operation, classname, true);
- _builder.append(_operationSignature, "");
- _builder.append(";");
- _builder.newLineIfNotEmpty();
- }
- }
- }
- }
- return _builder;
- }
-
- public CharSequence operationsImplementation(final List<? extends Operation> operations, final String classname) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/*--------------------- operations ---------------------*/");
- _builder.newLine();
- {
- for(final Operation operation : operations) {
- {
- boolean _and = false;
- boolean _usesInheritance = this.languageExt.usesInheritance();
- if (!_usesInheritance) {
- _and = false;
- } else {
- boolean _isConstructor = RoomHelpers.isConstructor(operation);
- _and = (_usesInheritance && _isConstructor);
- }
- boolean _not = (!_and);
- if (_not) {
- CharSequence _operationSignature = this.operationSignature(operation, classname, false);
- _builder.append(_operationSignature, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- AbstractGenerator _instance = AbstractGenerator.getInstance();
- DetailCode _detailCode = operation.getDetailCode();
- String _translatedCode = _instance.getTranslatedCode(_detailCode);
- _builder.append(_translatedCode, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- }
- return _builder;
- }
-
- public CharSequence operationsImplementation(final ActorClass ac) {
- StringConcatenation _builder = new StringConcatenation();
- _builder.append("/*--------------------- operations ---------------------*/");
- _builder.newLine();
- {
- EList<StandardOperation> _operations = ac.getOperations();
- for(final StandardOperation operation : _operations) {
- {
- boolean _and = false;
- boolean _usesInheritance = this.languageExt.usesInheritance();
- if (!_usesInheritance) {
- _and = false;
- } else {
- boolean _isConstructor = RoomHelpers.isConstructor(operation);
- _and = (_usesInheritance && _isConstructor);
- }
- boolean _not = (!_and);
- if (_not) {
- String _name = ac.getName();
- CharSequence _operationSignature = this.operationSignature(operation, _name, false);
- _builder.append(_operationSignature, "");
- _builder.append(" {");
- _builder.newLineIfNotEmpty();
- _builder.append("\t");
- AbstractGenerator _instance = AbstractGenerator.getInstance();
- DetailCode _detailCode = operation.getDetailCode();
- String _translatedCode = _instance.getTranslatedCode(_detailCode);
- _builder.append(_translatedCode, " ");
- _builder.newLineIfNotEmpty();
- _builder.append("}");
- _builder.newLine();
- }
- }
- }
- }
- return _builder;
- }
-
- public String destructorCall(final String classname) {
- String _destructorName = this.languageExt.destructorName(classname);
- String _plus = (_destructorName + "()");
- return _plus;
- }
-
- private CharSequence operationSignature(final Operation operation, final String classname, final boolean isDeclaration) {
- CharSequence _xifexpression = null;
- boolean _isConstructor = RoomHelpers.isConstructor(operation);
- if (_isConstructor) {
- String _constructorName = this.languageExt.constructorName(classname);
- String _constructorReturnType = this.languageExt.constructorReturnType();
- CharSequence _classOperationSignature = this.classOperationSignature(classname, _constructorName, "", _constructorReturnType, isDeclaration);
- _xifexpression = _classOperationSignature;
- } else {
- CharSequence _xifexpression_1 = null;
- boolean _isDestructor = RoomHelpers.isDestructor(operation);
- if (_isDestructor) {
- String _destructorName = this.languageExt.destructorName(classname);
- String _destructorReturnType = this.languageExt.destructorReturnType();
- CharSequence _classOperationSignature_1 = this.classOperationSignature(classname, _destructorName, "", _destructorReturnType, isDeclaration);
- _xifexpression_1 = _classOperationSignature_1;
- } else {
- String _name = operation.getName();
- EList<VarDecl> _arguments = operation.getArguments();
- CharSequence _BuildArgumentList = this.BuildArgumentList(_arguments);
- String _string = _BuildArgumentList.toString();
- RefableType _returntype = operation.getReturntype();
- String _dataTypeToString = this.dataTypeToString(_returntype);
- CharSequence _classOperationSignature_2 = this.classOperationSignature(classname, _name, _string, _dataTypeToString, isDeclaration);
- _xifexpression_1 = _classOperationSignature_2;
- }
- _xifexpression = _xifexpression_1;
- }
- return _xifexpression;
- }
-
- private String dataTypeToString(final RefableType type) {
- String _xifexpression = null;
- boolean _equals = Objects.equal(type, null);
- if (_equals) {
- _xifexpression = "void";
- } else {
- String _xifexpression_1 = null;
- boolean _isRef = type.isRef();
- if (_isRef) {
- DataType _type = type.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- String _pointerLiteral = this.languageExt.pointerLiteral();
- String _plus = (_typeName + _pointerLiteral);
- _xifexpression_1 = _plus;
- } else {
- DataType _type_1 = type.getType();
- String _typeName_1 = this._typeHelpers.typeName(_type_1);
- _xifexpression_1 = _typeName_1;
- }
- _xifexpression = _xifexpression_1;
- }
- return _xifexpression;
- }
-
- /**
- * builds comma separated argument list as string from EList<VarDecl> arguments
- */
- private CharSequence BuildArgumentList(final EList<VarDecl> arguments) {
- StringConcatenation _builder = new StringConcatenation();
- {
- boolean _hasElements = false;
- for(final VarDecl argument : arguments) {
- if (!_hasElements) {
- _hasElements = true;
- } else {
- _builder.appendImmediate(", ", "");
- }
- RefableType _refType = argument.getRefType();
- DataType _type = _refType.getType();
- String _typeName = this._typeHelpers.typeName(_type);
- _builder.append(_typeName, "");
- {
- RefableType _refType_1 = argument.getRefType();
- boolean _isRef = _refType_1.isRef();
- if (_isRef) {
- String _pointerLiteral = this.languageExt.pointerLiteral();
- _builder.append(_pointerLiteral, "");
- }
- }
- _builder.append(" ");
- String _name = argument.getName();
- _builder.append(_name, "");
- }
- }
- return _builder;
- }
-
- private CharSequence classOperationSignature(final String classname, final String operationname, final String argumentList, final String returnType, final boolean isDeclaration) {
- StringConcatenation _builder = new StringConcatenation();
- String _accessLevelPublic = this.languageExt.accessLevelPublic();
- _builder.append(_accessLevelPublic, "");
- _builder.append(returnType, "");
- _builder.append(" ");
- String _memberInDeclaration = this.languageExt.memberInDeclaration(classname, operationname);
- _builder.append(_memberInDeclaration, "");
- _builder.append("(");
- boolean _isEmpty = argumentList.isEmpty();
- boolean _not = (!_isEmpty);
- String _selfPointer = this.languageExt.selfPointer(classname, _not);
- _builder.append(_selfPointer, "");
- _builder.append(argumentList, "");
- _builder.append(")");
- return _builder;
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/RoomExtensions.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/RoomExtensions.java
deleted file mode 100644
index 055bfe4..0000000
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/RoomExtensions.java
+++ /dev/null
@@ -1,959 +0,0 @@
-package org.eclipse.etrice.generator.generic;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.Iterables;
-import com.google.inject.Singleton;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-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.genmodel.etricegen.ActiveTrigger;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.core.genmodel.etricegen.ExpandedRefinedState;
-import org.eclipse.etrice.core.genmodel.etricegen.InterfaceItemInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.PortInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.SAPInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.ServiceImplInstance;
-import org.eclipse.etrice.core.genmodel.etricegen.TransitionChain;
-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.ExternalPort;
-import org.eclipse.etrice.core.room.GeneralProtocolClass;
-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.Port;
-import org.eclipse.etrice.core.room.PortClass;
-import org.eclipse.etrice.core.room.ProtocolClass;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.core.room.RoomClass;
-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.SimpleState;
-import org.eclipse.etrice.core.room.StandardOperation;
-import org.eclipse.etrice.core.room.State;
-import org.eclipse.etrice.core.room.StateGraph;
-import org.eclipse.etrice.core.room.TrPoint;
-import org.eclipse.etrice.core.room.Transition;
-import org.eclipse.etrice.core.room.TransitionPoint;
-import org.eclipse.etrice.core.room.Trigger;
-import org.eclipse.etrice.core.room.TriggeredTransition;
-import org.eclipse.etrice.core.room.VarDecl;
-import org.eclipse.etrice.core.room.util.RoomHelpers;
-import org.eclipse.etrice.generator.base.CodegenHelpers;
-import org.eclipse.xtext.xbase.lib.Functions.Function1;
-import org.eclipse.xtext.xbase.lib.IterableExtensions;
-
-@Singleton
-@SuppressWarnings("all")
-public class RoomExtensions {
- 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 <T extends Object> Iterable<T> union(final Iterable<T> l1, final Iterable<T> l2) {
- ArrayList<T> _arrayList = new ArrayList<T>();
- ArrayList<T> ret = _arrayList;
- Iterables.<T>addAll(ret, l1);
- Iterables.<T>addAll(ret, 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 getDocGenerationPathSegment() {
- return "/doc-gen/";
- }
-
- public String getModelPath(final EObject e) {
- Resource res = e.eResource();
- boolean _equals = Objects.equal(res, null);
- if (_equals) {
- return "";
- } else {
- URI _uRI = res.getURI();
- return _uRI.toFileString();
- }
- }
-
- public String getPackage(final RoomClass rc) {
- EObject _eContainer = rc.eContainer();
- return ((RoomModel) _eContainer).getName();
- }
-
- public String getPathFromPackage(final String packageName) {
- String _replaceAll = packageName.replaceAll("\\.", "/");
- return (_replaceAll + "/");
- }
-
- public String getPath(final RoomClass rc) {
- String _package = this.getPackage(rc);
- String _pathFromPackage = this.getPathFromPackage(_package);
- return _pathFromPackage;
- }
-
- public String getProjectPath(final EObject e) {
- Resource res = e.eResource();
- boolean _equals = Objects.equal(res, null);
- if (_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 _not = (!_isFile);
- if (_not) {
- return "";
- }
- boolean isProject = false;
- boolean _dowhile = false;
- do {
- {
- File _parentFile = tmpf.getParentFile();
- tmpf = _parentFile;
- String[] contents = tmpf.list();
- for (final String f : contents) {
- boolean _equals_1 = f.equals(".project");
- if (_equals_1) {
- isProject = true;
- }
- }
- }
- boolean _and = false;
- boolean _not_1 = (!isProject);
- if (!_not_1) {
- _and = false;
- } else {
- File _parentFile = tmpf.getParentFile();
- boolean _notEquals = (!Objects.equal(_parentFile, null));
- _and = (_not_1 && _notEquals);
- }
- _dowhile = _and;
- } while(_dowhile);
- return tmpf.getAbsolutePath();
- }
- }
-
- public String getGenerationTargetPath(final EObject e) {
- String _projectPath = this.getProjectPath(e);
- String _generationPathSegment = this.getGenerationPathSegment();
- return (_projectPath + _generationPathSegment);
- }
-
- public String getDocGenerationTargetPath(final EObject e) {
- String _projectPath = this.getProjectPath(e);
- String _docGenerationPathSegment = this.getDocGenerationPathSegment();
- return (_projectPath + _docGenerationPathSegment);
- }
-
- 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 List<Port> getAllEndPorts(final ActorClass ac) {
- List<Port> _xifexpression = null;
- ActorClass _base = ac.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- return this.getEndPorts(ac);
- } else {
- ActorClass _base_1 = ac.getBase();
- List<Port> _allEndPorts = this.getAllEndPorts(_base_1);
- List<Port> _endPorts = this.getEndPorts(ac);
- List<Port> _union = this.<Port>union(_allEndPorts, _endPorts);
- _xifexpression = _union;
- }
- return _xifexpression;
- }
-
- public List<SAPRef> getAllSAPs(final ActorClass ac) {
- List<SAPRef> _xifexpression = null;
- ActorClass _base = ac.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- return ac.getStrSAPs();
- } else {
- ActorClass _base_1 = ac.getBase();
- List<SAPRef> _allSAPs = this.getAllSAPs(_base_1);
- EList<SAPRef> _strSAPs = ac.getStrSAPs();
- List<SAPRef> _union = this.<SAPRef>union(_allSAPs, _strSAPs);
- _xifexpression = _union;
- }
- return _xifexpression;
- }
-
- public List<ServiceImplementation> getAllServiceImplementations(final ActorClass ac) {
- List<ServiceImplementation> _xifexpression = null;
- ActorClass _base = ac.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- return ac.getServiceImplementations();
- } else {
- ActorClass _base_1 = ac.getBase();
- List<ServiceImplementation> _allServiceImplementations = this.getAllServiceImplementations(_base_1);
- EList<ServiceImplementation> _serviceImplementations = ac.getServiceImplementations();
- List<ServiceImplementation> _union = this.<ServiceImplementation>union(_allServiceImplementations, _serviceImplementations);
- _xifexpression = _union;
- }
- return _xifexpression;
- }
-
- public String getPathName(final String path) {
- String _replaceAll = path.replaceAll("/", "_");
- return _replaceAll;
- }
-
- public List<Attribute> getAllAttributes(final DataClass dc) {
- List<Attribute> _xifexpression = null;
- DataClass _base = dc.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- return dc.getAttributes();
- } else {
- DataClass _base_1 = dc.getBase();
- List<Attribute> _allAttributes = this.getAllAttributes(_base_1);
- EList<Attribute> _attributes = dc.getAttributes();
- List<Attribute> _union = this.<Attribute>union(_allAttributes, _attributes);
- _xifexpression = _union;
- }
- return _xifexpression;
- }
-
- public List<Attribute> getAllAttributes(final ActorClass ac) {
- List<Attribute> _xifexpression = null;
- ActorClass _base = ac.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- return ac.getAttributes();
- } else {
- ActorClass _base_1 = ac.getBase();
- List<Attribute> _allAttributes = this.getAllAttributes(_base_1);
- EList<Attribute> _attributes = ac.getAttributes();
- List<Attribute> _union = this.<Attribute>union(_allAttributes, _attributes);
- _xifexpression = _union;
- }
- return _xifexpression;
- }
-
- protected String _getPortClassName(final Port p) {
- String _xifexpression = null;
- GeneralProtocolClass _protocol = p.getProtocol();
- if ((_protocol instanceof ProtocolClass)) {
- GeneralProtocolClass _protocol_1 = p.getProtocol();
- boolean _isConjugated = p.isConjugated();
- boolean _isReplicated = p.isReplicated();
- String _portClassName = this.getPortClassName(((ProtocolClass) _protocol_1), _isConjugated, _isReplicated);
- _xifexpression = _portClassName;
- } else {
- _xifexpression = "";
- }
- return _xifexpression;
- }
-
- protected String _getPortClassName(final SAPRef sap) {
- ProtocolClass _protocol = sap.getProtocol();
- return this.getPortClassName(_protocol, true);
- }
-
- protected String _getPortClassName(final SPPRef spp) {
- ProtocolClass _protocol = spp.getProtocol();
- return this.getPortClassName(_protocol, false, true);
- }
-
- public String getPortClassName(final ProtocolClass p, final boolean conj) {
- String _portClassName = this.getPortClassName(p, conj, false);
- return _portClassName;
- }
-
- public String getPortClassName(final ProtocolClass p, final boolean conj, final boolean repl) {
- String _name = p.getName();
- String _xifexpression = null;
- if (conj) {
- _xifexpression = "Conj";
- } else {
- _xifexpression = "";
- }
- String _plus = (_name + _xifexpression);
- String _xifexpression_1 = null;
- if (repl) {
- _xifexpression_1 = "Repl";
- } else {
- _xifexpression_1 = "";
- }
- String _plus_1 = (_plus + _xifexpression_1);
- String _plus_2 = (_plus_1 + "Port");
- return _plus_2;
- }
-
- protected String _getPortClassName(final ExternalPort p) {
- Port _ifport = p.getIfport();
- return this.getPortClassName(_ifport);
- }
-
- protected String _getPortClassName(final ServiceImplementation svc) {
- SPPRef _spp = svc.getSpp();
- ProtocolClass _protocol = _spp.getProtocol();
- return this.getPortClassName(_protocol, false, true);
- }
-
- public List<Message> getAllIncomingMessages(final ProtocolClass pc) {
- ProtocolClass _base = pc.getBase();
- boolean _notEquals = (!Objects.equal(_base, null));
- if (_notEquals) {
- ProtocolClass _base_1 = pc.getBase();
- List<Message> _allIncomingMessages = this.getAllIncomingMessages(_base_1);
- EList<Message> _incomingMessages = pc.getIncomingMessages();
- return this.<Message>union(_allIncomingMessages, _incomingMessages);
- } else {
- return pc.getIncomingMessages();
- }
- }
-
- public List<Message> getAllOutgoingMessages(final ProtocolClass pc) {
- EList<Message> _xifexpression = null;
- ProtocolClass _base = pc.getBase();
- boolean _notEquals = (!Objects.equal(_base, null));
- if (_notEquals) {
- ProtocolClass _base_1 = pc.getBase();
- List<Message> _allOutgoingMessages = this.getAllOutgoingMessages(_base_1);
- EList<Message> _outgoingMessages = pc.getOutgoingMessages();
- return this.<Message>union(_allOutgoingMessages, _outgoingMessages);
- } else {
- EList<Message> _outgoingMessages_1 = pc.getOutgoingMessages();
- _xifexpression = _outgoingMessages_1;
- }
- return _xifexpression;
- }
-
- public List<Message> getIncoming(final ProtocolClass pc, final boolean conj) {
- if (conj) {
- return this.getAllOutgoingMessages(pc);
- } else {
- return this.getAllIncomingMessages(pc);
- }
- }
-
- public List<Message> getOutgoing(final ProtocolClass pc, final boolean conj) {
- if (conj) {
- return this.getAllIncomingMessages(pc);
- } else {
- return this.getAllOutgoingMessages(pc);
- }
- }
-
- public PortClass getPortClass(final ProtocolClass pc, final boolean conj) {
- if (conj) {
- return pc.getConjugate();
- } else {
- return pc.getRegular();
- }
- }
-
- public boolean handlesSend(final ProtocolClass pc, final boolean conj) {
- PortClass _portClass = this.getPortClass(pc, conj);
- boolean _equals = Objects.equal(_portClass, null);
- if (_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 _equals = Objects.equal(_portClass, null);
- if (_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 boolean isConjugated(final InterfaceItemInstance iii) {
- if ((iii instanceof PortInstance)) {
- Port _port = ((PortInstance) iii).getPort();
- return _port.isConjugated();
- } else {
- if ((iii instanceof SAPInstance)) {
- return true;
- } else {
- if ((iii instanceof ServiceImplInstance)) {
- return false;
- } else {
- return false;
- }
- }
- }
- }
-
- public List<MessageHandler> getReceiveHandlers(final ProtocolClass pc, final boolean conj) {
- PortClass _portClass = this.getPortClass(pc, conj);
- boolean _equals = Objects.equal(_portClass, null);
- if (_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 _equals = Objects.equal(_portClass, null);
- if (_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 _equals = Objects.equal(_msg, m);
- return Boolean.valueOf(_equals);
- }
- };
- return IterableExtensions.<MessageHandler>findFirst(_sendHandlers, _function);
- }
-
- public boolean isIncoming(final Message m) {
- EObject _eContainer = m.eContainer();
- List<Message> _allIncomingMessages = this.getAllIncomingMessages(((ProtocolClass) _eContainer));
- return _allIncomingMessages.contains(m);
- }
-
- public String getCodeName(final Message m) {
- boolean _isIncoming = this.isIncoming(m);
- if (_isIncoming) {
- String _name = m.getName();
- return ("IN_" + _name);
- } else {
- String _name_1 = m.getName();
- return ("OUT_" + _name_1);
- }
- }
-
- public boolean isLeaf(final State s) {
- StateGraph _subgraph = s.getSubgraph();
- boolean _equals = Objects.equal(_subgraph, null);
- return _equals;
- }
-
- public List<State> getLeafStateList(final StateGraph sg) {
- ArrayList<State> _arrayList = new ArrayList<State>();
- ArrayList<State> res = _arrayList;
- boolean _notEquals = (!Objects.equal(sg, null));
- if (_notEquals) {
- 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();
- return this.getLeafStateList(_subgraph);
- }
- }
-
- public List<State> getStateList(final StateGraph sg) {
- ArrayList<State> _arrayList = new ArrayList<State>();
- ArrayList<State> ret = _arrayList;
- boolean _notEquals = (!Objects.equal(sg, null));
- if (_notEquals) {
- EList<State> _states = sg.getStates();
- for (final State e : _states) {
- {
- ret.add(e);
- StateGraph _subgraph = e.getSubgraph();
- boolean _notEquals_1 = (!Objects.equal(_subgraph, null));
- if (_notEquals_1) {
- 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;
- boolean _notEquals = (!Objects.equal(sg, null));
- if (_notEquals) {
- List<State> _stateList = this.getStateList(sg);
- for (final State e : _stateList) {
- if ((e instanceof SimpleState)) {
- ret.add(e);
- }
- }
- }
- return ret;
- }
-
- public ArrayList<State> getLeafStatesLast(final List<State> states) {
- ArrayList<State> _arrayList = new ArrayList<State>();
- ArrayList<State> leaf = _arrayList;
- ArrayList<State> _arrayList_1 = new ArrayList<State>();
- ArrayList<State> nonLeaf = _arrayList_1;
- for (final State state : states) {
- boolean _isLeaf = this.isLeaf(state);
- if (_isLeaf) {
- leaf.add(state);
- } else {
- nonLeaf.add(state);
- }
- }
- nonLeaf.addAll(leaf);
- return nonLeaf;
- }
-
- public List<State> getAllBaseStates(final ActorClass ac) {
- List<State> _xifexpression = null;
- ActorClass _base = ac.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- StateGraph _stateMachine = ac.getStateMachine();
- return this.getBaseStateList(_stateMachine);
- } else {
- ActorClass _base_1 = ac.getBase();
- List<State> _allBaseStates = this.getAllBaseStates(_base_1);
- StateGraph _stateMachine_1 = ac.getStateMachine();
- List<State> _baseStateList = this.getBaseStateList(_stateMachine_1);
- List<State> _union = this.<State>union(_allBaseStates, _baseStateList);
- _xifexpression = _union;
- }
- return _xifexpression;
- }
-
- public List<State> getAllBaseStatesLeavesLast(final ActorClass ac) {
- List<State> _xifexpression = null;
- ActorClass _base = ac.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- StateGraph _stateMachine = ac.getStateMachine();
- List<State> _baseStateList = this.getBaseStateList(_stateMachine);
- return this.getLeafStatesLast(_baseStateList);
- } else {
- ActorClass _base_1 = ac.getBase();
- List<State> _allBaseStates = this.getAllBaseStates(_base_1);
- ArrayList<State> _leafStatesLast = this.getLeafStatesLast(_allBaseStates);
- StateGraph _stateMachine_1 = ac.getStateMachine();
- List<State> _baseStateList_1 = this.getBaseStateList(_stateMachine_1);
- ArrayList<State> _leafStatesLast_1 = this.getLeafStatesLast(_baseStateList_1);
- List<State> _union = this.<State>union(_leafStatesLast, _leafStatesLast_1);
- _xifexpression = _union;
- }
- return _xifexpression;
- }
-
- public List<State> getAllLeafStates(final ActorClass ac) {
- List<State> _xifexpression = null;
- ActorClass _base = ac.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- StateGraph _stateMachine = ac.getStateMachine();
- return this.getLeafStateList(_stateMachine);
- } else {
- ActorClass _base_1 = ac.getBase();
- List<State> _allLeafStates = this.getAllLeafStates(_base_1);
- StateGraph _stateMachine_1 = ac.getStateMachine();
- List<State> _leafStateList = this.getLeafStateList(_stateMachine_1);
- List<State> _union = this.<State>union(_allLeafStates, _leafStateList);
- _xifexpression = _union;
- }
- return _xifexpression;
- }
-
- public boolean overridesStop(final ActorClass ac) {
- boolean _or = false;
- EList<StandardOperation> _operations = ac.getOperations();
- final Function1<StandardOperation,Boolean> _function = new Function1<StandardOperation,Boolean>() {
- public Boolean apply(final StandardOperation e) {
- boolean _and = false;
- boolean _and_1 = false;
- String _name = e.getName();
- boolean _equals = Objects.equal(_name, "stop");
- if (!_equals) {
- _and_1 = false;
- } else {
- EList<VarDecl> _arguments = e.getArguments();
- boolean _isEmpty = _arguments.isEmpty();
- _and_1 = (_equals && _isEmpty);
- }
- if (!_and_1) {
- _and = false;
- } else {
- RefableType _returntype = e.getReturntype();
- boolean _equals_1 = Objects.equal(_returntype, null);
- _and = (_and_1 && _equals_1);
- }
- return Boolean.valueOf(_and);
- }
- };
- boolean _exists = IterableExtensions.<StandardOperation>exists(_operations, _function);
- if (_exists) {
- _or = true;
- } else {
- boolean _and = false;
- ActorClass _base = ac.getBase();
- boolean _notEquals = (!Objects.equal(_base, null));
- if (!_notEquals) {
- _and = false;
- } else {
- ActorClass _base_1 = ac.getBase();
- boolean _overridesStop = this.overridesStop(_base_1);
- _and = (_notEquals && _overridesStop);
- }
- _or = (_exists || _and);
- }
- return _or;
- }
-
- public int getNumberOfInheritedStates(final ActorClass ac) {
- ActorClass _base = ac.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- return 0;
- } else {
- ActorClass _base_1 = ac.getBase();
- StateGraph _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);
- return (_size + _numberOfInheritedStates);
- }
- }
-
- public int getNumberOfInheritedBaseStates(final ActorClass ac) {
- ActorClass _base = ac.getBase();
- boolean _equals = Objects.equal(_base, null);
- if (_equals) {
- return 0;
- } else {
- ActorClass _base_1 = ac.getBase();
- StateGraph _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);
- return (_size + _numberOfInheritedBaseStates);
- }
- }
-
- public String getStateId(final State s) {
- return CodegenHelpers.getGenStateId(s);
- }
-
- public String getStatePathName(final State s) {
- return CodegenHelpers.getGenStatePathName(s);
- }
-
- public String getChainId(final TransitionChain t) {
- return CodegenHelpers.getGenChainId(t);
- }
-
- public boolean hasGuard(final Trigger tr) {
- boolean _and = false;
- boolean _and_1 = false;
- Guard _guard = tr.getGuard();
- boolean _notEquals = (!Objects.equal(_guard, null));
- if (!_notEquals) {
- _and_1 = false;
- } else {
- Guard _guard_1 = tr.getGuard();
- DetailCode _guard_2 = _guard_1.getGuard();
- boolean _notEquals_1 = (!Objects.equal(_guard_2, null));
- _and_1 = (_notEquals && _notEquals_1);
- }
- if (!_and_1) {
- _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 _greaterThan = (_size > 0);
- _and = (_and_1 && _greaterThan);
- }
- return _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 _and = false;
- String _trigger = at.getTrigger();
- boolean _isMatching = ac.isMatching(e, _trigger);
- if (!_isMatching) {
- _and = false;
- } else {
- boolean _hasGuard = RoomExtensions.this.hasGuard(e);
- _and = (_isMatching && _hasGuard);
- }
- return Boolean.valueOf(_and);
- }
- };
- boolean _exists = IterableExtensions.<Trigger>exists(_triggers, _function);
- if (_exists) {
- hasGuard = true;
- }
- }
- return hasGuard;
- }
-
- public boolean empty(final DetailCode dc) {
- String _detailCode = RoomHelpers.getDetailCode(dc);
- boolean _equals = Objects.equal(_detailCode, "");
- return _equals;
- }
-
- public boolean hasEntryCode(final State s) {
- DetailCode _entryCode = s.getEntryCode();
- boolean _empty = this.empty(_entryCode);
- boolean _not = (!_empty);
- if (_not) {
- return true;
- }
- if ((s instanceof ExpandedRefinedState)) {
- DetailCode _inheritedEntry = ((ExpandedRefinedState) s).getInheritedEntry();
- boolean _empty_1 = this.empty(_inheritedEntry);
- return (!_empty_1);
- }
- return false;
- }
-
- public boolean hasExitCode(final State s) {
- DetailCode _exitCode = s.getExitCode();
- boolean _empty = this.empty(_exitCode);
- boolean _not = (!_empty);
- if (_not) {
- return true;
- }
- if ((s instanceof ExpandedRefinedState)) {
- DetailCode _inheritedExit = ((ExpandedRefinedState) s).getInheritedExit();
- boolean _empty_1 = this.empty(_inheritedExit);
- return (!_empty_1);
- }
- return false;
- }
-
- public boolean hasDoCode(final State s) {
- DetailCode _doCode = s.getDoCode();
- boolean _empty = this.empty(_doCode);
- boolean _not = (!_empty);
- if (_not) {
- return true;
- }
- if ((s instanceof ExpandedRefinedState)) {
- DetailCode _inheritedDo = ((ExpandedRefinedState) s).getInheritedDo();
- boolean _empty_1 = this.empty(_inheritedDo);
- return (!_empty_1);
- }
- return false;
- }
-
- public boolean hasActionCode(final Transition t) {
- boolean _and = false;
- DetailCode _action = t.getAction();
- boolean _notEquals = (!Objects.equal(_action, null));
- if (!_notEquals) {
- _and = false;
- } else {
- DetailCode _action_1 = t.getAction();
- EList<String> _commands = _action_1.getCommands();
- int _size = _commands.size();
- boolean _greaterThan = (_size > 0);
- _and = (_notEquals && _greaterThan);
- }
- return _and;
- }
-
- 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();
- return this.getTransitionList(_subgraph);
- }
- }
-
- 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;
- }
-
- public List<Transition> getOutgoingTransitionsHierarchical(final ExpandedActorClass ac, final State s) {
- ArrayList<Transition> _arrayList = new ArrayList<Transition>();
- ArrayList<Transition> result = _arrayList;
- EList<Transition> _outgoingTransitions = ac.getOutgoingTransitions(s);
- result.addAll(_outgoingTransitions);
- EObject _eContainer = s.eContainer();
- StateGraph sg = ((StateGraph) _eContainer);
- EList<TrPoint> _trPoints = sg.getTrPoints();
- for (final TrPoint tp : _trPoints) {
- if ((tp instanceof TransitionPoint)) {
- EList<Transition> _outgoingTransitions_1 = ac.getOutgoingTransitions(tp);
- result.addAll(_outgoingTransitions_1);
- }
- }
- EObject _eContainer_1 = sg.eContainer();
- if ((_eContainer_1 instanceof State)) {
- EObject _eContainer_2 = sg.eContainer();
- List<Transition> _outgoingTransitionsHierarchical = this.getOutgoingTransitionsHierarchical(ac, ((State) _eContainer_2));
- result.addAll(_outgoingTransitionsHierarchical);
- }
- return result;
- }
-
- public String getPortClassName(final EObject p) {
- if (p instanceof Port) {
- return _getPortClassName((Port)p);
- } else if (p instanceof SAPRef) {
- return _getPortClassName((SAPRef)p);
- } else if (p instanceof SPPRef) {
- return _getPortClassName((SPPRef)p);
- } else if (p instanceof ExternalPort) {
- return _getPortClassName((ExternalPort)p);
- } else if (p instanceof ServiceImplementation) {
- return _getPortClassName((ServiceImplementation)p);
- } else {
- throw new IllegalArgumentException("Unhandled parameter types: " +
- Arrays.<Object>asList(p).toString());
- }
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/TypeHelpers.java b/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/TypeHelpers.java
deleted file mode 100644
index 536dd04..0000000
--- a/plugins/org.eclipse.etrice.generator/xtend-gen/org/eclipse/etrice/generator/generic/TypeHelpers.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.eclipse.etrice.generator.generic;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import org.eclipse.etrice.core.room.DataType;
-import org.eclipse.etrice.core.room.ExternalType;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.PrimitiveType;
-import org.eclipse.etrice.core.room.RefableType;
-import org.eclipse.etrice.core.room.VarDecl;
-import org.eclipse.etrice.generator.generic.AbstractTransitionChainGenerator;
-
-@Singleton
-@SuppressWarnings("all")
-public class TypeHelpers {
- @Inject
- private AbstractTransitionChainGenerator chainGenerator;
-
- public String typeName(final DataType type) {
- if ((type instanceof PrimitiveType)) {
- return ((PrimitiveType) type).getTargetName();
- } else {
- if ((type instanceof ExternalType)) {
- return ((ExternalType) type).getTargetName();
- } else {
- return type.getName();
- }
- }
- }
-
- public String defaultValue(final DataType dt) {
- if ((dt instanceof PrimitiveType)) {
- return ((PrimitiveType) dt).getDefaultValueLiteral();
- } else {
- if ((dt instanceof ExternalType)) {
- String _targetName = ((ExternalType) dt).getTargetName();
- String _plus = ("new " + _targetName);
- return (_plus + "()");
- } else {
- String _name = dt.getName();
- String _plus_1 = ("new " + _name);
- return (_plus_1 + "()");
- }
- }
- }
-
- public String defaultValue(final VarDecl a) {
- RefableType _refType = a.getRefType();
- DataType _type = _refType.getType();
- return this.defaultValue(_type);
- }
-
- public String getTypedDataDefinition(final Message m) {
- VarDecl _data = m.getData();
- return this.chainGenerator.generateTypedData(_data);
- }
-}