
/* $Id: cmdparse.h,v 1.1.1.1 2003/11/04 23:34:56 mjames Exp $

   Header file: cmdparse.h

   $Log: cmdparse.h,v $
   Revision 1.1.1.1  2003/11/04 23:34:56  mjames
   Imported into local repositrory

   Revision 1.6  2001/10/31 22:20:01  mjames
   Tidying up problematical comments caused by CVS
   'intelligent' comment guessing

   Revision 1.5  2001/06/06 12:10:24  mjames
   Move from HPUX

   Revision 1.4  2001/02/06 22:41:15  mjames
   Added correct argument passing for 'read file comp_suffix arg0 arg1 arg2 ...

   Revision 1.3  2001/01/04 21:26:55  mjames
   Modifications to add in the TCL style
   argument list to all of the functions
   .

   Revision 1.2  2001/01/02 07:53:52  mjames
   Made changes to allow for interface with TCL/Tk

   Revision 1.1.1.1  2000/10/19 21:58:35  mjames
   Mike put it here



Chopped a lot of RCS revision history
 *  */



#if ! defined _CMDPARSE
#define _CMDPARSE


#if ! defined ET_TCLARGS
#define TCLARGS
#else   
#define TCLARGS ET_TCLARGS
#endif


#define LINELEN 1024
#define WORDSINLINE 50
#define PATHLENGTH 200
#define WORDWIDTH 100

enum ReturnCodes {OKCMD, FAILED, NARGS, UNKNOWNCMD, BADVARS, QUITCMD};

struct CommandStruct;





struct command
   {
   char *name;
   int  NumChar;
/* see above for macro defining this */
   int  (*function) (TCLARGS);
   struct command * Menu;
   char *helpstr;
   char *extras;
   char *TCL_command;
   };


typedef struct command CommandMenu[];

#if defined USE_COMMANDSTRUCT
struct CommandStruct
   {
   char *Text;
   char *Words[WORDSINLINE];
   int   CurrentCommand;
   int   NumberCommands;
   int   nArgs;
   char  **Args;
   };
#endif
/* is the TCL interface in GUI or command line mode ? */

#if defined ET_TCLARGS

typedef enum {Tcl_GUI,Tcl_Cmd} tcl_mode_t;

extern  tcl_mode_t  Tcl_Mode;

/* make this a global */  
extern  Tcl_Interp * Tcl_interp;


#endif

/* debug level */
extern long level;

extern int Execute (int argc,char * argv[], CommandMenu Dispatch);

extern int ExecuteString (char * commandstring , int nArgs, char * Args[]) ;

extern int ParseFile (FILE * CmdFile,int nArgs, char * Args[]);

extern int ExecuteCommand (FILE * CmdFile,
                           int nArgs,
                           char * Args[]);





#endif

