arg.h
58 lines
| 1.2 KiB
| text/x-c
|
CLexer
/ smsg / arg.h
| r0 | #ifndef ARG_H__ | |||
| #define ARG_H__ | ||||
| extern char *argv0; | ||||
| #define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ | ||||
| argv[0] && argv[0][0] == '-'\ | ||||
| && argv[0][1];\ | ||||
| argc--, argv++) {\ | ||||
| char argc_;\ | ||||
| char **argv_;\ | ||||
| int brk_;\ | ||||
| if (argv[0][1] == '-' && argv[0][2] == '\0') {\ | ||||
| argv++;\ | ||||
| argc--;\ | ||||
| break;\ | ||||
| }\ | ||||
| for (brk_ = 0, argv[0]++, argv_ = argv;\ | ||||
| argv[0][0] && !brk_;\ | ||||
| argv[0]++) {\ | ||||
| if (argv_ != argv)\ | ||||
| break;\ | ||||
| argc_ = argv[0][0];\ | ||||
| switch (argc_) | ||||
| #define ARGNUM case '0':\ | ||||
| case '1':\ | ||||
| case '2':\ | ||||
| case '3':\ | ||||
| case '4':\ | ||||
| case '5':\ | ||||
| case '6':\ | ||||
| case '7':\ | ||||
| case '8':\ | ||||
| case '9' | ||||
| #define ARGEND }\ | ||||
| } | ||||
| #define ARGC() argc_ | ||||
| #define ARGNUMF() (brk_ = 1, estrtonum(argv[0], 0, INT_MAX)) | ||||
| #define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\ | ||||
| ((x), abort(), (char *)0) :\ | ||||
| (brk_ = 1, (argv[0][1] != '\0')?\ | ||||
| (&argv[0][1]) :\ | ||||
| (argc--, argv++, argv[0]))) | ||||
| #define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\ | ||||
| (char *)0 :\ | ||||
| (brk_ = 1, (argv[0][1] != '\0')?\ | ||||
| (&argv[0][1]) :\ | ||||
| (argc--, argv++, argv[0]))) | ||||
| #define LNGARG() &argv[0][0] | ||||
| #endif | ||||
