@@ -155,46 +155,7 @@ bool cmdlinet::parse(int argc, const char **argv, const char *optstring)
155
155
{
156
156
clear ();
157
157
158
- while (optstring[0 ]!=0 )
159
- {
160
- optiont option;
161
-
162
- DATA_INVARIANT (
163
- optstring[0 ] != ' :' , " cmdlinet::parse: Invalid option string\n " );
164
-
165
- if (optstring[0 ]==' (' )
166
- {
167
- option.islong =true ;
168
- option.optchar =0 ;
169
- option.isset =false ;
170
- option.optstring .clear ();
171
-
172
- for (optstring++; optstring[0 ]!=' )' && optstring[0 ]!=0 ; optstring++)
173
- option.optstring +=optstring[0 ];
174
-
175
- if (optstring[0 ]==' )' )
176
- optstring++;
177
- }
178
- else
179
- {
180
- option.islong =false ;
181
- option.optchar =optstring[0 ];
182
- option.optstring .clear ();
183
- option.isset =false ;
184
-
185
- optstring++;
186
- }
187
-
188
- if (optstring[0 ]==' :' )
189
- {
190
- option.hasval =true ;
191
- optstring++;
192
- }
193
- else
194
- option.hasval =false ;
195
-
196
- options.push_back (option);
197
- }
158
+ parse_optstring (optstring);
198
159
199
160
for (int i=1 ; i<argc; i++)
200
161
{
@@ -250,6 +211,49 @@ cmdlinet::option_namest cmdlinet::option_names() const
250
211
{
251
212
return option_namest{*this };
252
213
}
214
+ void cmdlinet::parse_optstring (const char *optstring)
215
+ {
216
+ while (optstring[0 ] != 0 )
217
+ {
218
+ optiont option;
219
+
220
+ DATA_INVARIANT (
221
+ optstring[0 ] != ' :' , " cmdlinet::parse: Invalid option string\n " );
222
+
223
+ if (optstring[0 ] == ' (' )
224
+ {
225
+ option.islong = true ;
226
+ option.optchar = 0 ;
227
+ option.isset = false ;
228
+ option.optstring .clear ();
229
+
230
+ for (optstring++; optstring[0 ] != ' )' && optstring[0 ] != 0 ; optstring++)
231
+ option.optstring += optstring[0 ];
232
+
233
+ if (optstring[0 ] == ' )' )
234
+ optstring++;
235
+ }
236
+ else
237
+ {
238
+ option.islong = false ;
239
+ option.optchar = optstring[0 ];
240
+ option.optstring .clear ();
241
+ option.isset = false ;
242
+
243
+ optstring++;
244
+ }
245
+
246
+ if (optstring[0 ] == ' :' )
247
+ {
248
+ option.hasval = true ;
249
+ optstring++;
250
+ }
251
+ else
252
+ option.hasval = false ;
253
+
254
+ options.push_back (option);
255
+ }
256
+ }
253
257
254
258
std::vector<std::string>
255
259
cmdlinet::get_argument_suggestions (const std::string &unknown_argument)
0 commit comments