initial commit
[rofl0r-stringswitch.git] / example / stringswitch_impl_argv0.c
blobab654ce9511894a4c3ddb28749d4d89226a6de37
1 typedef enum {
2 stringswitch_enumerator_default_member_name(argv0),
3 stringswitch_enumerator_member_name(argv0, hi),
4 stringswitch_enumerator_member_name(argv0, lo),
5 stringswitch_enumerator_member_name(argv0, bye),
6 stringswitch_enumerator_member_name(argv0, hello),
7 stringswitch_enumerator_member_name(argv0, holla),
8 stringswitch_enumerator_member_name(argv0, hollu),
9 stringswitch_enumerator_member_name(argv0, hodlu),
10 } stringswitch_enumerator_name(argv0);
12 static int stringswitch_enumerator_eval_func(argv0) (char* str, size_t l) {
13 switch(l) {
14 case 2:
15 switch(str[0]) {
16 case 'h':
17 if(str[1]!='i') goto main_default;
18 return stringswitch_enumerator_member_name(argv0, hi);
19 case 'l':
20 if(str[1]!='o') goto main_default;
21 return stringswitch_enumerator_member_name(argv0, lo);
22 default: goto main_default;
24 case 3:
25 if(str[0]!='b') goto main_default;
26 if(str[1]!='y') goto main_default;
27 if(str[2]!='e') goto main_default;
28 return stringswitch_enumerator_member_name(argv0, bye);
29 case 5:
30 if(str[0]!='h') goto main_default;
31 switch(str[1]) {
32 case 'e':
33 if(str[2]!='l') goto main_default;
34 if(str[3]!='l') goto main_default;
35 if(str[4]!='o') goto main_default;
36 return stringswitch_enumerator_member_name(argv0, hello);
37 case 'o':
38 switch(str[2]) {
39 case 'l':
40 if(str[3]!='l') goto main_default;
41 switch(str[4]) {
42 case 'a':
43 return stringswitch_enumerator_member_name(argv0, holla);
44 case 'u':
45 return stringswitch_enumerator_member_name(argv0, hollu);
46 default: goto main_default;
48 case 'd':
49 if(str[3]!='l') goto main_default;
50 if(str[4]!='u') goto main_default;
51 return stringswitch_enumerator_member_name(argv0, hodlu);
52 default: goto main_default;
54 default: goto main_default;
56 default:
57 main_default:
58 return stringswitch_enumerator_default_member_name(argv0);