X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkBlackBox.cxx;h=88cde1317bcb0f968b3d7a1222d71c5054292d06;hb=4d6822024afbbe783cdd620e248184b37d84c540;hp=dfdf6e5df63861b3c353e71d6e289b6e20ffdedd;hpb=731d9ee262e286a24e3ea2776d8e914950840a2c;p=bbtk.git diff --git a/kernel/src/bbtkBlackBox.cxx b/kernel/src/bbtkBlackBox.cxx index dfdf6e5..88cde13 100644 --- a/kernel/src/bbtkBlackBox.cxx +++ b/kernel/src/bbtkBlackBox.cxx @@ -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: bbtkBlackBox.cxx,v $ Language: C++ - Date: $Date: 2011/07/22 17:42:50 $ - Version: $Revision: 1.54 $ + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.56 $ =========================================================================*/ -/* --------------------------------------------------------------------- - -* 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 @@ -48,8 +55,8 @@ namespace bbtk { - static bool bbmgSomeBoxExecuting = false; - static bool bbmgFreezeExecution = false; + static bool bbmgSomeBoxExecuting = false; + static bool bbmgFreezeExecution = false; static std::set bbmgExecutionList; //========================================================================= @@ -86,14 +93,10 @@ namespace bbtk if (!pack.expired()) { Package::ReleaseBlackBoxDescriptor(pack,desc); - } - else - { + } else { bbtkDebugMessage("object",2,"##> BlackBox::Deleter(\""< BlackBox::Deleter(\""<bbGetNameWithParent() + ":" + bbmName; - } - else - { - return bbmName; - } + { + return bbmParent.lock()->bbGetNameWithParent() + ":" + bbmName; + } else { + return bbmName; + } } //========================================================================= @@ -378,13 +381,19 @@ namespace bbtk (p == "F") || (p == "f") || (p == "Flash") || (p == "flash") ) return Flash; */ - bbtkError(bbGetFullName()<<" : BoxProcessMode value '"<

second->GetStatus()==UPTODATE) + { + + + if (o->first=="BoxChange") + { + o->second->SetStatus(UPTODATE); + } + + + +//EED 24/08/2015 +// EED CASPITAS 2 + if (o->second->GetStatus()==UPTODATE) +// if ((o->second->GetStatus()==UPTODATE) || (o->second->GetStatus()==OUTOFDATE)) +// if ((o->second->GetStatus()==UPTODATE) || (o->second->GetStatus()==MODIFIED)) { o->second->SetStatus(OUTOFDATE); o->second->SignalChange(GetThisPointer(),o->first); - } - } + } // if + } // for + if ( ( bbBoxProcessModeIsReactive() || (c==bbGetInputConnectorMap().find("BoxExecute")->second)) && (bbCanReact() ) ) @@ -460,7 +490,7 @@ namespace bbtk bbtkBlackBoxDebugMessage("change",2, "-> Execution triggered by Reactive mode or BoxExecute input change"<() ); - } + } // if bbtkBlackBoxDebugMessage("change",5, "<= BlackBox::bbSetStatusAndPropagate(input)" < already executing : abort"<bbCreateWindow(); // Updates its inputs - IOStatus s = bbUpdateInputs(); - - if ( (s != UPTODATE) || - bbBoxProcessModeIsAlways() ) + +// IOStatus s; + IOStatus s=UPTODATE; +// IOStatus s=OUTOFDATE; +// IOStatus s=MODIFIED; + + if ( ( bbBoxProcessModeIsManual()==false ) || + ( (bbBoxProcessModeIsManual()==true) && (bbLetRecursiveExecuteManualMode==true) ) ) + { + s = bbUpdateInputs(); + } + + if ( (s != UPTODATE) || bbBoxProcessModeIsAlways() ) { // Displays the window (WxBlackbox) // bbShowWindow(caller); // Actual processing (virtual) - this->bbProcess(); - - - // Update the I/O statuses - bbComputePostProcessStatus(); - } - else - { + if ( ( bbBoxProcessModeIsManual()==false ) || + ( (bbBoxProcessModeIsManual()==true)&&(bbLetRecursiveExecuteManualMode==true) ) + ) + { + +//printf("EED BlackBox::bbRecursiveExecute bbProcess start %s \n", bbGetFullName().c_str() ); + +//auto start = std::chrono::high_resolution_clock::now(); + this->bbProcess(); +//auto stop = std::chrono::high_resolution_clock::now(); +//auto duration = duration_cast(stop - start); +//printf("EED BlackBox::bbRecursiveExecute bbProcess time= %ld %s \n", duration.count() , bbGetFullName().c_str() ); + +//printf("EED BlackBox::bbRecursiveExecute bbProcess end %s \n", bbGetFullName().c_str() ); + + } // Manual analysis + +//EED ups if ((bbBoxProcessModeIsManual()==true) && (bbLetRecursiveExecuteManualMode==false)) +//EED ups { +//EED ups bbSignalOutputModification(true); +//EED ups } + + // Update the I/O statuses + bbComputePostProcessStatus(); + } else { // Test output status... OutputConnectorMapType::iterator o; for ( o = bbGetOutputConnectorMap().begin(); @@ -710,11 +779,11 @@ namespace bbtk <<"all inputs are Up-to-date but output '" <first<<"' is Out-of-date ???"); } - } + } // for bbtkBlackBoxDebugMessage("process",3," -> Up-to-date : nothing to do" <bbShowWindow(); @@ -731,9 +800,6 @@ namespace bbtk } //========================================================================= - - - //========================================================================= IOStatus BlackBox::bbUpdateInputs() @@ -809,7 +875,19 @@ namespace bbtk for ( o = bbGetOutputConnectorMap().begin(); o!= bbGetOutputConnectorMap().end(); ++o) { - o->second->SetStatus(new_output_status); + +//EED if ( ( bbBoxProcessModeIsManual()==false ) || +//EED ( (bbBoxProcessModeIsManual()==true) && (bbLetRecursiveExecuteManualMode==true) ) +//EED ) +//EED { + o->second->SetStatus(new_output_status); +//EED } else { +//EED if (( (bbBoxProcessModeIsManual()==true) && (bbLetRecursiveExecuteManualMode==false) ) ) +//EED { +//EED o->second->SetStatus(UPTODATE); +//EED } +//EED } // Manual analysis + } bbtkBlackBoxDebugMessage("process",4, @@ -1402,6 +1480,7 @@ namespace bbtk <