fork(1) download
  1. #include <iostream>
  2. #define PRINT(X) std::cout<<X<<std::endl
  3.  
  4. typedef unsigned char uint8_t;
  5.  
  6. template<typename ConcreteMachineType>
  7. struct FiniteStateMachine
  8. {
  9. typedef ConcreteMachineType ConcreteMachine_t;
  10. typedef typename ConcreteMachineType::StateType State_t;
  11. typedef typename ConcreteMachineType::StateFunctionType StateFunction_t;
  12. typedef typename ConcreteMachineType::StatesTableType StateTable_t;
  13. typedef typename ConcreteMachineType::TransitionFunctionType TransitionFunction_t;
  14. typedef typename ConcreteMachineType::TransitionsTableType TransitionTable_t;
  15.  
  16. State_t _currentState;
  17. static const StateTable_t &_crStatesTable;
  18. static const TransitionTable_t &_crTransitionsTable;
  19.  
  20. uint8_t isGood() const
  21. {
  22. PRINT("isGood");
  23. return _currentState!=ConcreteMachineType::STATE_BAD;
  24. }
  25.  
  26. State_t DispatchCurrentState()
  27. {
  28. PRINT("DispatchCurrentState");
  29. const StateFunction_t pFunctionStateExec(_crStatesTable[_currentState]);
  30. const State_t eNewState(pFunctionStateExec?pFunctionStateExec(this):ConcreteMachineType::STATE_BAD);
  31. TransitionFunction_t pFunctionTransition = _crTransitionsTable[_currentState][eNewState];
  32. _currentState=eNewState;
  33. if(pFunctionTransition) pFunctionTransition(this);
  34. return eNewState;
  35. }
  36.  
  37. static const StateTable_t &initStates()
  38. {
  39. PRINT("initStates");
  40. static StateTable_t x = {};
  41.  
  42. for(uint8_t i=0;i!=ConcreteMachineType::STATES_SIZE;++i) x[i]=NULL;
  43.  
  44. ConcreteMachineType::completeInitStates(x);
  45. return x;
  46. }
  47.  
  48. static const TransitionTable_t &initTransitions()
  49. {
  50. PRINT("initTransitions");
  51. static TransitionTable_t x = {};
  52.  
  53. for(uint8_t i=0;i!=ConcreteMachineType::STATES_SIZE;++i)
  54. for(uint8_t j=0;j!=ConcreteMachineType::STATES_SIZE;++j)
  55. x[i][j]=NULL;
  56.  
  57. ConcreteMachineType::completeInitTransitions(x);
  58. return x;
  59. }
  60. FiniteStateMachine()
  61. :_currentState(State_t(0)){}
  62. };//FiniteStateMachine
  63.  
  64. template<typename ConcreteMachineType>
  65. const typename FiniteStateMachine<ConcreteMachineType>::StateTable_t &FiniteStateMachine<ConcreteMachineType>::_crStatesTable=FiniteStateMachine<ConcreteMachineType>::initStates();
  66.  
  67. template<typename ConcreteMachineType>
  68. const typename FiniteStateMachine<ConcreteMachineType>::TransitionTable_t &FiniteStateMachine<ConcreteMachineType>::_crTransitionsTable=FiniteStateMachine<ConcreteMachineType>::initTransitions();
  69.  
  70. struct DummyMachineClass
  71. {
  72. enum State_e
  73. {
  74. eState_Init
  75. ,eState_Foo
  76. ,eState_Bar
  77. ,STATES_SIZE
  78. ,STATE_BAD
  79. };
  80. typedef State_e StateType;
  81. //static const StateType StatesAmout_i=STATES_SIZE;
  82. typedef StateType (*StateFunctionType)(void *instance);
  83.  
  84. static StateType init(void * /*instance*/){PRINT("init");return eState_Foo;}
  85. static StateType foo (void * /*instance*/){PRINT("foo");return eState_Bar;}
  86. static StateType bar (void * /*instance*/){PRINT("bar");return eState_Init;}
  87.  
  88. typedef uint8_t (*TransitionFunctionType)(void *instance);
  89.  
  90. static uint8_t init2foo(void * /*instance*/){PRINT("init2foo");return 0;}
  91. static uint8_t foo2bar (void * /*instance*/){PRINT("foo2bar");return 0;}
  92. static uint8_t foo2foo (void * /*instance*/){PRINT("foo2foo");return 0;}
  93. static uint8_t bar2foo (void * /*instance*/){PRINT("bar2foo");return 0;}
  94. static uint8_t bar2bar (void * /*instance*/){PRINT("bar2bar");return 0;}
  95. static uint8_t bar2init(void * /*instance*/){PRINT("bar2init");return 0;}
  96.  
  97. typedef StateFunctionType StatesTableType[STATES_SIZE];
  98. typedef TransitionFunctionType TransitionsTableType[STATES_SIZE][STATES_SIZE];
  99.  
  100. //private:
  101. static void completeInitStates(StatesTableType &/*toInit*/);
  102. static void completeInitTransitions(TransitionsTableType &/*toInit*/);
  103. };//FSMDummyUser
  104.  
  105. void DummyMachineClass::completeInitStates(StatesTableType &toInit)
  106. {
  107. PRINT("completeInitStates");
  108. toInit[eState_Init]=DummyMachineClass::init;
  109. toInit[eState_Foo ]=DummyMachineClass::foo;
  110. toInit[eState_Bar ]=DummyMachineClass::bar;
  111. }
  112.  
  113. void DummyMachineClass::completeInitTransitions(TransitionsTableType &toInit)
  114. {
  115. PRINT("completeInitTransitions");
  116. toInit[eState_Init][eState_Foo ]=init2foo;
  117. toInit[eState_Foo ][eState_Foo ]=foo2foo;
  118. toInit[eState_Foo ][eState_Bar ]=foo2bar;
  119. toInit[eState_Bar ][eState_Foo ]=bar2foo;
  120. toInit[eState_Bar ][eState_Bar ]=bar2bar;
  121. toInit[eState_Bar ][eState_Init]=bar2init;
  122. }
  123.  
  124. typedef FiniteStateMachine<DummyMachineClass> DummyFiniteStateMachine_t;
  125.  
  126. int main()
  127. {
  128. PRINT("main");
  129. DummyFiniteStateMachine_t t;
  130. int iTimesToRun=500;
  131. while(t.isGood() && iTimesToRun-->0){t.DispatchCurrentState();}
  132. return 0;
  133. }
Success #stdin #stdout 0s 4544KB
stdin
Standard input is empty
stdout
initStates
completeInitStates
initTransitions
completeInitTransitions
main
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood
DispatchCurrentState
bar
bar2init
isGood
DispatchCurrentState
init
init2foo
isGood
DispatchCurrentState
foo
foo2bar
isGood