Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2012-03-30 17:41:35 +0000
committerHenrik Rentz-Reichert2012-03-30 17:41:35 +0000
commitbd23445793c15413b9776c3a06190aee0cf1fd5b (patch)
tree746c5009ccb8c690e43deac16216937f0837fbd2 /plugins/org.eclipse.etrice.generator.java/src/org
parent213090ec7d3e3f620cf691db3a37aace2a01b860 (diff)
parentfa1389ea9d79ef5976ba7b68b6fd5cabb841a564 (diff)
downloadorg.eclipse.etrice-bd23445793c15413b9776c3a06190aee0cf1fd5b.tar.gz
org.eclipse.etrice-bd23445793c15413b9776c3a06190aee0cf1fd5b.tar.xz
org.eclipse.etrice-bd23445793c15413b9776c3a06190aee0cf1fd5b.zip
Merge remote branch 'refs/remotes/origin/master'
Conflicts: plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomLexer.java plugins/org.eclipse.etrice.core.room.ui/src-gen/org/eclipse/etrice/core/ui/contentassist/antlr/internal/InternalRoomParser.java plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomLexer.java plugins/org.eclipse.etrice.core.room/src-gen/org/eclipse/etrice/core/parser/antlr/internal/InternalRoomParser.java plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/RoomJavaValidator.java
Diffstat (limited to 'plugins/org.eclipse.etrice.generator.java/src/org')
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend31
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend17
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend14
3 files changed, 57 insertions, 5 deletions
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend
index 052396bf3..817fa259b 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/ActorClassGen.xtend
@@ -19,6 +19,7 @@ import org.eclipse.etrice.generator.base.ILogger
import org.eclipse.etrice.generator.etricegen.ExpandedActorClass
import org.eclipse.etrice.generator.etricegen.Root
import org.eclipse.xtext.generator.JavaIoFileSystemAccess
+import static extension org.eclipse.etrice.core.room.util.RoomHelpers.*
import org.eclipse.etrice.generator.extensions.RoomExtensions
import org.eclipse.etrice.generator.generic.ProcedureHelpers
@@ -47,7 +48,11 @@ class ActorClassGen extends GenericActorClassGenerator {
}
}
- def generate(Root root, ExpandedActorClass xpac, ActorClass ac) {'''
+ def generate(Root root, ExpandedActorClass xpac, ActorClass ac) {
+ val ctor = ac.operations.filter(op|op.constructor).head
+ val dtor = ac.operations.filter(op|op.destructor).head
+
+ '''
package «ac.getPackage»;
import org.eclipse.etrice.runtime.java.messaging.Address;
@@ -77,10 +82,12 @@ class ActorClassGen extends GenericActorClassGenerator {
«FOR ep : ac.getEndPorts()»
protected «ep.getPortClassName()» «ep.name» = null;
«ENDFOR»
+
//--------------------- saps
«FOR sap : ac.strSAPs»
protected «sap.getPortClassName()» «sap.name» = null;
«ENDFOR»
+
//--------------------- services
«FOR svc : ac.serviceImplementations»
protected «svc.getPortClassName()» «svc.spp.name» = null;
@@ -90,7 +97,7 @@ class ActorClassGen extends GenericActorClassGenerator {
«genInterfaceItemConstants(xpac, ac)»
«helpers.attributes(ac.attributes)»
- «helpers.operationsImplementation(ac.operations, ac.name)»
+ «helpers.operationsImplementation(ac)»
//--------------------- construction
public «ac.name»(IRTObject parent, String name, Address[][] port_addr, Address[][] peer_addr){
@@ -107,14 +114,25 @@ class ActorClassGen extends GenericActorClassGenerator {
«FOR ep : ac.getEndPorts()»
«ep.name» = new «ep.getPortClassName()»(this, "«ep.name»", IFITEM_«ep.name», «IF ep.multiplicity==1»0, «ENDIF»port_addr[IFITEM_«ep.name»]«IF ep.multiplicity==1»[0]«ENDIF», peer_addr[IFITEM_«ep.name»]«IF ep.multiplicity==1»[0]«ENDIF»);
«ENDFOR»
+
// own saps
«FOR sap : ac.strSAPs»
«sap.name» = new «sap.getPortClassName()»(this, "«sap.name»", IFITEM_«sap.name», 0, port_addr[IFITEM_«sap.name»][0], peer_addr[IFITEM_«sap.name»][0]);
«ENDFOR»
+
// own service implementations
«FOR svc : ac.serviceImplementations»
«svc.spp.name» = new «svc.getPortClassName()»(this, "«svc.spp.name»", IFITEM_«svc.spp.name», port_addr[IFITEM_«svc.spp.name»], peer_addr[IFITEM_«svc.spp.name»]);
«ENDFOR»
+ «IF ctor!=null»
+
+ {
+ // user defined constructor body
+ «FOR l : ctor.detailCode.commands»
+ «l»
+ «ENDFOR»
+ }
+ «ENDIF»
}
@@ -134,8 +152,13 @@ class ActorClassGen extends GenericActorClassGenerator {
«ENDIF»
public void destroy(){
- destroyUser();
- }
+ «IF dtor!=null»
+
+ «FOR l : dtor.detailCode.commands»
+ «l»
+ «ENDFOR»
+ «ENDIF»
+ }
«IF ac.hasNonEmptyStateMachine»
«stateMachineGen.genStateMachine(xpac, ac)»
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend
index faa4cc2b7..246c46116 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/DataClassGen.xtend
@@ -18,6 +18,8 @@ import java.util.List
import org.eclipse.etrice.core.room.Attribute
import org.eclipse.etrice.core.room.DataClass
import org.eclipse.etrice.core.room.ComplexType
+import static extension org.eclipse.etrice.core.room.util.RoomHelpers.*
+
import org.eclipse.etrice.generator.base.ILogger
import org.eclipse.etrice.generator.etricegen.Root
import org.eclipse.xtext.generator.JavaIoFileSystemAccess
@@ -46,7 +48,11 @@ class DataClassGen {
}
}
- def generate(Root root, DataClass dc) {'''
+ def generate(Root root, DataClass dc) {
+ val ctor = dc.operations.filter(op|op.constructor).head
+ val dtor = dc.operations.filter(op|op.destructor).head
+
+ '''
package «dc.getPackage()»;
«var models = root.getReferencedModels(dc)»
@@ -71,6 +77,15 @@ class DataClassGen {
super();
«dc.attributes.attributeInitialization(true)»
+ «IF ctor!=null»
+
+ {
+ // user defined constructor body
+ «FOR l : ctor.detailCode.commands»
+ «l»
+ «ENDFOR»
+ }
+ «ENDIF»
}
// constructor using fields
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend
index bcf12edec..4ba14bc25 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend
@@ -84,4 +84,18 @@ class JavaExtensions implements ILanguageExtension {
override String arrayDeclaration(String type, int size, String name) {
type+" "+name+"[]";
}
+
+ override String constructorName(String cls) {
+ cls
+ }
+ override String destructorName(String cls) {
+ cls+"_dtor"
+ }
+ override String constructorReturnType() {
+ ""
+ }
+ override String destructorReturnType() {
+ "void"
+ }
+
}

Back to the top