]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkExecuter.h
=== MAJOR RELEASE ====
[bbtk.git] / kernel / src / bbtkExecuter.h
index 5f8b8a4ff25ed2dda5b7a74e78ee68a2bcdbb89d..1e59b2c488e8e248d53676084726f8f3765ccf22 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkExecuter.h,v $ $
   Language:  C++
-  Date:      $Date: 2008/04/08 06:59:30 $
-  Version:   $Revision: 1.12 $
+  Date:      $Date: 2008/04/18 12:59:15 $
+  Version:   $Revision: 1.13 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -43,19 +43,16 @@ namespace bbtk
 
   class /*BBTK_EXPORT*/ Executer : public VirtualExec
   {
-
+    BBTK_OBJECT_INTERFACE(Executer);
+    typedef VirtualExec Superclass;
   public:
-
-    /// Constructor
-    Executer();
-    /// Destructor
-    ~Executer();
+    static Pointer New();
     
 
     /// Gets the factory used by the executer
-    Factory* GetFactory() { return mFactory; }
+    Factory::Pointer GetFactory() { return mFactory; }
     /// Gets the factory used by the executer (const)
-    const Factory* GetFactory() const { return mFactory; }
+    //    const Factory::Pointer GetFactory() const { return mFactory; }
 
 
     /// Sets the inputs of the workspace : 
@@ -183,13 +180,19 @@ namespace bbtk
   //  static const std::string& GetObjectDescription();
   //  { static std::string s("Executer"); return s; }
 
+
+    ComplexBlackBoxDescriptor::Pointer GetWorkspace() 
+    { return mRootCBB.lock(); }
+    Package::Pointer GetUserPackage() 
+    { return mRootPackage.lock(); }
+
   protected:
 
   private:
 
     /// Gets the current working black box 
-    ComplexBlackBoxDescriptor* Current() 
-       { return mOpenDefinition.back().box; }
+    ComplexBlackBoxDescriptor::Pointer Current() 
+    { return mOpenDefinition.back().box; }
     
     /// Returns true when we are inside a define/endefine block
     //    bool InDefinitionBlock() { return (mOpenDefinition.size()>1); }
@@ -198,26 +201,27 @@ namespace bbtk
     // ATTRIBUTES
      
     /// The factory used
-    Factory* mFactory;
+    Factory::Pointer mFactory;
     
  
     /// The Root Package 
     /// Contains the root ComplexBlabkBox
     /// In which ComplexBlackBoxes are put by default
     /// Its name in bbi is 'user'
-    Package* mRootPackage;
+    Package::WeakPointer mRootPackage;
     
     /// The root ComplexBlackBox
     /// in which operations are done when outside a define/endefine block
     /// Its name in bbi is 'workspace'  
-    ComplexBlackBoxDescriptor* mRootCBB;
+    ComplexBlackBoxDescriptor::WeakPointer mRootCBB;
 
     /// Struct that stores info on user defined complex black boxes
     struct CBBDefinition
     {
-      ComplexBlackBoxDescriptor* box;
+      ComplexBlackBoxDescriptor::Pointer box;
       std::string package;
-      CBBDefinition(ComplexBlackBoxDescriptor* d, const std::string& p )
+      CBBDefinition(ComplexBlackBoxDescriptor::Pointer d, 
+                   const std::string& p )
         : box(d), package(p) {}
     };
 
@@ -228,7 +232,7 @@ namespace bbtk
 
     /// The stack of current working package
     /// (is a stack for nested definitions)
-    std::deque<Package*> mOpenPackage;
+    std::deque<Package::WeakPointer> mOpenPackage;
 
     /// The input values of the Root ComplexBlackBox
     std::map<std::string,std::string> mInputs;