##Note: stm is a script variable which is filled by the stateMgen conversion control routine which calls this script.
##stm is type of org.vishia.stateMGen.StateMGen$GenStateMachine. See the maybe written report file of data structure
##given by command line arg checkdata:result/data_StatemSrc.html (data_StatemSrc.dst.html).


subtext substates()
<:>
<.>

main(){
//test.mapToFile(jzcmdsub.localVariables, out,2);
<+>
==States==
@ident=states
.

===State-Übersicht===
@ident=overview


##<:for:state:stm.zsrcFile.states>   ##all states
<:for:state:stm.stateList>   ##all states

##<&test.dataTree(stm, out,2)>

===State <&state.src.stateName> <:if:state.enclState><:> in
  <.><&state.enclState><.if><:if:state.parallelState><:>.<&state.parallelState><.><.if><:> ===
@ident=State_<&state.src.stateName>

<:if:state.enclState>
Enclosing state: [[Topic:.states.State_<&state.enclState>.|<&state.enclState>]]
<:if:state.parallelState>, Parallel: [[Topic:.states.State_<&state.parallelState>.|<&state.parallelState>]]<.if>

<.if>

<&state.src.shortdescription><&state.description>


<:if:state.additionaldescription>

'''Zusatzbeschreibung''':

<&state.additionaldescription>

<.if>
<:if:state.tododescription>

'''TODO''':

<&state.tododescription>
<.if>


<:if:state.subStates>
'''Sub-states''':
  <:for:substate:state.subStates><:>
* [[Topic:.states.State_<&substate.src.stateName>.|<&substate.src.stateName>]] : <&substate.src.shortdescription><.>
  <.for>  
<.if>

<:if:state.parallelStates>
'''Parallele States''':
  <:for:pstate:state.parallelStates><:>
* [[Topic:.states.State_<&pstate.src.stateName>.|<&pstate.src.stateName>]] : <&pstate.src.shortdescription><.>
  <.for>  
<.if>

<:if:state.entry>
'''Entry''':

<&state.entry.description>

  <&state.entry.code>
<.if>
<:if:state.exit><:>

'''Exit''':

<&state.exit.description>

  <&state.exit.code>
<.>
<.if>
  
<:for:trans:state.trans><:>
'''Transition <&state.src.stateName> ==> <.>
  <:for:dstState:trans.dstState><:>[[Topic:.states.State_<&dstState>.|<&dstState>]] <.><.for>
  <:for:subcond:trans.subCondition>[[Topic:.states.State_<&subcond.dstState>.|<&subcond.dstState>]]<:hasNext><:> /
    <.><.hasNext><.for>
<:>'''

  <.>
##Transition fromState --> toState --> toInnerState:
  <:for:exitState:trans.exitStates><:> <&exitState.src.stateName>--> <.><.for>
  <:for:entryState:trans.dstStateTree.entrySubStates> <&entryState.name><:>, <.> 
  <:if:entryState.entrySubStates>---><.if>
  <:for:entryState2:entryState.entrySubStates> <&entryState2.name><:>, <.>  
    <:if:entryState2.entrySubStates>---><.if>
    <:for:entryState3:entryState2.entrySubStates> <&entryState3.name><:>, <.>
      <:if:entryState3.entrySubStates>---><.if>
      <:for:entryState4:entryState3.entrySubStates> <&entryState4.name><:>, <.>
      <.for>
    <.for>
  <.for>
<.for>
##Descriptions of this transition:

<:>

<&trans.description>
<.>
<:if:trans.additionaldescription>
<:>
'''Zusatzbeschreibung''':

<&trans.additionaldescription>
<.>
<.if>
<:if:trans.tododescription>
<:>
'''TODO''':

<&trans.tododescription>
<.>
<.if>

<:if:trans.cond><:>
condition-code:

  <&trans.cond>
<.><.if>  

<:if:trans.time><:>
time:,,<&trans.time>,,
<.><.if>

<:if:trans.code><:>
Transition-action-code:

  <&trans.code>

<.><.if>  

<:for:subcond:trans.subCondition>
* '''cond: ==> <&subcond.dstState>''': ,,(<&subcond.cond>),,

<.for>
<.for>  
<.><.for><:>

<.>
<.+>
}