2
* File automatically generated by
3
* gengen 1.1 by Lorenzo Bettini
4
* http://www.gnu.org/software/gengen
7
#include "multiple_option.h"
10
multiple_option_gen_class::generate_multiple_option(ostream &stream, unsigned int indent)
12
string indent_str (indent, ' ');
18
generate_string (short_option, stream, indent + indent_str.length ());
20
generate_string (option_comment, stream, indent + indent_str.length ());
28
generate_string (option_comment, stream, indent + indent_str.length ());
32
generate_string (gen_else, stream, indent + indent_str.length ());
33
stream << "if (strcmp (long_options[option_index].name, \"";
34
generate_string (long_option, stream, indent + indent_str.length ());
35
stream << "\") == 0)";
42
stream << " local_args_info.";
43
generate_string (option_var_name, stream, indent + indent_str.length ());
44
stream << "_given++;";
51
stream << " multi_token = get_multiple_arg_token(optarg);";
54
stream << " multi_next = get_multiple_arg_token_next (optarg);";
59
stream << " while (1)";
65
if (option_has_values)
67
stream << " if ((found = check_possible_values((multi_token ? multi_token : ";
68
if (( defaultval != "" ))
71
generate_string (defaultval, stream, indent + indent_str.length ());
79
generate_string (option_values, stream, indent + indent_str.length ());
86
stream << " fprintf (stderr, \"%s: %s argument, \\\"%s\\\", for option `--";
87
generate_string (long_option, stream, indent + indent_str.length ());
92
generate_string (short_option, stream, indent + indent_str.length ());
95
stream << "%s\\n\", ";
96
generate_string (package_var_name, stream, indent + indent_str.length ());
97
stream << ", (found == -2) ? \"ambiguous\" : \"invalid\", multi_token, (additional_error ? additional_error : \"\"));";
100
stream << " free (multi_token);";
102
stream << indent_str;
103
stream << " goto failure;";
105
stream << indent_str;
108
stream << indent_str;
110
stream << indent_str;
113
generate_string (option_var_name, stream, indent + indent_str.length ());
114
stream << "_new = (struct ";
115
generate_string (type, stream, indent + indent_str.length ());
116
stream << "_list *) malloc (sizeof (struct ";
117
generate_string (type, stream, indent + indent_str.length ());
118
stream << "_list));";
120
stream << indent_str;
123
generate_string (option_var_name, stream, indent + indent_str.length ());
124
stream << "_new->next = ";
125
generate_string (option_var_name, stream, indent + indent_str.length ());
129
stream << indent_str;
132
generate_string (option_var_name, stream, indent + indent_str.length ());
133
stream << "_list = ";
134
generate_string (option_var_name, stream, indent + indent_str.length ());
138
stream << indent_str;
141
generate_string (update_arg, stream, indent + indent_str.length ());
144
stream << indent_str;
146
stream << indent_str;
147
stream << " if (multi_next)";
149
stream << indent_str;
152
stream << indent_str;
153
stream << " multi_token = get_multiple_arg_token(multi_next);";
155
stream << indent_str;
156
stream << " multi_next = get_multiple_arg_token_next (multi_next);";
158
stream << indent_str;
159
stream << " local_args_info.";
160
generate_string (option_var_name, stream, indent + indent_str.length ());
161
stream << "_given++;";
163
stream << indent_str;
166
stream << indent_str;
169
stream << indent_str;
172
stream << indent_str;
175
stream << indent_str;
177
if (option_has_group)
179
stream << " if (!args_info->";
180
generate_string (option_var_name, stream, indent + indent_str.length ());
183
stream << indent_str;
186
stream << indent_str;
187
stream << " args_info->";
188
generate_string (option_var_name, stream, indent + indent_str.length ());
189
stream << "_group = 1;";
191
stream << indent_str;
192
stream << " args_info->";
193
generate_string (group_var_name, stream, indent + indent_str.length ());
194
stream << "_group_counter += 1;";
196
stream << indent_str;
199
stream << indent_str;
202
if (has_short_option)
210
stream << indent_str;
213
stream << indent_str;