@@ -261,7 +261,7 @@ public:
261261 /* *
262262 * @brief Type of on_entry / on_exit handler
263263 */
264- using EntryExitType = void (Impl::*)();
264+ using EntryExitType = void (Impl::*)(Event );
265265 /* *
266266 * @brief Type of event handler
267267 */
@@ -511,7 +511,7 @@ public:
511511 AssertionProviderType::Assert (impl_ != nullptr ); // Most probably you forgot to call Init()
512512 current_state_ = &kInTransition ;
513513 initial_.clear ();
514- EnterStatesFromDownTo (nullptr , initial);
514+ EnterStatesFromDownTo (nullptr , initial, {} );
515515 }
516516
517517 /* *
@@ -562,9 +562,9 @@ public:
562562 on_state_change_ (*this , event, *old_state, *transition.target_ );
563563 }
564564
565- ExitStatesFromUpTo (old_state, common_parent);
565+ ExitStatesFromUpTo (old_state, common_parent, event );
566566 transition.ExecuteActions (impl_, event);
567- EnterStatesFromDownTo (common_parent, transition.target_ );
567+ EnterStatesFromDownTo (common_parent, transition.target_ , event );
568568 }
569569 else
570570 {
@@ -775,7 +775,7 @@ private:
775775 return state->initial_ ;
776776 }
777777
778- void ExitState (StatePtr state)
778+ void ExitState (StatePtr state, Event event )
779779 {
780780 if (on_state_exit_ != nullptr )
781781 {
@@ -784,17 +784,17 @@ private:
784784
785785 for (const auto & on_ex : state->on_exit_ )
786786 {
787- (impl_->*on_ex)();
787+ (impl_->*on_ex)(event );
788788 }
789789 }
790790
791- void ExitStatesFromUpTo (StatePtr from, StatePtr top)
791+ void ExitStatesFromUpTo (StatePtr from, StatePtr top, Event event )
792792 {
793793 const auto * state = from;
794794
795795 if (state == top)
796796 {
797- ExitState (state);
797+ ExitState (state, event );
798798 }
799799 else
800800 {
@@ -809,14 +809,14 @@ private:
809809 }
810810 }
811811
812- ExitState (state);
812+ ExitState (state, event );
813813
814814 state = state->parent_ ;
815815 }
816816 }
817817 }
818818
819- void EnterState (StateRef state) const
819+ void EnterState (StateRef state, Event event ) const
820820 {
821821 if (on_state_entry_ != nullptr )
822822 {
@@ -825,37 +825,37 @@ private:
825825
826826 for (const auto & on_en : state.on_entry_ )
827827 {
828- (impl_->*on_en)();
828+ (impl_->*on_en)(event );
829829 }
830830 }
831831
832- void EnterStatesFromDownToRecursive (StatePtr top, StatePtr target)
832+ void EnterStatesFromDownToRecursive (StatePtr top, StatePtr target, Event event )
833833 {
834834 // Don't enter topmost state
835835 if ((target != nullptr ) && (top != target))
836836 {
837- EnterStatesFromDownToRecursive (top, target->parent_ );
838- EnterState (*target);
837+ EnterStatesFromDownToRecursive (top, target->parent_ , event );
838+ EnterState (*target, event );
839839 }
840840 }
841841
842- void EnterStatesFromDownTo (StatePtr top, StatePtr target)
842+ void EnterStatesFromDownTo (StatePtr top, StatePtr target, Event event )
843843 {
844844 // Enter all states up to parent
845845 if (top != target)
846846 {
847- EnterStatesFromDownToRecursive (top, target->parent_ );
847+ EnterStatesFromDownToRecursive (top, target->parent_ , event );
848848 }
849849
850850 // Alywas enter target state (we may have exited it, possibly a self transition)
851- EnterState (*target);
851+ EnterState (*target, event );
852852
853853 // Is target a hierarchical state? If so, enter initial state
854854 const auto * state = GetInitialState (target);
855855 while (state != nullptr )
856856 {
857857 target = state;
858- EnterState (*state);
858+ EnterState (*state, event );
859859 state = GetInitialState (target);
860860 }
861861
0 commit comments