]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkBlackBoxOutputConnector.h
skip lines
[bbtk.git] / kernel / src / bbtkBlackBoxOutputConnector.h
index 80559c20101c9570fbdea8a04e565b9049ac24f3..a0ec8c0514f97c5731a03cdcc887a138375122bb 100644 (file)
@@ -1,32 +1,39 @@
-/*=========================================================================                                                                               
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ #                        pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ #  This software is governed by the CeCILL-B license under French law and
+ #  abiding by the rules of distribution of free software. You can  use,
+ #  modify and/ or redistribute the software under the terms of the CeCILL-B
+ #  license as circulated by CEA, CNRS and INRIA at the following URL
+ #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ #  or in the file LICENSE.txt.
+ #
+ #  As a counterpart to the access to the source code and  rights to copy,
+ #  modify and redistribute granted by the license, users are provided only
+ #  with a limited warranty  and the software's author,  the holder of the
+ #  economic rights,  and the successive licensors  have only  limited
+ #  liability.
+ #
+ #  The fact that you are presently reading this means that you have had
+ #  knowledge of the CeCILL-B license and that you accept its terms.
+ # ------------------------------------------------------------------------ */
+
+
+/*=========================================================================
   Program:   bbtk
   Module:    $RCSfile: bbtkBlackBoxOutputConnector.h,v $
   Language:  C++
-  Date:      $Date: 2008/12/15 09:04:46 $
-  Version:   $Revision: 1.8 $
+  Date:      $Date: 2012/11/16 08:49:01 $
+  Version:   $Revision: 1.11 $
 =========================================================================*/
 
-/* ---------------------------------------------------------------------
-
-* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
-* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
-*
-*  This software is governed by the CeCILL-B license under French law and 
-*  abiding by the rules of distribution of free software. You can  use, 
-*  modify and/ or redistribute the software under the terms of the CeCILL-B 
-*  license as circulated by CEA, CNRS and INRIA at the following URL 
-*  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
-*  or in the file LICENSE.txt.
-*
-*  As a counterpart to the access to the source code and  rights to copy,
-*  modify and redistribute granted by the license, users are provided only
-*  with a limited warranty  and the software's author,  the holder of the
-*  economic rights,  and the successive licensors  have only  limited
-*  liability. 
-*
-*  The fact that you are presently reading this means that you have had
-*  knowledge of the CeCILL-B license and that you accept its terms.
-* ------------------------------------------------------------------------ */                                                                         
+                                                                       
 
 
 /**
 #ifndef __bbtkBlackBoxOutputConnector_h__
 #define __bbtkBlackBoxOutputConnector_h__
 
+#include "bbtkPimpl.h"
 #include "bbtkConnection.h"
 #include "bbtkBlackBox.h"
 #include "bbtkMessageManager.h"
 #include <vector>
 
-// Change time management
-//#include <bbtkChangeTime.h>
-
-// Signal/slot mechanism for output change events
-//#include <boost/signal.hpp>
-//#include <boost/bind.hpp>
 
 namespace bbtk
 {
 
-  //  class BlackBox;
-  //  BBTK_FORWARD_DECLARE_POINTER(BlackBox);
-
-  //  void  operator (void*)(ChangeCallbackType t) { return (void*)t; };
  
-/*
-  typedef void (*ChangeSignalFunctionType)(BlackBoxOutputConnector*);
-  bool operator==(void (*sg1)(BlackBoxOutputConnector*),
-                 void (*sg2)(BlackBoxOutputConnector*)) 
-  { return sg1==sg2;}
-*/
-/*
-  bool operator==(boost::function1<void, bbtk::BlackBoxOutputConnector*, std::allocator<void> >,boost::function1<void, bbtk::BlackBoxOutputConnector*, std::allocator<void> >)
-  {
-  }
-*/
-  //boost::function<void ()(bbtk::BlackBoxOutputConnector*), std::allocator<void> >]
   class BBTK_EXPORT BlackBoxOutputConnector 
   {
   public:
  
-    //    typedef boost::signals::trackable ChangeObserverType;
-    //    typedef boost::signal<void (bbtk::BlackBox::Pointer*,const std::string&,IOStatus)>  ChangeSignalType;
-    //    typedef ChangeSignalType::slot_function_type ChangeCallbackType;
-
+  
     typedef BlackBox::OutputChangeCallbackType OutputChangeCallbackType;
 
-    BlackBoxOutputConnector();
+    /// Ctor
+    BlackBoxOutputConnector(BlackBoxPointer b);
+    /// Dtor
     ~BlackBoxOutputConnector();
 
+    /// Sets a connection
     void SetConnection(Connection* c);
+    /// Unsets the connection 
     void UnsetConnection(Connection* c);
+    /// The type of vector of output connections
     typedef std::vector<Connection*> ConnectionVector;
-    const ConnectionVector& GetConnectionVector() const { return mConnection; }
+    /// Returns the vector of connection plugged into this output (const)
+    const ConnectionVector& GetConnectionVector() const;
+    
+    /// Returns the status of the input 
+    IOStatus GetStatus() const;
+    /// Sets the status of the input 
+    void SetStatus( IOStatus s );
     
-    IOStatus GetStatus() const { return mStatus; }
-    void SetStatus( IOStatus s ) { mStatus = s; }
+    /// Signals the change observers that the output has changed
     void SignalChange( BlackBox::Pointer box, const std::string& output );
 
 
-    //    void SetModifiedStatus();
-
-    /// Returns the ChangeTime of the output (const)
-    //  const ChangeTime& GetChangeTime() const { return mChangeTime; }
-    /// Returns the ChangeTime of the output 
-    //    ChangeTime& GetChangeTime() { return mChangeTime; }
-
-    /// To be called when the output has changed
-    /// (sets the ChangeTime to current time and 
-    ///  signals the change to observers)
-    //    void SetChangeTime(const ChangeTime&); 
-   
-    /// To be called when the output has changed
-    /// (sets the ChangeTime to current time and 
-    ///  signals the change to observers)
-    //    void SetChangeTimeToCurrentTime(); 
-
     /// Adds the function f to the list of functions to call when 
     /// the output changes.
     void AddChangeObserver(OutputChangeCallbackType f); 
@@ -121,14 +97,12 @@ namespace bbtk
     /// the output changes (TO WRITE)
     void RemoveChangeObserver(OutputChangeCallbackType f); 
 
-
+      /// Private implementation
+    BBTK_DECLARE_PIMPL(BlackBoxOutputConnector);
+    
   private:
-    /// The vector of output connections
-    ConnectionVector mConnection;
-    /// The status of the output 
-    IOStatus mStatus;
-    /// The output changed signal 
-    BlackBox::OutputChangeSignalType mChangeSignal;
+    /// Purposedly not implemented
+    BlackBoxOutputConnector(const BlackBoxOutputConnector&);
 
   };