Index: trunk/SophyaPI/PIext/basexecut.cc
===================================================================
--- trunk/SophyaPI/PIext/basexecut.cc	(revision 1265)
+++ trunk/SophyaPI/PIext/basexecut.cc	(revision 1268)
@@ -44,5 +44,5 @@
  
 /* --Methode-- */
-int PIABaseExecutor::Execute(string& kw, vector<string>& tokens)
+int PIABaseExecutor::Execute(string& kw, vector<string>& tokens, string& toks)
 {
 Services2NObjMgr* srvo = mObjMgr->GetServiceObj();
Index: trunk/SophyaPI/PIext/basexecut.h
===================================================================
--- trunk/SophyaPI/PIext/basexecut.h	(revision 1265)
+++ trunk/SophyaPI/PIext/basexecut.h	(revision 1268)
@@ -13,5 +13,5 @@
 		PIABaseExecutor(PIACmd* piac, NamedObjMgr* omg, PIStdImgApp* app);
   virtual	~PIABaseExecutor();
-  virtual int	Execute(string& keyw, vector<string>& args);
+  virtual int	Execute(string& keyw, vector<string>& args, string& toks);
 
 protected :
Index: trunk/SophyaPI/PIext/cxxexecutor.cc
===================================================================
--- trunk/SophyaPI/PIext/cxxexecutor.cc	(revision 1265)
+++ trunk/SophyaPI/PIext/cxxexecutor.cc	(revision 1268)
@@ -12,8 +12,15 @@
 /* --Methode-- */
 CxxExecutor::CxxExecutor(PIACmd *mpiac, PIStdImgApp* /* app */)
-  : mUserCodeFn(""), mCompOpt(""), mLinkOpt(""), mMyLibs("")
+  : mUserCodeFn(""), mUserFctFn(""), mCompOpt(""), mLinkOpt(""), mMyLibs("")
+  , mDefTmp(""), mDefRoot("cxx_spiapp"), mDefFunc("usercxx")
 {
 mIncList.resize(0);
 mCallArgs.resize(0);
+
+// Gestion des fichiers par default dans TmpDir 
+//.... CMV a gerer mais pas forcement OK ... voir avec Rz
+//NamedObjMgr omg;
+//string tmpdir = omg.GetTmpDir();
+//if(tmpdir.size()>1) mDefTmp = tmpdir;
 
 // On enregistre les nouvelles commandes 
@@ -24,12 +31,12 @@
 usage = "c++exec: Execute the following c++ user code\n";
 usage+= "Usage: c++exec c++ user code\n";
-usage+= "Warning: c++ user code can be found in \"cxx_spiapp.h\"\n";
-usage+= "         total generated code can be found in \"cxx_spiapp.cc\"";
+usage+= "Warning: c++ user code can be found in \"TmpDir/"+mDefRoot+".h\"\n";
+usage+= "         total generated code can be found in \"TmpDir/"+mDefRoot+".cc\"";
 mpiac->RegisterCommand(kw, usage, this, hgrp);
 
 kw = "c++execfrf";
-usage = "c++execfrf: Execute c++ user code contained in a file\n";
-usage+= "Usage: c++execfrf fileuser.cc\n";
-usage+= "Warning: total generated code can be found in \"cxx_spiapp.cc\"";
+usage = "c++execfrf: Execute c++ user_code [user_function_code]\n";
+usage+= "Usage: c++execfrf fileuser.cc [fileuserfct.cc]\n";
+usage+= "Warning: total generated code can be found in \"TmpDir/"+mDefRoot+".cc\"";
 mpiac->RegisterCommand(kw, usage, this, hgrp);
 
@@ -48,6 +55,7 @@
 kw = "c++createfrf";
 usage = "c++createfrf: create a file \"file.cc\"to be used by spiapp\n";
-usage+= "              with a user file \"fileuser.cc\"\n";
-usage+= "Usage: c++createfrf file.cc func fileuser.cc\n";
+usage+= "              with a user file code \"fileuser.cc\"\n";
+usage+= "             and an optional user function code \"fileuserfct.cc\"\n";
+usage+= "Usage: c++createfrf file.cc func fileuser.cc [fileuserfct.cc]\n";
 mpiac->RegisterCommand(kw, usage, this, hgrp);
 
@@ -105,15 +113,25 @@
 
 /* --Methode-- */
-int CxxExecutor::Execute(string& kw, vector<string>& tokens)
+int CxxExecutor::Execute(string& kw, vector<string>& tokens, string& toks)
 {
 int rc=0;
-if(kw == "c++exec" || kw == "c++execfrf") {
+if(kw == "c++exec") {
   if(tokens.size()<1) {
     cout<<"Usage: c++exec c++ user code"<<endl;
-    cout<<"Usage: c++execfrf fileuser.cc"<<endl;
     return(1);
   }
-  if(kw == "c++exec")    rc = FillUserCode(tokens,0);
-  if(kw == "c++execfrf") rc = FillUserCode(tokens[0]);
+  rc = FillUserCode(toks,0); if(rc) return(1);
+  rc = CrFile();   if(rc) return(1);
+  rc = Compile();  if(rc) return(1);
+  rc = Link();     if(rc) return(1);
+  rc = Call();     if(rc) return(1);
+
+} else if(kw == "c++execfrf") {
+  if(tokens.size()<1) {
+    cout<<"Usage: c++execfrf fileuser.cc [fileuserfct.cc]"<<endl;
+    return(1);
+  }
+  if(tokens.size()>1) rc = FillUserCode(tokens[0],tokens[1]);
+    else              rc = FillUserCode(tokens[0]);
   if(rc) return(1);
   rc = CrFile();   if(rc) return(1);
@@ -132,13 +150,15 @@
     return(1);
   }
-  rc = FillUserCode(tokens,2);       if(rc) return(1);
+  rc = FillUserCode(toks,2);       if(rc) return(1);
   rc = CrFile(tokens[0],tokens[1]);  if(rc) return(1);
 
 } else if(kw == "c++createfrf") {
   if(tokens.size()<3) {
-    cout<<"Usage: c++createfrf file.cc func fileuser.cc"<<endl;
+    cout<<"Usage: c++createfrf file.cc func fileuser.cc [fileuserfct.cc]"<<endl;
     return(1);
   }
-  rc = FillUserCode(tokens[2]);     if(rc) return(1);
+  if(tokens.size()>3) rc = FillUserCode(tokens[2],tokens[3]);
+    else              rc = FillUserCode(tokens[2]);
+  if(rc) return(1);
   rc = CrFile(tokens[0],tokens[1]); if(rc) return(1);
 
@@ -173,30 +193,5 @@
     {cout<<"c++mylibs "<<GetLinkLibs()<<endl; return(0);}
   FillLinkLibs(tokens);
-
-
-//// A VIRER quand variable de objmanager OK  --> Pour Reza
-} else if(kw == "c++setvar") {
-  if(tokens.size()<2) {
-    cout<<" Usage: c++setvar varname varcontent "<<endl;
-    return(1);
-  }
-  string varcont = tokens[1];
-  if(tokens.size()>2) 
-    for(uint_4 i=2;i<tokens.size();i++) varcont += " " + tokens[i] ;
-  NamedObjMgr omg;
-  omg.SetVar(tokens[0], varcont);
-} else if(kw == "c++getvar") {
-  if(tokens.size()<1) {
-    cout<<" Usage: c++getvar varname "<<endl;
-    return(1);
-  }
-  NamedObjMgr omg;
-  cout<<"c++getvar("<<tokens[0]<<")="<<omg.GetVar(tokens[0])<<endl;
-}  else if(kw == "c++varlist") {
-  NamedObjMgr omg; 
-  cout<<omg.GetVarList();
-}
-//// A VIRER quand variable de objmanager OK  --> Pour Reza
-
+}
 
 return(0);
@@ -204,30 +199,9 @@
 
 /* --Methode-- */
-int CxxExecutor::ExecuteCxx(string const & code)
-{
-  int rc;
-
-  mUserCodeFn = "";
-  mUserCodeFn = "cxx_spiapp.h";
-  ofstream os(mUserCodeFn.c_str(),ios::out);
-  if(!os) {cout<<"CxxExecutor::ExecuteCxx(): unable to open "
-	       <<mUserCodeFn<<endl;  mUserCodeFn = ""; return 1;}
-  
-  os << code ;
-  os << endl ;
-
-  cout<<"CxxExecutor: User code filled from standard input into "
-      <<mUserCodeFn<<endl;
-  
-  rc = CrFile();   if(rc) return(1);
-  rc = Compile();  if(rc) return(1);
-  rc = Link();     if(rc) return(1);
-  rc = Call();     if(rc) return(1);
-  return(rc);
-}
-
-/* --Methode-- */
 int CxxExecutor::CrFile(string cfilename,string func)
 {
+if(cfilename.size()<1) cfilename = mDefTmp + mDefRoot + ".cc";
+if(func.size()<1) func = mDefFunc;
+
 ofstream os(cfilename.c_str(),ios::out);
 if(!os)
@@ -240,4 +214,11 @@
 PutIncludeUser(os);
 os<<endl;
+
+os<<"//-------------------------------------------------//"<<endl;
+os<<"//------------- Fonctions utilisateur -------------//"<<endl;
+os<<"//-------------------------------------------------//"<<endl;
+if(mUserFctFn.size()>0) os<<"#include \""<<mUserFctFn<<"\""<<endl;
+os<<endl;
+
 
 os<<"extern \"C\" {"<<endl;
@@ -378,19 +359,35 @@
 
 /* --Methode-- */
-int CxxExecutor::FillUserCode(vector<string>& usercode,uint_4 first)
-// - first is the first position in the vector<> where the code starts
-// User code is read from input. It is put into file "cxx_spiapp.h".
+int CxxExecutor::FillUserCode(string& usercode,uint_4 first)
+// - first is the first position in the "string" where the code starts
+// User code is read from input. It is put into file "TmpDir/cxx_spiapp.h".
 {
 mUserCodeFn = "";
-uint_4 nus = usercode.size();
-if(nus<=first) {cout<<"CxxExecutor::FillUserCode: no user code"<<endl;
-                return 1;}
-mUserCodeFn = "cxx_spiapp.h";
+mUserFctFn  = "";
+
+// get the string part which is after word "first"
+string code = usercode;
+if(code.size()<=0) {cout<<"CxxExecutor::FillUserCode: no user code"<<endl;
+                    return 1;}
+size_t q;
+for(uint_4 i=0;i<=first;i++) {
+  q = code.find_first_not_of(" \t");
+  if(q>=code.size()) {code=""; break;}
+  code = code.substr(q);
+  if(i==first) break;
+  q = code.find_first_of(" \t");
+  if(q>=code.size()) {code=""; break;}
+  code = code.substr(q);
+}
+if(code.size()<=0)
+  {cout<<"CxxExecutor::FillUserCode: no user code after "<<first<<endl;
+   return 1;}
+
+// Fill the file with user code
+mUserCodeFn = mDefTmp + mDefRoot + ".h";
 ofstream os(mUserCodeFn.c_str(),ios::out);
 if(!os) {cout<<"CxxExecutor::FillUserCode: unable to open "
              <<mUserCodeFn<<endl;  mUserCodeFn = ""; return 1;}
-// On ajoute un blanc pour les chaines de caracteres contenant des blancs
-for(uint_4 i=first;i<nus;i++) os<<" "<<usercode[i];
-os<<endl;
+os<<" "<<code;
 cout<<"User code filled from standard input into "<<mUserCodeFn<<endl;
 return 0;
@@ -398,8 +395,9 @@
 
 /* --Methode-- */
-int CxxExecutor::FillUserCode(string filename)
-// User code is read from "filename".
+int CxxExecutor::FillUserCode(string filename,string filefctname)
+// User code is read from "filename" an optionally from filefctname.
 {
 mUserCodeFn = filename;
+mUserFctFn  = filefctname;
 cout<<"User code filled from file "<<filename<<endl;
 return 0;
@@ -409,15 +407,15 @@
 int CxxExecutor::Compile(string rootfilename)
 {
-string fc = rootfilename + ".cc";
-string fl = rootfilename + ".so";
+if(rootfilename.size()<1) rootfilename = mDefRoot;
 cout<<"Compile: "<<rootfilename<<endl;
 int rc = 0;
 rc = CrMakefile();
 if(rc) return(1);
-string make  = "make -f cxx_spiapp_Makefile";
-       make += " CXXFLAGS=\"" + mCompOpt + "\"";
-       make += " LDFLAGS=\""  + mLinkOpt + "\"";
-       make += " MYLIBS=\""   + mMyLibs  + "\"";
-       make += " " + rootfilename;
+string make  = "";
+make += "make -f " + mDefRoot + "_Makefile";
+make += " CXXFLAGS=\"" + mCompOpt + "\"";
+make += " LDFLAGS=\""  + mLinkOpt + "\"";
+make += " MYLIBS=\""   + mMyLibs  + "\"";
+make += " " + rootfilename;
 rc = system(make.c_str());
 if(rc)
@@ -430,5 +428,6 @@
 int CxxExecutor::CrMakefile(void)
 {
-ofstream os("cxx_spiapp_Makefile",ios::out);
+string makename = mDefTmp + mDefRoot + "_Makefile";
+ofstream os(makename.c_str(),ios::out);
 if(!os)
   {cout<<"CxxExecutor::CrMakefile: unable to open file for Makefile"<<endl;
@@ -459,7 +458,7 @@
 os<<"\t"<<"$(LINK.cc) -shared -o $@ $< $(LIBS) $(MYLIBS)"<<endl;
 os<<"%.o:%.cc"<<endl;
-os<<"\t"<<"$(COMPILE.cc)  -o $@ $<"<<endl;
+os<<"\t"<<"$(COMPILE.cc) -o $@ $<"<<endl;
 os<<"%.o:%.c"<<endl;
-os<<"\t"<<"$(COMPILE.c) -c $(CFLAGS)   $(USERFLAGS) -o $@ $<"<<endl;
+os<<"\t"<<"$(COMPILE.c) -c $(CFLAGS) $(USERFLAGS) -o $@ $<"<<endl;
 //---------------------------------------------------------------------
 return 0;
@@ -469,9 +468,13 @@
 int CxxExecutor::Link(string libname,string func)
 {
+if(libname.size()<1) libname = mDefTmp + mDefRoot + ".so";
+if(func.size()<1) func = mDefFunc;
+
 NamedObjMgr omg;
 PIACmd* mpiac = omg.GetImgApp()->CmdInterpreter();
 string key("link");
 vector<string> arg; arg.push_back(libname); arg.push_back(func);
-int rc = mpiac->ExecuteCommand(key,arg);
+string toks = libname + " " + func;
+int rc = mpiac->ExecuteCommand(key,arg,toks);
 cout<<"Link from "<<libname<<" for function "<<func
     <<" (rc="<<rc<<")"<<endl;
@@ -482,11 +485,14 @@
 int CxxExecutor::Call(string func)
 {
+if(func.size()<1) func = mDefFunc;
+
 NamedObjMgr omg;
 PIACmd* mpiac = omg.GetImgApp()->CmdInterpreter();
 string key("call");
 vector<string> arg; arg.push_back(func);
+string toks = func;
 if(mCallArgs.size()>0)
   for(uint_4 i=0;i<mCallArgs.size();i++) arg.push_back(mCallArgs[i]);
-mpiac->ExecuteCommand(key,arg);
+mpiac->ExecuteCommand(key,arg,toks);
 return 0;
 }
@@ -589,63 +595,2 @@
 return mMyLibs;
 }
-
-
-
-
-/* --Methode--  DO NOT DELETE.... cmv property !!!
-int CxxExecutor::FillUserCode(vector<string>& usercode,uint_4 first)
-{
-mUserCodeFn = "";
-uint_4 nus = usercode.size();
-if(nus<=first) {
-  cout<<"CxxExecutor::FillUserCode: no user code"<<endl;
-  return 1;
-}
-mUserCodeFn = "cxx_spiapp.h";
-ofstream os(mUserCodeFn.c_str(),ios::out);
-if(!os)
-  {cout<<"CxxExecutor::FillUserCode: unable to open "<<mUserCodeFn<<endl;
-   mUserCodeFn = ""; return 1;}
-// **** 1er probleme ****
-// - Pour la lisibilite et eviter les bugs avec les chaines de caracteres
-// contenant des blancs, on ne casse les lignes qu'apres un ";" a condition
-// qu'il ne soit pas dans une chaine de caracteres c'est a dire
-// entoure de "....;....".
-// - Attention aux " dans les chaines de caracteres:  "...\"..."
-// - Bugs non-gere pour les tortures: ".....\\" suivi par une autre
-//   chaine de caracteres qui contient un ';'
-//   ex: cout<<"aaa\\"; cout<<"blabla;blabla";
-// **** 2ieme probleme ****
-// - Le decodeur de ligne va couper les commentaires qui contiennent des blancs:
-// "salut ca va" --> tokens[0]="salut tokens[1]=ca tokens[2]=va" --> "salutcava"
-// - On contourne partiellement le pb en ajoutant un blanc en debut des tokens[]
-// identifies comme etant dans une chaine de caracteres (mais impossible de gerer
-// si il y a plusieurs blancs!): "salut     ca    va" -> "salut ca va"
-// **** Conclusion ****
-// Pour ecrire du code sophistique, le faire dans un fichier
-string dum = "";
-bool lastchar = false;
-bool comment = false;
-for(uint_4 i=first;i<nus;i++) {
-  const char* str = usercode[i].c_str();
-  size_t lstr= strlen(str);
-  for(uint_4 j=0;j<lstr;j++) {
-    // debut de mot dans un commentaire -> ajouter un blanc
-    if(j==0 && comment) dum += " ";
-    // on arrive sur un " : debut ou fin commentaire? inactif (\")?
-    if(str[j]=='"') {
-      if(j==0) comment = (comment) ? false: true;
-      else {if(str[j-1]!='\\') comment = (comment) ? false: true;}
-    }
-    dum += str[j];
-    if( i==nus-1 && j==lstr-1 ) lastchar = true;
-    // On charge la string "dum" si : 1-/ on a un ";"
-    //                                2-/ c'est le dernier charactere
-    if((str[j]==';' && !comment) || lastchar)
-      {os<<dum<<endl; dum = "";}
-  }
-}
-cout<<"User code filled from standard input into "<<mUserCodeFn<<endl;
-return 0;
-}
-*/
Index: trunk/SophyaPI/PIext/cxxexecutor.h
===================================================================
--- trunk/SophyaPI/PIext/cxxexecutor.h	(revision 1265)
+++ trunk/SophyaPI/PIext/cxxexecutor.h	(revision 1268)
@@ -23,9 +23,7 @@
   virtual ~CxxExecutor();
 
-  virtual int Execute(string& keyw,vector<string>& args);
+  virtual int Execute(string& keyw,vector<string>& args, string& toks);
 
-  int  ExecuteCxx(string const & code);
-
-  int  CrFile(string cfilename="cxx_spiapp.cc",string func="usercxx");
+  int  CrFile(string cfilename="",string func="");
        void PutInclude(ofstream& os);
        void PutIncludeUser(ofstream& os);
@@ -33,12 +31,12 @@
        void PutVar(ofstream& os);
 
-  int  FillUserCode(vector<string>& usercode,uint_4 first);
-  int  FillUserCode(string filename);
+  int  FillUserCode(string& usercode,uint_4 first);
+  int  FillUserCode(string filename,string filefctname="");
 
-  int  Compile(string rootfilename="cxx_spiapp");
+  int  Compile(string rootfilename="");
        int CrMakefile(void);
 
-  int  Link(string libname="cxx_spiapp.so",string func="usercxx");
-  int  Call(string func="usercxx");
+  int  Link(string libname="",string func="");
+  int  Call(string func="");
 
   void   FillArgs(vector<string>& args);
@@ -64,4 +62,5 @@
 private:
   string mUserCodeFn;
+  string mUserFctFn;
   string mCompOpt;
   string mLinkOpt;
@@ -69,4 +68,8 @@
   vector<string> mIncList;
   vector<string> mCallArgs;
+
+  string mDefTmp;
+  string mDefRoot;
+  string mDefFunc;
 };
 
Index: trunk/SophyaPI/PIext/cxxexecwin.cc
===================================================================
--- trunk/SophyaPI/PIext/cxxexecwin.cc	(revision 1265)
+++ trunk/SophyaPI/PIext/cxxexecwin.cc	(revision 1268)
@@ -92,5 +92,9 @@
       dap->SetBusy();
       mBut[0]->SetUnSensitive();
-      cxxex->ExecuteCxx(mText->GetText());
+      string localkey = "c++exec";
+      vector<string> localtokens;
+      string localstr = mText->GetText();
+      localtokens.push_back(localstr);
+      cxxex->Execute(localkey,localtokens,localstr);
       mBut[0]->SetSensitive();
       dap->SetReady();
Index: trunk/SophyaPI/PIext/nobjmgr.cc
===================================================================
--- trunk/SophyaPI/PIext/nobjmgr.cc	(revision 1265)
+++ trunk/SophyaPI/PIext/nobjmgr.cc	(revision 1268)
@@ -196,5 +196,5 @@
 
 /* --Methode-- */
-virtual string const& NamedObjMgr::GetTmpDir()
+string const& NamedObjMgr::GetTmpDir()
 {
 return *TmpDir;
@@ -202,5 +202,5 @@
 
 /* --Methode-- */
-virtual void NamedObjMgr::SetTmpDir(string const& tmpdir)
+void NamedObjMgr::SetTmpDir(string const& tmpdir)
 {
 if(tmpdir.length()<1) return;
Index: trunk/SophyaPI/PIext/pawexecut.cc
===================================================================
--- trunk/SophyaPI/PIext/pawexecut.cc	(revision 1265)
+++ trunk/SophyaPI/PIext/pawexecut.cc	(revision 1268)
@@ -202,5 +202,5 @@
 
 /* methode */
-int PAWExecutor::Execute(string& kw, vector<string>& tokens)
+int PAWExecutor::Execute(string& kw, vector<string>& tokens, string& toks)
 {
 if(kw == "reset") {
Index: trunk/SophyaPI/PIext/pawexecut.h
===================================================================
--- trunk/SophyaPI/PIext/pawexecut.h	(revision 1265)
+++ trunk/SophyaPI/PIext/pawexecut.h	(revision 1268)
@@ -18,5 +18,5 @@
               PAWExecutor(PIACmd* piac, PIStdImgApp* app);
   virtual     ~PAWExecutor();
-  virtual int Execute(string& keyw, vector<string>& args);
+  virtual int Execute(string& keyw, vector<string>& args, string& toks);
 protected:
   void  reset(vector<string>& tokens);
Index: trunk/SophyaPI/PIext/piacmd.cc
===================================================================
--- trunk/SophyaPI/PIext/piacmd.cc	(revision 1265)
+++ trunk/SophyaPI/PIext/piacmd.cc	(revision 1268)
@@ -553,10 +553,16 @@
     return(99);
   }
-  // Sans substitution des variables $
-  if (s[1] == '@') return(cxxe->ExecuteCxx(s.substr(2)));
-  else { // Avec substitution de variables $
+  string localkey = "c++exec", localstr;
+  vector<string> localtokens;
+  if (s[1] == '@') { // Sans substitution des variables $
+    localstr = s.substr(2);
+    localtokens.push_back(localstr);
+    return(cxxe->Execute(localkey,localtokens,localstr));
+  } else { // Avec substitution de variables $
     string s2;
     SubstituteVars(s, s2);
-    return(cxxe->ExecuteCxx(s2.substr(1)));    
+    localstr = s2.substr(1);
+    localtokens.push_back(localstr);
+    return(cxxe->Execute(localkey,localtokens,localstr));    
   }
 }
@@ -820,5 +826,5 @@
 //  Execution d'une commande enregistree
 // CMV c'est ici qu'il faut passer la string
-else rc = ExecuteCommand(kw, tokens);
+else rc = ExecuteCommand(kw, tokens, toks);
 
 if (timing)  gltimer->Split();
@@ -853,9 +859,9 @@
   }
 
-return(ExecuteCommand(kw, tokens));  
-}
-
-/* --Methode-- */
-int PIACmd::ExecuteCommand(string& keyw, vector<string>& args)
+return(ExecuteCommand(kw, tokens, toks));  
+}
+
+/* --Methode-- */
+int PIACmd::ExecuteCommand(string& keyw, vector<string>& args, string& toks)
 {
   int rc = -1;
@@ -863,5 +869,5 @@
   if (it == cmdexmap.end())  cout << "No such command : " << keyw << " ! " << endl;
   else { 
-    if ((*it).second.cex) rc = (*it).second.cex->Execute(keyw, args);
+    if ((*it).second.cex) rc = (*it).second.cex->Execute(keyw, args, toks);
     else cout << "Dont know how to execute " << keyw << " ? " << endl;
     }
Index: trunk/SophyaPI/PIext/piacmd.h
===================================================================
--- trunk/SophyaPI/PIext/piacmd.h	(revision 1265)
+++ trunk/SophyaPI/PIext/piacmd.h	(revision 1268)
@@ -25,5 +25,5 @@
   virtual	~CmdExecutor() {} ;
   // keyw : Le mot cle associe , args: Arguments de la commande
-  virtual int	Execute(string& keyw, vector<string>& args)=0;
+  virtual int	Execute(string& keyw, vector<string>& args, string& toks)=0;
 };
 
@@ -80,5 +80,5 @@
   virtual int		Interpret(string& line);
   virtual int		ParseLineExecute(string& line);
-  virtual int		ExecuteCommand(string& keyw, vector<string>& args);
+  virtual int		ExecuteCommand(string& keyw, vector<string>& args, string& toks);
   virtual int		ExecFile(string& file, vector<string>& args);
 
Index: trunk/SophyaPI/PIext/piafitting.cc
===================================================================
--- trunk/SophyaPI/PIext/piafitting.cc	(revision 1265)
+++ trunk/SophyaPI/PIext/piafitting.cc	(revision 1268)
@@ -1002,5 +1002,5 @@
 
 /* --Methode-- */
-int PIAFitter::Execute(string& kw, vector<string>& tokens)
+int PIAFitter::Execute(string& kw, vector<string>& tokens, string& toks)
 // Execution des commandes de fit : "fit" et "fitw"
 {
Index: trunk/SophyaPI/PIext/piafitting.h
===================================================================
--- trunk/SophyaPI/PIext/piafitting.h	(revision 1265)
+++ trunk/SophyaPI/PIext/piafitting.h	(revision 1268)
@@ -36,5 +36,5 @@
   PIAFitter(PIACmd* piac, PIStdImgApp* app);
   virtual ~PIAFitter();
-  virtual int Execute(string& keyw, vector<string>& args);
+  virtual int Execute(string& keyw, vector<string>& args, string& toks);
   virtual void LinkFitFunc(string const& fname, string const& funcname
                           ,int nvar,int npar);
