Jelajahi Sumber

changed files according to comments (andreasmuelder)

Robin Herrmann 8 tahun lalu
induk
melakukan
818bbcfd5c

+ 14 - 5
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/CExpressionsGenerator.xtend

@@ -1,6 +1,17 @@
+/** 
+ * Copyright (c) 2017 committers of YAKINDU and others. 
+ * 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:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+
 package org.yakindu.sct.generator.c
 
-import javax.inject.Inject
+import com.google.inject.Inject
 import org.yakindu.base.expressions.expressions.BoolLiteral
 import org.yakindu.base.expressions.expressions.ElementReferenceExpression
 import org.yakindu.base.expressions.expressions.Expression
@@ -18,7 +29,6 @@ import org.yakindu.base.types.inferrer.ITypeSystemInferrer
 import org.yakindu.base.types.typesystem.GenericTypeSystem
 import org.yakindu.base.types.typesystem.ITypeSystem
 import org.yakindu.sct.generator.core.templates.ExpressionsGenerator
-import org.yakindu.sct.generator.core.types.ICodegenTypeSystemAccess
 import org.yakindu.sct.model.sexec.naming.INamingService
 import org.yakindu.sct.model.stext.stext.ActiveStateReferenceExpression
 import org.yakindu.sct.model.stext.stext.EventRaisingExpression
@@ -34,7 +44,6 @@ class CExpressionsGenerator extends ExpressionsGenerator {
 	@Inject protected extension ITypeSystem
 	@Inject protected extension ITypeSystemInferrer
 	@Inject protected extension INamingService
-	@Inject protected extension ICodegenTypeSystemAccess
 
 	/* Referring to declared elements */
 	def dispatch CharSequence code(ElementReferenceExpression it) {
@@ -68,12 +77,12 @@ class CExpressionsGenerator extends ExpressionsGenerator {
 
 	def dispatch CharSequence code(
 		ActiveStateReferenceExpression it) '''«flow.stateActiveFctID»(«scHandle», «value.shortName»)'''
-	
+
 	def dispatch CharSequence code(LogicalRelationExpression it) '''
 	«IF isSame(leftOperand.infer.type, getType(GenericTypeSystem.STRING))»
 		(strcmp(«leftOperand.code», «rightOperand.code») «operator.literal» 0)
 	«ELSE»«leftOperand.code» «operator.literal» «rightOperand.code»«ENDIF»'''
-	
+
 	/* Feature call */
 	def dispatch CharSequence code(FeatureCall it) {
 		it.code(it.definition)

+ 4 - 11
plugins/org.yakindu.sct.generator.core/src/org/yakindu/sct/generator/core/templates/ExpressionsGenerator.xtend

@@ -11,7 +11,7 @@
 
 package org.yakindu.sct.generator.core.templates
 
-import javax.inject.Inject
+import com.google.inject.Inject
 import org.eclipse.emf.ecore.EObject
 import org.yakindu.base.expressions.expressions.AssignmentExpression
 import org.yakindu.base.expressions.expressions.BinaryExpression
@@ -19,7 +19,6 @@ import org.yakindu.base.expressions.expressions.BinaryLiteral
 import org.yakindu.base.expressions.expressions.BoolLiteral
 import org.yakindu.base.expressions.expressions.ConditionalExpression
 import org.yakindu.base.expressions.expressions.DoubleLiteral
-import org.yakindu.base.expressions.expressions.Expression
 import org.yakindu.base.expressions.expressions.FloatLiteral
 import org.yakindu.base.expressions.expressions.HexLiteral
 import org.yakindu.base.expressions.expressions.IntLiteral
@@ -30,10 +29,7 @@ import org.yakindu.base.expressions.expressions.PrimitiveValueExpression
 import org.yakindu.base.expressions.expressions.StringLiteral
 import org.yakindu.base.expressions.expressions.TypeCastExpression
 import org.yakindu.base.expressions.expressions.UnaryExpression
-import org.yakindu.base.types.inferrer.ITypeSystemInferrer
-import org.yakindu.base.types.typesystem.ITypeSystem
 import org.yakindu.sct.generator.core.types.ICodegenTypeSystemAccess
-import org.yakindu.sct.model.sexec.naming.INamingService
 
 /**
  * 
@@ -41,9 +37,6 @@ import org.yakindu.sct.model.sexec.naming.INamingService
  */
 class ExpressionsGenerator {
 
-	@Inject protected extension ITypeSystem
-	@Inject protected extension ITypeSystemInferrer
-	@Inject protected extension INamingService
 	@Inject protected extension ICodegenTypeSystemAccess
 
 	def dispatch CharSequence code(EObject it) {
@@ -51,8 +44,6 @@ class ExpressionsGenerator {
 	}
 
 	/* Expressions */
-	def dispatch CharSequence code(Expression it) '''#error TODO: generate code for «getClass().name»'''
-
 	def dispatch CharSequence code(BinaryExpression it) {
 		leftOperand.code.toString.trim + " " + operator.literal.toString.trim + " " + rightOperand.code
 	}
@@ -72,7 +63,9 @@ class ExpressionsGenerator {
 	def dispatch CharSequence code(TypeCastExpression it) '''((«type.getTargetLanguageName») «operand.code»)'''
 
 	/* Literals */
-	def dispatch CharSequence code(Literal it) '''#error unknown literal type «getClass().name» '''
+	def dispatch CharSequence code(Literal it){
+		throw new IllegalStateException("No dispatch function for " + getClass().name)
+	}
 
 	def dispatch CharSequence code(StringLiteral it) '''"«value.escaped»"'''
 

+ 2 - 5
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/CppExpressionsGenerator.xtend

@@ -8,16 +8,15 @@
  * committers of YAKINDU - initial API and implementation
  * 
  */
+ 
 package org.yakindu.sct.generator.cpp
 
-import javax.inject.Inject
+import com.google.inject.Inject
 import org.yakindu.base.expressions.expressions.BoolLiteral
 import org.yakindu.base.expressions.expressions.ElementReferenceExpression
 import org.yakindu.base.expressions.expressions.FeatureCall
-import org.yakindu.base.types.inferrer.ITypeSystemInferrer
 import org.yakindu.base.types.typesystem.ITypeSystem
 import org.yakindu.sct.generator.c.CExpressionsGenerator
-import org.yakindu.sct.generator.core.types.ICodegenTypeSystemAccess
 import org.yakindu.sct.model.sexec.naming.INamingService
 import org.yakindu.sct.model.stext.stext.ActiveStateReferenceExpression
 import org.yakindu.sct.model.stext.stext.EventRaisingExpression
@@ -28,9 +27,7 @@ class CppExpressionsGenerator extends CExpressionsGenerator {
 	@Inject protected extension CppNaming
 	@Inject protected extension Navigation
 	@Inject protected extension ITypeSystem
-	@Inject protected extension ITypeSystemInferrer
 	@Inject protected extension INamingService
-	@Inject protected extension ICodegenTypeSystemAccess
 
 	override dispatch CharSequence code(ElementReferenceExpression it,
 		OperationDefinition target) '''«target.access»(«FOR arg : expressions SEPARATOR ', '»«arg.

+ 5 - 7
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/CppNaming.xtend

@@ -8,6 +8,7 @@
  *   Contributors:
  *   	Markus Mühlbrandt - Initial contribution and API
  */
+ 
 package org.yakindu.sct.generator.cpp
 
 import com.google.inject.Inject
@@ -34,10 +35,10 @@ import org.yakindu.sct.model.stext.stext.VariableDefinition
  */
 class CppNaming extends Naming {
 
-	@Inject extension Navigation
-	@Inject extension ICodegenTypeSystemAccess
-	@Inject extension INamingService
-	@Inject extension GenmodelEntriesExtension
+	@Inject protected extension Navigation
+	@Inject protected extension ICodegenTypeSystemAccess
+	@Inject protected extension INamingService
+	@Inject protected extension GenmodelEntriesExtension
 	@Inject GeneratorEntry entry
 
 	def cpp(String it) { it + ".cpp" }
@@ -137,9 +138,6 @@ class CppNaming extends Naming {
 		interfaceName + "_OCB"
 	}
 
-	// def String getInternalOperationCallbackName() {
-	// "InternalOCB"
-	// }
 	override asFunction(OperationDefinition it) {
 		name.asEscapedIdentifier
 	}

+ 4 - 4
plugins/org.yakindu.sct.generator.csharp/src/org/yakindu/sct/generator/csharp/CSharpExpressionsGenerator.xtend

@@ -34,10 +34,10 @@ import org.yakindu.sct.model.stext.stext.OperationDefinition
 
 class CSharpExpressionsGenerator extends ExpressionsGenerator {
 
-	@Inject extension Naming
-	@Inject extension Navigation
-	@Inject extension ITypeSystem
-	@Inject extension ITypeSystemInferrer
+	@Inject protected extension Naming
+	@Inject protected extension Navigation
+	@Inject protected extension ITypeSystem
+	@Inject protected extension ITypeSystemInferrer
 
 	private var List<TimeEvent> timeEvents;
 

+ 5 - 5
plugins/org.yakindu.sct.generator.java/src/org/yakindu/sct/generator/java/JavaExpressionsGenerator.xtend

@@ -37,11 +37,11 @@ import org.yakindu.sct.model.stext.stext.OperationDefinition
 
 class JavaExpressionsGenerator extends ExpressionsGenerator {
 
-	@Inject extension Naming
-	@Inject extension JavaNamingService
-	@Inject extension Navigation
-	@Inject extension ITypeSystem
-	@Inject extension ITypeSystemInferrer
+	@Inject protected extension Naming
+	@Inject protected extension JavaNamingService
+	@Inject protected extension Navigation
+	@Inject protected extension ITypeSystem
+	@Inject protected extension ITypeSystemInferrer
 
 	private var List<TimeEvent> timeEvents;