Program: bbtk
Module: $RCSfile: bbtkConnection.cxx,v $
Language: C++
- Date: $Date: 2008/02/05 13:23:46 $
- Version: $Revision: 1.2 $
+ Date: $Date: 2008/04/08 06:59:30 $
+ Version: $Revision: 1.5 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See doc/license.txt or
/// Ctor with the black box from and to and their input and output.
/// Check the input and output compatibility
Connection::Connection(BlackBox* from, const std::string& output,
- BlackBox* to, const std::string& input )
+ BlackBox* to, const std::string& input ,
+ const Factory* f )
: mAdaptor(0),
+ mFactory(f),
mFromAny(false),
mToAny(false)
{
if (to->bbGetInputConnectorMap().find(input)->second->IsConnected())
{
- bbtkError("The input \""<<input<<"\" of the box \""<<to->bbGetTypeName()
+ bbtkError("The input \""<<input<<"\" of the box \""<<to->bbGetName()
<<"\" is already connected");
}
std::string name;
name = from->bbGetName() + "." + output + "-"
+ to->bbGetName() + "." + input;
- mAdaptor = NewAdaptor(from->bbGetOutputType(output),
+ mAdaptor = mFactory->NewAdaptor(from->bbGetOutputType(output),
to->bbGetInputType(input),
name);
if (!mAdaptor)
//==================================================================
-
+ void Connection::Clear()
+ {
+ mFrom = 0;
+ mTo = 0;
+ mAdaptor = 0;
+ }
+
//==================================================================
/// Dtor
Connection::~Connection()
"Connection::~Connection() ["
<<GetFullName()<<"]"<<std::endl);
- mFrom->bbDisconnectOutput(mOutput,this);
- mTo->bbDisconnectInput(mInput,this);
+ if (mFrom) mFrom->bbDisconnectOutput(mOutput,this);
+ if (mTo) mTo->bbDisconnectInput(mInput,this);
if (mAdaptor) mAdaptor->bbDelete();
bbtkDebugDecTab("Kernel",7);
bbtk::BlackBox* adaptor = 0;
try
{
- adaptor = NewAdaptor(mFrom->bbGetOutput(mOutput).type(),
+ adaptor = mFactory->NewAdaptor(mFrom->bbGetOutput(mOutput).type(),
mTo->bbGetInputType(mInput),
"");
}