home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 446.lha / parseargs / parseargs.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-06  |  1.6 KB  |  58 lines

  1. /*
  2. **  PARSEARGS.H -- declarations for argument vector parser
  3. **
  4. **    $Header: parseargs.h,v 2.0 89/12/24 00:56:29 eric Exp $
  5. **
  6. **    Author:
  7. **        Eric Allman
  8. **        University of California, Berkeley
  9. */
  10.  
  11. #ifndef ARGDESC
  12.  
  13. #ifndef _USEFUL_H_
  14. #include <useful.h>
  15. #endif
  16.  
  17. #define ARGDESC        struct _argdesc
  18.  
  19. ARGDESC
  20. {
  21.     char    ad_name;    /* flag name */
  22.     char    ad_flags;    /* flags */
  23.     BOOL    (*ad_type) ARGS((ARGDESC *, char *, BOOL));
  24.                 /* function to parse value */
  25.     ARBPTR    ad_valp;    /* pointer to value storage area */
  26.     char    *ad_prompt;    /* prompt string */
  27. };
  28.  
  29. /* bits for ad_flags */
  30. #define ARGREQ        0x01    /* required argument */
  31. #define ARGOPT        0x00    /* optional argument pseudo-flag */
  32. #define ARGHIDDEN    0x02    /* don't display in usage message */
  33. #define ARGGIVEN    0x08    /* (internal) argument has been specified */
  34. #define ARGLIST        0x10    /* Argument is a list handler */
  35.  
  36. /* types available for ad_type */
  37. extern BOOL    argBool ARGS((ARGDESC *, char *, BOOL));
  38. extern BOOL    argChar ARGS((ARGDESC *, char *, BOOL));
  39. extern BOOL    argStr ARGS((ARGDESC *, char *, BOOL));
  40. extern BOOL    argInt ARGS((ARGDESC *, char *, BOOL));
  41. extern BOOL    argShort ARGS((ARGDESC *, char *, BOOL));
  42. extern BOOL    argLong ARGS((ARGDESC *, char *, BOOL));
  43. extern BOOL    argFloat ARGS((ARGDESC *, char *, BOOL));
  44. extern BOOL    argDouble ARGS((ARGDESC *, char *, BOOL));
  45. extern BOOL    listStr ARGS((ARGDESC *, char *, BOOL));
  46.  
  47. struct arglist {
  48.     struct arglist *nl_next;
  49.     ARBPTR nl_val;
  50. };
  51.  
  52. #define L_NEXT(l) ((l)->nl_next)        /* Next elt of list */
  53. #define L_STRING(e) ((char *)((e)->nl_val))    /* Elt as a string */
  54.  
  55. #define ENDOFARGS    { '\0' }
  56.  
  57. #endif
  58.