tsm  0.1.0
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
tsm::Hsm< T, transitions > Struct Template Reference

#include <tsm_impl.h>

Inheritance diagram for tsm::Hsm< T, transitions >:
Inheritance graph
Collaboration diagram for tsm::Hsm< T, transitions >:
Collaboration graph

Public Types

using type = Hsm< T, transitions >
 
using HsmType = type
 
using initial_state = typename std::tuple_element_t< 0, transitions >::from
 
using States = get_states_t< transitions >
 

Public Member Functions

 Hsm ()
 
template<typename Event >
bool handle (Event &&e)
 
template<typename Event , typename State >
void entry (Event &&e, State *state) noexcept
 
template<typename Event , typename State >
void exit (Event &&e, State *state) noexcept
 
template<typename Tn , typename Event = typename Tn::event, typename State = typename Tn::from>
bool check_guard (Event &&e, State *state)
 
template<typename Tn , typename Event = typename Tn::event, typename State = typename Tn::from>
void perform_action (Event &&e, State *state)
 
template<typename transition , typename State = typename transition::from, typename Event = typename transition::event>
std::enable_if_t<!has_handle_method_v< State, Event, T >, void > handle_transition (typename transition::from *state, Event &&e)
 
template<typename transition , typename State = typename transition::from, typename Event = typename transition::event>
std::enable_if_t< has_handle_method_v< State, Event, T >, void > handle_transition (State *state, Event &&e)
 
template<typename State >
void current_state ()
 

Public Attributes

States states_
 
transitions transitions_
 
tuple_to_variant_t< wrap_type< std::add_pointer, States > > current_state_
 

Static Public Attributes

static constexpr bool is_hsm = true
 

Member Typedef Documentation

◆ HsmType

template<typename T , typename transitions = typename T::transitions>
using tsm::Hsm< T, transitions >::HsmType = type

◆ initial_state

template<typename T , typename transitions = typename T::transitions>
using tsm::Hsm< T, transitions >::initial_state = typename std::tuple_element_t<0, transitions>::from

◆ States

template<typename T , typename transitions = typename T::transitions>
using tsm::Hsm< T, transitions >::States = get_states_t<transitions>

◆ type

template<typename T , typename transitions = typename T::transitions>
using tsm::Hsm< T, transitions >::type = Hsm<T, transitions>

Constructor & Destructor Documentation

◆ Hsm()

template<typename T , typename transitions = typename T::transitions>
tsm::Hsm< T, transitions >::Hsm ( )
inline

Member Function Documentation

◆ check_guard()

template<typename T , typename transitions = typename T::transitions>
template<typename Tn , typename Event = typename Tn::event, typename State = typename Tn::from>
bool tsm::Hsm< T, transitions >::check_guard ( Event &&  e,
State *  state 
)
inline

◆ current_state()

template<typename T , typename transitions = typename T::transitions>
template<typename State >
void tsm::Hsm< T, transitions >::current_state ( )
inline

◆ entry()

template<typename T , typename transitions = typename T::transitions>
template<typename Event , typename State >
void tsm::Hsm< T, transitions >::entry ( Event &&  e,
State *  state 
)
inlinenoexcept

◆ exit()

template<typename T , typename transitions = typename T::transitions>
template<typename Event , typename State >
void tsm::Hsm< T, transitions >::exit ( Event &&  e,
State *  state 
)
inlinenoexcept

◆ handle()

template<typename T , typename transitions = typename T::transitions>
template<typename Event >
bool tsm::Hsm< T, transitions >::handle ( Event &&  e)
inline

◆ handle_transition() [1/2]

template<typename T , typename transitions = typename T::transitions>
template<typename transition , typename State = typename transition::from, typename Event = typename transition::event>
std::enable_if_t<has_handle_method_v<State, Event, T>, void> tsm::Hsm< T, transitions >::handle_transition ( State *  state,
Event &&  e 
)
inline

◆ handle_transition() [2/2]

template<typename T , typename transitions = typename T::transitions>
template<typename transition , typename State = typename transition::from, typename Event = typename transition::event>
std::enable_if_t<!has_handle_method_v<State, Event, T>, void> tsm::Hsm< T, transitions >::handle_transition ( typename transition::from *  state,
Event &&  e 
)
inline

◆ perform_action()

template<typename T , typename transitions = typename T::transitions>
template<typename Tn , typename Event = typename Tn::event, typename State = typename Tn::from>
void tsm::Hsm< T, transitions >::perform_action ( Event &&  e,
State *  state 
)
inline

Member Data Documentation

◆ current_state_

template<typename T , typename transitions = typename T::transitions>
tuple_to_variant_t<wrap_type<std::add_pointer, States> > tsm::Hsm< T, transitions >::current_state_

◆ is_hsm

template<typename T , typename transitions = typename T::transitions>
constexpr bool tsm::Hsm< T, transitions >::is_hsm = true
staticconstexpr

◆ states_

template<typename T , typename transitions = typename T::transitions>
States tsm::Hsm< T, transitions >::states_

◆ transitions_

template<typename T , typename transitions = typename T::transitions>
transitions tsm::Hsm< T, transitions >::transitions_

The documentation for this struct was generated from the following file: