Browse Source

OPEN - issue YAKHMI-895: Create new SCT C++ Code generator
https://intern.itemis.de/jira/browse/YAKHMI-895

markus.muehlbrandt@gmail.com 12 years ago
parent
commit
b952abd50e
16 changed files with 163 additions and 148 deletions
  1. 7 1
      plugins/org.yakindu.sct.generator.cpp/library/FeatureTypeLibrary.xmi
  2. 2 2
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/FlowCode.xtend
  3. 2 2
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/Naming.xtend
  4. 7 7
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/StatemachineHeader.xtend
  5. 7 7
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/StatemachineImplementation.xtend
  6. 2 0
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/StatemachineInterface.xtend
  7. 4 2
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/TimedStatemachineInterface.xtend
  8. 6 1
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/TimerInterface.xtend
  9. 9 9
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/DummyTimerCPP.xpt
  10. 9 9
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/EventH.xpt
  11. 9 9
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/EventReceiverH.xpt
  12. 10 10
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/EventSetCPP.xpt
  13. 9 9
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/EventSetH.xpt
  14. 71 71
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/Interfaces.xpt
  15. 9 9
      plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/TimerH.xpt
  16. BIN
      plugins/org.yakindu.sct.generator.cpp/xtend-gen/org/yakindu/sct/generator/cpp/.Naming.java._trace

+ 7 - 1
plugins/org.yakindu.sct.generator.cpp/library/FeatureTypeLibrary.xmi

@@ -1,2 +1,8 @@
 <?xml version="1.0" encoding="ASCII"?>
-<sgen:FeatureTypeLibrary xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sgen="http://www.yakindu.org/sct/statechart/SGen" xsi:schemaLocation="http://www.yakindu.org/sct/statechart/SGen ../../org.yakindu.sct.model.sgen/model/emf/sgen.ecore" name="CPP Generator"/>
+<sgen:FeatureTypeLibrary
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:sgen="http://www.yakindu.org/sct/statechart/SGen"
+    xsi:schemaLocation="http://www.yakindu.org/sct/statechart/SGen ../../org.yakindu.sct.model.sgen/model/emf/sgen.ecore"
+    name="CPP Generator"/>

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

@@ -53,12 +53,12 @@ class FlowCode extends org.yakindu.sct.generator.c.FlowCode {
 
 	override dispatch CharSequence code(ScheduleTimeEvent it) '''
 		«stepComment»
-		«timerServiceInstance»->setTimer(this, &«timeEventsInstance»[«timeEvent.indexOf»], «timeValue.code», «IF timeEvent.periodic»true«ELSE»false«ENDIF»);
+		«timerInstance»->setTimer(this, &«timeEventsInstance»[«timeEvent.indexOf»], «timeValue.code», «IF timeEvent.periodic»true«ELSE»false«ENDIF»);
 	'''
 
 	override dispatch CharSequence code(UnscheduleTimeEvent it) '''
 		«stepComment»
-		«timerServiceInstance»->unsetTimer(this, &«timeEventsInstance»[«timeEvent.indexOf»]);
+		«timerInstance»->unsetTimer(this, &«timeEventsInstance»[«timeEvent.indexOf»]);
 	'''
 	
 	override dispatch CharSequence code(Execution it) 

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

@@ -51,8 +51,8 @@ class Naming extends org.yakindu.sct.generator.c.Naming {
 		'TimerInterface'
 	}
 	
-	def timerServiceInstance() {
-		'timerService'
+	def timerInstance() {
+		'timer'
 	}
 	
 	def timeEventsInstance() {

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

@@ -182,7 +182,7 @@ class StatemachineHeader extends Statemachine {
 		static const sc_integer «historyStatesConst» = «historyVector.size»;«ENDIF»
 		
 		«IF timed»
-			«timerInterface»* «timerServiceInstance»;
+			«timerInterface»* «timerInstance»;
 			sc_boolean «timeEventsInstance»[«timeEvents.size»];
 		«ENDIF»
 		
@@ -196,15 +196,15 @@ class StatemachineHeader extends Statemachine {
 		«ENDFOR»
 	'''
 	
-	def publicFunctionPrototypes(ExecutionFlow it) '''
+	def private publicFunctionPrototypes(ExecutionFlow it) '''
 		«IStatemachineFunctions»
 		
 		«IF timed»
-			«ITimedStatemachineFunctions»
+			«timedStatemachineFunctions»
 		«ENDIF»
 	'''
 	
-	def IStatemachineFunctions() '''
+	def private IStatemachineFunctions() '''
 		void init();
 		
 		void enter();
@@ -214,10 +214,10 @@ class StatemachineHeader extends Statemachine {
 		void runCycle();
 	'''
 	
-	def ITimedStatemachineFunctions(ExecutionFlow it) '''
-		void setTimerService(«timerInterface»* timerService);
+	def timedStatemachineFunctions(ExecutionFlow it) '''
+		void setTimer(«timerInterface»* timer);
 		
-		«timerInterface»* getTimerService();
+		«timerInterface»* getTimer();
 		
 		void «nameOfRaiseTimeEventFunction»(sc_eventid event);
 	'''

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

@@ -56,7 +56,7 @@ class StatemachineImplementation {
 		
 		«clearOutEventsFunction»
 
-		«raiseTimeEventFunction»
+		«timedStatemachineFunctions»
 
 		«isActiveFunction»
 		
@@ -80,7 +80,7 @@ class StatemachineImplementation {
 			stateConfVectorPosition = 0;
 			
 			«IF timed»
-			timerService = NULL;
+				«timerInstance» = NULL;
 			«ENDIF»
 		}
 	'''
@@ -186,15 +186,15 @@ class StatemachineImplementation {
 		}
 	'''
 	
-	def raiseTimeEventFunction(ExecutionFlow it) '''
+	def timedStatemachineFunctions(ExecutionFlow it) '''
 		«IF timed»
 			
-			void «module»::setTimerService(«timerInterface»* timerService){
-				this->timerService = timerService;
+			void «module»::setTimer(«timerInterface»* timer){
+				this->«timerInstance» = timer;
 			}
 			
-			«timerInterface»* «module»::getTimerService(){
-				return timerService;
+			«timerInterface»* «module»::getTimer(){
+				return «timerInstance»;
 			}
 			
 			void «module»::«nameOfRaiseTimeEventFunction»(sc_eventid evid) {

+ 2 - 0
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/StatemachineInterface.xtend

@@ -63,6 +63,8 @@ class StatemachineInterface {
 				virtual void runCycle() = 0;
 		};
 		
+		inline StatemachineInterface::~StatemachineInterface() {}
+		
 		#endif /* «statemachineInterface.define»_H_ */
 		'''
 	}

+ 4 - 2
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/TimedStatemachineInterface.xtend

@@ -50,12 +50,12 @@ class TimedStatemachineInterface {
 				* externally on a timed state machine before a run cycle can be correct
 				* executed.
 				*/
-				virtual void setTimerService(«timerInterface»* timerService) = 0;
+				virtual void setTimer(«timerInterface»* timer) = 0;
 				
 				/*
 				* Returns the currently used timer service.
 				*/
-				virtual «timerInterface»* getTimerService() = 0;
+				virtual «timerInterface»* getTimer() = 0;
 				
 				/*
 				* Callback method if a time event occurred.
@@ -63,6 +63,8 @@ class TimedStatemachineInterface {
 				virtual void «nameOfRaiseTimeEventFunction»(sc_eventid event) = 0;
 		};
 		
+		inline TimedStatemachineInterface::~TimedStatemachineInterface() {}
+		
 		#endif /* «timedStatemachineInterface.define»_H_ */
 		'''
 	}

+ 6 - 1
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/TimerInterface.xtend

@@ -34,7 +34,10 @@ class TimerInterface {
 		#ifndef «timerInterface.define»_H_
 		#define «timerInterface.define»_H_
 		
-		#include "«timedStatemachineInterface.h»"
+		#include "sc_types.h"
+		
+		//forward declaration of TimedStatemachineInterface to avoid cyclic dependency
+		class TimedStatemachineInterface;
 		
 		/*
 		 * Basic interface for statemachines.
@@ -61,6 +64,8 @@ class TimerInterface {
 				virtual void cancel() = 0;
 		};
 		
+		inline TimerInterface::~TimerInterface() {}
+		
 		#endif /* «timerInterface.define»_H_ */
 		'''
 	}

+ 9 - 9
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/DummyTimerCPP.xpt

@@ -1,19 +1,19 @@
-«REM»
+�REM�
 
 Templates for the main statechart cpp file.
 
 @auther joern seger
 
-«ENDREM»
+�ENDREM�
 
-«IMPORT sexec»
-«IMPORT stext»
-«IMPORT sgraph»
+�IMPORT sexec�
+�IMPORT stext�
+�IMPORT sgraph�
 
 
-«DEFINE file FOR ExecutionFlow»
+�DEFINE file FOR ExecutionFlow�
 
-«FILE 'DummyTimer.cpp'»
+�FILE 'DummyTimer.cpp'�
 #include "DummyTimer.h"
 
 DummyTimer::DummyTimer() 
@@ -28,6 +28,6 @@ void DummyTimer::setTimer(const uint32_t evid, const uint32_t time_ms, bool peri
 void DummyTimer::unsetTimer(const uint32_t evid)
 {}
 
-«ENDFILE»
+�ENDFILE�
 
-«ENDDEFINE»
+�ENDDEFINE�

+ 9 - 9
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/EventH.xpt

@@ -1,19 +1,19 @@
-«REM»
+�REM�
 
 Templates for the main statechart cpp file.
 
 @auther joern seger
 
-«ENDREM»
+�ENDREM�
 
-«IMPORT sexec»
-«IMPORT stext»
-«IMPORT sgraph»
+�IMPORT sexec�
+�IMPORT stext�
+�IMPORT sgraph�
 
 
-«DEFINE file FOR ExecutionFlow»
+�DEFINE file FOR ExecutionFlow�
 
-«FILE 'Event.h'»
+�FILE 'Event.h'�
 #ifndef EVENT_H_
 #define EVENT_H_
 
@@ -40,6 +40,6 @@ template <class A>
 Event createEvent() { return new A; }
 
 #endif /* EVENT_H_ */
-«ENDFILE»
+�ENDFILE�
 
-«ENDDEFINE»
+�ENDDEFINE�

+ 9 - 9
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/EventReceiverH.xpt

@@ -1,19 +1,19 @@
-«REM»
+�REM�
 
 Templates for the main statechart cpp file.
 
 @auther axel terfloth
 
-«ENDREM»
+�ENDREM�
 
-«IMPORT sexec»
-«IMPORT stext»
-«IMPORT sgraph»
+�IMPORT sexec�
+�IMPORT stext�
+�IMPORT sgraph�
 
 
-«DEFINE file FOR ExecutionFlow»
+�DEFINE file FOR ExecutionFlow�
 
-«FILE 'EventReceiver.h'»
+�FILE 'EventReceiver.h'�
 #ifndef EVENTRECEIVER_H_
 #define EVENTRECEIVER_H_
 
@@ -29,6 +29,6 @@ public:
 };
 
 #endif /* EVENTRECEIVER_H_ */
-«ENDFILE»
+�ENDFILE�
 
-«ENDDEFINE»
+�ENDDEFINE�

+ 10 - 10
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/EventSetCPP.xpt

@@ -1,19 +1,19 @@
-«REM»
+�REM�
 
 Templates for the main statechart cpp file.
 
 @auther joern seger
 
-«ENDREM»
+�ENDREM�
 
-«IMPORT sexec»
-«IMPORT stext»
-«IMPORT sgraph»
+�IMPORT sexec�
+�IMPORT stext�
+�IMPORT sgraph�
 
 
-«DEFINE file FOR ExecutionFlow»
+�DEFINE file FOR ExecutionFlow�
 
-«FILE 'EventSet.cpp'»
+�FILE 'EventSet.cpp'�
 #include "EventSet.h"
 #include "StatemachineException.h"
 
@@ -54,7 +54,7 @@ void EventSet::set(const uint32_t evid)
 	if (evid < maxEvents) {
 		_set[evid] = true;
 	} else {
-		throw StatechartException("EventSet::set: Event ID out of range");
+		throw StatechartException("EventSet::set�: Event ID out of range");
 	}
 }
 
@@ -66,6 +66,6 @@ bool EventSet::isAny() const
 	return(false);
 
 }
-«ENDFILE»
+�ENDFILE�
 
-«ENDDEFINE»
+�ENDDEFINE�

+ 9 - 9
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/EventSetH.xpt

@@ -1,19 +1,19 @@
-«REM»
+�REM�
 
 Templates for the main statechart cpp file.
 
 @auther joern seger
 
-«ENDREM»
+�ENDREM�
 
-«IMPORT sexec»
-«IMPORT stext»
-«IMPORT sgraph»
+�IMPORT sexec�
+�IMPORT stext�
+�IMPORT sgraph�
 
 
-«DEFINE file FOR ExecutionFlow»
+�DEFINE file FOR ExecutionFlow�
 
-«FILE 'EventSet.h'»
+�FILE 'EventSet.h'�
 #ifndef EVENTSET_H_
 #define EVENTSET_H_
 
@@ -36,6 +36,6 @@ public:
 };
 
 #endif /* EVENTSET_H_ */
-«ENDFILE»
+�ENDFILE�
 
-«ENDDEFINE»
+�ENDDEFINE�

+ 71 - 71
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/Interfaces.xpt

@@ -1,75 +1,75 @@
-«REM»
+�REM�
 
 Templates for the main statechart cpp file.
 
 @auther joern seger
 
-«ENDREM»
+�ENDREM�
 
-«IMPORT sexec»
-«IMPORT stext»
-«IMPORT sgraph»
+�IMPORT sexec�
+�IMPORT stext�
+�IMPORT sgraph�
 
-«EXTENSION org::yakindu::sct::generator::cpp::templates::Expression»
-«EXTENSION org::yakindu::sct::generator::cpp::templates::TypeModelExtensions»
-«EXTENSION org::yakindu::sct::generator::cpp::templates::Naming»
+�EXTENSION org::yakindu::sct::generator::cpp::templates::Expression�
+�EXTENSION org::yakindu::sct::generator::cpp::templates::TypeModelExtensions�
+�EXTENSION org::yakindu::sct::generator::cpp::templates::Naming�
 
 
-«DEFINE file FOR ExecutionFlow»
-«FOREACH this.scopes.typeSelect(InterfaceScope) AS interface»
-«FILE StName()+interface.interfaceClassName()+".h"»
+�DEFINE file FOR ExecutionFlow�
+�FOREACH this.scopes.typeSelect(InterfaceScope) AS interface�
+�FILE StName()+interface.interfaceClassName()+".h"�
 
-#ifndef «interface.interfaceClassName().toUpperCase()»_H_
-#define «interface.interfaceClassName().toUpperCase()»_H_
+#ifndef �interface.interfaceClassName().toUpperCase()�_H_
+#define �interface.interfaceClassName().toUpperCase()�_H_
 
 #include "definition.h"
 #include "Event.h"
 #include "EventSet.h"
 #include "EventPool.h"
 #include "Statemachine.h"
-#include "«EvName()».h"
+#include "�EvName()�.h"
 #include <vector>
 
-namespace «StName()» {
+namespace �StName()� {
 
 class AbstractInterface {
 
 };
 
-class «interfaceClassName(interface)» : public AbstractInterface {
+class �interfaceClassName(interface)� : public AbstractInterface {
 
 protected:
 	Statemachine& statemachine;
     std::vector<_Event*> outEventList;
 
-«FOREACH interface.declarations.typeSelect(VariableDefinition) AS variable -»
-	«variable.type» «variable.name»;
-«ENDFOREACH» 
+�FOREACH interface.declarations.typeSelect(VariableDefinition) AS variable -�
+	�variable.type� �variable.name�;
+�ENDFOREACH� 
 	
 	bool isMyEvent(Event& event);
 	
 public:
 
-	«interfaceClassName(interface)»(Statemachine& statemachine);
+	�interfaceClassName(interface)�(Statemachine& statemachine);
 	
-«FOREACH interface.declarations.typeSelect(VariableDefinition) AS variable -»
-	«variable.type»& get_«variable.name»() const;
-	«IF variable.readonly == false -»
-	void set_«variable.name»(«variable.type»& value);
-	«ENDIF»
-«ENDFOREACH» 
+�FOREACH interface.declarations.typeSelect(VariableDefinition) AS variable -�
+	�variable.type�& get_�variable.name�() const;
+	�IF variable.readonly == false -�
+	void set_�variable.name�(�variable.type�& value);
+	�ENDIF�
+�ENDFOREACH� 
 	
 	void resetEvent();
 	
-	«FOREACH interface.getOutEvents() AS event -»
-	boolean is_«event.name»_raised(«
-	IF !event.type.isVoid() -» «event.type.eventTypeToString()»* value«ENDIF» );
-	«ENDFOREACH»
-
-	«FOREACH interface.getInEvents() AS event -»
-	void raise_«event.name»(«
-	IF !event.type.isVoid() -» «event.type.eventTypeToString()» value «ENDIF»);
-	«ENDFOREACH» 
+	�FOREACH interface.getOutEvents() AS event -�
+	boolean is_�event.name�_raised(�
+	IF !event.type.isVoid() -� �event.type.eventTypeToString()�* value�ENDIF� );
+	�ENDFOREACH�
+
+	�FOREACH interface.getInEvents() AS event -�
+	void raise_�event.name�(�
+	IF !event.type.isVoid() -� �event.type.eventTypeToString()� value �ENDIF�);
+	�ENDFOREACH� 
 	
 
 };
@@ -79,69 +79,69 @@ public:
 #endif /* INTERFACEBASE_H_ */
 
 
-«ENDFILE»
+�ENDFILE�
 
-«FILE StName()+interface.interfaceClassName()+".cpp"»
-#include "«StName()»«interface.interfaceClassName()».h"
+�FILE StName()+interface.interfaceClassName()+".cpp"�
+#include "�StName()��interface.interfaceClassName()�.h"
 
-using namespace «StName()»;
+using namespace �StName()�;
 
-bool «interfaceClassName(interface)»::isMyEvent(Event& event)
+bool �interfaceClassName(interface)�::isMyEvent(Event& event)
 {
 
 }
 
 
-«interfaceClassName(interface)»::«interfaceClassName(interface)»(Statemachine& _statemachine)
+�interfaceClassName(interface)�::�interfaceClassName(interface)�(Statemachine& _statemachine)
   : statemachine(_statemachine) 
 {}
 	
-«FOREACH interface.declarations.typeSelect(VariableDefinition) AS variable -»
-«variable.type»& «interfaceClassName(interface)»::get_«variable.name»() const
-{ return «variable.name»; }
-
-«IF variable.readonly == false -»
-void «interfaceClassName(interface)»::set_«variable.name»(«variable.type»& value)
-{ «variable.name» = value; }
-«ENDIF-»
-«ENDFOREACH» 
+�FOREACH interface.declarations.typeSelect(VariableDefinition) AS variable -�
+�variable.type�& �interfaceClassName(interface)�::get_�variable.name�() const
+{ return �variable.name�; }
+
+�IF variable.readonly == false -�
+void �interfaceClassName(interface)�::set_�variable.name�(�variable.type�& value)
+{ �variable.name� = value; }
+�ENDIF-�
+�ENDFOREACH� 
 	
-void «interfaceClassName(interface)»::resetEvent()
+void �interfaceClassName(interface)�::resetEvent()
 {  outEventList.clear(); }
 	
-«FOREACH interface.getOutEvents() AS event -»
-boolean «interfaceClassName(interface)»::is_«event.name»_raised(«
-	IF !event.type.isVoid() -» «event.type.eventTypeToString()»* value«ENDIF» )
+�FOREACH interface.getOutEvents() AS event -�
+boolean �interfaceClassName(interface)�::is_�event.name�_raised(�
+	IF !event.type.isVoid() -� �event.type.eventTypeToString()�* value�ENDIF� )
 {
 	std::vector<Event>::const_iterator cit(outEventList.begin());
 	for(; cit != outEventList.end(); ++cit)
-	  if (cit->getID() == (uint32_t)«event.getEventEnumName()») {
-	  	«IF !event.type.isVoid() -»
-	  	*value = static_cast<«event.name»*>(cit)->value;
-	  	«ENDIF»
+	  if (cit->getID() == (uint32_t)�event.getEventEnumName()�) {
+	  	�IF !event.type.isVoid() -�
+	  	*value = static_cast<�event.name�*>(cit)->value;
+	  	�ENDIF�
 	  	return true;
 	  } 
 	return false;
 }
-«ENDFOREACH»
+�ENDFOREACH�
 
 
-«FOREACH interface.getInEvents() AS event -»
-void «interfaceClassName(interface)»::raise_«event.name»(«
-	IF !event.type.isVoid() -» «event.type.eventTypeToString()» value «ENDIF»)
+�FOREACH interface.getInEvents() AS event -�
+void �interfaceClassName(interface)�::raise_�event.name�(�
+	IF !event.type.isVoid() -� �event.type.eventTypeToString()� value �ENDIF�)
 {
-	Event ev = new «event.name»;
+	Event ev = new �event.name�;
 	statemachine.setEvent(ev);
 }
-«ENDFOREACH» 
+�ENDFOREACH� 
 	
-bool «interface.interfaceName()»::is_my_event(uint32_t evid)
+bool �interface.interfaceName()�::is_my_event(uint32_t evid)
 {
 	bool ret = false;
 	switch (evid) {
-«FOREACH interface.getInEvents() AS event -»
-	case «event.getEventEnumName()»:
-«ENDFOREACH»
+�FOREACH interface.getInEvents() AS event -�
+	case �event.getEventEnumName()�:
+�ENDFOREACH�
 		ret = true;
 		break;
 	default:
@@ -151,6 +151,6 @@ bool 
 }
 
 
-«ENDFILE»
-«ENDFOREACH»
-«ENDDEFINE»
+�ENDFILE�
+�ENDFOREACH�
+�ENDDEFINE�

+ 9 - 9
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/TimerH.xpt

@@ -1,19 +1,19 @@
-«REM»
+�REM�
 
 Templates for the main statechart cpp file.
 
 @auther joern seger
 
-«ENDREM»
+�ENDREM�
 
-«IMPORT sexec»
-«IMPORT stext»
-«IMPORT sgraph»
+�IMPORT sexec�
+�IMPORT stext�
+�IMPORT sgraph�
 
 
-«DEFINE file FOR ExecutionFlow»
+�DEFINE file FOR ExecutionFlow�
 
-«FILE 'Timer.h'»
+�FILE 'Timer.h'�
 #ifndef TIMER_H_
 #define TIMER_H_
 
@@ -31,6 +31,6 @@ public:
 };
 
 #endif /* TIMER_H_ */
-«ENDFILE»
+�ENDFILE�
 
-«ENDDEFINE»
+�ENDDEFINE�

BIN
plugins/org.yakindu.sct.generator.cpp/xtend-gen/org/yakindu/sct/generator/cpp/.Naming.java._trace