[gen.fms] fixed xtend guillemets encoding issue
Change-Id: I807b5e5a019dcb4f1092300ed9ee4af4ff1487b3
diff --git a/plugins/org.eclipse.etrice.generator.fsm/src/org/eclipse/etrice/generator/fsm/generic/AbstractStateMachineGenerator.xtend b/plugins/org.eclipse.etrice.generator.fsm/src/org/eclipse/etrice/generator/fsm/generic/AbstractStateMachineGenerator.xtend
index b43e6b0..0b06cd2 100644
--- a/plugins/org.eclipse.etrice.generator.fsm/src/org/eclipse/etrice/generator/fsm/generic/AbstractStateMachineGenerator.xtend
+++ b/plugins/org.eclipse.etrice.generator.fsm/src/org/eclipse/etrice/generator/fsm/generic/AbstractStateMachineGenerator.xtend
@@ -186,11 +186,11 @@
*/
def public String genEntryAndExitCodes(ExpandedModelComponent xpmc, boolean generateImplementation, boolean omitBase) {
'''
- «FOR state : xpmc.stateMachine.getStateList()»
- «IF !omitBase || xpmc.isOwnObject(state)»
- «xpmc.genActionCodeMethods(state, generateImplementation)»
- «ENDIF»
- «ENDFOR»
+ «FOR state : xpmc.stateMachine.getStateList()»
+ «IF !omitBase || xpmc.isOwnObject(state)»
+ «xpmc.genActionCodeMethods(state, generateImplementation)»
+ «ENDIF»
+ «ENDFOR»
'''
}
@@ -217,11 +217,11 @@
*/
def public String genActionCodes(ExpandedModelComponent xpmc, boolean generateImplementation, boolean omitBase) {
'''
- «FOR tr : xpmc.stateMachine.allTransitionsRecursive»
- «IF (!omitBase || xpmc.isOwnObject(tr)) && tr.action.hasDetailCode»
- «xpmc.genActionCodeMethod(tr, generateImplementation)»
- «ENDIF»
- «ENDFOR»
+ «FOR tr : xpmc.stateMachine.allTransitionsRecursive»
+ «IF (!omitBase || xpmc.isOwnObject(tr)) && tr.action.hasDetailCode»
+ «xpmc.genActionCodeMethod(tr, generateImplementation)»
+ «ENDIF»
+ «ENDFOR»
'''
}
@@ -262,30 +262,30 @@
* parent states while remembering the history
* @param current__et - the current state
* @param to - the final parent state
- «IF usesHdlr»
+ «IF usesHdlr»
* @param handler__et - entry and exit codes are called only if not handler (for handler TransitionPoints)
- «ENDIF»
+ «ENDIF»
*/
- «IF generateImplementation»
- «privAccess»void «opScopePriv»exitTo(«selfPtr»«stateType» current__et, «stateType» to«IF usesHdlr», «boolType» handler__et«ENDIF») {
+ «IF generateImplementation»
+ «privAccess»void «opScopePriv»exitTo(«selfPtr»«stateType» current__et, «stateType» to«IF usesHdlr», «boolType» handler__et«ENDIF») {
while (current__et!=to) {
switch (current__et) {
- «FOR state : xpmc.stateMachine.getBaseStateList()»
- case «state.getGenStateId()»:
- «IF state.hasExitCode(true)»«IF usesHdlr»if (!handler__et) «ENDIF»«state.getExitCodeOperationName()»(«langExt.selfPointer(false)»);«ENDIF»
- «setHistory(state.getParentStateId(), state.getGenStateId())»;
- current__et = «state.getParentStateId()»;
+ «FOR state : xpmc.stateMachine.getBaseStateList()»
+ case «state.getGenStateId()»:
+ «IF state.hasExitCode(true)»«IF usesHdlr»if (!handler__et) «ENDIF»«state.getExitCodeOperationName()»(«langExt.selfPointer(false)»);«ENDIF»
+ «setHistory(state.getParentStateId(), state.getGenStateId())»;
+ current__et = «state.getParentStateId()»;
break;
- «ENDFOR»
+ «ENDFOR»
default:
/* should not occur */
break;
}
}
}
- «ELSE»
- void exitTo(«selfPtr»«stateType» current__et, «stateType» to«IF usesHdlr», «boolType» handler__et«ENDIF»);
- «ENDIF»
+ «ELSE»
+ void exitTo(«selfPtr»«stateType» current__et, «stateType» to«IF usesHdlr», «boolType» handler__et«ENDIF»);
+ «ENDIF»
/**
* calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
@@ -294,141 +294,141 @@
* @param generic_data__et - the generic data pointer
* @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
*/
- «IF generateImplementation»
- «privAccess»«stateType» «opScopePriv»executeTransitionChain(«selfPtr»int chain__et«IF handleEvents», «constIfItemPtr» ifitem, «langExt.voidPointer» generic_data__et«ENDIF») {
+ «IF generateImplementation»
+ «privAccess»«stateType» «opScopePriv»executeTransitionChain(«selfPtr»int chain__et«IF handleEvents», «constIfItemPtr» ifitem, «langExt.voidPointer» generic_data__et«ENDIF») {
switch (chain__et) {
- «var allchains = xpmc.getTransitionChains()»
- «FOR tc : allchains»
- case «tc.genChainId»:
+ «var allchains = xpmc.getTransitionChains()»
+ «FOR tc : allchains»
+ case «tc.genChainId»:
{
- «transitionChainGenerator.generateExecuteChain(xpmc, tc)»
+ «transitionChainGenerator.generateExecuteChain(xpmc, tc)»
}
- «ENDFOR»
+ «ENDFOR»
default:
/* should not occur */
break;
}
return NO_STATE;
}
- «ELSE»
- «stateType» executeTransitionChain(«selfPtr»int chain__et«IF handleEvents», «constIfItemPtr» ifitem, «langExt.voidPointer» generic_data__et«ENDIF»);
- «ENDIF»
+ «ELSE»
+ «stateType» executeTransitionChain(«selfPtr»int chain__et«IF handleEvents», «constIfItemPtr» ifitem, «langExt.voidPointer» generic_data__et«ENDIF»);
+ «ENDIF»
/**
* calls entry codes while entering a state's history. The ID of the final leaf state is returned
* @param state__et - the state which is entered
- «IF usesHdlr»
+ «IF usesHdlr»
* @param handler__et - entry code is executed if not handler
- «ENDIF»
+ «ENDIF»
* @return - the ID of the final leaf state
*/
- «IF generateImplementation»
- «privAccess»«stateType» «opScopePriv»enterHistory(«selfPtr»«stateType» state__et«IF usesHdlr», «boolType» handler__et«ENDIF») {
- «boolType» skip_entry__et = «langExt.booleanConstant(false)»;
+ «IF generateImplementation»
+ «privAccess»«stateType» «opScopePriv»enterHistory(«selfPtr»«stateType» state__et«IF usesHdlr», «boolType» handler__et«ENDIF») {
+ «boolType» skip_entry__et = «langExt.booleanConstant(false)»;
if (state__et >= STATE_MAX) {
- state__et = «IF !langExt.usesInheritance»(«stateType»)«ENDIF» (state__et - STATE_MAX);
- skip_entry__et = «langExt.booleanConstant(true)»;
+ state__et = «IF !langExt.usesInheritance»(«stateType»)«ENDIF» (state__et - STATE_MAX);
+ skip_entry__et = «langExt.booleanConstant(true)»;
}
- while («langExt.booleanConstant(true)») {
+ while («langExt.booleanConstant(true)») {
switch (state__et) {
- «FOR state : xpmc.stateMachine.getBaseStateList()»
- case «state.getGenStateId()»:
- «IF state.hasEntryCode(true)»if (!(skip_entry__et«IF usesHdlr» || handler__et«ENDIF»)) «state.getEntryCodeOperationName()»(«langExt.selfPointer(false)»);«ENDIF»
- «IF state.isLeaf()»
+ «FOR state : xpmc.stateMachine.getBaseStateList()»
+ case «state.getGenStateId()»:
+ «IF state.hasEntryCode(true)»if (!(skip_entry__et«IF usesHdlr» || handler__et«ENDIF»)) «state.getEntryCodeOperationName()»(«langExt.selfPointer(false)»);«ENDIF»
+ «IF state.isLeaf()»
/* in leaf state: return state id */
- return «state.getGenStateId()»;
- «ELSE»
+ return «state.getGenStateId()»;
+ «ELSE»
/* state has a sub graph */
- «IF state.subgraph.hasInitTransition()»
+ «IF state.subgraph.hasInitTransition()»
/* with init transition */
- if («getHistory(state.getGenStateId())»==NO_STATE) {
- «var sub_initt = state.subgraph.getInitTransition()»
- state__et = executeTransitionChain(«langExt.selfPointer(true)»«xpmc.getChain(sub_initt).genChainId»«IF handleEvents», «langExt.nullPointer», «langExt.nullPointer»«ENDIF»);
+ if («getHistory(state.getGenStateId())»==NO_STATE) {
+ «var sub_initt = state.subgraph.getInitTransition()»
+ state__et = executeTransitionChain(«langExt.selfPointer(true)»«xpmc.getChain(sub_initt).genChainId»«IF handleEvents», «langExt.nullPointer», «langExt.nullPointer»«ENDIF»);
}
else {
- state__et = «getHistory(state.getGenStateId())»;
+ state__et = «getHistory(state.getGenStateId())»;
}
- «ELSE»
+ «ELSE»
/* without init transition */
- state__et = «getHistory(state.getGenStateId())»;
- «ENDIF»
+ state__et = «getHistory(state.getGenStateId())»;
+ «ENDIF»
break;
- «ENDIF»
- «ENDFOR»
+ «ENDIF»
+ «ENDFOR»
case STATE_TOP:
- state__et = «getHistory("STATE_TOP")»;
+ state__et = «getHistory("STATE_TOP")»;
break;
default:
/* should not occur */
break;
}
- skip_entry__et = «langExt.booleanConstant(false)»;
+ skip_entry__et = «langExt.booleanConstant(false)»;
}
- «unreachableReturn»
+ «unreachableReturn»
}
- «ELSE»
- «stateType» enterHistory(«selfPtr»«stateType» state__et«IF usesHdlr», «boolType» handler__et«ENDIF»);
- «ENDIF»
+ «ELSE»
+ «stateType» enterHistory(«selfPtr»«stateType» state__et«IF usesHdlr», «boolType» handler__et«ENDIF»);
+ «ENDIF»
- «IF generateImplementation»
- «publicIf»void «opScope»executeInitTransition(«selfOnly») {
- «var initt = xpmc.stateMachine.getInitTransition()»
- int chain__et = «xpmc.getChain(initt).genChainId»;
- «stateType» next__et = «opScopePriv»executeTransitionChain(«langExt.selfPointer(true)»chain__et«IF handleEvents», «langExt.nullPointer», «langExt.nullPointer»«ENDIF»);
- next__et = «opScopePriv»enterHistory(«langExt.selfPointer(true)»next__et«IF usesHdlr», «langExt.booleanConstant(false)»«ENDIF»);
- setState(«langExt.selfPointer(true)»next__et);
+ «IF generateImplementation»
+ «publicIf»void «opScope»executeInitTransition(«selfOnly») {
+ «var initt = xpmc.stateMachine.getInitTransition()»
+ int chain__et = «xpmc.getChain(initt).genChainId»;
+ «stateType» next__et = «opScopePriv»executeTransitionChain(«langExt.selfPointer(true)»chain__et«IF handleEvents», «langExt.nullPointer», «langExt.nullPointer»«ENDIF»);
+ next__et = «opScopePriv»enterHistory(«langExt.selfPointer(true)»next__et«IF usesHdlr», «langExt.booleanConstant(false)»«ENDIF»);
+ setState(«langExt.selfPointer(true)»next__et);
}
- «ELSE»
- void «opScope»executeInitTransition(«selfOnly»);
- «ENDIF»
+ «ELSE»
+ void «opScope»executeInitTransition(«selfOnly»);
+ «ENDIF»
/* receiveEvent contains the main implementation of the FSM */
- «IF generateImplementation»
- «publicIf»void «opScope»receiveEventInternal(«langExt.selfPointer(mc.className, handleEvents)»«IF handleEvents»«ifItemPtr» ifitem, int localId, int evt, «langExt.voidPointer» generic_data__et«ENDIF») {
- «IF async»
- int trigger__et = (ifitem==«langExt.nullPointer»)? POLLING : localId + EVT_SHIFT*evt;
- «ELSEIF eventDriven»
+ «IF generateImplementation»
+ «publicIf»void «opScope»receiveEventInternal(«langExt.selfPointer(mc.className, handleEvents)»«IF handleEvents»«ifItemPtr» ifitem, int localId, int evt, «langExt.voidPointer» generic_data__et«ENDIF») {
+ «IF async»
+ int trigger__et = (ifitem==«langExt.nullPointer»)? POLLING : localId + EVT_SHIFT*evt;
+ «ELSEIF eventDriven»
int trigger__et = localId + EVT_SHIFT*evt;
- «ENDIF»
+ «ENDIF»
int chain__et = NOT_CAUGHT;
- «stateType» catching_state__et = NO_STATE;
- «IF usesHdlr»
- «boolType» is_handler__et = «langExt.booleanConstant(false)»;
- «ENDIF»
- «IF async || eventDriven»
- «markVariableUsed("trigger__et")»
- «ENDIF»
+ «stateType» catching_state__et = NO_STATE;
+ «IF usesHdlr»
+ «boolType» is_handler__et = «langExt.booleanConstant(false)»;
+ «ENDIF»
+ «IF async || eventDriven»
+ «markVariableUsed("trigger__et")»
+ «ENDIF»
- «IF handleEvents»
+ «IF handleEvents»
if (!handleSystemEvent(ifitem, evt, generic_data__et)) {
- «genStateSwitch(xpmc, usesHdlr)»
+ «genStateSwitch(xpmc, usesHdlr)»
}
- «ELSE»
- «genStateSwitch(xpmc, usesHdlr)»
- «ENDIF»
+ «ELSE»
+ «genStateSwitch(xpmc, usesHdlr)»
+ «ENDIF»
if (chain__et != NOT_CAUGHT) {
- «opScopePriv»exitTo(«langExt.selfPointer(true)»getState(«langExt.selfPointer(false)»), catching_state__et«IF usesHdlr», is_handler__et«ENDIF»);
+ «opScopePriv»exitTo(«langExt.selfPointer(true)»getState(«langExt.selfPointer(false)»), catching_state__et«IF usesHdlr», is_handler__et«ENDIF»);
{
- «stateType» next__et = «opScopePriv»executeTransitionChain(«langExt.selfPointer(true)»chain__et«IF handleEvents», ifitem, generic_data__et«ENDIF»);
- next__et = «opScopePriv»enterHistory(«langExt.selfPointer(true)»next__et«IF usesHdlr», is_handler__et«ENDIF»);
- setState(«langExt.selfPointer(true)»next__et);
- «finalAction()»
+ «stateType» next__et = «opScopePriv»executeTransitionChain(«langExt.selfPointer(true)»chain__et«IF handleEvents», ifitem, generic_data__et«ENDIF»);
+ next__et = «opScopePriv»enterHistory(«langExt.selfPointer(true)»next__et«IF usesHdlr», is_handler__et«ENDIF»);
+ setState(«langExt.selfPointer(true)»next__et);
+ «finalAction()»
}
}
}
- «ELSE»
- void «opScope»receiveEventInternal(«langExt.selfPointer(mc.className, handleEvents)»«IF handleEvents»«ifItemPtr» ifitem, int localId, int evt, «langExt.voidPointer» generic_data__et«ENDIF»);
- «ENDIF»
- «IF handleEvents»
- «IF generateImplementation»
- «publicIf»void «opScope»receiveEvent(«langExt.selfPointer(mc.className, true)»«ifItemPtr» ifitem, int evt, «langExt.voidPointer» generic_data__et) {
- int localId = (ifitem==«langExt.nullPointer»)? 0 : ifitem«getLocalId»;
- «opScope»receiveEventInternal(«langExt.selfPointer(true)»ifitem, localId, evt, generic_data__et);
+ «ELSE»
+ void «opScope»receiveEventInternal(«langExt.selfPointer(mc.className, handleEvents)»«IF handleEvents»«ifItemPtr» ifitem, int localId, int evt, «langExt.voidPointer» generic_data__et«ENDIF»);
+ «ENDIF»
+ «IF handleEvents»
+ «IF generateImplementation»
+ «publicIf»void «opScope»receiveEvent(«langExt.selfPointer(mc.className, true)»«ifItemPtr» ifitem, int evt, «langExt.voidPointer» generic_data__et) {
+ int localId = (ifitem==«langExt.nullPointer»)? 0 : ifitem«getLocalId»;
+ «opScope»receiveEventInternal(«langExt.selfPointer(true)»ifitem, localId, evt, generic_data__et);
}
- «ELSE»
- void «opScope»receiveEvent(«langExt.selfPointer(true)»«ifItemPtr» ifitem, int evt, «langExt.voidPointer» generic_data__et);
- «ENDIF»
- «ENDIF»
+ «ELSE»
+ void «opScope»receiveEvent(«langExt.selfPointer(true)»«ifItemPtr» ifitem, int evt, «langExt.voidPointer» generic_data__et);
+ «ENDIF»
+ «ENDIF»
'''
}
@@ -439,12 +439,12 @@
* @return the generated code
*/
def public String genDoCodes(State state) {'''
- «IF state.hasDoCode(true)»
- «state.getDoCodeOperationName()»(«langExt.selfPointer(false)»);
- «ENDIF»
- «IF state.eContainer.eContainer instanceof State»
- «genDoCodes(state.eContainer.eContainer as State)»
- «ENDIF»
+ «IF state.hasDoCode(true)»
+ «state.getDoCodeOperationName()»(«langExt.selfPointer(false)»);
+ «ENDIF»
+ «IF state.eContainer.eContainer instanceof State»
+ «genDoCodes(state.eContainer.eContainer as State)»
+ «ENDIF»
'''}
/**
@@ -461,33 +461,33 @@
var eventDriven = xpmc.modelComponent.commType==ComponentCommunicationType::EVENT_DRIVEN
var dataDriven = xpmc.modelComponent.commType==ComponentCommunicationType::DATA_DRIVEN
'''
- switch (getState(«langExt.selfPointer(false)»)) {
- «FOR state : xpmc.stateMachine.getLeafStateList()»
- case «state.getGenStateId()»:
- «IF async»
- «var atlist = xpmc.getActiveTriggers(state)»
- «IF !atlist.isEmpty»
+ switch (getState(«langExt.selfPointer(false)»)) {
+ «FOR state : xpmc.stateMachine.getLeafStateList()»
+ case «state.getGenStateId()»:
+ «IF async»
+ «var atlist = xpmc.getActiveTriggers(state)»
+ «IF !atlist.isEmpty»
switch(trigger__et) {
case POLLING:
- «genDataDrivenTriggers(xpmc, state, usesHdlr)»
+ «genDataDrivenTriggers(xpmc, state, usesHdlr)»
break;
- «genEventDrivenTriggers(xpmc, state, atlist, usesHdlr)»
+ «genEventDrivenTriggers(xpmc, state, atlist, usesHdlr)»
}
- «ELSE»
- «genDataDrivenTriggers(xpmc, state, usesHdlr)»
- «ENDIF»
- «ELSEIF dataDriven»
- «genDataDrivenTriggers(xpmc, state, usesHdlr)»
- «ELSEIF eventDriven»
- «var atlist = xpmc.getActiveTriggers(state)»
- «IF !atlist.isEmpty»
+ «ELSE»
+ «genDataDrivenTriggers(xpmc, state, usesHdlr)»
+ «ENDIF»
+ «ELSEIF dataDriven»
+ «genDataDrivenTriggers(xpmc, state, usesHdlr)»
+ «ELSEIF eventDriven»
+ «var atlist = xpmc.getActiveTriggers(state)»
+ «IF !atlist.isEmpty»
switch(trigger__et) {
- «genEventDrivenTriggers(xpmc, state, atlist, usesHdlr)»
+ «genEventDrivenTriggers(xpmc, state, atlist, usesHdlr)»
}
- «ENDIF»
- «ENDIF»
+ «ENDIF»
+ «ENDIF»
break;
- «ENDFOR»
+ «ENDFOR»
default:
/* should not occur */
break;
@@ -506,22 +506,22 @@
*/
def public genDataDrivenTriggers(ExpandedModelComponent xpmc, State state, boolean usesHdlr) {
'''
- «genDoCodes(state)»
- «var transitions = xpmc.getOutgoingTransitionsHierarchical(state).filter(t|t instanceof GuardedTransition)»
- «FOR tr : transitions»
- if («guard((tr as GuardedTransition), "", xpmc)»)
+ «genDoCodes(state)»
+ «var transitions = xpmc.getOutgoingTransitionsHierarchical(state).filter(t|t instanceof GuardedTransition)»
+ «FOR tr : transitions»
+ if («guard((tr as GuardedTransition), "", xpmc)»)
{
- «var chain = xpmc.getChain(tr)»
- chain__et = «chain.genChainId»;
- catching_state__et = «chain.stateContext.genStateId»;
- «IF chain.isHandler() && usesHdlr»
+ «var chain = xpmc.getChain(tr)»
+ chain__et = «chain.genChainId»;
+ catching_state__et = «chain.stateContext.genStateId»;
+ «IF chain.isHandler() && usesHdlr»
is_handler__et = TRUE;
- «ENDIF»
+ «ENDIF»
}
- «IF tr!=transitions.last»
+ «IF tr!=transitions.last»
else
- «ENDIF»
- «ENDFOR»
+ «ENDIF»
+ «ENDFOR»
'''
}
@@ -537,24 +537,24 @@
*/
def public genEventDrivenTriggers(ExpandedModelComponent xpmc, State state, List<ActiveTrigger> atlist, boolean usesHdlr) {
'''
- «FOR at : atlist»
- case «xpmc.getTriggerCodeName(at)»:
- «var needData = at.hasGuard»
- «IF needData»{ «langExt.getTypedDataDefinition(at.msg)»«ENDIF»
- «FOR tt : at.transitions SEPARATOR " else "»
- «var chain = xpmc.getChain(tt)»
- «guard(chain.getTransition as TriggeredTransition, at.trigger, xpmc)»
+ «FOR at : atlist»
+ case «xpmc.getTriggerCodeName(at)»:
+ «var needData = at.hasGuard»
+ «IF needData»{ «langExt.getTypedDataDefinition(at.msg)»«ENDIF»
+ «FOR tt : at.transitions SEPARATOR " else "»
+ «var chain = xpmc.getChain(tt)»
+ «guard(chain.getTransition as TriggeredTransition, at.trigger, xpmc)»
{
- chain__et = «chain.genChainId»;
- catching_state__et = «chain.stateContext.genStateId»;
- «IF chain.isHandler() && usesHdlr»
- is_handler__et = «langExt.booleanConstant(true)»;
- «ENDIF»
+ chain__et = «chain.genChainId»;
+ catching_state__et = «chain.stateContext.genStateId»;
+ «IF chain.isHandler() && usesHdlr»
+ is_handler__et = «langExt.booleanConstant(true)»;
+ «ENDIF»
}
- «ENDFOR»
- «IF needData»}«ENDIF»
+ «ENDFOR»
+ «IF needData»}«ENDIF»
break;
- «ENDFOR»
+ «ENDFOR»
default:
/* should not occur */
break;