switch to new MPL based Fraunhofer FOKUS Public License
[senf.git] / senf / PPI / MultiConnectorMixin.hh
index 34a784f..4db6ebd 100644 (file)
@@ -1,24 +1,29 @@
 // $Id$
 //
-// Copyright (C) 2009 
+// Copyright (C) 2009
 // Fraunhofer Institute for Open Communication Systems (FOKUS)
-// Competence Center NETwork research (NET), St. Augustin, GERMANY
-//     Stefan Bund <g0dil@berlios.de>
 //
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
+// The contents of this file are subject to the Fraunhofer FOKUS Public License
+// Version 1.0 (the "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at 
+// http://senf.berlios.de/license.html
 //
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
+// The Fraunhofer FOKUS Public License Version 1.0 is based on, 
+// but modifies the Mozilla Public License Version 1.1.
+// See the full license text for the amendments.
 //
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the
-// Free Software Foundation, Inc.,
-// 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+// Software distributed under the License is distributed on an "AS IS" basis, 
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 
+// for the specific language governing rights and limitations under the License.
+//
+// The Original Code is Fraunhofer FOKUS code.
+//
+// The Initial Developer of the Original Code is Fraunhofer-Gesellschaft e.V. 
+// (registered association), Hansastraße 27 c, 80686 Munich, Germany.
+// All Rights Reserved.
+//
+// Contributor(s):
+//   Stefan Bund <g0dil@berlios.de>
 
 /** \file
     \brief MultiConnectorMixin public header */
@@ -31,8 +36,6 @@
 #include <boost/ptr_container/ptr_map.hpp>
 #include <boost/ptr_container/ptr_vector.hpp>
 #include <boost/mpl/if.hpp>
-#include "Connectors.hh"
-#include "Setup.hh"
 
 #ifndef SENF_MULTI_CONNECTOR_MAX_ARGS
 #define SENF_MULTI_CONNECTOR_MAX_ARGS 3
 
 #include "MultiConnectorMixin.mpp"
 #include "MultiConnectorMixin.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
 namespace senf {
 namespace ppi {
-    
+
 #ifdef DOXYGEN
 
     // For exposition only.
@@ -62,7 +65,7 @@ namespace ppi {
     template <class MultiConnectorSource, class Target, class A1>
     MultiConnectorSource::ConnectorType & connect(
         MultiConnectorSource & source, A1 const & a1, Target & target);
-    
+
     /** \brief Connect arbitrary source to MultiConnector target
 
         Additional implementations with 0..SENF_MULTI_CONNECTOR_MAX_ARGS arguments.
@@ -99,7 +102,7 @@ namespace module {
         This mixin provides a module with support for a runtime configurable number of input or
         output connectors.
         \code
-        class MyModule 
+        class MyModule
             : public senf::ppi::module::Module,
               public senf::ppi::module::MultiConnectorMixin<
                   MyModule, senf::ppi::connector::ActiveInput<> >
@@ -116,7 +119,7 @@ namespace module {
                 route(input, output);
                 input.onThrottle(&MyModule::doThrottle);
             }
-        
+
             // Optional
             void connectorDestroy(senf::ppi::connector::ActiveInput const & input)
             {
@@ -124,7 +127,7 @@ namespace module {
             }
 
             void doThrottle()
-            { 
+            {
                 // ...
             }
 
@@ -180,7 +183,7 @@ namespace module {
         allocate a new connector
         \code
         MyModule muModule;
-        
+
         senf::ppi::connect(someModule, myModule);
         \endcode
         Some modules will expect additional arguments to be passed (see below)
@@ -214,7 +217,7 @@ namespace module {
         Implementing \c connectorDestroy now is \e mandatory. The signature is changed to take a
         pointer as argument
         \code
-        class MyModule 
+        class MyModule
             : public senf::ppi::module::Module,
               public senf::ppi::module::MultiConnectorMixin<
                   MyModule, senf::ppi::connector::ActiveInput<>, void, void >
@@ -249,12 +252,12 @@ namespace module {
             successfully, otherwise your code will break.
 
      */
-    template <class Self_, 
-              class ConnectorType_, 
-              class KeyType_=void, 
+    template <class Self_,
+              class ConnectorType_,
+              class KeyType_=void,
               class ContainerType_=typename detail::MultiConnectorDefaultContainer<
                                                KeyType_,ConnectorType_>::type>
-    class MultiConnectorMixin 
+    class MultiConnectorMixin
         : private detail::MultiConnectorSelectBase<ConnectorType_>::type
     {
     public:
@@ -286,7 +289,7 @@ namespace module {
 
         friend class detail::MultiConnectorMixinAccess;
         friend class detail::MultiConnectorWrapper<Self_,ConnectorType_>;
-        
+
         ContainerType_ connectors_;
     };
 
@@ -300,7 +303,7 @@ namespace module {
     {
     public:
         typedef ConnectorType_ ConnectorType;
-        
+
     protected:
         typedef ContainerType_ ContainerType;
 
@@ -320,14 +323,14 @@ namespace module {
 #       include BOOST_PP_ITERATE()
 
         void disconnected(ConnectorType_ const & c);
-        
+
         friend class detail::MultiConnectorMixinAccess;
         friend class detail::MultiConnectorWrapper<Self_,ConnectorType_>;
 
         ContainerType_ connectors_;
     };
 
-    template <class Self_, 
+    template <class Self_,
               class ConnectorType_>
     class MultiConnectorMixin<Self_,ConnectorType_,void,void>
         : private detail::MultiConnectorSelectBase<ConnectorType_>::type
@@ -352,10 +355,10 @@ namespace module {
     };
 
 #endif
-        
+
 }}}
 
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 //#include "MultiConnectorMixin.cci"
 #include "MultiConnectorMixin.ct"
 #include "MultiConnectorMixin.cti"