https://github.com/jacopodl/argsx
Command line option parser
https://github.com/jacopodl/argsx
argsx c cli console cpp option-parser options
Last synced: about 2 months ago
JSON representation
Command line option parser
- Host: GitHub
- URL: https://github.com/jacopodl/argsx
- Owner: jacopodl
- Created: 2013-09-05T08:45:20.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2017-12-09T15:04:15.000Z (over 8 years ago)
- Last Synced: 2025-03-26T10:12:25.854Z (about 1 year ago)
- Topics: argsx, c, cli, console, cpp, option-parser, options
- Language: C
- Homepage:
- Size: 22.5 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README


[](http://www.gnu.org/licenses/gpl-3.0.html)
# ArgsX #
Argsx is a easy to use command line option parser for C/C++ that support long and short option formats.
# Overview #
## Long option interface ##
```c++
struct ax_lopt {
char *name; // Option
int args; // Required parameter ?
char opt; // Return value
}
struct ax_lopt longOpt[] = {{"one", ARGSX_NOARG, 1},
{"two", ARGSX_REQ_ARG, 2},
{"three", ARGSX_NOARG, 't'}};
```
## Short option ##
Short option required string formatted in this way:
1. Single character like 'l' -> Option that dosn't require additional parameter.
1. Single character followed by ! like 't!' -> Option that require additional parameter.
For example, if your program require options 'a','b','c' without parameter and option 't' and 'e' with parameter you can write string like this: "abct!e!".
## ArgsX function ##
```c++
int ArgsX(
int argc, // argc parameter
char **argv, // argv parameter
char *opt, // pointer to short options string
ax_lopt *lopt, // pointer to long options struct
unsigned short lopt_size, // size of long options struct
char tr // Trigger char Eg: '-'
);
```
## Put all together ##
```c++
struct ax_lopt longOpt[] = {{"one", ARGSX_NOARG, 1},
{"two", ARGSX_REQ_ARG, 2},
{"three", ARGSX_NOARG, 't'}};
int opt;
while((opt = ArgsX(argc, argv, "abct!e!", longOpt, sizeof(longOpt), '-')) != -1)
{
switch(opt)
{
case 1:
// --one
break;
case 2:
// --two
break;
case 'a':
break;
case 'b':
break;
case 't':
// -t or --three
break;
case ARGSX_BAD_OPT:
break;
case ARGSX_FEW_ARGS:
break;
case ARGSX_NONOPT:
break;
}
}
```