home *** CD-ROM | disk | FTP | other *** search
- /*
- ** PARSEARGS.H -- declarations for argument vector parser
- **
- ** $Header: parseargs.h,v 2.0 89/12/24 00:56:29 eric Exp $
- **
- ** Author:
- ** Eric Allman
- ** University of California, Berkeley
- */
-
- #ifndef ARGDESC
-
- #ifndef _USEFUL_H_
- #include <useful.h>
- #endif
-
- #define ARGDESC struct _argdesc
-
- ARGDESC
- {
- char ad_name; /* flag name */
- char ad_flags; /* flags */
- BOOL (*ad_type) ARGS((ARGDESC *, char *, BOOL));
- /* function to parse value */
- ARBPTR ad_valp; /* pointer to value storage area */
- char *ad_prompt; /* prompt string */
- };
-
- /* bits for ad_flags */
- #define ARGREQ 0x01 /* required argument */
- #define ARGOPT 0x00 /* optional argument pseudo-flag */
- #define ARGHIDDEN 0x02 /* don't display in usage message */
- #define ARGGIVEN 0x08 /* (internal) argument has been specified */
- #define ARGLIST 0x10 /* Argument is a list handler */
-
- /* types available for ad_type */
- extern BOOL argBool ARGS((ARGDESC *, char *, BOOL));
- extern BOOL argChar ARGS((ARGDESC *, char *, BOOL));
- extern BOOL argStr ARGS((ARGDESC *, char *, BOOL));
- extern BOOL argInt ARGS((ARGDESC *, char *, BOOL));
- extern BOOL argShort ARGS((ARGDESC *, char *, BOOL));
- extern BOOL argLong ARGS((ARGDESC *, char *, BOOL));
- extern BOOL argFloat ARGS((ARGDESC *, char *, BOOL));
- extern BOOL argDouble ARGS((ARGDESC *, char *, BOOL));
- extern BOOL listStr ARGS((ARGDESC *, char *, BOOL));
-
- struct arglist {
- struct arglist *nl_next;
- ARBPTR nl_val;
- };
-
- #define L_NEXT(l) ((l)->nl_next) /* Next elt of list */
- #define L_STRING(e) ((char *)((e)->nl_val)) /* Elt as a string */
-
- #define ENDOFARGS { '\0' }
-
- #endif
-