Index: trunk/SophyaLib/SysTools/commander.h
===================================================================
--- trunk/SophyaLib/SysTools/commander.h	(revision 2473)
+++ trunk/SophyaLib/SysTools/commander.h	(revision 2483)
@@ -22,4 +22,5 @@
 #include "ctimer.h"
 
+namespace SOPHYA {
 // Classe definissant l'interface pour un executeur de commande
 
@@ -49,18 +50,4 @@
 class CommanderScript;  // Script de commandes defini ds l'interpreteur Commander
 
-/*
-//! Interface definition for SOPHYA::Commander help manager
-class CommanderHelpMgr {
-public :
-			CommanderHelpMgr();
-  virtual		~CommanderHelpMgr();
-  virtual void		AddHelpGroup(const char * hgrp, int gid);
-  virtual void		AddHelpItem(const char * hitem);
-  virtual void          ClearHelpList();
-  virtual void		Activate();
-}
-*/
-
-
 //! A simple command interpreter with c-shell like syntax with dynamic load capability.
 
@@ -104,6 +91,5 @@
   inline  CmdInterpreter* CurrentInterpreter() { return(curcmdi); }
 
-
-//   Utilitaire pour decoupage en mot
+  //   Utilitaire pour decoupage en mot
   static  int   LineToWords(string& line, string& kw, vector<string>& tokens,
 			    string& toks, bool uq=true);
@@ -123,10 +109,34 @@
   int	        EvalRPNExpr(vector<string> & args, string & line);
 
-  virtual bool    GetVar(string & vn, string & vv);
-  virtual string  GetVariable(string const & vn);
-  virtual bool    HasVariable(string const & vn);
+  // Acces aux variables 
+  virtual bool    Var2Str(string const & vn, string & vv);
+  inline  bool    Var2Str(string const & vn, int idx, string & vv)
+  { return GetVar(vn, idx, vv); }
+  inline  bool    Var2Str(string const & vn, vector<string> & vv)
+  { return GetVar(vn, vv); }
+
+  // ----- Action / gestion des variables propres de l'interpreteur
+  // Verifie l'existence de la variable nomme vn et retourne sa valeur ds vv
+  // Retourne false si la variable n'existe pas
+  virtual bool    SetVariable(string const & vn, string const & vv);
+  virtual bool    GetVar(string const & vn, string & vv);
+  virtual bool    GetVar(string const & vn, int idx, string & vv);
+  virtual bool    GetVar(string const & vn, vector<string> & vv);
   virtual bool    SetVar(string const & vn, string const & vv);
+  virtual bool    SetVar(string const & vn, int idx, string const & vv);
+  virtual bool    SetVar(string const & vn, vector<string> const & vv);
+  virtual bool    CheckVarName(string const & vn);
   virtual bool    DeleteVar(string const & vn);
-  virtual void    ListVars();
+  virtual void    ListVar();
+  // Variables de l'environnement application 
+  virtual bool    GetVarApp(string const & vn, string & vv);
+  virtual bool    SetVarApp(string const & vn, string const & vv);
+  virtual bool    DeleteVarApp(string const & vn);
+  virtual void    ListVarApp();
+  // Variables d'environnement globales 
+  virtual bool    GetVarEnv(string const & vn, string & vv);
+  virtual bool    SetVarEnv(string const & vn, string const & vv);
+  virtual bool    DeleteVarEnv(string const & vn);
+  virtual void    ListVarEnv();
 
   virtual string  GetTmpDir();
@@ -134,4 +144,5 @@
   virtual void  SetCurrentPrompt(const char* pr);
   inline void   SetCurrentPrompt(string const & pr) { SetCurrentPrompt(pr.c_str()); }
+  inline void   SetDefaultPrompt(string const & pr) { defprompt = pr; }
 
   virtual void	ShowMessage(const char * msg, int att);
@@ -143,5 +154,6 @@
 
 // Gestion des variables
-  DVList variables;
+  typedef map< string,  vector<string>, less<string> > CmdVarList;
+  CmdVarList variables;
 
 // Pour enregistrer la liste de commandes et leurs executeurs et le help
@@ -168,13 +180,19 @@
   CommanderScript* curscript; // Script en cours de definition
 
-//  Pour stocker les alias definies par l'interpreteur
+  // Code de retour execution commande
+  int _xstatus;
+  // Valeur de retour (par l'instruction return) - 
+  string _retstr;
+
+  //  Pour stocker les alias definies par l'interpreteur
   typedef map<string, string, less<string> > CmdStrList;
   CmdStrList mAliases;  // Liste des alias 
 
-// Le stack pour les arguments des .pic et des scripts
+  // Le stack pour les arguments des .pic et des scripts
   stack< vector<string> > ArgsStack;
-// Stack pour les Prompts
+  // Stack pour les Prompts
   stack<string> PromptStack; 
 
+  // Gestion des blocs de commandes et tests (if) 
   stack< CommanderBloc * > CmdBlks;  // Bloc de commande courant (foreach, ...)
   int felevel;                    // foreach-for level 
@@ -184,9 +202,14 @@
   bool curtestresult;             // Resultat courant des tests 
 
+  // Commande splitees sur plusieurs lignes
   bool mulinefg;            // Bloc multi-lignes (ligne suite)
   string mulinecmd;         // Commande multi-lignes
+
+  // Texte de prompt (attente de commande)
   string spromptmul;        // Prompt console avant multi-ligne
-  string curprompt;
-
+  string curprompt;         // Prompt courant
+  string defprompt;         // Prompt par defaut 
+
+  // Gestion d'historique, trace, timing des commandes
   ofstream hist;       //  History file 
   bool histon;        //  True ->  history file
@@ -195,6 +218,10 @@
   Timer* gltimer;      // pour Display CPU Time
 
+friend class CommanderBloc;  
+friend class CommanderScript;  
+
 };
 
+} // namespace SOPHYA
 
 /* end of ifdef COMMANDER_H_SEEN */
