]> Creatis software - bbtk.git/blobdiff - packages/std/src/bbstdExecBbiCommand.cxx
* Fixed problem with 'include *'
[bbtk.git] / packages / std / src / bbstdExecBbiCommand.cxx
index 0310c090375f27c50f60033921b83ddee5183b53..feb9588e2b7502e5cd8bdf3b63b616a4eaa4a4ab 100755 (executable)
@@ -16,38 +16,56 @@ namespace bbstd
 
   void ExecBbiCommand::DoProcess()
     {
-       int i;
-       
-       bool ok=true;
-       int pos1=0,pos2;
-       pos2 = bbGetInputIn().find(";",pos1);
-       std::string ccommand;
-       while (ok==true)
+      // Look for the interpreter
+      bbtk::Interpreter* I = 0;
+      if (bbGetParent() != 0) 
        {
-               if (pos2==-1) 
+         bbtk::Factory* f = ((bbtk::ComplexBlackBoxDescriptor*)bbGetParent()
+                       ->bbGetDescriptor())->GetFactory();
+         if ((f != 0)&&
+             (f->GetExecuter()))
+           {
+             I = f->GetExecuter()->GetInterpreter();
+           }
+       }
+      if (I==0) 
+       {
+         //      bbtkError("ExecBbiCommand::DoProcess() : could not find interpreter");
+         I = new bbtk::Interpreter();
+       }
+
+      int i;
+      
+      bool ok=true;
+      int pos1=0,pos2;
+      pos2 = bbGetInputIn().find(";",pos1);
+      std::string ccommand;
+      while (ok==true)
+       {
+         if (pos2==-1) 
+           {
+             ok=false;
+             ccommand=bbGetInputIn().substr(pos1,bbGetInputIn().length()-pos1 );
+           } else {
+           ccommand=bbGetInputIn().substr(pos1,pos2-pos1);
+         }
+         for ( i=0 ; i < ccommand.length() ; i++)
+           {
+             if (ccommand[i]==39)
                {
-                       ok=false;
-                       ccommand=bbGetInputIn().substr(pos1,bbGetInputIn().length()-pos1 );
-               } else {
-                       ccommand=bbGetInputIn().substr(pos1,pos2-pos1);
+                 ccommand[i]=34;
                }
-               for ( i=0 ; i < ccommand.length() ; i++)
-               {
-                       if (ccommand[i]==39)
-                       {
-                               ccommand[i]=34;
-                       }
-               }               
-      bool insideComment = false; // for multiline comment
-               bbtk::Interpreter::mGlobalInterpreter->InterpretLine( ccommand, insideComment);
-               pos1=pos2+1;
-               pos2 = bbGetInputIn().find(";",pos2+1);
-
+           }           
+         bool insideComment = false; // for multiline comment
+         I->InterpretLine( ccommand, insideComment);
+         pos1=pos2+1;
+         pos2 = bbGetInputIn().find(";",pos2+1);
+         
        }
-       
-
-
-/*  Grrr  not works in windows
+      
+      
+      
+      /*  Grrr  not works in windows
        char * pch;
        pch = strtok (bbGetInputIn(),";");
        while (pch != NULL)