Browse Source

Added statechart handle pointer to operation signature (Fixes issue 100). Updated test cases to match new operation signature.

markus.muehlbrandt@gmail.com 10 years ago
parent
commit
25efdb910e

+ 2 - 2
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/ExpressionCode.xtend

@@ -72,10 +72,10 @@ class ExpressionCode {
 
 	def dispatch CharSequence code(Expression it, VariableDefinition target) '''«target.access»'''
 
-	def dispatch CharSequence code(ElementReferenceExpression it, OperationDefinition target) '''«target.access»(«FOR arg : args SEPARATOR ', '»«arg.
+	def dispatch CharSequence code(ElementReferenceExpression it, OperationDefinition target) '''«target.access»(«scHandle»«FOR arg : args BEFORE ', ' SEPARATOR ', '»«arg.
 		code»«ENDFOR»)'''
 
-	def dispatch CharSequence code(FeatureCall it, OperationDefinition target) '''«target.access»(«FOR arg : args SEPARATOR ', '»«arg.
+	def dispatch CharSequence code(FeatureCall it, OperationDefinition target) '''«target.access»(«scHandle»«FOR arg : args BEFORE ', ' SEPARATOR ', '»«arg.
 		code»«ENDFOR»)'''
 
 	/* HANDLING LITERALS */

+ 2 - 2
plugins/org.yakindu.sct.generator.c/src/org/yakindu/sct/generator/c/StatemachineRequired.xtend

@@ -40,7 +40,7 @@ class StatemachineRequired {
 			#define «module.client.define»_H_
 
 			#include "«typesModule.h»"
-			«IF timed»#include "«module.h»"«ENDIF»
+			«IF timed || operations.size > 0»#include "«module.h»"«ENDIF»
 
 			#ifdef __cplusplus
 			extern "C" {
@@ -115,7 +115,7 @@ class StatemachineRequired {
 	def dispatch functionPrototypes(Declaration it) ''''''
 
 	def dispatch functionPrototypes(OperationDefinition it) '''
-		extern «type.targetLanguageName» «asFunction»(«FOR p : parameters SEPARATOR ', '»const «p.type.targetLanguageName» «p.name.asIdentifier»«ENDFOR»);
+		extern «type.targetLanguageName» «asFunction»(«scHandleDecl»«FOR p : parameters BEFORE ', ' SEPARATOR ', '»const «p.type.targetLanguageName» «p.name.asIdentifier»«ENDFOR»);
 	'''
 
 }

+ 26 - 26
test-plugins/org.yakindu.sct.generator.c.test/gtests/Operations/OperationsCustom.cc

@@ -75,37 +75,37 @@ TEST(StatemachineTest, OperationCallback) {
 }
 
 
-void operationsInternal_internalOperation1(){
+void operationsInternal_internalOperation1(Operations* handle){
 	internalOperation1Called = true;
 }
 
-sc_boolean operationsInternal_internalOperation2(const sc_integer param1){
+sc_boolean operationsInternal_internalOperation2(Operations* handle, const sc_integer param1){
 	internalOperation2Called = true;
 	internalOp2Param = param1;
 	return true;
 }
 
-sc_real operationsInternal_internalOperation3(){
+sc_real operationsInternal_internalOperation3(Operations* handle){
 	return 0.0d;
 }
 
-sc_real operationsInternal_internalOperation3a(const sc_real param1){
+sc_real operationsInternal_internalOperation3a(Operations* handle, const sc_real param1){
 	return 0.0d;
 }
 
-sc_integer operationsInternal_internalOperation4(){
+sc_integer operationsInternal_internalOperation4(Operations* handle){
 	return 0;
 }
 
-sc_integer operationsInternal_internalOperation4a(const sc_integer param1){
+sc_integer operationsInternal_internalOperation4a(Operations* handle, const sc_integer param1){
 	return 0;
 }
 
-sc_string operationsInternal_internalOperation5(){
+sc_string operationsInternal_internalOperation5(Operations* handle){
 	return &myChar;
 }
 
-sc_string operationsInternal_internalOperation5a(const sc_string param1){
+sc_string operationsInternal_internalOperation5a(Operations* handle, const sc_string param1){
 	return &myChar;
 }
 
@@ -117,37 +117,37 @@ sc_string operationsInternal_internalOperation5a(const sc_string param1){
 
 
 
-void operationsIfaceInterface1_interfaceOperation1(){
+void operationsIfaceInterface1_interfaceOperation1(Operations* handle){
 	interfaceOperation1Called = true;
 }
 
-sc_boolean operationsIfaceInterface1_interfaceOperation2(const sc_integer param1){
+sc_boolean operationsIfaceInterface1_interfaceOperation2(Operations* handle, const sc_integer param1){
 	interfaceOperation2Called = true;
 	interfaceOp2Param = param1;
 	return true;
 }
 
-sc_real operationsIfaceInterface1_interfaceOperation3(){
+sc_real operationsIfaceInterface1_interfaceOperation3(Operations* handle){
 	return 0.0d;
 }
 
-sc_real operationsIfaceInterface1_interfaceOperation3a(const sc_real param1){
+sc_real operationsIfaceInterface1_interfaceOperation3a(Operations* handle, const sc_real param1){
 	return 0.0d;
 }
 
-sc_integer operationsIfaceInterface1_interfaceOperation4(){
+sc_integer operationsIfaceInterface1_interfaceOperation4(Operations* handle){
 	return 0;
 }
 
-sc_integer operationsIfaceInterface1_interfaceOperation4a(const sc_integer param1){
+sc_integer operationsIfaceInterface1_interfaceOperation4a(Operations* handle, const sc_integer param1){
 	return 0;
 }
 
-sc_string operationsIfaceInterface1_interfaceOperation5(){
+sc_string operationsIfaceInterface1_interfaceOperation5(Operations* handle){
 	return &myChar;
 }
 
-sc_string operationsIfaceInterface1_interfaceOperation5a(const sc_string param1){
+sc_string operationsIfaceInterface1_interfaceOperation5a(Operations* handle, const sc_string param1){
 	return &myChar;
 }
 
@@ -161,40 +161,40 @@ sc_string operationsIfaceInterface1_interfaceOperation5a(const sc_string param1)
 
 
 
-void operationsIface_unnamedInterfaceOperation1(){
+void operationsIface_unnamedInterfaceOperation1(Operations* handle){
 	unnamedInterfaceOperation1Called = true;
 }
 
-sc_boolean operationsIface_unnamedInterfaceOperation2(const sc_integer param1){
+sc_boolean operationsIface_unnamedInterfaceOperation2(Operations* handle, const sc_integer param1){
 	unnamedInterfaceOperation2Called = true;
 	unnamedInterfaceOp2Param = param1;
 	return true;
 }
 
-sc_real operationsIface_unnamedOperation3(){
+sc_real operationsIface_unnamedOperation3(Operations* handle){
 	return 0.0d;
 }
 
-sc_real operationsIface_unnamedOperation3a(const sc_real param1){
+sc_real operationsIface_unnamedOperation3a(Operations* handle, const sc_real param1){
 	return 0.0d;
 }
 
-sc_integer operationsIface_unnamedOperation4(){
+sc_integer operationsIface_unnamedOperation4(Operations* handle){
 	return 0;
 }
 
-sc_integer operationsIface_unnamedOperation4a(const sc_integer param1){
+sc_integer operationsIface_unnamedOperation4a(Operations* handle, const sc_integer param1){
 	return 0;
 }
 
-sc_string operationsIface_unnamedOperation5(){
+sc_string operationsIface_unnamedOperation5(Operations* handle){
 	return &myChar;
 }
 
-sc_string operationsIface_unnamedOperation5a(const sc_string param1){
+sc_string operationsIface_unnamedOperation5a(Operations* handle, const sc_string param1){
 	return &myChar;
 }
 
-sc_boolean operationsIface_alwaysTrue(){
+sc_boolean operationsIface_alwaysTrue(Operations* handle){
 	return true;
-}
+}

+ 4 - 4
test-plugins/org.yakindu.sct.generator.c.test/gtests/OperationsWithoutBraces/OperationsWithoutBracesCustom.cc

@@ -31,14 +31,14 @@ TEST(StatemachineTest, OperationsWithoutBracesTest) {
 	EXPECT_TRUE(operationsWithoutBraces_isActive(&handle, OperationsWithoutBraces_another_region_D));
 }
 		
-sc_boolean operationsWithoutBracesIface_myBoolOp(){
+sc_boolean operationsWithoutBracesIface_myBoolOp(OperationsWithoutBraces* handle){
 	return false;
 }
 
-sc_integer operationsWithoutBracesIface_myIntOp(){
+sc_integer operationsWithoutBracesIface_myIntOp(OperationsWithoutBraces* handle){
 	return 0;
 }
 
-sc_real operationsWithoutBracesIface_myRealOp(){
+sc_real operationsWithoutBracesIface_myRealOp(OperationsWithoutBraces* handle){
 	return 0.0;
-}
+}