X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FMultiConnectorMixin.ih;fp=senf%2FPPI%2FMultiConnectorMixin.ih;h=eff87698c7247b8fbf1ff123be69617d6d675101;hb=2d88e6b3f5a6f3906e42264f58859e6bf9c12dae;hp=0d96226529b1e6891e2fca759112661fa50720f7;hpb=8a3c2486ed4e34d016c2b89beb5900fdc9d1b3b2;p=senf.git diff --git a/senf/PPI/MultiConnectorMixin.ih b/senf/PPI/MultiConnectorMixin.ih index 0d96226..eff8769 100644 --- a/senf/PPI/MultiConnectorMixin.ih +++ b/senf/PPI/MultiConnectorMixin.ih @@ -35,6 +35,16 @@ namespace ppi { namespace module { namespace detail { + struct MultiConnectorMixinAccess + { +# define BOOST_PP_ITERATION_PARAMS_1 (4, ( \ + 0, \ + SENF_MULTI_CONNECTOR_MAX_ARGS, \ + SENF_ABSOLUTE_INCLUDE_PATH(PPI/MultiConnectorMixin.mpp), \ + 8 )) +# include BOOST_PP_ITERATE() + }; + template struct MultiConnectorDefaultContainer { @@ -58,6 +68,52 @@ namespace detail { ppi::detail::DisableStandardInput, ppi::detail::DisableStandardOutput > {}; + template senf::mpl::rv<0> is_multiconnector_(T *, ...); + template senf::mpl::rv<1> is_multiconnector_( + T *, + typename boost::enable_if, + int>::type); + template senf::mpl::rv<2> is_multiconnector_( + T *, + typename boost::enable_if, + int>::type); + + template + struct is_multiconnector_source_ + : public boost::false_type + {}; + + template + struct is_multiconnector_source_ + : public boost::true_type + {}; + + template + struct is_multiconnector_source + : public is_multiconnector_source_< + T, SENF_MPL_RV(is_multiconnector_(static_cast(0),0))> + {}; + + template + struct is_multiconnector_target_ + : public boost::false_type + {}; + + template + struct is_multiconnector_target_ + : public boost::true_type + {}; + + template + struct is_multiconnector_target + : public is_multiconnector_target_< + T, SENF_MPL_RV(is_multiconnector_(static_cast(0),0))> + {}; + + + }}}} ///////////////////////////////ih.e////////////////////////////////////////