source: Sophya/trunk/SophyaPI/PIext/piacmd.h@ 1224

Last change on this file since 1224 was 1224, checked in by ercodmgr, 25 years ago

Ajout de cxxexecutor (Execution C++ en ligne ds piapp) - CMV+Reza 11/10/2000

File size: 4.2 KB
RevLine 
[165]1// This may look like C code, but it is really -*- C++ -*-
2// Classe interpreteur de commande pour piapp
3// Reza Aout 97 , Juillet,Aout 98
4// LAL-IN2P3/CNRS
5
6#ifndef PIACMD_H_SEEN
7#define PIACMD_H_SEEN
8
[293]9#include "machdefs.h"
10#include <iostream.h>
[165]11#include <fstream.h>
12#include <string>
[293]13#include <vector>
[165]14#include <map>
[351]15#include <functional>
[165]16
17#include "dlftypes.h"
[912]18#include "pdlmgr.h"
[165]19
[293]20
21// Classe definissant l'interface pour un executeur de commande
22class CmdExecutor {
23public:
24 virtual ~CmdExecutor() {} ;
25 // keyw : Le mot cle associe , args: Arguments de la commande
26 virtual int Execute(string& keyw, vector<string>& args)=0;
27};
28
29// Classe definissant l'interface pour un interpreteur de commande
30class CmdInterpreter {
31public:
32 virtual ~CmdInterpreter() {} ;
33 virtual string Name()=0;
34 virtual int Interpret(string& line)=0;
35};
36
37
38
39// Forward declaration of some classes ...
[165]40class NamedObjMgr;
41class PIStdImgApp;
[897]42#ifdef SANS_EVOLPLANCK
[293]43class Timer;
[897]44#else
45namespace SOPHYA {
46class Timer;
47}
48#endif
[349]49class PIAHelpWind; // Fenetre d'aide en ligne
50class PIACmdBloc;
51
[293]52// ---------------------------------------------------------------------
53// Classe Interpreteur de commande, gestionnaire de module chargeable,
54// et de fonctions dynamiquement linke pour PIStdImgApp
55// Permet de gerer plusieurs Interpreter differents
56// ---------------------------------------------------------------------
[165]57
[330]58
[293]59class PIACmd : public CmdInterpreter {
[165]60public:
[293]61 static PIACmd* GetInterpreter();
[165]62
[293]63 PIACmd(NamedObjMgr* omg, PIStdImgApp* app);
64 virtual ~PIACmd();
65 virtual string Name();
66
[330]67 virtual void RegisterCommand(string& keyw, string& usage, CmdExecutor * ce,
[484]68 string grp="Commands");
[330]69 virtual void RegisterHelp(string& keyw, string& usage, string& grp);
[293]70 virtual void LoadModule(string& fnameso, string& name);
71
72 virtual void AddInterpreter(CmdInterpreter * cl);
73 virtual void SelInterpreter(string& name);
74
75 virtual int Interpret(string& line);
[333]76 virtual int ExecuteCommandLine(string& line);
77 virtual int ExecuteCommand(string& keyw, vector<string>& args);
[349]78 virtual int ExecFile(string& file, vector<string>& args);
[293]79
80 virtual string& GetUsage(const string& kw);
81 virtual void ShowHelpWindow();
82
[463]83 virtual void HelptoLaTex(string const & flnm);
84
[293]85 inline CmdInterpreter* CurrentInterpreter() { return(curcmdi); }
86 inline CmdExecutor* BaseExecutor() { return(basexec); }
87 inline PIStdImgApp* GetImgApp() { return(mImgApp); }
88
[330]89// Pour utilisation par PIAHelpWind uniquement
90 virtual void UpdateHelpList(PIAHelpWind* hw, int gid);
91
[293]92protected:
[330]93 virtual int CheckHelpGrp(string& grp);
94
[165]95 NamedObjMgr* mObjMgr;
96 PIStdImgApp* mImgApp;
97
[293]98 CmdInterpreter* curcmdi;
[1224]99 CmdExecutor* basexec; // basic command executor
100 CmdExecutor* fitexec; // Fit command executor
101 CmdExecutor* pawexec; // paw-like command executor
102 CmdExecutor* cxxexec; // on-line c++ compile/execution command executor
[293]103
[330]104// Pour enregistrer la liste de commandes et leurs executeurs et le help
105 struct cmdex {int group; string us; CmdExecutor * cex; } ;
106 typedef map<string, int, less<string> > CmdHGroup; // Liste des groupes de commandes
107 CmdHGroup cmdhgrp;
108 int cmdgrpid; // Numero de groupe courant
[293]109 typedef map<string, cmdex, less<string> > CmdExmap;
110 CmdExmap cmdexmap;
[330]111 CmdExmap helpexmap; // Pour les helps sans commande
[293]112
113// Pour garder la liste des modules
114 typedef map<string, PDynLinkMgr* , less<string> > Modmap;
115 Modmap modmap;
116
117// Pour garder la liste des interpreteur
118 typedef map<string, CmdInterpreter*, less<string> > InterpMap;
119 InterpMap interpmap;
120
[165]121// Pour stocker les variables definies par l'interpreteur
[293]122 typedef map<string, string, less<string> > CmdVarList;
[349]123 CmdVarList mVars; // Liste des variables
124 CmdVarList mAliases; // Liste des alias
125
126 PIACmdBloc * curblk; // Bloc de commande courant (foreach, ...)
127 int felevel; // foreah level
128
[165]129 ofstream hist; // History file
[349]130 bool histon; // True -> history file
[165]131 bool trace; // Trace flag
132 bool timing; // Display CPU Time
133 Timer* gltimer; // pour Display CPU Time
134
[293]135// Fenetre d'aide interactive
136 PIAHelpWind* helpwin;
[165]137
138};
139
[293]140
141
[165]142#endif
Note: See TracBrowser for help on using the repository browser.