Mercurial > hg > dmlib
annotate src/dmargs.h @ 2294:7f6ba3b32f54
Cleanups.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 03 Jul 2019 10:28:43 +0300 |
parents | ddec147d1f90 |
children | c801995cbb13 |
rev | line source |
---|---|
0 | 1 /* |
2 * Simple commandline argument processing functions | |
3 * Programmed and designed by Matti 'ccr' Hamalainen | |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
4 * (C) Copyright 2002-2018 Tecnic Software productions (TNSP) |
0 | 5 * |
6 * Please read file 'COPYING' for information on license and distribution. | |
7 */ | |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
8 /// @file |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
9 /// @brief Simple commandline argument processing functions |
0 | 10 #ifndef DMARGS_H |
11 #define DMARGS_H | |
12 | |
13 #include "dmlib.h" | |
14 | |
15 #ifdef __cplusplus | |
16 extern "C" { | |
17 #endif | |
18 | |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
19 /** @def Option argument flags |
0 | 20 */ |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
21 #define OPT_NONE (0) ///< Simple option with no arguments |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
22 #define OPT_ARGREQ (1) ///< Option requires an argument |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
23 #define OPT_ARGMASK (1) ///< Mask for option argument flags |
0 | 24 |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
25 /** @def Option processing flags |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
26 */ |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
27 #define OPTH_BAILOUT 0x0001 ///< Bail out on errors |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
28 #define OPTH_ONLY_OPTS 0x0010 ///< Handle only options |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
29 #define OPTH_ONLY_OTHER 0x0020 ///< Handle only "non-options" |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
30 #define OPTH_ONLY_MASK 0x00f0 ///< Mask |
860
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
812
diff
changeset
|
31 |
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
812
diff
changeset
|
32 |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
33 /** Option argument structure |
860
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
812
diff
changeset
|
34 */ |
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
812
diff
changeset
|
35 typedef struct |
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
812
diff
changeset
|
36 { |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
37 int id; ///< Option ID (should be unique for each option) |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
38 char o_short; ///< Short option name (one character) |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
39 char *o_long; ///< Long option name |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
40 char *desc; ///< Option description |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
41 int flags; ///< Flags (see OPT_*) |
0 | 42 } DMOptArg; |
43 | |
860
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
812
diff
changeset
|
44 |
0 | 45 BOOL dmArgsProcess(int argc, char *argv[], |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
46 const DMOptArg *opts, const int nopts, |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
47 BOOL (*handle_option)(int id, char *, char *), |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
48 BOOL (*handle_other)(char *), const int flags); |
0 | 49 |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
50 void dmArgsPrintHelp(FILE *, const DMOptArg *opts, |
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
51 const int nopts, const int flags); |
0 | 52 |
53 #ifdef __cplusplus | |
54 } | |
55 #endif | |
56 #endif // DMARGS_H |