// This may look like C code, but it is really -*- C++ -*-
// Classe executeur de commande de base pour piapp
//                                   Reza 05/99
// LAL-IN2P3/CNRS

#ifndef PIABaseExecutor_H_SEEN
#define PIABaseExecutor_H_SEEN

#include "piacmd.h"

class PIABaseExecutor : public CmdExecutor {
public :
		PIABaseExecutor(PIACmd* piac, NamedObjMgr* omg, PIStdImgApp* app);
  virtual	~PIABaseExecutor();
  virtual int	Execute(string& keyw, vector<string>& args, string& toks);
  virtual bool  IsThreadable(string const & keyw);

protected :
  void		RegisterCommands();
//  Link dynamique de fonction user
  int 		LinkUserFuncs(string& fnameso, string& func1, string& func2, string& func3);
  int 		LinkUserFuncs2(string& fnameso, string& func1, string& func2, string& func3);
//                            string& func4, string& func5);   compil avec g++ 2.7.2
  PIACmd* mpiac;
  NamedObjMgr* mObjMgr;
  PIStdImgApp* mImgApp;
// g++ n'arrive pas a avaler ca (lignes trop longues)  on utilise donc des DlFunction  (Reza 20/08/98)
// typedef map<string, DlUserProcFunction, less<string> > UsFmap;
  typedef map<string, DlFunction, less<string> > UsFmap;
  PDynLinkMgr* dynlink;
  UsFmap usfmap;
  PDynLinkMgr* dynlink2;
  UsFmap usfmap2;

};


#endif
