unit_t init_behavior_impl(message_handler& x) { if (x) x = x.or_else(composable_behavior_base<Clauses>::make_callback()...); else x.assign(composable_behavior_base<Clauses>::make_callback()...); return unit; }
static void invoke_impl( type_tuple< Message, Rest... >, message_handler<MH...> const& mh, DWORD id ) { if( id == Message::id ) { mh.invoke( Message() ); return; } invoke_impl( type_tuple< Rest... >(), mh, id ); }
void assign_handler(Message, F&& f) { mh_.assign( Message(), std::forward< F >( f ) ); }
behavior_impl_ptr extract(const message_handler& arg) { return arg.as_behavior_impl(); }
behavior_impl_ptr combine(const message_handler& lhs, behavior_impl_ptr rhs) { return lhs.as_behavior_impl()->or_else(rhs); }
behavior_impl_ptr combine(behavior_impl_ptr lhs, const message_handler& rhs) { return lhs->or_else(rhs.as_behavior_impl()); }
behavior::behavior(const message_handler& mh) : m_impl(mh.as_behavior_impl()) { // nop }
void observer_board::set_message_handler(message_handler& msg) { msg_observer.emplace(msg.get_client_id(), msg); }