]> Creatis software - bbtk.git/blobdiff - packages/std/src/bbstdExecBbiCommand.cxx
new
[bbtk.git] / packages / std / src / bbstdExecBbiCommand.cxx
index ae427d5bf595f549bb0991464e11b0b8983d1b67..903ea5db7e34e6a59c46f102b01f7703ed0afc86 100755 (executable)
@@ -1,12 +1,13 @@
 #include "bbstdExecBbiCommand.h"
 #include "bbstdPackage.h"
 #include "bbtkInterpreter.h"
+#include "bbtkExecuter.h"
 
 namespace bbstd
 {
 
   BBTK_ADD_BLACK_BOX_TO_PACKAGE(std,ExecBbiCommand);
-  BBTK_USER_BLACK_BOX_IMPLEMENTATION(ExecBbiCommand,bbtk::AtomicBlackBox);
+  BBTK_BLACK_BOX_IMPLEMENTATION(ExecBbiCommand,bbtk::AtomicBlackBox);
 
   void ExecBbiCommand::bbUserConstructor() 
   { 
@@ -16,13 +17,15 @@ namespace bbstd
 
   void ExecBbiCommand::DoProcess()
     {
+     
       // Look for the interpreter
-      bbtk::Interpreter* I = 0;
+      bbtk::Interpreter::Pointer I;
          bool delete_inter = false; 
          if (bbGetParent() != 0) 
        {
-         bbtk::Factory* f = ((bbtk::ComplexBlackBoxDescriptor*)bbGetParent()
-                       ->bbGetDescriptor())->GetFactory();
+         bbtk::Factory::Pointer f 
+               = ((bbtk::ComplexBlackBoxDescriptor*)bbGetParent()
+                 ->bbGetDescriptor().get())->GetFactory();
          if ((f != 0)&&
              (f->GetExecuter()))
            {
@@ -32,11 +35,11 @@ namespace bbstd
       if (I==0) 
        {
          //      bbtkError("ExecBbiCommand::DoProcess() : could not find interpreter");
-         I = new bbtk::Interpreter();
+         I = bbtk::Interpreter::New();
          delete_inter = true; 
        }
 
-      int i;
+      unsigned int i;
       
       bool ok=true;
       int pos1=0,pos2;
@@ -58,14 +61,14 @@ namespace bbstd
                  ccommand[i]=34;
                }
            }           
-         bool insideComment = false; // for multiline comment
-         I->InterpretLine( ccommand, insideComment);
+       
+         I->InterpretLine( ccommand );
          pos1=pos2+1;
          pos2 = bbGetInputIn().find(";",pos2+1);
          
        }
       
-      if (delete_inter) delete I;
+//      if (delete_inter) delete I;
       
       /*  Grrr  not works in windows
        char * pch;