X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkBlackBox.h;h=db02118273aaa83c2f12a3e7f912c656dca50d1e;hb=064072f6c392f24c17f71d459a9508408a806927;hp=79697286b4b8a69d43f6cd963c1aafbff2ab3bba;hpb=f5d5e297c656fb1304cccd72e9ac347c0bddbd09;p=bbtk.git diff --git a/kernel/src/bbtkBlackBox.h b/kernel/src/bbtkBlackBox.h index 7969728..db02118 100644 --- a/kernel/src/bbtkBlackBox.h +++ b/kernel/src/bbtkBlackBox.h @@ -1,33 +1,38 @@ +/* + # --------------------------------------------------------------------- + # + # 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: bbtkBlackBox.h,v $ Language: C++ - Date: $Date: 2009/10/05 22:44:48 $ - Version: $Revision: 1.29 $ + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.34 $ =========================================================================*/ -/* --------------------------------------------------------------------- - -* 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. -* ------------------------------------------------------------------------ */ - /** @@ -51,27 +56,24 @@ #include // Signal/slot mechanism for output change events -#include +#include #include #define bbtkBlackBoxMessage(key,level,mess) \ - bbtkMessage(key,level,"["< OutputChangeSignalType; typedef OutputChangeSignalType::slot_function_type @@ -296,35 +298,37 @@ namespace bbtk /// Sets the value of the input 'BoxProcessMode' void bbSetInputBoxProcessMode(std::string a) { bbmBoxProcessMode = a; } /// The possible values of the input 'BoxProcessMode' - typedef enum - { - Pipeline, - Always, - Reactive - } + + typedef enum + { + bbPipeline, + bbAlways, + bbReactive, + bbManual + } BoxProcessModeValue; + /// Returns the "decoded" value of the input "BoxProcessMode" BoxProcessModeValue bbGetBoxProcessModeValue() const; /// Returns true iff the input 'BoxProcessMode' is set to 'Reactive' (or a synonym) virtual bool bbBoxProcessModeIsReactive() const; /// Returns true iff the input 'BoxProcessMode' is set to 'Always' (or a synonym) virtual bool bbBoxProcessModeIsAlways() const; + /// Returns true iff the input 'BoxProcessMode' is set to 'Manual' (or a synonym) + virtual bool bbBoxProcessModeIsManual() const; /// Returns the value of the input 'BoxExecute' Void bbGetInputBoxExecute() { return Void(); } /// Sets the value of the input 'BoxExecute' - void bbSetInputBoxExecute(Void = 0) {} + void bbSetInputBoxExecute(Void = 0) { } /// Returns the value of the output 'BoxChange' Void bbGetOutputBoxChange() { return Void(); } /// Sets the value of the output 'BoxChange' - void bbSetOutputBoxChange(Void = 0) { } + void bbSetOutputBoxChange(Void = 0) { } //@} //================================================================== - - - virtual void bbPrintHelp(BlackBox::Pointer parentblackbox, int detail, int level ); @@ -365,14 +369,11 @@ namespace bbtk protected: - - //================================================================== /// @name User redefinable methods /// Virtual methods which can be redefined by inherited classes //@{ - //================================================================== /// User can redefine this method to set /// the default values of the box inputs and outputs @@ -401,8 +402,6 @@ namespace bbtk //================================================================== - - //================================================================== /// Write Graphviz-dot description in file. @@ -423,16 +422,11 @@ namespace bbtk bool inputoutput, int detail, int level); - - virtual BlackBox::Pointer bbFindBlackBox(const std::string &blackboxname) - { return BlackBox::Pointer();} + { return BlackBox::Pointer();} virtual void Check(bool recursive = true); - - - //================================================================== // PROTECTED PART : ACCESSIBLE TO THE BlackBox DEVELOPER // (IN INHERITED CLASSES) @@ -494,7 +488,7 @@ namespace bbtk //================================================================== /// Computes the final IOStatus of inputs and outputs after processing - void bbComputePostProcessStatus(); +virtual void bbComputePostProcessStatus(); //@} //================================================================== @@ -558,8 +552,6 @@ namespace bbtk //@} //================================================================== - - private: //================================================================== friend class Connection; @@ -575,17 +567,13 @@ namespace bbtk //@{ /// Connects the input to the connection c - virtual void bbConnectInput( const std::string& name, - Connection* c); + virtual void bbConnectInput( const std::string& name, Connection* c); /// Connects the output to the connection c - virtual void bbConnectOutput( const std::string& name, - Connection* c); + virtual void bbConnectOutput( const std::string& name, Connection* c); /// Disconnects the input from the connection c - virtual void bbDisconnectInput( const std::string& name, - Connection* c); + virtual void bbDisconnectInput( const std::string& name, Connection* c); /// Disconnects the output from the connection c - virtual void bbDisconnectOutput( const std::string& name, - Connection* c); + virtual void bbDisconnectOutput( const std::string& name, Connection* c); //@} //================================================================== @@ -593,19 +581,11 @@ namespace bbtk /// which means execute in response to an input change virtual bool bbCanReact() const; - - - - /// Returns true iff the box is executing bool bbGetExecuting() const { return bbmExecuting; } /// Sets the bbmExecuting bool returned by bbGetExecuting void bbSetExecuting(bool b) { bbmExecuting = b; } - - - protected: - //================================================================== protected: @@ -641,8 +621,8 @@ namespace bbtk /// \return The number of remaining references on the object after the call (if meaningfull...): used by bbtk to warn a user if another smart pointing system is still holding the object... //JCP 21-09-20 09 delete this throws and exception change due to compiler version changing and boost version - virtual int bbDelete() {// delete this; - return 0; } + virtual int bbDelete() { delete this; + return 0; } //================================================================== @@ -664,6 +644,7 @@ namespace bbtk /// 0 : "Pipeline" mode /// 1 : "Always" mode /// 2 : "Reactive" mode + /// 3 : "Manual" mode std::string bbmBoxProcessMode; /// The parent of the black box in the ComplexBlackBox hierarchy BlackBox::WeakPointer bbmParent; @@ -677,22 +658,17 @@ namespace bbtk /// Map that contains the input connectors of the black box InputConnectorMapType mInputConnectorMap; //================================================================== - - + + + bool bbLetRecursiveExecuteManualMode; }; // Class BlackBox - /// Convenient macro to create output observer callbacks (freehand functions) from object and method pointer (see samples/SampleOutputObserver) #define BBTK_MAKE_OUTPUT_OBSERVER(OBJECT,METHOD) \ boost::bind( METHOD, OBJECT, _1, _2, _3) - - - - } // namespace bbtk #endif -