]>
Commit | Line | Data |
---|---|---|
ef416fc2 | 1 | /* |
2 | * parseargs.h | |
3 | * | |
4 | * Command line argument parser. | |
5 | * | |
6 | * Copyright 1996-2003 Glyph & Cog, LLC | |
7 | */ | |
8 | ||
9 | #ifndef PARSEARGS_H | |
10 | #define PARSEARGS_H | |
11 | ||
12 | #ifdef __cplusplus | |
13 | extern "C" { | |
14 | #endif | |
15 | ||
16 | #include "gtypes.h" | |
17 | ||
18 | /* | |
19 | * Argument kinds. | |
20 | */ | |
21 | typedef enum { | |
22 | argFlag, /* flag (present / not-present) */ | |
23 | /* [val: GBool *] */ | |
24 | argInt, /* integer arg */ | |
25 | /* [val: int *] */ | |
26 | argFP, /* floating point arg */ | |
27 | /* [val: double *] */ | |
28 | argString, /* string arg */ | |
29 | /* [val: char *] */ | |
30 | /* dummy entries -- these show up in the usage listing only; */ | |
31 | /* useful for X args, for example */ | |
32 | argFlagDummy, | |
33 | argIntDummy, | |
34 | argFPDummy, | |
35 | argStringDummy | |
36 | } ArgKind; | |
37 | ||
38 | /* | |
39 | * Argument descriptor. | |
40 | */ | |
41 | typedef struct { | |
42 | char *arg; /* the command line switch */ | |
43 | ArgKind kind; /* kind of arg */ | |
44 | void *val; /* place to store value */ | |
45 | int size; /* for argString: size of string */ | |
46 | char *usage; /* usage string */ | |
47 | } ArgDesc; | |
48 | ||
49 | /* | |
50 | * Parse command line. Removes all args which are found in the arg | |
51 | * descriptor list <args>. Stops parsing if "--" is found (and removes | |
52 | * it). Returns gFalse if there was an error. | |
53 | */ | |
54 | extern GBool parseArgs(ArgDesc *args, int *argc, char *argv[]); | |
55 | ||
56 | /* | |
57 | * Print usage message, based on arg descriptor list. | |
58 | */ | |
59 | extern void printUsage(char *program, char *otherArgs, ArgDesc *args); | |
60 | ||
61 | /* | |
62 | * Check if a string is a valid integer or floating point number. | |
63 | */ | |
64 | extern GBool isInt(char *s); | |
65 | extern GBool isFP(char *s); | |
66 | ||
67 | #ifdef __cplusplus | |
68 | } | |
69 | #endif | |
70 | ||
71 | #endif |