X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkConnection.cxx;h=4a6b7059e426b6db6e9a90df2c4b6becb6ddfd47;hb=bdbe8432a23b398ce457f38d647e9298a7cf560a;hp=1e84edfa3d0395e3afa7da5b930913703c8d0ecf;hpb=4ad5b5ee44357ad873bc8c43230defb6d0a79879;p=bbtk.git diff --git a/kernel/src/bbtkConnection.cxx b/kernel/src/bbtkConnection.cxx index 1e84edf..4a6b705 100644 --- a/kernel/src/bbtkConnection.cxx +++ b/kernel/src/bbtkConnection.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkConnection.cxx,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:15 $ - Version: $Revision: 1.7 $ + Date: $Date: 2008/04/25 13:37:48 $ + Version: $Revision: 1.13 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -62,6 +62,11 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, <bbGetName()<<"\",\""< Connection::Connection(\"" + <bbGetFullName()<<"\",\""<bbGetFullName()<<"\",\""<bbHasOutput(output) ) @@ -128,10 +133,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, } } - // Lock this pointer !!! - Pointer p = MakePointer(this,true); - from->bbConnectOutput(output,p); - to->bbConnectInput(input,p); + mFrom = from; mOriginalFrom = from; mTo = to; @@ -139,7 +141,17 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, mInput = mOriginalInput = input; mOutput = mOriginalOutput = output; + // Lock this pointer !!! + //Pointer p = MakePointer(this,true); + from->bbConnectOutput(output,this); + to->bbConnectInput(input,this); + + bbtkDebugMessage("connection",1,"<== Connection::Connection(\"" + <bbGetFullName()<<"\",\""<bbGetFullName()<<"\",\""< Connection::Connection(\"" <bbGetName()<<"\",\""<bbGetName()<<"\",\""<bbDisconnectOutput(mOutput, - GetThisPointer()); + mFrom->bbDisconnectOutput(mOutput,this); + // GetThisPointer()); + mFrom.reset(); } else { @@ -169,15 +180,14 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, } if (mTo!=0) { - mTo->bbDisconnectInput(mInput, - GetThisPointer()); + mTo->bbDisconnectInput(mInput,this);// GetThisPointer()); + mTo.reset(); } else { bbtkInternalError("Connection::~Connection() : invalid final box pointer"); } - mFrom.reset(); - mTo.reset(); + bbtkDebugMessage("object",2, "<== Connection::~Connection() [" @@ -189,9 +199,9 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, /// Backward Update IOStatus Connection::BackwardUpdate() { - bbtkDebugMessageInc("Process",2, - "Connection::BackwardUpdate() [" - < Connection::BackwardUpdate() [" + <bbBackwardUpdate(GetThisPointer()); @@ -200,8 +210,9 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, if (mAdaptor && (s==MODIFIED)) mAdaptor->bbSetModifiedStatus(); - bbtkDebugDecTab("Process",2); - + bbtkDebugMessage("process",5, + "<=== Connection::BackwardUpdate() [" + <bbForwardUpdate(this); - bbtkDebugDecTab("Process",2); + bbtkDebugDecTab("process",2); } //================================================================== */ @@ -230,7 +241,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, /// doing necessary conversions (adaptation or pointer cast) void Connection::TransferData() { - bbtkDebugMessageInc("Process",3, + bbtkDebugMessageInc("data",3, "Connection::TransferData() [" <() <<" which contains a <" <bbGetOutput(mOutput).type()) <<">"<bbGetInputType(mInput)) <<">"<bbGetOutput(mOutput) .contains( mTo->bbGetInputType(mInput) ) ) { - bbtkDebugMessage("Data",3, + bbtkDebugMessage("data",3, " -> Equal types : transfer ok"<bbSetInput( mInput, mFrom->bbGetOutput(mOutput), @@ -287,7 +295,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, } if (adaptor) { - bbtkDebugMessage("Data",3," -> Adaptor found : using it" + bbtkDebugMessage("data",3," -> Adaptor found : using it" <bbSetInput("In",mFrom->bbGetOutput(mOutput),false); adaptor->bbExecute(); @@ -301,7 +309,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, (mTo->bbGetDescriptor()->GetInputDescriptor(mInput) ->IsPointerType()) ) { - bbtkDebugMessage("Data",3, + bbtkDebugMessage("data",3, " -> No adaptor found but source and target types are both pointers : trying up or down cast"<bbSetInput(mInput, mFrom->bbGetOutput(mOutput),false); } - bbtkDebugDecTab("Process",3); } //================================================================== @@ -346,15 +353,19 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, /// Modified void Connection::SetModifiedStatus() { - bbtkDebugMessageInc("Process",5, - "Connection::SetModifiedStatus() [" - < Connection::SetModifiedStatus() [" + <bbSetModifiedStatus(); mTo->bbSetModifiedStatus( mTo->bbGetInputConnectorMap().find(mInput)->second ); - bbtkDebugDecTab("Process",5); + /* + bbtkDebugMessage("modified",2, + "==> Connection::SetModifiedStatus() [" + <bbGetFullName()<bbGetFullName()<bbHasOutput(mOutput)) { bbtkError("** Checking Connection "<<(void*)this @@ -397,7 +408,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, << mFrom->bbGetFullName()<<" does not have output '" <bbGetOutputConnectorMap().find(mOutput); if (i== mFrom->bbGetOutputConnectorMap().end()) @@ -407,21 +418,22 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, <bbGetFullName()<<" output '" <::const_iterator j; + std::vector< Connection* >::const_iterator j; + /* for (j = i->second->GetConnectionVector().begin(); j != i->second->GetConnectionVector().end(); ++j) { - if ((*j).lock()==GetThisPointer()) break; + if ((*j)==this) break; } - /* + */ j = find(i->second->GetConnectionVector().begin(), i->second->GetConnectionVector().end(), - GetThisPointer()); - */ + this); + if (j==i->second->GetConnectionVector().end()) { bbtkError("** Checking Connection "<<(void*)this @@ -432,23 +444,23 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, <<" does not point to this connection"); } - bbtkMessage("Debug",2," - From : This connection is in OutputConnector connection vector"<bbGetName()<bbGetName()<bbGetDescriptor() << std::endl; // std::cout << mTo->bbGetDescriptor()->GetTypeName() << std::endl; // mTo->bbGetFullName(); - bbtkMessage("Debug",2," - To : "<bbGetFullName()<bbGetFullName()<bbHasInput(mInput)) { bbtkError("** Checking Connection "<<(void*)this @@ -456,7 +468,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, <bbGetFullName()<<" does not have input '" <bbGetInputConnectorMap().find(mInput); if (i== mTo->bbGetInputConnectorMap().end()) @@ -466,7 +478,7 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, <bbGetFullName()<<" input '" <second->GetConnection()==0) @@ -479,8 +491,8 @@ Connection::Connection(BlackBox::Pointer from, const std::string& output, <<" does not point to this connection"); } - bbtkMessage("Debug",2," - To : This connection is in InputConnector connection vector"<