]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkComplexBlackBoxDescriptor.cxx
*** empty log message ***
[bbtk.git] / kernel / src / bbtkComplexBlackBoxDescriptor.cxx
index 4d6b6e88533c1b74a84e978766b12cf5d6c40fe4..99133dace43038feb6fed70eff5dfd8ca21f921c 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkComplexBlackBoxDescriptor.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/01/22 15:02:00 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/02/08 11:56:10 $
+  Version:   $Revision: 1.9 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -35,10 +35,11 @@ namespace bbtk
   ComplexBlackBoxDescriptor::ComplexBlackBoxDescriptor(const std::string& name)
     : BlackBoxDescriptor()
   {
-    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);
   }
   //=======================================================================
 
@@ -48,11 +49,11 @@ namespace bbtk
   /// 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);
   }
   //=======================================================================
 
@@ -62,14 +63,14 @@ namespace bbtk
   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);
   }
   //=======================================================================
 
@@ -81,7 +82,7 @@ namespace bbtk
                                        const std::string& name
                                        )
   {
-    bbtkDebugMessageInc("Core",5,
+    bbtkDebugMessageInc("Kernel",5,
                        "ComplexBlackBoxDescriptor::Add(\""
                        <<type<<"\",\""<<name<<"\") ["
                        <<GetTypeName()<<"]"<<std::endl);
@@ -95,7 +96,7 @@ namespace bbtk
     // ok : create new one
     mPrototype->bbAddBlackBox ( /*mFactory->Create*/ NewBlackBox(type,name) );
 
-    bbtkDebugDecTab("Core",5);
+    bbtkDebugDecTab("Kernel",5);
   }
   //=======================================================================
 
@@ -103,7 +104,7 @@ namespace bbtk
   /// 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);
@@ -116,7 +117,7 @@ namespace bbtk
     // ok 
     mPrototype->bbAddToExecutionList ( box  );
 
-    bbtkDebugDecTab("Core",5);
+    bbtkDebugDecTab("Kernel",5);
     }
 
 
@@ -128,7 +129,7 @@ namespace bbtk
                                            const std::string& input
                                            )
   {
-    bbtkDebugMessageInc("Core",5,
+    bbtkDebugMessageInc("Kernel",5,
                        "ComplexBlackBoxDescriptor::Connect(\""
                        <<from<<"\",\""<<output<<"\",\""
                        <<to<<"\",\""<<input
@@ -150,7 +151,7 @@ namespace bbtk
 
     mPrototype->bbAddConnection(c);
 
-    bbtkDebugDecTab("Core",5);
+    bbtkDebugDecTab("Kernel",5);
   }
   //=======================================================================
 
@@ -162,7 +163,7 @@ namespace bbtk
                                                const std::string& input,
                                                const std::string& help)
   {
-    bbtkDebugMessageInc("Core",5,
+    bbtkDebugMessageInc("Kernel",5,
                        "ComplexBlackBoxDescriptor::DefineInput(\""
                        <<name<<"\",\""<<box<<"\",\""
                        <<input<<"\",\""<<help
@@ -181,14 +182,16 @@ namespace bbtk
                  <<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);
   }
   //=======================================================================
 
@@ -199,7 +202,7 @@ namespace bbtk
                                                 const std::string& output,
                                                 const std::string& help)
   {
-    bbtkDebugMessageInc("Core",5,
+    bbtkDebugMessageInc("Kernel",5,
                        "ComplexBlackBoxDescriptor::DefineOutput(\""
                        <<name<<"\",\""<<box<<"\",\""
                        <<output<<"\",\""<<help
@@ -219,14 +222,15 @@ namespace bbtk
       }
     
     AddOutputDescriptor ( new ComplexBlackBoxOutputDescriptor 
-                         ( name,
+                         ( typeid(ComplexBlackBoxDescriptor),
+                           name,
                            help,
                            box,
                            output,
                            bb->bbGetOutputType(output)));
     
     
-    bbtkDebugDecTab("Core",5);
+    bbtkDebugDecTab("Kernel",5);
   }
   //=======================================================================
 
@@ -256,7 +260,7 @@ namespace bbtk
                                                   int detail, int level,
                                                   const std::string& output_dir, bool relative_link)
   {
-    bbtkDebugMessageInc("Core",9,
+    bbtkDebugMessageInc("Kernel",9,
                        "ComplexBlackBoxDescriptor::InsertHtmlHelp() ["
                        <<GetTypeName()<<"]"<<std::endl);
     
@@ -277,59 +281,76 @@ namespace bbtk
 
 
     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>&nbsp;\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 << "&nbsp;&nbsp;<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";
 
  
    //-------------
@@ -360,7 +381,7 @@ namespace bbtk
        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>"
@@ -393,8 +414,7 @@ namespace bbtk
        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>"
@@ -406,7 +426,7 @@ namespace bbtk
     //------------
     // End
 
-    bbtkDebugDecTab("Core",9);
+    bbtkDebugDecTab("Kernel",9);
    }
   //=========================================================================
  
@@ -417,8 +437,9 @@ namespace bbtk
     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 
@@ -427,77 +448,77 @@ namespace bbtk
     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);
+          }
+    }
 
   }   
   //=======================================================================