This is shell_arg.h in view mode; [Download] [Up]
//------------------------------------------------------------------------
// ^FILE: shell_arg.h - define a shell-script command-line argument
//
// ^DESCRIPTION:
// This file defines the base class for all shell-script command
// line arguments. In addition to inheriting from class CmdArg,
// a ShellCmdArg must also contain a variable-name, and its value.
//
// ^HISTORY:
// 04/22/92 Brad Appleton <brad@ssd.csd.harris.com> Created
//-^^---------------------------------------------------------------------
#ifndef _shell_arg_h
#define _shell_arg_h
#include <cmdargs.h>
#include "shells.h"
// All of our shell-script args will be ShellCmdArgs with two possible
// exceptions:
// 1) We may have a CmdArgUsage or
// 2) CmdArg::is_dummy() may return TRUE
//
// Hence, before we can downcast a CmdArg * to a ShellCmdArg *
// we must first make sure of the following:
// 1) is_dummy returns FALSE and that
// 2) CmdArg::GIVEN is set (if a CmdArgUsage was given then we would have
// already exited!).
//
class ShellCmdArg : public CmdArg {
public:
ShellCmdArg(char * variable_name,
char optchar,
char * keyword,
char * value,
char * description,
unsigned syntax_flags =CmdArg::isOPTVALREQ);
ShellCmdArg(char * variable_name,
char optchar,
char * keyword,
char * description,
unsigned syntax_flags =CmdArg::isOPT);
ShellCmdArg(char * variable_name,
char * value,
char * description,
unsigned syntax_flags =CmdArg::isPOSVALREQ);
virtual ~ShellCmdArg(void);
// Return the name of this variable/array
const char *
name(void) const { return sca_name; }
// Are we an array or a variable?
int
is_array(void) const;
// Return the variable portion
ShellVariable &
variable(void) { return *shell_variable; }
// Return the array portion
ShellArray &
array(void) { return *shell_array; }
// If we are a variable then the "set" member function sets the
// value of the variable, otherwise it appends to the list of
// values of the array
//
void
set(const char * value);
virtual int
operator()(const char * & arg, CmdLine & cmd) = 0;
private:
ShellCmdArg(const ShellCmdArg & cp);
ShellCmdArg &
operator=(const ShellCmdArg & cp);
void
initialize(const char * name);
union {
ShellVariable * shell_variable;
ShellArray * shell_array;
} ;
char * sca_name;
char * sca_keyword;
char * sca_value;
char * sca_description;
} ;
#endif /* _shell_arg_h */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.