1 // Copyright (C) 2001-2010 Gianni Mariani
2 //
3 // This program is free software; you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation; either version 2 of the License, or
6 // (at your option) any later version.
7 //
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16 //
17 // As a special exception, you may use this file as part of a free software
18 // library without restriction. Specifically, if other files instantiate
19 // templates or use macros or inline functions from this file, or you compile
20 // this file and link it with other files to produce an executable, this
21 // file does not by itself cause the resulting executable to be covered by
22 // the GNU General Public License. This exception does not however
23 // invalidate any other reasons why the executable file might be covered by
24 // the GNU General Public License.
25 //
26 // This exception applies only to the code released under the name GNU
27 // Common C++. If you copy code from other releases into a copy of GNU
28 // Common C++, as the General Public License permits, the exception does
29 // not apply to the code that you add in this way. To avoid misleading
30 // anyone as to the status of such modified files, you must delete
31 // this exception notice from them.
32 //
33 // If you write modifications of your own for GNU Common C++, it is your choice
34 // whether to permit this exception to apply to your modifications.
35 // If you do not wish that, delete this exception notice.
36 //
37
43 #ifndef CCXX_CMDOPTNS_H_
44 #define CCXX_CMDOPTNS_H_
45
46 #ifndef CCXX_STRING_H_
48 #endif
49
50 #ifdef CCXX_NAMESPACES
51 namespace ost {
52 #endif
53
56
65
77 public:
78
84
90
97
120 };
121
126
131 bool required;
// Option is required - fail without it
132
138
143
156 const char * inOptionName,
157 const char * inOptionLetter,
158 const char * inDescription,
160 bool inRequired = false,
162 );
163
172
182
190
199
206 virtual bool hasValue();
207
208 };
209
215 public:
216
221
226
239 const char * inOptionName,
240 const char * inOptionLetter,
241 const char * inDescription,
243 bool inRequired = false,
245 );
246
248
251 virtual bool hasValue();
252 };
253
258 public:
259
271 const char * inOptionName,
272 const char * inOptionLetter,
273 const char * inDescription,
274 bool inRequired = false,
276 );
277
279
280
281 };
282
293 public:
294
306 const char * inOptionName,
307 const char * inOptionLetter,
308 const char * inDescription,
309 bool inRequired = false,
311 );
312
313 };
314
323 public:
324
336 const char * inOptionName,
337 const char * inOptionLetter,
338 const char * inDescription,
339 bool inRequired = false,
341 );
342
343 };
344
349 public:
350
354 int numSet;
// The number of times this argument is set
355
367 const char * inOptionName,
368 const char * inOptionLetter,
369 const char * inDescription,
370 bool inRequired = false,
372 );
373
378
379 };
380
391 public:
392
397
401 virtual bool argsHaveError() = 0;
402
406 virtual const char * printErrors() = 0;
407
411 virtual const char * printUsage() = 0;
412
417 virtual void registerError( const char * errMsg ) = 0;
418
423 virtual void performTask() = 0;
424
425 };
426
436 int argc,
437 char ** argv,
438 const char * comment,
440 );
441
442 #ifdef CCXX_NAMESPACES
443 }
444 #endif
445
446 #endif
447
bool required
True if this parameter is required.
const char ** values
Array of list of values collected for this option.
Class for options with an argument e.g.
Derived class of CommandOption for options that have a value associated with them.
Common C++ generic string class.
This option is a flag only.
OptionType
OptionType is for denoting what type of option this is, with an arg, without an arg or the trailing a...
It only makes sense to have a single one of these set and it is exclusive with CommandOptionCollect.
CommandOption * next
This next CommandOption in this list of options or nil if no more options exist.
OptionType optionType
This command option's OptionType.
Remaining of the command line arguments.
CommandOption is the base class for all command line options.
This option is associated with a value.
int numValue
Number of values in the values array.
const char * optionLetter
option letter, these will be preceded with "-" on the command line.
It only makes sense to have a single one of these set and it is also exclusive with CommandOptionRest...
const char * optionName
Long option name, these will be preceded with "--" on the command line.
int numSet
The number of times this value has been set.
This is the CommandOptionParse interface class.
CommandOption type for flags.
__EXPORT CommandOption * defaultCommandOptionList
This defines a linked list head pointer for all the command line options that use the default list...
__EXPORT CommandOptionParse * makeCommandOptionParse(int argc, char **argv, const char *comment, CommandOption *options=defaultCommandOptionList)
makeCommandOptionParse will create an implementation of a CommandOptionParse object.
const char * description
A short description of the option for Usage messages.