Program: bbtk
Module: $RCSfile: bbtkConnection.cxx,v $
Language: C++
- Date: $Date: 2008/12/09 11:48:31 $
- Version: $Revision: 1.18 $
+ Date: $Date: 2009/03/30 14:42:16 $
+ Version: $Revision: 1.20 $
=========================================================================*/
/* ---------------------------------------------------------------------
{
if ( from->bbGetOutputType(output) == typeid(Data) )
{
- bbtkWarning("Connection '"
- <<GetFullName()
- <<"' : '"<<from->bbGetName()<<"."<<output
+ bbtkWarning("Connection: '"<<from->bbGetName()<<"."<<output
<<"' is of type <"
<<HumanTypeName<Data>()
<<"> : type compatibility with '"
//==================================================================
//==================================================================
- /// Backward Update
- void Connection::BackwardUpdate()
+ /// Recursive execution
+ void Connection::RecursiveExecute()
{
- bbtkDebugMessage("process",3,
- "===> Connection::BackwardUpdate() ["
+ bbtkDebugMessage("process",4,
+ "===> Connection::RecursiveExecute() ["
<<GetFullName()<<"]"<<std::endl);
- mFrom->bbBackwardUpdate(GetThisPointer<Connection>());
+ /*
+ // If box from already executing : nothing to do
+ if (mFrom->bbGetExecuting())
+ {
+ bbtkDebugMessage("process",3,
+ " -> "<<mFrom->bbGetName()
+ <<" already executing : abort"<<std::endl);
+ return;
+
+ }
+ */
+
+ mFrom->bbRecursiveExecute(GetThisPointer<Connection>());
TransferData();
}
mTo->bbGetInputConnector(mInput).SetStatus(s);
- bbtkDebugMessage("process",3,
+ bbtkDebugMessage("process",4,
" --> '"<<mTo->bbGetName()<<"."<<mInput
<<" ["<<&mTo->bbGetInputConnector(mInput)<<"] "
<<"' new status '"
<<"'"
<< std::endl);
- bbtkDebugMessage("process",3,
- "<=== Connection::BackwardUpdate() ["
+ bbtkDebugMessage("process",4,
+ "<=== Connection::RecursiveExecute() ["
<<GetFullName()<<"]"<<std::endl);
- return; // s;
+ return;
}
//==================================================================
- /*
- //==================================================================
- /// Forward Update
- void Connection::ForwardUpdate()
- {
- bbtkDebugMessageInc("process",2,
- "Connection::ForwardUpdate() ["
- <<GetFullName()<<"]"<<std::endl);
-
- TransferData();
-
- mTo->bbForwardUpdate(this);
-
- bbtkDebugDecTab("process",2);
- }
- //==================================================================
- */
//==================================================================
/// Transfers the data from the source output to the target input
<<HumanTypeName(mTo->bbGetInputType(mInput))
<<">"<<std::endl);
+ // 0) If from any contents void : nothing to do
+ if (mFrom->bbGetOutput(mOutput).type() == typeid(void))
+ {
+ bbtkDebugMessage("data",3,
+ " -> Source is void : nothing to transfer!"<<std::endl);
+ }
// 1) Test strict type matching between any content and target
- if (mFrom->bbGetOutput(mOutput)
+ else if (mFrom->bbGetOutput(mOutput)
.contains( mTo->bbGetInputType(mInput) ) )
{
bbtkDebugMessage("data",3,
}
//==================================================================
-
- /*
- //==================================================================
- /// Modified
- void Connection::SetModifiedStatus()
- {
- bbtkDebugMessage("modified",2,
- "==> Connection::SetModifiedStatus() ["
- <<GetFullName()<<"]"<<std::endl);
-
- if (mAdaptor) mAdaptor->bbSetModifiedStatus();
-
- mTo->bbSetModifiedStatus( mTo->bbGetInputConnectorMap().find(mInput)->second );
-
-
- }
- //==================================================================
- */
+
//==================================================================
/// From.Output change propagation
void Connection::OnOutputChange(bbtk::BlackBox::Pointer, const std::string&,