Mercurial > hg > dmlib
annotate src/dmargs.h @ 2401:263093248f26
Change dmPrintWrap() API and move the string argument last.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 12 Jan 2020 19:32:29 +0200 |
parents | 01c6a5261962 |
children | b7cd5dd0b82e |
rev | line source |
---|---|
0 | 1 /* |
2 * Simple commandline argument processing functions | |
3 * Programmed and designed by Matti 'ccr' Hamalainen | |
2361 | 4 * (C) Copyright 2002-2020 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) |
2400
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
38 char o_short; ///< Short option name (one character, can be 0 for none) |
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
39 char *o_long; ///< Long option name (can be NULL for none) |
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
40 #ifdef DM_USE_OPT_ARG |
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
41 char *o_arg; ///< Option argument name (can be NULL for none/default) |
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
42 #endif |
1742
ddec147d1f90
Bring in changes from the th-libs version of commandline argument handling.
Matti Hamalainen <ccr@tnsp.org>
parents:
1554
diff
changeset
|
43 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
|
44 int flags; ///< Flags (see OPT_*) |
0 | 45 } DMOptArg; |
46 | |
860
daebbf28953d
The argument handling API in dmargs* was synced with th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
812
diff
changeset
|
47 |
2400
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
48 BOOL dmArgsProcess(int argc, char *argv[], |
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
49 const DMOptArg *opts, const int nopts, |
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
50 BOOL (*handle_option)(int id, char *, char *), |
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
51 BOOL (*handle_other)(char *), const int flags); |
0 | 52 |
2400
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
53 void dmArgsPrintHelp(FILE *fh, const DMOptArg *opts, |
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
54 const int nopts, const int flags); |
01c6a5261962
Sync commandline argument help printing/handling changes from th-libs.
Matti Hamalainen <ccr@tnsp.org>
parents:
2361
diff
changeset
|
55 |
2401
263093248f26
Change dmPrintWrap() API and move the string argument last.
Matti Hamalainen <ccr@tnsp.org>
parents:
2400
diff
changeset
|
56 void dmPrintWrap(FILE *fh, const int spad, const int rpad, |
263093248f26
Change dmPrintWrap() API and move the string argument last.
Matti Hamalainen <ccr@tnsp.org>
parents:
2400
diff
changeset
|
57 const int width, const char *str); |
0 | 58 |
59 #ifdef __cplusplus | |
60 } | |
61 #endif | |
62 #endif // DMARGS_H |