X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkConnection.cxx;h=9624cea27f25ffe92f4c73ab2389f6d998a8ea4b;hb=282043cd0db5791f4565ce0df0c8145feacbe868;hp=37c0eb6be1448122aacd7f025324e4f973e34329;hpb=a35973b128a2f7130b619a2a11a35cfd418b21b6;p=bbtk.git diff --git a/kernel/src/bbtkConnection.cxx b/kernel/src/bbtkConnection.cxx index 37c0eb6..9624cea 100644 --- a/kernel/src/bbtkConnection.cxx +++ b/kernel/src/bbtkConnection.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: bbtkConnection.cxx,v $ Language: C++ - Date: $Date: 2009/03/30 14:42:16 $ - Version: $Revision: 1.20 $ + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.22 $ =========================================================================*/ -/* --------------------------------------------------------------------- - -* 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 @@ -39,6 +46,11 @@ #include "bbtkMessageManager.h" #include "bbtkBlackBoxOutputConnector.h" +#define bbtkCMessage(key,level,mess) \ + bbtkMessage(key,level,"["< Connection::Connection(\"" + bbtkDebugMessage("object",1,"##> Connection(\"" <bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""< Connection::Connection(\"" + bbtkDebugMessage("object",2,"==> Connection(\"" <bbGetName()<<"\",\""<bbGetName()<<"\",\""< Connection::Connection(\"" - <bbGetFullName()<<"\",\""<bbGetFullName()<<"\",\""< Connection(\"" + <bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetName() <<"\" is already connected"); } - + + + //EED2021-09-06 dlopen flags for == != -> bbtkDynamicLibraryHandling.h + // std::string t1 ( from->bbGetOutputType(output).name() ); // std::string t2 ( to->bbGetInputType(input).name() ); - // if //( t1 != t2 ) - if ( from->bbGetOutputType(output) != - to->bbGetInputType(input) ) + // if //( t1 != t2 ) + if ( from->bbGetOutputType(output) != to->bbGetInputType(input) ) { if ( from->bbGetOutputType(output) == typeid(Data) ) { @@ -124,16 +138,12 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, <<"' will be resolved at run time" ); mFromAny = true; - } - else if ( to->bbGetInputType(input) == typeid(Data) ) - { - bbtkDebugMessage("Kernel",8," -> '"<bbGetInputType(input) == typeid(Data) ) { + bbtkDebugMessage("kernel",8," -> '"<()<<" : can receive any data" <bbGetName() + "." + output + "-" @@ -154,12 +164,12 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, } - mFrom = from; - mOriginalFrom = from; - mTo = to; - mOriginalTo = to; - mInput = mOriginalInput = input; - mOutput = mOriginalOutput = output; + mFrom = from; + mOriginalFrom = from; + mTo = to; + mOriginalTo = to; + mInput = mOriginalInput = input; + mOutput = mOriginalOutput = output; // Lock this pointer !!! //Pointer p = MakePointer(this,true); @@ -169,12 +179,12 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, from->bbGetOutputConnector(output).AddChangeObserver(boost::bind(&bbtk::Connection::OnOutputChange,this, _1, _2, _3)); - bbtkDebugMessage("connection",1,"<== Connection::Connection(\"" - <bbGetFullName()<<"\",\""<bbGetFullName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""< Connection::Connection(\"" + bbtkDebugMessage("object",2,"<== Connection(\"" <bbGetName()<<"\",\""<bbGetName()<<"\",\""< Connection::Connection(\"" + bbtkDebugMessage("object",1,"##> Connection(\"" <bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""< Connection::Connection(\"" + bbtkDebugMessage("object",2,"==> Connection(\"" <bbGetName()<<"\",\""<bbGetName()<<"\",\""< Connection::Connection(\"" - <bbGetFullName()<<"\",\""<bbGetFullName()<<"\",\""< Connection(\"" + <bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbGetInputType(input) == typeid(Data) ) { - bbtkDebugMessage("Kernel",8," -> '"< '"<()<<" : can receive any data" <bbGetOutputConnector(output).AddChangeObserver(boost::bind(&bbtk::Connection::OnOutputChange,this, _1, _2, _3)); - bbtkDebugMessage("connection",1,"<== Connection::Connection(\"" - <bbGetFullName()<<"\",\""<bbGetFullName()<<"\",\""<bbGetName()<<"\",\""<bbGetName()<<"\",\""< Connection::Connection(\"" + bbtkDebugMessage("object",2,"==> Connection(\"" <bbGetName()<<"\",\""<bbGetName()<<"\",\""< Connection::~Connection() [" - < ~Connection()" + < Connection::RecursiveExecute() [" - < Connection::RecursiveExecute()" + <bbGetInputConnector(mInput).SetStatus(s); - bbtkDebugMessage("process",4, + bbtkCDebugMessage("process",4, " --> '"<bbGetName()<<"."<bbGetInputConnector(mInput)<<"] " <<"' new status '" @@ -375,9 +385,9 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, <<"'" << std::endl); - bbtkDebugMessage("process",4, - "<=== Connection::RecursiveExecute() [" - <() <<" which contains a <" <bbGetOutput(mOutput).type()) <<">"<bbGetInputType(mInput)) <<">"<bbGetOutput(mOutput).type() == typeid(void)) { - bbtkDebugMessage("data",3, + bbtkCDebugMessage("data",3, " -> Source is void : nothing to transfer!"<bbGetOutput(mOutput) .contains( mTo->bbGetInputType(mInput) ) ) { - bbtkDebugMessage("data",3, + bbtkCDebugMessage("data",3, " -> Equal types : transfer ok"<bbSetInput( mInput, mFrom->bbGetOutput(mOutput), @@ -449,7 +459,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, } if (adaptor) { - bbtkDebugMessage("data",3," -> Adaptor found : using it" + bbtkCDebugMessage("data",3," -> Adaptor found : using it" <bbSetInput("In",mFrom->bbGetOutput(mOutput),false); adaptor->bbExecute(); @@ -463,7 +473,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, (mTo->bbGetDescriptor()->GetInputDescriptor(mInput) ->IsPointerType()) ) { - bbtkDebugMessage("data",3, + bbtkCDebugMessage("data",3, " -> No adaptor found but source and target types are both pointers : trying up or down cast"<bbSetInput(mInput, mFrom->bbGetOutput(mOutput),false); } - } //================================================================== @@ -508,10 +517,10 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, void Connection::OnOutputChange(bbtk::BlackBox::Pointer, const std::string&, IOStatus status) { - bbtkDebugMessage("change",2, + bbtkCDebugMessage("change",2, "==> Connection::OnOutputChange(" - <bbGetInputConnectorMap().find("In")->second; @@ -547,7 +556,8 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, //================================================================== void Connection::Check() const { - bbtkMessage("debug",1,"** Checking Connection "<<(void*)this<<" ["<bbGetFullName()<bbGetName()<bbHasOutput(mOutput)) { bbtkError("** Checking Connection "<<(void*)this <<" ["<bbGetFullName()<<" does not have output '" + << mFrom->bbGetName()<<" does not have output '" <bbGetFullName()<<" output '" + <bbGetName()<<" output '" <bbGetFullName() + <bbGetName() <<" does not point to this connection"); } @@ -614,13 +623,13 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, // std::cout << mTo << std::endl; // std::cout << mTo->bbGetDescriptor() << std::endl; // std::cout << mTo->bbGetDescriptor()->GetTypeName() << std::endl; - // mTo->bbGetFullName(); - bbtkMessage("debug",2," - To : "<bbGetFullName()<bbGetName(); + bbtkMessage("debug",2," - To : "<bbGetName()<bbHasInput(mInput)) { bbtkError("** Checking Connection "<<(void*)this <<" ["<bbGetFullName()<<" does not have input '" + <bbGetName()<<" does not have input '" <bbGetFullName()<<" input '" + <bbGetName()<<" input '" <bbGetFullName() + <bbGetName() <<" does not point to this connection"); }