home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 06 / arg.h < prev    next >
Encoding:
C/C++ Source or Header  |  1987-05-18  |  3.8 KB  |  85 lines

  1. /********************************************************************
  2. *  TITEL           :  Argument-Parser Headerfile                    *
  3. *                                                                   *
  4. *  DATEI           :  arg.h                                         *
  5. *  VERSION         :  1.0                                           *
  6. *  AUTOR           :  Joachim Eckart                                *
  7. *  DATUM           :  12/86                                         *
  8. ********************************************************************/
  9.  
  10. /*                       D E F I N E S                             */
  11.  
  12. /********  option: */
  13.  
  14. #define OPT        1      /* Argument ist optional                 */
  15. #define NON_OPT    0      /* Argument mu₧ vorhanden sein           */
  16.  
  17. /********  types:  */
  18.  
  19. #define BOOLEAN    0      /* nur für Schalter/Variable, wird auf 1
  20.                              gesetzt, wenn vorhanden               */
  21. #define INTEGER    1      /* nur für Schalter/Variable, erhält den
  22.                              Integerwert                           */
  23. #define CHAR       2      /* nur für Schalter/Variable, erhält das
  24.                              eine Zeichen hinter Schalter          */
  25. #define FUNC       3      /* mit und ohne Schalter mit nachfolgen-
  26.                              dem Argument.
  27.                              Schalter:
  28.                              fehlt das Argument, wird "" übergeben.
  29.                              Kein Schalter (also einfacher String):
  30.                              String wird übergeben.                */
  31. #define STRING     4      /* mit und ohne Schalter/String, wird der
  32.                              Variablen zugewiesen                  */
  33. #define FORCE_FUNC 5      /* nur ohne Schalter und als optionales
  34.                              Argument. Funktion wird auch bei
  35.                              fehlendem Argument mit "" aufgerufen  */
  36.  
  37. /******** schalter:  */
  38.  
  39. #define SCHALTER   1      /* Argument wird durch -x (x = 1 Zeichen)
  40.                              eingeleitet.                          */
  41. #define NO_SCHLT   0      /* Argument ist Zeichenfolge, die nicht
  42.                              mit '-' beginnen darf.                */
  43.  
  44. /********  errorcodes - werden durch parse_args() zurückgegeben:   */
  45.  
  46. #define OK         0      /* alles klar gegangen                   */
  47. #define MIS_ARG    1      /* erforderliches Argument fehlt         */
  48. #define WRONG_ARG  2      /* falsches Argument                     */
  49. #define MIS_STRING 3      /* Stringschalter fehlt string           */
  50. #define MIS_INT    4      /* Integerschalter fehlt string          */
  51. #define MIS_CHAR   5      /* Charschalter fehlt char               */
  52.  
  53. /********  S T R U C T U R E :  */
  54.  
  55. typedef struct
  56. {
  57. short    option   ;       /* optionales Argument ?                 */
  58. short    type     ;       /* Typ des Arguments                     */
  59. short    schalter ;       /* Schalter ?                            */
  60. char     s_char   ;       /* Schalterzeichen falls Schalterarg.    */
  61. long zeiger;              /* grö₧ter Datentyp, kann jeden aufnehmen,
  62.                              wird mit cast zurechtgebogen          */
  63. } ARGUMENTS;
  64.  
  65. /********  R E M A R K S :
  66.  
  67. im Falle von STRING darf der String nicht als Vektor definiert wer-
  68. den, sondern unbedingt als Zeiger!
  69.  
  70. nicht
  71.    char s[10] = "xxxxx"
  72. s und &s sind identisch!
  73.  
  74. sondern
  75.    char *s = "xxxxx"
  76. s ist Zeiger auf erstes "x"!
  77. &s ist Zeiger (Adresse) auf den Zeiger s
  78.  
  79. In ARGUMENTS mu₧ dann (long)&s, also die Adresse des Zeigers
  80. gesetzt werden !
  81. Die Funktion parse_args verändert über den Zeiger auf
  82. den Zeiger s (Adresse des Zeigers s) den Zeiger s selbst.
  83.  
  84. ********************************************************************/
  85.