Program: bbtk
Module: $RCSfile: bbtkComplexBlackBoxDescriptor.cxx,v $
Language: C++
- Date: $Date: 2008/01/22 15:02:00 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2008/03/07 10:21:30 $
+ Version: $Revision: 1.12 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
//=======================================================================
/// Default ctor
ComplexBlackBoxDescriptor::ComplexBlackBoxDescriptor(const std::string& name)
- : BlackBoxDescriptor()
+ : BlackBoxDescriptor(),
+ mFactory(0)
{
- bbtkDebugMessageInc("Core",9,"ComplexBlackBoxDescriptor::ComplexBlackBoxDescriptor(\""<<name<<"\")"<<std::endl);
+ bbtkDebugMessageInc("Kernel",9,"ComplexBlackBoxDescriptor::ComplexBlackBoxDescriptor(\""<<name<<"\")"<<std::endl);
SetTypeName(name);
+ AddToCategory("complex box");
mPrototype = new ComplexBlackBox(name+std::string("Prototype"),this);
- bbtkDebugDecTab("Core",9);
+ bbtkDebugDecTab("Kernel",9);
}
//=======================================================================
/// Default dtor
ComplexBlackBoxDescriptor::~ComplexBlackBoxDescriptor()
{
- bbtkDebugMessageInc("Core",9,"ComplexBlackBoxDescriptor::~ComplexBlackBoxDescriptor(\""<<GetTypeName()<<"\")"<<std::endl);
+ bbtkDebugMessageInc("Kernel",9,"ComplexBlackBoxDescriptor::~ComplexBlackBoxDescriptor(\""<<GetTypeName()<<"\")"<<std::endl);
delete mPrototype;
- bbtkDebugDecTab("Core",9);
+ bbtkDebugDecTab("Kernel",9);
}
//=======================================================================
BlackBox* ComplexBlackBoxDescriptor::CreateInstance(const std::string& name)
{
//bbtkError("ComplexBlackBoxDescriptor::CreateInstance not implemented");
- bbtkDebugMessageInc("Core",5,
+ bbtkDebugMessageInc("Kernel",5,
"ComplexBlackBoxDescriptor::CreateInstance(\""
<<name<<"\") ["
<<GetTypeName()<<"]"<<std::endl);
return mPrototype->bbClone(name);
- bbtkDebugDecTab("Core",5);
+ bbtkDebugDecTab("Kernel",5);
}
//=======================================================================
const std::string& name
)
{
- bbtkDebugMessageInc("Core",5,
+ bbtkDebugMessageInc("Kernel",5,
"ComplexBlackBoxDescriptor::Add(\""
<<type<<"\",\""<<name<<"\") ["
<<GetTypeName()<<"]"<<std::endl);
+ //
+ if (mFactory == 0)
+ {
+ bbtkError("ComplexBlackBoxDescriptor::Add : no factory set");
+ }
// Verify that a box with the same name does not exist already
if ( mPrototype->bbUnsafeGetBlackBox( name ) )
bbtkError("a black box \""<<name<<"\" already exists");
}
// ok : create new one
- mPrototype->bbAddBlackBox ( /*mFactory->Create*/ NewBlackBox(type,name) );
+ mPrototype->bbAddBlackBox ( mFactory->NewBlackBox(type,name) );
- bbtkDebugDecTab("Core",5);
+ bbtkDebugDecTab("Kernel",5);
}
//=======================================================================
/// Adds a black box to the execution list
void ComplexBlackBoxDescriptor::AddToExecutionList ( const std::string& box)
{
- bbtkDebugMessageInc("Core",5,
+ bbtkDebugMessageInc("Kernel",5,
"ComplexBlackBoxDescriptor::AddToExecutionList(\""
<<box<<"\" ["
<<GetTypeName()<<"]"<<std::endl);
// ok
mPrototype->bbAddToExecutionList ( box );
- bbtkDebugDecTab("Core",5);
+ bbtkDebugDecTab("Kernel",5);
}
const std::string& input
)
{
- bbtkDebugMessageInc("Core",5,
+ bbtkDebugMessageInc("Kernel",5,
"ComplexBlackBoxDescriptor::Connect(\""
<<from<<"\",\""<<output<<"\",\""
<<to<<"\",\""<<input
<<"\") ["
<<GetTypeName()<<"]"<<std::endl);
+ //
+ if (mFactory == 0)
+ {
+ bbtkError("ComplexBlackBoxDescriptor::Connect : no factory set");
+ }
+
+
// Verify that a box with the same name does not exist already
BlackBox* bbfrom = mPrototype->bbGetBlackBox( from );
if ( !bbfrom )
bbtkError("the black box \""<<to<<"\" does not exist");
}
- Connection* c = /*mFactory->*/ NewConnection( bbfrom, output, bbto, input );
+ Connection* c = mFactory->NewConnection( bbfrom, output, bbto, input );
mPrototype->bbAddConnection(c);
- bbtkDebugDecTab("Core",5);
+ bbtkDebugDecTab("Kernel",5);
}
//=======================================================================
const std::string& input,
const std::string& help)
{
- bbtkDebugMessageInc("Core",5,
+ bbtkDebugMessageInc("Kernel",5,
"ComplexBlackBoxDescriptor::DefineInput(\""
<<name<<"\",\""<<box<<"\",\""
<<input<<"\",\""<<help
<<input<<"\"");
}
- AddInputDescriptor ( new ComplexBlackBoxInputDescriptor ( name,
- help,
- box,
- input,
- bb->bbGetInputType(input)));
-
+ AddInputDescriptor ( new ComplexBlackBoxInputDescriptor
+ ( typeid(ComplexBlackBoxDescriptor),
+ name,
+ help,
+ box,
+ input,
+ bb->bbGetInputType(input)));
+
- bbtkDebugDecTab("Core",5);
+ bbtkDebugDecTab("Kernel",5);
}
//=======================================================================
const std::string& output,
const std::string& help)
{
- bbtkDebugMessageInc("Core",5,
+ bbtkDebugMessageInc("Kernel",5,
"ComplexBlackBoxDescriptor::DefineOutput(\""
<<name<<"\",\""<<box<<"\",\""
<<output<<"\",\""<<help
}
AddOutputDescriptor ( new ComplexBlackBoxOutputDescriptor
- ( name,
+ ( typeid(ComplexBlackBoxDescriptor),
+ name,
help,
box,
output,
bb->bbGetOutputType(output)));
- bbtkDebugDecTab("Core",5);
+ bbtkDebugDecTab("Kernel",5);
}
//=======================================================================
int detail, int level,
const std::string& output_dir, bool relative_link)
{
- bbtkDebugMessageInc("Core",9,
+ bbtkDebugMessageInc("Kernel",9,
"ComplexBlackBoxDescriptor::InsertHtmlHelp() ["
<<GetTypeName()<<"]"<<std::endl);
std::string descr = GetDescription();
- //Utilities::html_format(descr);
+ Utilities::html_format(descr);
+
std::string author = GetAuthor();
Utilities::html_format(author);
+ std::vector<std::string> categories;
+ // Split the category string
+ std::string delimiters = ";,";
+ Utilities::SplitString(GetCategory(),
+ delimiters,categories);
+
+
(s) << "<p><TABLE cellspacing=0 cellpadding=3>\n";
(s) << "<TR><TD style='vertical-align: top;'><b> Description </b></TD><TD style='vertical-align: top;'> : </TD><TD style='vertical-align: top;'> "
- << descr << "</TD></TR>\n";
+ << descr << "</TD></TR>\n";
+
(s) << "<TR><TD style='vertical-align: top;'><b> Author(s) </b></TD><TD style='vertical-align: top;'> : </TD><TD style='vertical-align: top;'> "
- << author << "</TD></TR>\n";
-
+ << author << "</TD></TR>\n";
+
+ (s) << "<TR><TD style='vertical-align: top;'><b> Category(s) </b></TD><TD style='vertical-align: top;'> : </TD><TD style='vertical-align: top;'> ";
+ std::vector<std::string>::iterator ci;
+ for (ci=categories.begin(); ci!=categories.end(); ++ci)
+ {
+ s << "<a href=\"../index-category.html#"<< *ci <<"\">" << *ci
+ << "</a> \n";
+ }
+ s << "</TD></TR>\n";
std::string inc = GetScriptFileName();
if (inc.size()>0)
{
- (s) << "<TR><TD style='vertical-align: top;'><b> Include </b></TD><TD style='vertical-align: top;'> : </TD><TD style='vertical-align: top;'> "
- << inc << "</TD></TR>\n";
+ s << "<TR><TD style='vertical-align: top;'><b> To use it </b></TD><TD style='vertical-align: top;'> : </TD><TD style='vertical-align: top;'> include ";
+ s << inc << " <a href=\"../../../bbs/"<<inc<<"\">[source]</a>";
+ s << "</TD></TR>\n";
}
const ComplexBlackBox::BlackBoxMapType& B = mPrototype->bbGetBlackBoxMap();
if (B.size())
- {
- (s) << "<TR><TD style='vertical-align: top;'><b> Dependencies </b></TD><TD style='vertical-align: top;'> : </TD><TD style='vertical-align: top;'> ";
-
-
-
- std::set<BlackBoxDescriptor*> pdeps;
- ComplexBlackBox::BlackBoxMapType::const_iterator b;
- for ( b = B.begin(); b != B.end(); ++b )
- {
- BlackBoxDescriptor* d = b->second->bbGetDescriptor();
- if (pdeps.find(d) != pdeps.end()) continue;
- pdeps.insert(d);
-
- Package* p = d->GetPackage();
+ {
+ (s) << "<TR><TD style='vertical-align: top;'><b> Uses </b></TD><TD style='vertical-align: top;'> : </TD><TD style='vertical-align: top;'> ";
+
+ std::set<BlackBoxDescriptor*> pdeps;
+ ComplexBlackBox::BlackBoxMapType::const_iterator b;
+ for ( b = B.begin(); b != B.end(); ++b )
+ {
+ BlackBoxDescriptor* d = b->second->bbGetDescriptor();
+ if (pdeps.find(d) != pdeps.end())
+ continue;
+ pdeps.insert(d);
+
+ Package* p = d->GetPackage();
- std::string name = b->second->bbGetTypeName();
+ std::string name = b->second->bbGetTypeName();
- std::string url;
- if (relative_link)
- url = p->GetDocRelativeURL();
- else
- url = p->GetDocURL();
+ std::string url;
+ if (relative_link)
+ url = p->GetDocRelativeURL();
+ else
+ url = p->GetDocURL();
- s << "<a href=\"" <<url<<"#"<<name<<"\">"
- << p->GetName()<<"::"<<name<<"</a>\n";
- }
+ s << "<a href=\"" <<url<<"#"<<name<<"\">"
+ << p->GetName()<<"::"<<name<<"</a>\n";
+ }
- (s) << "</TD></TR>\n";
+ (s) << "</TD></TR>\n";
- }
+ }
- (s) << "</TABLE>\n";
+ (s) << "</TABLE>\n";
//-------------
Utilities::html_format(type);
std::string descr(in->second->GetDescription());
- //Utilities::html_format(descr);
+ Utilities::html_format(descr);
(s) << "<TR><TD style='vertical-align: top;'><B><PRE> "<<name<<" </PRE></B></TD>"
<< "<TD style='vertical-align: top;'><I><PRE> "<<type<<" </PRE></I></TD>"
Utilities::html_format(type);
std::string descr(o->second->GetDescription());
- //Utilities::html_format(descr);
-
+ Utilities::html_format(descr);
(s) << "<TR><TD style='vertical-align: top;'><B><PRE> "<<name<<" </PRE></B></TD>"
<< "<TD style='vertical-align: top;'><I><PRE> "<<type<<" </PRE></I></TD>"
//------------
// End
- bbtkDebugDecTab("Core",9);
+ bbtkDebugDecTab("Kernel",9);
}
//=========================================================================
if (full) bbtkMessage("Help",1,"Complex Black Box <"<<
GetPackage()->GetName()<<"::"
<<GetTypeName()<<">"<<std::endl);
- bbtkMessage("Help",1," "<<GetDescription()<<std::endl);
- bbtkMessage("Help",1," By : "<<GetAuthor()<<std::endl);
+ bbtkMessage("Help",1," " << GetDescription() <<std::endl);
+ bbtkMessage("Help",1," By : " << GetAuthor() <<std::endl);
+ bbtkMessage("Help",1," Category(s) : " << GetCategory() <<std::endl);
if (mInput.size())
bbtkMessage("Help",1," * Inputs : "<<std::endl);
else
unsigned int namelmax = 0;
unsigned int typelmax = 0;
for ( i = mInput.begin(); i != mInput.end(); ++i )
- {
- if (i->second->GetName().size()>namelmax)
- namelmax = i->second->GetName().size();
- if (i->second->GetTypeName().size()>typelmax)
- typelmax = i->second->GetTypeName().size();
- }
+ {
+ if (i->second->GetName().size()>namelmax)
+ namelmax = i->second->GetName().size();
+ if (i->second->GetTypeName().size()>typelmax)
+ typelmax = i->second->GetTypeName().size();
+ }
OutputDescriptorMapType::const_iterator o;
if (full)
- {
- for ( o = mOutput.begin(); o != mOutput.end(); ++o )
- {
- if (o->second->GetName().size()>namelmax)
- namelmax = o->second->GetName().size();
+ {
+ for ( o = mOutput.begin(); o != mOutput.end(); ++o )
+ {
+ if (o->second->GetName().size()>namelmax)
+ namelmax = o->second->GetName().size();
if (o->second->GetTypeName().size()>typelmax)
- typelmax = o->second->GetTypeName().size();
- }
- }
+ typelmax = o->second->GetTypeName().size();
+ }
+ }
//
for ( i = mInput.begin(); i != mInput.end(); ++i )
- {
- std::string name(i->second->GetName());
- name += "'";
- name.append(1+namelmax-name.size(),' ');
- std::string type(i->second->GetTypeName());
- type += ">";
- type.append(1+typelmax-type.size(),' ');
- bbtkMessage("Help",1,
+ {
+ std::string name(i->second->GetName());
+ name += "'";
+ name.append(1+namelmax-name.size(),' ');
+ std::string type(i->second->GetTypeName());
+ type += ">";
+ type.append(1+typelmax-type.size(),' ');
+ bbtkMessage("Help",1,
" '"<<name
<<" <"<<type
<<" : "<<i->second->GetDescription()<<std::endl);
- }
+ }
if (full)
- {
- if (mOutput.size())
- bbtkMessage("Help",1," * Outputs : "<<std::endl);
- else
- bbtkMessage("Help",1," * No outputs"<<std::endl);
- for ( o = mOutput.begin(); o != mOutput.end(); ++o )
- {
- std::string name(o->second->GetName());
- name += "'";
- name.append(1+namelmax-name.size(),' ');
- std::string type(o->second->GetTypeName());
- type += ">";
- type.append(1+typelmax-type.size(),' ');
- bbtkMessage("Help",1,
- " '"<<name
- <<" <"<<type
- <<" : "<<o->second->GetDescription()<<std::endl);
- }
- }
+ {
+ if (mOutput.size())
+ bbtkMessage("Help",1," * Outputs : "<<std::endl);
+ else
+ bbtkMessage("Help",1," * No outputs"<<std::endl);
+ for ( o = mOutput.begin(); o != mOutput.end(); ++o )
+ {
+ std::string name(o->second->GetName());
+ name += "'";
+ name.append(1+namelmax-name.size(),' ');
+ std::string type(o->second->GetTypeName());
+ type += ">";
+ type.append(1+typelmax-type.size(),' ');
+ bbtkMessage("Help",1,
+ " '"<<name
+ <<" <"<<type
+ <<" : "<<o->second->GetDescription()<<std::endl);
+ }
+ }
if (full)
- {
- const ComplexBlackBox::BlackBoxMapType& B = mPrototype->bbGetBlackBoxMap();
+ {
+ const ComplexBlackBox::BlackBoxMapType& B = mPrototype->bbGetBlackBoxMap();
- if (B.size())
- bbtkMessage("Help",1," * Boxes : "<<std::endl);
- else
- bbtkMessage("Help",1," * No boxes"<<std::endl);
+ if (B.size())
+ bbtkMessage("Help",1," * Boxes : "<<std::endl);
+ else
+ bbtkMessage("Help",1," * No boxes"<<std::endl);
- ComplexBlackBox::BlackBoxMapType::const_iterator b;
- for ( b = B.begin(); b != B.end(); ++b )
- {
- bbtkMessage("Help",1," '"<<b->second->bbGetName()<<
- "' <"
- << b->second->bbGetDescriptor()->GetPackage()->GetName()
- <<"::"
- <<b->second->bbGetTypeName()<<">"<<std::endl);
- }
- }
+ ComplexBlackBox::BlackBoxMapType::const_iterator b;
+ for ( b = B.begin(); b != B.end(); ++b )
+ {
+ bbtkMessage("Help",1," '"<<b->second->bbGetName()<<
+ "' <"
+ << b->second->bbGetDescriptor()->GetPackage()->GetName()
+ <<"::"
+ <<b->second->bbGetTypeName()<<">"<<std::endl);
+ }
+ }
}
//=======================================================================