home *** CD-ROM | disk | FTP | other *** search
- //------------------------------------------------------------------------
- // ^FILE: cmdparse.h - define the interface to cmdparse(1)
- //
- // ^DESCRIPTION:
- // This file defines a class that carries out the services provided
- // by cmdparse(1).
- //
- // ^HISTORY:
- // 05/01/92 Brad Appleton <brad@ssd.csd.harris.com> Created
- //
- // 03/01/93 Brad Appleton <brad@ssd.csd.harris.com>
- // - Added ALLOW_PLUS to list of CmdLine configuration flags
- //-^^---------------------------------------------------------------------
-
- #ifndef _cmdparse_h
- #define _cmdparse_h
-
- #include <cmdargs.h>
-
-
- // Exit values used
- enum ExitValues {
- e_SUCCESS = 0, // no errors
- e_USAGE = 1, // no errors - usage printed
- e_VERSION = 1, // no errors - version printed
- e_CMDSYNTAX = 2, // command-line syntax error
- e_BADSHELL = 3, // invalid shell specified
- e_BADDECLS = 4, // invalid declaration(s) given
- } ;
-
-
- // CmdArgVers is a class that simply prints (on cerr) the version
- // information for this command.
- //
- class CmdArgVers : public CmdArg {
- public:
- CmdArgVers(char optchar, const char * keyword, const char * description);
-
- virtual ~CmdArgVers(void);
-
- virtual int
- operator()(const char * & arg, CmdLine & cmd);
- } ;
-
-
- class istream ;
- class ArgSyntax ;
- class UnixShell ;
- class CmdParseCommand : public CmdLine {
- public:
-
- CmdParseCommand(const char * name);
-
- virtual ~CmdParseCommand(void);
-
- // Do whatever it is we need to do!
- int
- operator()(CmdLineArgIter & iter) ;
-
- private:
- // Dont allow copying or assignment
- CmdParseCommand(const CmdParseCommand &);
- CmdParseCommand & operator=(const CmdParseCommand &);
-
- // Set the users arguments
- void
- set_args(UnixShell * shell);
-
- // Parse the users argument declarations
- int
- parse_declarations(void);
-
- int
- parse_declarations(const char * input);
-
- int
- parse_declarations(istream & input);
-
- // Add a parsed declaration to the user's argument list
- int
- usr_append(const char * type,
- const char * varname,
- ArgSyntax & arg,
- const char * description);
-
- //------------------------------------------------ arguments to cmdparse(1)
-
- CmdArgBool anywhere; // clear OPTS_FIRST
- CmdArgBool anycase; // set ANY_CASE_OPTS
- CmdArgBool no_abort; // set NO_ABORT
- CmdArgBool no_guessing; // set NO_GUESSING
- CmdArgBool prompt; // set PROMPT_USER
- CmdArgBool plus; // set ALLOW_PLUS
- CmdArgBool opts_only; // set OPTS_ONLY
- CmdArgBool kwds_only; // set KWDS_ONLY
- CmdArgBool quiet; // set QUIET
-
- CmdArgVers version; // print version and exit
- CmdArgBool usage; // print usage and exit
-
- CmdArgBool array_variant; // use alternate array syntax
- CmdArgStr true_str; // TRUE for booleans
- CmdArgStr false_str; // FALSE for booleans
- CmdArgStr suffix_str; // suffix for missing optional-values
- CmdArgStr usr_shell; // the shell (command interpreter)
-
- CmdArgStr input_file; // read declarations from file
- CmdArgStr input_var; // read declarations environment variable
- CmdArgStr input_str; // read declarations from string
-
- CmdArgDummy dummy_arg; // "--"
-
- CmdArgStr usr_prog; // program name
- CmdArgStrList usr_args; // program arguments
-
- CmdLine usr_cmd; // the user's CmdLine object
- } ;
-
- #endif /* _cmdparse_h */
-
-