Changeset 2483 in Sophya for trunk/SophyaLib/SysTools/commander.h


Ignore:
Timestamp:
Dec 22, 2003, 12:41:46 AM (22 years ago)
Author:
ansari
Message:

Amelioration gestion variables ds interpreteur (classe Commander) - Introduction de trois niveaux : Var. interpreteur, env. appli, environnement global + amelioration gestion vecteur au niveau de l'interpreteur - Reza 22/12/2003

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/SysTools/commander.h

    r2473 r2483  
    2222#include "ctimer.h"
    2323
     24namespace SOPHYA {
    2425// Classe definissant l'interface pour un executeur de commande
    2526
     
    4950class CommanderScript;  // Script de commandes defini ds l'interpreteur Commander
    5051
    51 /*
    52 //! Interface definition for SOPHYA::Commander help manager
    53 class CommanderHelpMgr {
    54 public :
    55                         CommanderHelpMgr();
    56   virtual               ~CommanderHelpMgr();
    57   virtual void          AddHelpGroup(const char * hgrp, int gid);
    58   virtual void          AddHelpItem(const char * hitem);
    59   virtual void          ClearHelpList();
    60   virtual void          Activate();
    61 }
    62 */
    63 
    64 
    6552//! A simple command interpreter with c-shell like syntax with dynamic load capability.
    6653
     
    10491  inline  CmdInterpreter* CurrentInterpreter() { return(curcmdi); }
    10592
    106 
    107 //   Utilitaire pour decoupage en mot
     93  //   Utilitaire pour decoupage en mot
    10894  static  int   LineToWords(string& line, string& kw, vector<string>& tokens,
    10995                            string& toks, bool uq=true);
     
    123109  int           EvalRPNExpr(vector<string> & args, string & line);
    124110
    125   virtual bool    GetVar(string & vn, string & vv);
    126   virtual string  GetVariable(string const & vn);
    127   virtual bool    HasVariable(string const & vn);
     111  // Acces aux variables
     112  virtual bool    Var2Str(string const & vn, string & vv);
     113  inline  bool    Var2Str(string const & vn, int idx, string & vv)
     114  { return GetVar(vn, idx, vv); }
     115  inline  bool    Var2Str(string const & vn, vector<string> & vv)
     116  { return GetVar(vn, vv); }
     117
     118  // ----- Action / gestion des variables propres de l'interpreteur
     119  // Verifie l'existence de la variable nomme vn et retourne sa valeur ds vv
     120  // Retourne false si la variable n'existe pas
     121  virtual bool    SetVariable(string const & vn, string const & vv);
     122  virtual bool    GetVar(string const & vn, string & vv);
     123  virtual bool    GetVar(string const & vn, int idx, string & vv);
     124  virtual bool    GetVar(string const & vn, vector<string> & vv);
    128125  virtual bool    SetVar(string const & vn, string const & vv);
     126  virtual bool    SetVar(string const & vn, int idx, string const & vv);
     127  virtual bool    SetVar(string const & vn, vector<string> const & vv);
     128  virtual bool    CheckVarName(string const & vn);
    129129  virtual bool    DeleteVar(string const & vn);
    130   virtual void    ListVars();
     130  virtual void    ListVar();
     131  // Variables de l'environnement application
     132  virtual bool    GetVarApp(string const & vn, string & vv);
     133  virtual bool    SetVarApp(string const & vn, string const & vv);
     134  virtual bool    DeleteVarApp(string const & vn);
     135  virtual void    ListVarApp();
     136  // Variables d'environnement globales
     137  virtual bool    GetVarEnv(string const & vn, string & vv);
     138  virtual bool    SetVarEnv(string const & vn, string const & vv);
     139  virtual bool    DeleteVarEnv(string const & vn);
     140  virtual void    ListVarEnv();
    131141
    132142  virtual string  GetTmpDir();
     
    134144  virtual void  SetCurrentPrompt(const char* pr);
    135145  inline void   SetCurrentPrompt(string const & pr) { SetCurrentPrompt(pr.c_str()); }
     146  inline void   SetDefaultPrompt(string const & pr) { defprompt = pr; }
    136147
    137148  virtual void  ShowMessage(const char * msg, int att);
     
    143154
    144155// Gestion des variables
    145   DVList variables;
     156  typedef map< string,  vector<string>, less<string> > CmdVarList;
     157  CmdVarList variables;
    146158
    147159// Pour enregistrer la liste de commandes et leurs executeurs et le help
     
    168180  CommanderScript* curscript; // Script en cours de definition
    169181
    170 //  Pour stocker les alias definies par l'interpreteur
     182  // Code de retour execution commande
     183  int _xstatus;
     184  // Valeur de retour (par l'instruction return) -
     185  string _retstr;
     186
     187  //  Pour stocker les alias definies par l'interpreteur
    171188  typedef map<string, string, less<string> > CmdStrList;
    172189  CmdStrList mAliases;  // Liste des alias
    173190
    174 // Le stack pour les arguments des .pic et des scripts
     191  // Le stack pour les arguments des .pic et des scripts
    175192  stack< vector<string> > ArgsStack;
    176 // Stack pour les Prompts
     193  // Stack pour les Prompts
    177194  stack<string> PromptStack;
    178195
     196  // Gestion des blocs de commandes et tests (if)
    179197  stack< CommanderBloc * > CmdBlks;  // Bloc de commande courant (foreach, ...)
    180198  int felevel;                    // foreach-for level
     
    184202  bool curtestresult;             // Resultat courant des tests
    185203
     204  // Commande splitees sur plusieurs lignes
    186205  bool mulinefg;            // Bloc multi-lignes (ligne suite)
    187206  string mulinecmd;         // Commande multi-lignes
     207
     208  // Texte de prompt (attente de commande)
    188209  string spromptmul;        // Prompt console avant multi-ligne
    189   string curprompt;
    190 
     210  string curprompt;         // Prompt courant
     211  string defprompt;         // Prompt par defaut
     212
     213  // Gestion d'historique, trace, timing des commandes
    191214  ofstream hist;       //  History file
    192215  bool histon;        //  True ->  history file
     
    195218  Timer* gltimer;      // pour Display CPU Time
    196219
     220friend class CommanderBloc; 
     221friend class CommanderScript; 
     222
    197223};
    198224
     225} // namespace SOPHYA
    199226
    200227/* end of ifdef COMMANDER_H_SEEN */
Note: See TracChangeset for help on using the changeset viewer.