Fix SCons 1.2.0 build failure
[senf.git] / PPI / AnnotationRouter.hh
index 218f0a4..e438755 100644 (file)
 
 // Custom includes
 #include <boost/ptr_container/ptr_map.hpp>
+#include "../Utils/String.hh"
 #include "Module.hh"
 #include "Connectors.hh"
+#include "MultiConnectorMixin.hh"
 
 //#include "AnnotationRouter.mpp"
 ///////////////////////////////hh.p////////////////////////////////////////
@@ -92,7 +94,11 @@ namespace module {
         from the container 
      */
     template <class AnnotationType>
-    class AnnotationRouter : public Module
+    class AnnotationRouter 
+        : public Module, 
+          public MultiConnectorMixin< AnnotationRouter<AnnotationType>,
+                                        connector::ActiveOutput<>,
+                                        AnnotationType >
     {
         SENF_PPI_MODULE(AnnotationRouter);
     public:
@@ -104,42 +110,23 @@ namespace module {
         struct DuplicateKeyException : public senf::Exception
         { DuplicateKeyException(AnnotationType const & key) 
               : senf::Exception("Duplicate senf::ppi::module::AnnotationRouter routing key ")
-                { append(boost::lexical_cast<std::string>(key)); } };
-
-    private:
-        connector::ActiveOutput<> & newOutput(AnnotationType const & key);
-
-#ifndef DOXYGEN
-        // I didn't get template friend functions to work ...
-    public:
-#endif
-        template <class Target>
-        connector::GenericActiveOutput & connect(Target & target, AnnotationType const & key);
+                { append( senf::str(key)); } };
 
     private:
+        AnnotationType connectorSetup(connector::ActiveOutput<> & conn, AnnotationType const & key);
         void request();
-        
-        typedef boost::ptr_map<AnnotationType, connector::ActiveOutput<> > Outputs;
-        Outputs outputs_;
-    };
-
-}
-
-#ifndef DOXYGEN
 
-    template <class Target, class AnnotationType, class ArgType>
-    connector::GenericActiveOutput & connect(
-        module::AnnotationRouter<AnnotationType> & source, Target & target, 
-        ArgType const & key);
-
-#endif
+        friend class MultiConnectorMixin< AnnotationRouter<AnnotationType>,
+                                            connector::ActiveOutput<>,
+                                            AnnotationType >;
+    };
 
-}}
+}}}
 
 ///////////////////////////////hh.e////////////////////////////////////////
 //#include "AnnotationRouter.cci"
 #include "AnnotationRouter.ct"
-#include "AnnotationRouter.cti"
+//#include "AnnotationRouter.cti"
 #endif
 
 \f