diff --git a/Core/include/Acts/Utilities/FiniteStateMachine.hpp b/Core/include/Acts/Utilities/FiniteStateMachine.hpp index 6f13c663c4c60cd982690b66a7909b3ea0e0cc62..91c857860fed8dcfd30fdafd9c77042b814a4c40 100644 --- a/Core/include/Acts/Utilities/FiniteStateMachine.hpp +++ b/Core/include/Acts/Utilities/FiniteStateMachine.hpp @@ -57,20 +57,29 @@ namespace Acts { /// void on_enter(const State&); /// void on_exit(const State&); /// ``` -/// when entering/exiting a state if they are implemented. This can be used to +/// when entering/exiting a state. This can be used to /// perform actions regardless of the source or destination state in a /// transition to a given state. This is also fired in case a transition to /// `Terminated` occurs. /// -/// If the derived class implements +/// The base class also calls /// ```cpp /// void on_process(const Event&); /// void on_process(const State&, const Event&); /// void on_process(const State1& const Event&, const State2&); /// ``` -/// they are called during event processing, and allow for things like event and +/// during event processing, and allow for things like event and /// transition logging. /// +/// The `on_event`, `on_enter`, `on_exit` and `on_process` methods need to be +/// implemented exhaustively, i.e. for all state/event combinations. This might +/// require you to add catch-all no-op functions like +/// ```cpp +/// template <typename...Args> +/// event_return on_event(Args&&...args) {} // noop +/// ``` +/// and so on. +/// /// The public interface for the user of the FSM are the /// ```cpp /// template <typename... Args>