PPI: Complete connector implementation
[senf.git] / PPI / Route.cti
index 3d0f465..015ea90 100644 (file)
 ///////////////////////////////cti.p///////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////
-// senf::ppi::Route<Source,Target>
+// senf::ppi::detail::RouteImplementation<Source,Target,srcEvent,trgEvent>
 
-////////////////////////////////////////
-// protected members
+template <class Source, class Target, bool srcEvent, bool trgEvent>
+prefix_
+senf::ppi::detail::RouteImplementation<Source,Target,srcEvent,trgEvent>::
+RouteImplementation(module::Module & module, Source & source, Target & target)
+    : NonForwardingRouteImplementation(module, source, target)
+{}
+
+///////////////////////////////////////////////////////////////////////////
+// senf::ppi::detail::RouteImplementation<Source, Target, true, false>
 
 template <class Source, class Target>
-prefix_ senf::ppi::Route<Source,Target>::Route(module::Module & module, Source & source,
-                                               Target & target)
-    : Implementation(module, source, target)
+prefix_
+senf::ppi::detail::RouteImplementation<Source, Target, true, false>::
+RouteImplementation(module::Module & module, Source & source, Target & target)
+    : NonForwardingRouteFromEventImplementation(module, source, target)
 {}
 
 ///////////////////////////////////////////////////////////////////////////
-// senf::ppi::detail::RouteImplementation<Source,Target,srcEvent,trgEvent>
+// senf::ppi::detail::RouteImplementation<Source, Target, false, true>
 
-////////////////////////////////////////
-// protected members
-
-template <bool srcEvent, bool trgEvent>
-prefix_ senf::ppi::detail::RouteImplementation<srcEvent,trgEvent>::
-RouteImplementation(module::Module & module, connector::InputConnector & source,
-                    connector::OutputConnector & target)
-    : RouteBase(module), source_(&source), target_(&target)
+template <class Source, class Target>
+prefix_
+senf::ppi::detail::RouteImplementation<Source, Target, false, true>::
+RouteImplementation(module::Module & module, Source & source, Target & target)
+    : NonForwardingRouteToEventImplementation(module, source, target)
 {}
 
 ///////////////////////////////////////////////////////////////////////////
-// senf::ppi::detail::RouteImplementation<true,false>
+// senf::ppi::detail::RouteImplementation<connector::ActiveInput, Event, false, true>
 
-////////////////////////////////////////
-// protected members
+template <class Event>
+prefix_
+senf::ppi::detail::RouteImplementation<senf::ppi::connector::ActiveInput, Event, false, true>::
+RouteImplementation(module::Module & module, connector::ActiveInput & source, Event & target)
+    : ForwardForwardingRouteToEventImplementation(module, source, target)
+{}
+
+///////////////////////////////////////////////////////////////////////////
+// senf::ppi::detail::RouteImplementation<Event, connector::ActiveOutput, true, false>
 
-prefix_ senf::ppi::detail::RouteImplementation<true,false>::
-RouteImplementation(module::Module & module, EventDescriptor & source,
-                    connector::OutputConnector & target)
-    : RouteBase(module), source_(&source), target_(&target)
+template <class Event>
+prefix_
+senf::ppi::detail::RouteImplementation<Event, senf::ppi::connector::ActiveOutput, true, false>::
+RouteImplementation(module::Module & module, Event & source, connector::ActiveOutput & target)
+    : BackwardForwardingRouteFromEventImplementation(module, source, target)
 {}
 
 ///////////////////////////////////////////////////////////////////////////
-// senf::ppi::detail::RouteImplementation<false,true>
+// senf::ppi::Route<Source,Target>
 
 ////////////////////////////////////////
 // protected members
 
-prefix_ senf::ppi::detail::RouteImplementation<false,true>::
-RouteImplementation(module::Module & module, connector::InputConnector & source,
-                    EventDescriptor & target)
-: RouteBase(module), source_(&source), target_(&target)
+template <class Source, class Target>
+prefix_ senf::ppi::Route<Source,Target>::Route(module::Module & module, Source & source,
+                                               Target & target)
+    : Implementation(module, source, target)
 {}
 
 ///////////////////////////////cti.e///////////////////////////////////////