Skip to content

Commit d3fa5b3

Browse files
committed
Added posibility to test current state in ortogonal state machines
1 parent 434837b commit d3fa5b3

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

include/boost/sml.hpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1703,6 +1703,20 @@ class sm {
17031703
});
17041704
return result;
17051705
}
1706+
template <class T = aux::identity<sm_t>, class TState>
1707+
bool is_one_of_current_states_as(const TState&) const {
1708+
using type = typename T::type;
1709+
using sm_impl_t = sm_impl<typename TSM::template rebind<type>>;
1710+
using state_t = typename sm_impl_t::state_t;
1711+
using states_ids_t = typename sm_impl_t::states_ids_t;
1712+
auto result = false;
1713+
visit_current_states<T>([&](auto state) {
1714+
(void)state;
1715+
result |= (aux::get_id<state_t, typename TState::type>((states_ids_t *)0) ==
1716+
aux::get_id<state_t, typename decltype(state)::type>((states_ids_t *)0));
1717+
});
1718+
return result;
1719+
}
17061720
template <class T = aux::identity<sm_t>, class... TStates,
17071721
__BOOST_SML_REQUIRES(!aux::is_same<no_policy, typename TSM::testing_policy>::value && aux::always<T>::value)>
17081722
void set_current_states(const TStates &...) {

0 commit comments

Comments
 (0)