]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkExecuter.cxx
*** empty log message ***
[bbtk.git] / kernel / src / bbtkExecuter.cxx
index ddda38ace0fc164b55943fbcf67a6a6bb5fb0751..8730b02eb2387ef7ea7bba95ce8f107e1ebea92f 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkExecuter.cxx,v $ $
   Language:  C++
-  Date:      $Date: 2008/01/22 15:02:00 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/01/28 15:34:37 $
+  Version:   $Revision: 1.3 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -104,12 +104,12 @@ namespace bbtk
     mRoot = new ComplexBlackBoxDescriptor("workspace"); //,f);
     mRoot->AddToAuthor("bbi (internal)");
     mRoot->AddToDescription("User's workspace");
-    mCurrent.push_back(CBBDefinition(mRoot,"user"));
+    mOpenDefinition.push_back(CBBDefinition(mRoot,"user"));
     // Register it into the user package
     mPackage->RegisterBlackBox(mRoot);
     // Insert the user package in the factory
     InsertPackage(mPackage);
-
+    mOpenPackage.push_back(mPackage);
     bbtkDebugDecTab("Core",9);
   }
   
@@ -119,6 +119,31 @@ namespace bbtk
     mPackage->ChangeBlackBoxName( mRoot->GetTypeName(), n );
   }
   
+  void Executer::BeginPackage (const std::string &name)
+  {
+     bbtkDebugMessageInc("Core",9,"Executer::BeginPackage(\""<<name<<"\")" 
+                        <<std::endl);  
+     Package* p;
+     try 
+      {
+       p = GetGlobalFactory()->GetPackage(name);
+      }
+    catch (Exception e)
+      {
+       p = new Package(name,
+                       "",
+                       "",
+                       "",
+                       BBTK_STRINGIFY_SYMBOL(BBTK_VERSION));
+       InsertPackage(p);
+      }
+     mOpenPackage.push_back(p); 
+  }
+
+  void Executer::EndPackage()
+  {
+    if (mOpenPackage.size()>1) mOpenPackage.pop_back();
+  }
 
   void Executer::Define (const std::string &name,
                         const std::string &pack,
@@ -130,7 +155,7 @@ namespace bbtk
 
     ComplexBlackBoxDescriptor* b = new ComplexBlackBoxDescriptor(name);
     b->SetScriptFileName(scriptfilename);
-    mCurrent.push_back( CBBDefinition( b, pack ) );
+    mOpenDefinition.push_back( CBBDefinition( b, pack ) );
     
     bbtkDebugDecTab("Core",9);
   }
@@ -141,8 +166,11 @@ namespace bbtk
                         <<Current()->GetTypeName()<<"\")" 
                         <<std::endl);
     // Does current package exist ?
-    std::string pname(mCurrent.back().package);
     Package* p;
+
+    std::string pname(mOpenDefinition.back().package);
+    if (pname.size()>0)
+      {
     try 
       {
        p = GetGlobalFactory()->GetPackage(pname);
@@ -156,10 +184,14 @@ namespace bbtk
                        BBTK_STRINGIFY_SYMBOL(BBTK_VERSION));
        InsertPackage(p);
       }
-
+      }
+    else 
+      {
+       p = mOpenPackage.back();
+      }
     p->RegisterBlackBox(Current());
     
-    mCurrent.pop_back();
+    mOpenDefinition.pop_back();
   }
 
 
@@ -418,11 +450,21 @@ namespace bbtk
        relative_link = false;
       }
 
+    
+    Package* p;
+    try 
+      {
+       p = GetGlobalFactory()->GetPackage(nameblackbox);
+      }
+    catch (Exception e)
+      {
+       p = mPackage;
+      }
     // Generating documentation-help of workspace
-    mPackage->SetDocURL(filename_rootHtml);
-    mPackage->SetDocRelativeURL(simplefilename_rootHtml);
+    p->SetDocURL(filename_rootHtml);
+    p->SetDocRelativeURL(simplefilename_rootHtml);
 
-    mPackage->CreateHtmlPage(filename_rootHtml,"bbi","user package",custom_header,custom_title,detail,level,relative_link);
+    p->CreateHtmlPage(filename_rootHtml,"bbi","user package",custom_header,custom_title,detail,level,relative_link);
     
     std::string page = filename_rootHtml;
     /*