arg.h - scc - simple c99 compiler
HTML git clone git://git.simple-cc.org/scc
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
arg.h (1198B)
---
1 /*
2 * Copy me if you can.
3 * by 20h
4 */
5
6 #ifndef ARG_H__
7 #define ARG_H__
8
9 extern char *argv0;
10
11 /* use main(int argc, char *argv[]) */
12 #define ARGBEGIN \
13 for (argv0 = *argv, argv++, argc--;\
14 argv[0];\
15 argc--, argv++) {\
16 if (argv[0][0] == '-') {\
17 char argc_;\
18 char **argv_;\
19 int brk_;\
20 if (argv[0][1] == '-' && argv[0][2] == '\0') {\
21 argv++;\
22 argc--;\
23 break;\
24 }\
25 for (brk_ = 0, argv[0]++, argv_ = argv;\
26 argv[0][0] && !brk_;\
27 argv[0]++) {\
28 if (argv_ != argv)\
29 break;\
30 argc_ = argv[0][0];\
31 switch (argc_)
32
33 #define ARGOPERAND \
34 }\
35 } else if (argv[0][0] != '\0') {\
36 {
37
38 #define ARGEND \
39 }\
40 } else {\
41 break;\
42 }\
43 }
44
45 #define ARGC() argc_
46
47 #define ARGOP() argv[0]
48
49 #define ARGNUMF() (brk_ = 1, estrtonum(argv[0], 0, INT_MAX))
50
51 #define EARGF(x) \
52 ((argv[0][1] == '\0' && argv[1] == NULL) ?\
53 ((x), abort(), (char *)0) :\
54 (brk_ = 1, (argv[0][1] != '\0') ?\
55 (&argv[0][1]) :\
56 (argc--, argv++, argv[0])))
57
58 #define ARGF() \
59 ((argv[0][1] == '\0' && argv[1] == NULL)?\
60 (char *)0 :\
61 (brk_ = 1, (argv[0][1] != '\0')?\
62 (&argv[0][1]) :\
63 (argc--, argv++, argv[0])))
64
65 #define LNGARG() &argv[0][0]
66
67 #endif