home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / source / driver / util / amiga / GetOpt.h < prev    next >
C/C++ Source or Header  |  1994-04-13  |  2KB  |  79 lines

  1. #ifndef     _GETOPT_H_
  2. #define     _GETOPT_H_
  3.  
  4.  
  5. /** GetOpt.h     (c) 30-may-91 Georg Hessmann **/
  6.  
  7. #ifndef BOOL
  8. #  define BOOL short
  9. #endif
  10. #ifndef FALSE
  11. #  define FALSE 0
  12. #endif
  13. #ifndef TRUE
  14. #  define TRUE (!FALSE)
  15. #endif
  16.  
  17.  
  18. struct Options {
  19.    char      *name;        /* Name der Option                */
  20.    char      *abbrev;        /* Abkuerzung des Optionsnamen            */
  21.    long       msg_hlp_txt;    /* Locale Nummer für den Hilfetext        */
  22.    char      *hlp_txt;        /* Text fuer die Fehlerausgabe; Help-Funktion    */
  23.    long       msg_hlp_txt2;    /* Locale-Nummer für den langen Hilfetext    */
  24.    char      *hlp_txt2;        /* Text fuer die lange Help-Funktion        */
  25.    void      *result;        /* Dies ist ein Pointer auf das Ergebnis    */
  26.    unsigned   len       : 8,    /* Laenge des Optionsnamen            */
  27.               alen      : 8;    /* Laenge der Abkuerzung            */
  28.    unsigned   type      : 8,    /* Typ der Variable, siehe #define's unten    */
  29.               required  : 1,    /* muss die Option angegeben werden?        */
  30.               is_given  : 1,    /* wurde die Option angegeben            */
  31.               special   : 1,    /* special Bit fuer TEX Option            */
  32.               hidden    : 1;    /* versteckte Option?                */
  33.    };
  34.  
  35.  
  36. #define START_PARAM(var)    struct Options var[] = {
  37. #define REQ_PARAM(name,ab,type,res,txt,txt2)        \
  38.             {name, ab, txt, NULL, txt2, NULL, res, 0, 0, type, OPT_REQUIRED, 0, 0, OPT_NORMAL},
  39. #define NOREQ_PARAM(name,ab,type,res,txt,txt2)        \
  40.             {name, ab, txt, NULL, txt2, NULL, res, 0, 0, type, OPT_NOT_REQUIRED, 0, 0, OPT_NORMAL},
  41. #define HIDDEN_PARAM(name,ab,type,res,txt,txt2)        \
  42.             {name, ab, txt, NULL, txt2, NULL, res, 0, 0, type, OPT_NOT_REQUIRED, 0, 0, OPT_HIDDEN},
  43. #define END_PARAM                    \
  44.             { NULL, NULL, 0, NULL, 0, NULL, NULL, 0, 0, 0, 0, 0, 0, 0} };
  45.  
  46.  
  47.  
  48. #define OPT_LAST_ENTRY        0    /* only for internal use! */
  49.  
  50. #define OPT_BOOLEAN        1    /* set boolean */
  51. #define OPT_STRING        2
  52. #define OPT_LONG        3
  53. #define OPT_FLOAT        4
  54. #define OPT_HELP        5    /* Special Help-Option */
  55. #define OPT_OPTIONSTRING    6    /* String ohne Keyword */
  56.  
  57. #ifdef TEX
  58. # define OPT_TEX_DIM        15    /* only for ShowDVI/DVIprint */
  59.  
  60. struct PSizes {
  61.   char * name;
  62.   float  width;        // in inch
  63.   float  height;    // in inch
  64. };
  65.  
  66. extern struct PSizes psizes[];
  67.  
  68. #endif
  69.  
  70.  
  71. #define OPT_NOT_REQUIRED    0
  72. #define OPT_REQUIRED        1
  73.  
  74. #define OPT_NORMAL        0    /* normal Option */
  75. #define OPT_HIDDEN        1    /* don't show this option */
  76.  
  77.  
  78. #endif
  79.