home *** CD-ROM | disk | FTP | other *** search
- /********************************************************************
- * TITEL : Argument-Parser Headerfile *
- * *
- * DATEI : arg.h *
- * VERSION : 1.0 *
- * AUTOR : Joachim Eckart *
- * DATUM : 12/86 *
- ********************************************************************/
-
- /* D E F I N E S */
-
- /******** option: */
-
- #define OPT 1 /* Argument ist optional */
- #define NON_OPT 0 /* Argument mu₧ vorhanden sein */
-
- /******** types: */
-
- #define BOOLEAN 0 /* nur für Schalter/Variable, wird auf 1
- gesetzt, wenn vorhanden */
- #define INTEGER 1 /* nur für Schalter/Variable, erhält den
- Integerwert */
- #define CHAR 2 /* nur für Schalter/Variable, erhält das
- eine Zeichen hinter Schalter */
- #define FUNC 3 /* mit und ohne Schalter mit nachfolgen-
- dem Argument.
- Schalter:
- fehlt das Argument, wird "" übergeben.
- Kein Schalter (also einfacher String):
- String wird übergeben. */
- #define STRING 4 /* mit und ohne Schalter/String, wird der
- Variablen zugewiesen */
- #define FORCE_FUNC 5 /* nur ohne Schalter und als optionales
- Argument. Funktion wird auch bei
- fehlendem Argument mit "" aufgerufen */
-
- /******** schalter: */
-
- #define SCHALTER 1 /* Argument wird durch -x (x = 1 Zeichen)
- eingeleitet. */
- #define NO_SCHLT 0 /* Argument ist Zeichenfolge, die nicht
- mit '-' beginnen darf. */
-
- /******** errorcodes - werden durch parse_args() zurückgegeben: */
-
- #define OK 0 /* alles klar gegangen */
- #define MIS_ARG 1 /* erforderliches Argument fehlt */
- #define WRONG_ARG 2 /* falsches Argument */
- #define MIS_STRING 3 /* Stringschalter fehlt string */
- #define MIS_INT 4 /* Integerschalter fehlt string */
- #define MIS_CHAR 5 /* Charschalter fehlt char */
-
- /******** S T R U C T U R E : */
-
- typedef struct
- {
- short option ; /* optionales Argument ? */
- short type ; /* Typ des Arguments */
- short schalter ; /* Schalter ? */
- char s_char ; /* Schalterzeichen falls Schalterarg. */
- long zeiger; /* grö₧ter Datentyp, kann jeden aufnehmen,
- wird mit cast zurechtgebogen */
- } ARGUMENTS;
-
- /******** R E M A R K S :
-
- im Falle von STRING darf der String nicht als Vektor definiert wer-
- den, sondern unbedingt als Zeiger!
-
- nicht
- char s[10] = "xxxxx"
- s und &s sind identisch!
-
- sondern
- char *s = "xxxxx"
- s ist Zeiger auf erstes "x"!
- &s ist Zeiger (Adresse) auf den Zeiger s
-
- In ARGUMENTS mu₧ dann (long)&s, also die Adresse des Zeigers
- gesetzt werden !
- Die Funktion parse_args verändert über den Zeiger auf
- den Zeiger s (Adresse des Zeigers s) den Zeiger s selbst.
-
- ********************************************************************/
-