X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fstd%2Fsrc%2FbbstdExecBbiCommand.cxx;h=ae427d5bf595f549bb0991464e11b0b8983d1b67;hb=b5526f674bf6a0271d706bef15e46bf305b1d8a2;hp=0310c090375f27c50f60033921b83ddee5183b53;hpb=f0bb9e770f5328accf410d2e6e631ccb7bf3a642;p=bbtk.git diff --git a/packages/std/src/bbstdExecBbiCommand.cxx b/packages/std/src/bbstdExecBbiCommand.cxx index 0310c09..ae427d5 100755 --- a/packages/std/src/bbstdExecBbiCommand.cxx +++ b/packages/std/src/bbstdExecBbiCommand.cxx @@ -16,38 +16,58 @@ 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; + bool delete_inter = false; + 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(); + delete_inter = true; + } + + 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 + + if (delete_inter) delete I; + + /* Grrr not works in windows char * pch; pch = strtok (bbGetInputIn(),";"); while (pch != NULL)