Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Schuetz2011-12-23 15:12:42 +0000
committerThomas Schuetz2011-12-23 15:12:42 +0000
commitf502cbe9485f647ecd273222bf53717fa00c5043 (patch)
treef7e19a27ecb36d9255ea8f7a5f22bcb98a625c78 /plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java
parentf9975ec475dc447886695489cfafba8adb5b7860 (diff)
downloadorg.eclipse.etrice-f502cbe9485f647ecd273222bf53717fa00c5043.tar.gz
org.eclipse.etrice-f502cbe9485f647ecd273222bf53717fa00c5043.tar.xz
org.eclipse.etrice-f502cbe9485f647ecd273222bf53717fa00c5043.zip
[generator.c] added project for C-Generator, moved more language independent generator code to plugin generator
Diffstat (limited to 'plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java')
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaExtensions.xtend56
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaGenerator.java90
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaTransitionChainVisitor.java95
-rw-r--r--plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend6
4 files changed, 23 insertions, 224 deletions
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 8a97f850f..b10ab5561 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
@@ -27,23 +27,21 @@ import org.eclipse.etrice.core.room.Type
import org.eclipse.etrice.core.room.TypedID
import org.eclipse.etrice.generator.etricegen.ExpandedActorClass
import org.eclipse.etrice.generator.etricegen.TransitionChain
+import org.eclipse.etrice.generator.generic.ILanguageExtension
@Singleton
-class JavaExtensions {
+class JavaExtensions implements ILanguageExtension {
- @Inject JavaGenerator javaGen
+ @Inject org.eclipse.etrice.generator.generic.LanguageGenerator languageGen
- def String getJavaFileName(RoomClass rc) {
- return rc.name+".java";
- }
-
+
//-------------------------------------------------------
// Java types
// type names for Type class (distinguish Primitive and DataClass)
- def String toJavaType(PrimitiveType prim) {
+ override String toType(PrimitiveType prim) {
return switch(prim.toString()) {
case 'uint8': 'undefined_type'
case 'uint16': 'undefined_type'
@@ -57,41 +55,21 @@ class JavaExtensions {
default: prim.toString()
}
}
- def String toJavaObjectType(PrimitiveType prim) {
- return switch(prim.toString()) {
- case 'uint8': 'undefined_type'
- case 'uint16': 'undefined_type'
- case 'uint32': 'undefined_type'
- case 'int8': 'Byte'
- case 'int16': 'Short'
- case 'int32': 'Integer'
- case 'float32': 'Float'
- case 'float64': 'Double'
- case 'string': 'String'
- default: prim.toString()
- }
- }
- def String typeName(Type type) {
+ override String typeName(Type type) {
if (type.type!=null)
return type.type.name
else
- type.prim.toJavaType
+ type.prim.toType
}
- def String freeTypeName(FreeType type) {
+ override String freeTypeName(FreeType type) {
if (type.type!=null)
return type.type
else
- type.prim.toJavaType
- }
- def String typeObjectName(Type type) {
- if (type.type!=null)
- return type.type.name
- else
- type.prim.toJavaObjectType()
+ type.prim.toType
}
// default values for data
- def String defaultValue(PrimitiveType prim) {
+ override String defaultValue(PrimitiveType prim) {
return switch(prim.toString()) {
case 'uint8': '0'
case 'uint16': '0'
@@ -105,21 +83,27 @@ class JavaExtensions {
default: prim.toString()
};
}
- def String defaultValue(TypedID a) {
+ override String defaultValue(TypedID a) {
if (a.type.type!=null)
return "new "+a.type.type.name+"()"
else
return a.type.prim.defaultValue
}
- def String getTypedDataDefinition(Message m) {
- return javaGen.getTypedData(m)
+ override String getTypedDataDefinition(Message m) {
+ return languageGen.getTypedData(m)
+ }
+
+ // Specific
+
+ def String getJavaFileName(RoomClass rc) {
+ return rc.name+".java";
}
//-------------------------------------------------------
// transition chain visitor
def String getExecuteChainCode(ExpandedActorClass ac, TransitionChain tc) {
- return javaGen.getExecuteChain(ac, tc)
+ return languageGen.getExecuteChain(ac, tc)
}
} \ No newline at end of file
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaGenerator.java b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaGenerator.java
deleted file mode 100644
index da6b7b012..000000000
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaGenerator.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * CONTRIBUTORS:
- * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
- *
- *******************************************************************************/
-
-package org.eclipse.etrice.generator.java.gen;
-
-import org.eclipse.etrice.core.room.InitialTransition;
-import org.eclipse.etrice.core.room.Message;
-import org.eclipse.etrice.core.room.MessageFromIf;
-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.core.room.Type;
-import org.eclipse.etrice.core.room.TypedID;
-import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.generator.etricegen.TransitionChain;
-
-public class JavaGenerator {
-
- public String getExecuteChain(ExpandedActorClass ac, TransitionChain tc) {
- JavaTransitionChainVisitor tcv = new JavaTransitionChainVisitor(ac, tc);
- return tc.genExecuteChain(tcv);
- }
-
- public String getArgumentList(ExpandedActorClass xpac, Transition t) {
- if (t instanceof InitialTransition)
- // actually is InitialTransition
- return "";
-
- TransitionChain chain = xpac.getChain(t);
- if (!(chain.getTransition() instanceof TriggeredTransition))
- return "";
-
- Trigger trigger = ((TriggeredTransition)chain.getTransition()).getTriggers().get(0);
- MessageFromIf mif = trigger.getMsgFromIfPairs().get(0);
-
- return getTypedArgumentList(mif.getMessage());
- }
-
- public String getArgumentList(Message m) {
- return getArglistAndTypedData(m.getData())[0];
- }
-
- public String getTypedData(Message m) {
- return getArglistAndTypedData(m.getData())[1];
- }
-
- public String getTypedArgumentList(Message m) {
- return getArglistAndTypedData(m.getData())[2];
- }
-
- public String[] getArglistAndTypedData(TypedID data) {
- if (data==null)
- return new String[] {"", "", ""};
-
- String t;
- String ct;
- Type type = data.getType();
- if (type.getType()==null) {
- switch (type.getPrim()) {
- case BOOLEAN: t = "boolean"; ct = "Boolean"; break;
- case CHAR: t = "char"; ct = "Char"; break;
- case FLOAT32: t = "float"; ct = "Float"; break;
- case FLOAT64: t = "double"; ct = "Double"; break;
- case INT32: t = "int"; ct = "Integer"; break;
- case STRING: t="String"; ct="String"; break;
- case INT8: t="byte"; ct="Byte"; break;
- case INT16: t="short"; ct="Short"; break;
- default: t = "invalid Java data type"; ct = ""; assert(false): "Java doesn't support type "+type.getPrim().name()+"!";
- }
- }
- else {
- t = type.getType().getName();
- ct = t;
- }
- String typedData = t+" "+data.getName() + " = ("+ct+") generic_data;\n";
- String dataArg = ", "+data.getName();
- String typedArgList = ", "+t+" "+data.getName();
-
- return new String[]{dataArg, typedData, typedArgList};
- }
-}
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaTransitionChainVisitor.java b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaTransitionChainVisitor.java
deleted file mode 100644
index 899046d52..000000000
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/JavaTransitionChainVisitor.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 protos software gmbh (http://www.protos.de).
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * CONTRIBUTORS:
- * Thomas Schuetz and Henrik Rentz-Reichert (initial contribution)
- *
- *******************************************************************************/
-
-package org.eclipse.etrice.generator.java.gen;
-
-import org.eclipse.etrice.core.room.CPBranchTransition;
-import org.eclipse.etrice.core.room.ContinuationTransition;
-import org.eclipse.etrice.core.room.InitialTransition;
-import org.eclipse.etrice.core.room.State;
-import org.eclipse.etrice.core.room.Transition;
-import org.eclipse.etrice.core.room.TriggeredTransition;
-import org.eclipse.etrice.core.room.TypedID;
-import org.eclipse.etrice.generator.etricegen.ExpandedActorClass;
-import org.eclipse.etrice.generator.etricegen.ITransitionChainVisitor;
-import org.eclipse.etrice.generator.etricegen.TransitionChain;
-import org.eclipse.etrice.generator.extensions.Extensions;
-
-public class JavaTransitionChainVisitor implements ITransitionChainVisitor {
-
- private ExpandedActorClass ac;
- private JavaGenerator javaGen = new JavaGenerator();
- private String typedData = "";
- private String dataArg = "";
-
- JavaTransitionChainVisitor(ExpandedActorClass ac, TransitionChain tc) {
- this.ac = ac;
-
- if (tc.getTransition() instanceof TriggeredTransition) {
- // we rely on the previous checking during the generator model creation
- TypedID data = ((TriggeredTransition)tc.getTransition()).getTriggers().get(0).getMsgFromIfPairs().get(0).getMessage().getData();
-
- String[] result = javaGen.getArglistAndTypedData(data);
- dataArg = result[0];
- typedData = result[1];
- }
- }
-
- // ITransitionChainVisitor interface
-
- public String genActionOperationCall(Transition tr) {
- if (tr.getAction()!=null && !tr.getAction().getCommands().isEmpty()) {
- if (tr instanceof InitialTransition)
- return Extensions.getActionCodeOperationName(tr)+"();\n";
- else
- return Extensions.getActionCodeOperationName(tr)+"(ifitem"+dataArg+");\n";
- }
- return "";
- }
-
- public String genEntryOperationCall(State state) {
- return Extensions.getEntryCodeOperationName(state)+"();\n";
- }
-
- public String genExitOperationCall(State state) {
- return Extensions.getExitCodeOperationName(state)+"();\n";
- }
-
- public String genElseIfBranch(CPBranchTransition tr, boolean isFirst) {
- String result = "";
-
- if (!isFirst )
- result = "}\nelse ";
-
- result += "if ("+ac.getCode(tr.getCondition())+") {\n";
-
- return result;
- }
-
- public String genElseBranch(ContinuationTransition tr) {
- String result = "}\nelse {\n";
- return result;
- }
-
- public String genEndIf() {
- return "}\n";
- }
-
- public String genReturnState(State state) {
- return "return " + Extensions.getStateId(state) + ";";
- }
-
- public String genTypedData() {
- return typedData;
- }
-
-}
diff --git a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend
index 1b099892b..22c1e0d7d 100644
--- a/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend
+++ b/plugins/org.eclipse.etrice.generator.java/src/org/eclipse/etrice/generator/java/gen/StateMachineGen.xtend
@@ -29,8 +29,8 @@ class StateMachineGen {
@Inject extension JavaExtensions stdExt
@Inject extension RoomExtensions roomExt
- @Inject JavaGenerator javaGen
-
+ @Inject org.eclipse.etrice.generator.generic.LanguageGenerator languageGen
+
def genStateMachine(ExpandedActorClass xpac, ActorClass ac) {'''
//******************************************
// START of generated code for FSM
@@ -230,7 +230,7 @@ class StateMachineGen {
//*** Action Codes
«FOR tr : xpac.stateMachine.getTransitionList()»
«IF xpac.isOwnObject(tr) && tr.hasActionCode()»
- protected void «tr.getActionCodeOperationName()»(«IF tr instanceof NonInitialTransition»InterfaceItemBase ifitem«javaGen.getArgumentList(xpac, tr)»«ENDIF») {
+ protected void «tr.getActionCodeOperationName()»(«IF tr instanceof NonInitialTransition»InterfaceItemBase ifitem«languageGen.getArgumentList(xpac, tr)»«ENDIF») {
«xpac.getActionCode(tr)»
}
«ENDIF»

Back to the top