X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FMultiConnectorMixin.ih;h=9d4a7f5e347274ba88453f86c1ec75806d7c0525;hb=9bc655e14d2d8c204ed835896cb51e42d49bd68f;hp=0d96226529b1e6891e2fca759112661fa50720f7;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/MultiConnectorMixin.ih b/senf/PPI/MultiConnectorMixin.ih index 0d96226..9d4a7f5 100644 --- a/senf/PPI/MultiConnectorMixin.ih +++ b/senf/PPI/MultiConnectorMixin.ih @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2009 +// Copyright (C) 2009 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund @@ -35,17 +35,35 @@ 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 - { - typedef boost::ptr_map type; + struct MultiConnectorDefaultContainer + { + typedef boost::ptr_map type; + }; + + template + class MultiConnectorWrapper + : public Connector + { + private: + virtual void v_disconnected() const; }; #ifndef DOXYGEN template - struct MultiConnectorDefaultContainer - { + struct MultiConnectorDefaultContainer + { typedef boost::ptr_vector type; }; @@ -53,11 +71,53 @@ namespace detail { template struct MultiConnectorSelectBase - : public boost::mpl::if_< + : public boost::mpl::if_< boost::is_base_of, ppi::detail::DisableStandardInput, ppi::detail::DisableStandardOutput > {}; + template senf::mpl::rv<0> isMulticonnector(...); + template senf::mpl::rv<1> isMulticonnector( + typename boost::enable_if, + int>::type); + template senf::mpl::rv<2> isMulticonnector( + typename boost::enable_if, + int>::type); + + template + struct IsMulticonnectorSource_ + : public boost::false_type + {}; + + template + struct IsMulticonnectorSource_ + : public boost::true_type + {}; + + template + struct IsMulticonnectorSource + : public IsMulticonnectorSource_(0))> + {}; + + template + struct IsMulticonnectorTarget_ + : public boost::false_type + {}; + + template + struct IsMulticonnectorTarget_ + : public boost::true_type + {}; + + template + struct IsMulticonnectorTarget + : public IsMulticonnectorTarget_(0))> + {}; + + + }}}} ///////////////////////////////ih.e////////////////////////////////////////