]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkInterpreter.cxx
*** empty log message ***
[bbtk.git] / kernel / src / bbtkInterpreter.cxx
index 62f523319641ce16d9e5e447d22207fcbd2ebc81..f908f65155cf2c42396d08a64f2b98edd2a265b6 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkInterpreter.cxx,v $ $
   Language:  C++
-  Date:      $Date: 2008/04/25 08:05:23 $
-  Version:   $Revision: 1.65 $
+  Date:      $Date: 2008/05/15 08:02:36 $
+  Version:   $Revision: 1.66 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -42,25 +42,48 @@ namespace bbtk
  //=======================================================================
   Interpreter::Pointer Interpreter::New(const std::string& cpp_file) 
   {
-    bbtkDebugMessage("Kernel",9,"Interpreter::New()"<<std::endl);
+    bbtkDebugMessage("Kernel",9,"Interpreter::New('"<<cpp_file<<"')"<<std::endl);
     return MakePointer(new Interpreter(cpp_file));
   }
  //=======================================================================
 
+ //=======================================================================
+  Interpreter::Pointer Interpreter::New(VirtualExec::Pointer e) 
+  {
+    bbtkDebugMessage("Kernel",9,"Interpreter::New(VirtualExec)"<<std::endl);
+    return MakePointer(new Interpreter(e));
+  }
+ //=======================================================================
+
  //=======================================================================
   Interpreter::Interpreter(const std::string& cpp_file) 
-    :
-    mUser(0),
-    mCommandLine(false),
-    mThrow(false)
   {
+    Init(VirtualExec::Pointer(), cpp_file);
+  }
+  //=======================================================================
+
+ //=======================================================================
+  Interpreter::Interpreter(VirtualExec::Pointer e) 
+  {
+    Init(e,"");
+  }
+  //=======================================================================
 
+  //=======================================================================
+  void Interpreter::Init(VirtualExec::Pointer e, const std::string& cpp_file) 
+  {
+    mUser = 0;
+    mCommandLine = false;
+    mThrow = false;
     bufferNb =0;  
     bbtk::MessageManager::RegisterMessageType("echo","Level>0 : Prints the output of the 'print' commands of the user.\n\tLevel>1 : Prints the command being interpreted",1);
     bbtk::MessageManager::RegisterMessageType("Interpreter","Messages of the interpreter",0);
     bbtkDebugMessageInc("Interpreter",9,"Interpreter::Interpreter()" <<std::endl);
-    if (cpp_file.size()!=0)
+    if (e)
+      {
+       mVirtualExecuter = e;
+      }
+    else if (cpp_file.size()!=0)
       {
        mVirtualExecuter = boost::static_pointer_cast<VirtualExec>(bbtk::Transcriptor::New(cpp_file));
       }
@@ -72,7 +95,7 @@ namespace bbtk
       }
 
     // Lock this pointer or will auto-destruct !!
-    mVirtualExecuter->SetInterpreter(MakePointer(this,true));
+    if (!e) mVirtualExecuter->SetInterpreter(MakePointer(this,true));
     
     // For the time being, comment out previous line, and
     // uncomment next line to check Transcriptor