]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkInterpreter.h
*** empty log message ***
[bbtk.git] / kernel / src / bbtkInterpreter.h
index b5ca18f3d168b349e071155f4eb53a76c83d8b41..ee5c86c587bd98c1ca5ecf276c16370892bf14a9 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkInterpreter.h,v $ $
   Language:  C++
-  Date:      $Date: 2008/04/18 12:59:15 $
-  Version:   $Revision: 1.26 $
+  Date:      $Date: 2008/07/23 11:46:11 $
+  Version:   $Revision: 1.32 $
 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -28,6 +28,7 @@
 #define __bbtkInterpreter_h__
 
 #include "bbtkVirtualExec.h"
+#include "bbtkExecuter.h"
 
 #include <fstream>
 #include <deque>
@@ -44,7 +45,7 @@ namespace bbtk
   {
   public: 
     InterpreterUser() {}
-    ~InterpreterUser() {}
+    virtual ~InterpreterUser() {}
 
     virtual bool InterpreterUserHasOwnHtmlPageViewer() { return false; }
     virtual void InterpreterUserViewHtmlPage(const std::string&) {}
@@ -85,10 +86,11 @@ namespace bbtk
   //=======================================================================
   class BBTK_EXPORT Interpreter : public Object
   {
-    BBTK_OBJECT_INTERFACE(Interpreter);
+    BBTK_OBJECT_INTERFACE_NO_CONDES(Interpreter);
     typedef Object Superclass;
   public:
     static Pointer New(const std::string& cpp_file = "");
+    static Pointer New(VirtualExec::Pointer);
 
     typedef enum 
       {
@@ -116,17 +118,18 @@ namespace bbtk
     /// Sets the inputs of the workspace :
     /// the map is passed as is to the Executer
     void SetInputs(const std::map<std::string,std::string>& m)
-    { mExecuter->SetInputs(m); }
+    { mVirtualExecuter->SetInputs(m); }
 
     /// Puts the executer in "no exec" mode,
     /// which creates but does not execute pipelines.
-    void SetNoExecMode(bool b) { mExecuter->SetNoExecMode(b); }
+    void SetNoExecMode(bool b) { mVirtualExecuter->SetNoExecMode(b); }
 
     ///
     //typedef Executer::DialogModeType DialogModeType;
     typedef VirtualExec::DialogModeType DialogModeType;
 
-    void SetDialogMode(DialogModeType t) { mExecuter->SetDialogMode(t); }
+    void SetDialogMode(DialogModeType t) 
+    { mVirtualExecuter->SetDialogMode(t); }
 
     /// Sets the bool that indicates wether we are in command line context
     void SetCommandLine(bool v = true) { mCommandLine = v; }
@@ -144,7 +147,7 @@ namespace bbtk
 #endif
 
     /// Gets the Executer 
-    VirtualExec::Pointer GetExecuter() const { return mExecuter; }
+    VirtualExec::Pointer GetExecuter() const { return mVirtualExecuter; }
 
 
   protected:
@@ -180,7 +183,7 @@ namespace bbtk
       cKind, // LG
       cNewGUI, // LG
       cWorkspace, // LG
-      cObject
+      cDebug // LG
     } CommandCodeType;
 
     /// The structure storing the informations on a command 
@@ -223,6 +226,9 @@ namespace bbtk
     /// Closes all open files
     void CloseAllFiles();
 
+    /// Resets all
+    void Reset();
+
     /// Displays help (entry point of any help)
     void Help(const std::vector<std::string>& words);
 
@@ -255,13 +261,17 @@ namespace bbtk
     void NewGUI(const std::string& box, 
                const std::string& instanceName);
 
-    void ObjectInfo(const std::string& name);
+    void Debug(const std::string& arg);
 
   private:
 
     /// Constructor
     Interpreter(const std::string& cpp_file = "");
 
+    Interpreter(VirtualExec::Pointer);
+
+    void Init(VirtualExec::Pointer, const std::string& cpp_file);
+
     /// Opens the file fullPathScriptName 
     /// includeScriptName is the name as given to the include command 
     void LoadScript( std::string fullPathScriptName,
@@ -278,7 +288,8 @@ namespace bbtk
     // ATTRIBUTES
 
     /// The command executer used
-    bbtk::VirtualExec::Pointer mExecuter;
+    bbtk::VirtualExec::Pointer mVirtualExecuter;
+    bbtk::Executer::WeakPointer mRealExecuter;
 
     /// The user of  the interpreter (0 if none)
     bbtk::InterpreterUser* mUser;
@@ -313,6 +324,9 @@ namespace bbtk
     
     bool mThrow;
 
+       protected:
+       ~Interpreter();
+
   };
   // EO class Interpreter