/*========================================================================= Program: bbtk Module: $RCSfile: bbtkBlackBoxOutputConnector.h,v $ Language: C++ Date: $Date: 2008/12/15 09:04:46 $ Version: $Revision: 1.8 $ =========================================================================*/ /* --------------------------------------------------------------------- * 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. * ------------------------------------------------------------------------ */ /** * \file * \brief Class bbtk::BlackBoxOutputConnector : */ /** * \class bbtk::BlackBoxOutputConnector * \brief */ #ifndef __bbtkBlackBoxOutputConnector_h__ #define __bbtkBlackBoxOutputConnector_h__ #include "bbtkConnection.h" #include "bbtkBlackBox.h" #include "bbtkMessageManager.h" #include // Change time management //#include // Signal/slot mechanism for output change events //#include //#include 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 >,boost::function1 >) { } */ //boost::function >] class BBTK_EXPORT BlackBoxOutputConnector { public: // typedef boost::signals::trackable ChangeObserverType; // typedef boost::signal ChangeSignalType; // typedef ChangeSignalType::slot_function_type ChangeCallbackType; typedef BlackBox::OutputChangeCallbackType OutputChangeCallbackType; BlackBoxOutputConnector(); ~BlackBoxOutputConnector(); void SetConnection(Connection* c); void UnsetConnection(Connection* c); typedef std::vector ConnectionVector; const ConnectionVector& GetConnectionVector() const { return mConnection; } IOStatus GetStatus() const { return mStatus; } void SetStatus( IOStatus s ) { mStatus = s; } 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); /// Removes the function f from the list of functions to call when /// the output changes (TO WRITE) void RemoveChangeObserver(OutputChangeCallbackType f); private: /// The vector of output connections ConnectionVector mConnection; /// The status of the output IOStatus mStatus; /// The output changed signal BlackBox::OutputChangeSignalType mChangeSignal; }; } // namespace bbtk #endif