Browse Source

Added some new features for the new code creation (hiearchical states / expression)

jos.itemis@gmail.com 13 years ago
parent
commit
e679f9b42c

+ 9 - 9
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/templates/Expression.ext

@@ -53,31 +53,31 @@ String addValue(EventRaising event) :
 
 /* Logical Expressions */
 String toCCode(LogicalOrExpression expression) :
-  	expression.leftOperand.toCCode() + " || " + expression.rightOperand.toCCode();
+  	" ( " + expression.leftOperand.toCCode() + " ) " + " || " + " ( " + expression.rightOperand.toCCode() + " ) ";
   	
 String toCCode(LogicalAndExpression expression) :
-  	expression.leftOperand.toCCode() + " && " + expression.rightOperand.toCCode();
+  	" ( " + expression.leftOperand.toCCode() + " ) " + " && " + " ( " + expression.rightOperand.toCCode() + " ) ";
 
 String toCCode(LogicalNotExpression expression) :
-  	" ~" + expression.operand.toCCode();
+  	" ~" + " ( " + expression.operand.toCCode() + " ) ";
 
 String toCCode(LogicalRelationExpression expression) :
-   expression.leftOperand.toCCode() + getOperator(expression.operator) + expression.rightOperand.toCCode();
+   " ( " + expression.leftOperand.toCCode() + " ) " + getOperator(expression.operator) + " ( " + expression.rightOperand.toCCode() + " ) ";
     
 String toCCode(BitwiseAndExpression expression) :
-  	expression.leftOperand.toCCode() + " & " + expression.rightOperand.toCCode();
+  	" ( " + expression.leftOperand.toCCode() + " ) " + " & " + " ( " + expression.rightOperand.toCCode() + " ) ";
 
 String toCCode(BitwiseOrExpression expression) :
-  	expression.leftOperand.toCCode() + " | " + expression.rightOperand.toCCode();
+  	" ( " + expression.leftOperand.toCCode() + " ) " + " | " + " ( " + expression.rightOperand.toCCode() + " ) ";
 
 String toCCode(BitwiseXorExpression expression) :
-  	expression.leftOperand.toCCode() + " ^ " + expression.rightOperand.toCCode();
+  	" ( " + expression.leftOperand.toCCode() + " ) " + " ^ " + " ( " + expression.rightOperand.toCCode() + " ) ";
 
 String toCCode(NumericalAddSubtractExpression expression) :
-  	expression.leftOperand.toCCode() + getOperator(expression.operator) + expression.rightOperand.toCCode();
+  	" ( " + expression.leftOperand.toCCode() + " ) " + getOperator(expression.operator) + " ( " + expression.rightOperand.toCCode() + " ) ";
   	
 String toCCode(NumericalMultiplyDivideExpression expression) :
-  	expression.leftOperand.toCCode() + getOperator(expression.operator) + expression.rightOperand.toCCode();
+  	" ( " + expression.leftOperand.toCCode() + " ) " + getOperator(expression.operator) + " ( " + expression.rightOperand.toCCode() + " ) ";
 
 // is this just relevant for events?
 String toCCode(ElementReferenceExpression ref) :

+ 2 - 2
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/templates/Interfaces.xpt

@@ -107,7 +107,7 @@ void 
 	
 «FOREACH interface.declarations.typeSelect(VariableDefinition) AS variable -»
 «IF variable.initialValue != null»
-	handle->«variable.name» = «variable.initialValue»;
+	handle->«variable.name» = «variable.initialValue.correctLValue()»;
 «ENDIF»
 «ENDFOREACH»
 
@@ -193,7 +193,7 @@ ENDIF
 	_Event* ev = eventPool_createEvent(handle->eventPool, «event.getEventEnumName()»);
 
 «IF event.type != Type::void -»
-	ev->value = value;
+	((«event.name»*)ev)->value = value;
 «ENDIF»
 
 	if (ev != NULL)

+ 5 - 1
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/templates/Naming.ext

@@ -49,4 +49,8 @@ String interfaceObjectName(InterfaceScope this) : "interface" + ((this.name == n
 
 String getEventEnumName(EventDefinition this) : "ev_" + this.name;
 
-
+String correctLValue(String literal) :
+    (literal == "true" ? "bool_true" :
+	(literal == "false" ? "bool_false" :
+	literal ));
+