GNU CommonC++
cmdoptns.h
Go to the documentation of this file.
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_
47#include <cc++/string.h>
48#endif
49
50#ifdef CCXX_NAMESPACES
51namespace ost {
52#endif
53
54class CommandOption;
55class CommandOptionParse;
56
64extern __EXPORT CommandOption * defaultCommandOptionList;
65
77public:
78
83 const char * optionName;
84
89 const char * optionLetter;
90
96 const char * description;
97
119 collect
120 };
121
125 OptionType optionType; // HasArg, NoArg or Trailing
126
131 bool required; // Option is required - fail without it
132
138
142 virtual ~CommandOption();
143
156 const char * inOptionName,
157 const char * inOptionLetter,
158 const char * inDescription,
159 OptionType inOptionType,
160 bool inRequired = false,
161 CommandOption ** ppNext = & defaultCommandOptionList
162 );
163
171 virtual void foundOption( CommandOptionParse * cop, const char * value = 0 );
172
181 virtual void foundOption( CommandOptionParse * cop, const char ** value, int num );
182
189 virtual void parseDone( CommandOptionParse * cop );
190
198 virtual void performTask( CommandOptionParse * cop );
199
206 virtual bool hasValue();
207
208};
209
215public:
216
220 const char ** values;
221
226
239 const char * inOptionName,
240 const char * inOptionLetter,
241 const char * inDescription,
242 OptionType inOptionType,
243 bool inRequired = false,
244 CommandOption ** ppNext = & defaultCommandOptionList
245 );
246
248
249 virtual void foundOption( CommandOptionParse * cop, const char * value = 0 );
250 virtual void foundOption( CommandOptionParse * cop, const char ** value, int num );
251 virtual bool hasValue();
252};
253
258public:
259
271 const char * inOptionName,
272 const char * inOptionLetter,
273 const char * inDescription,
274 bool inRequired = false,
275 CommandOption ** ppNext = & defaultCommandOptionList
276 );
277
279
280
281};
282
293public:
294
306 const char * inOptionName,
307 const char * inOptionLetter,
308 const char * inDescription,
309 bool inRequired = false,
310 CommandOption ** ppNext = & defaultCommandOptionList
311 );
312
313};
314
323public:
324
336 const char * inOptionName,
337 const char * inOptionLetter,
338 const char * inDescription,
339 bool inRequired = false,
340 CommandOption ** ppNext = & defaultCommandOptionList
341 );
342
343};
344
349public:
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,
371 CommandOption ** ppNext = & defaultCommandOptionList
372 );
373
377 virtual void foundOption( CommandOptionParse * cop, const char * value = 0 );
378
379};
380
391public:
392
396 virtual ~CommandOptionParse() = 0;
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
Class for options with an argument e.g.
Definition cmdoptns.h:257
virtual ~CommandOptionArg()
CommandOptionArg(const char *inOptionName, const char *inOptionLetter, const char *inDescription, bool inRequired=false, CommandOption **ppNext=&defaultCommandOptionList)
CommandOptionArg contructor.
It only makes sense to have a single one of these set and it is also exclusive with CommandOptionRest...
Definition cmdoptns.h:322
CommandOptionCollect(const char *inOptionName, const char *inOptionLetter, const char *inDescription, bool inRequired=false, CommandOption **ppNext=&defaultCommandOptionList)
CommandOptionRest contructor.
CommandOption is the base class for all command line options.
Definition cmdoptns.h:76
bool required
True if this parameter is required.
Definition cmdoptns.h:131
CommandOption * next
This next CommandOption in this list of options or nil if no more options exist.
Definition cmdoptns.h:137
virtual void parseDone(CommandOptionParse *cop)
Once parsing of command line options is complete, this method is called.
OptionType optionType
This command option's OptionType.
Definition cmdoptns.h:125
const char * optionName
Long option name, these will be preceded with "--" on the command line.
Definition cmdoptns.h:83
virtual void foundOption(CommandOptionParse *cop, const char *value=0)
foundOption is called by the CommandOptionParse object during the parsing of the command line options...
virtual ~CommandOption()
A virtual destructor just in case.
CommandOption(const char *inOptionName, const char *inOptionLetter, const char *inDescription, OptionType inOptionType, bool inRequired=false, CommandOption **ppNext=&defaultCommandOptionList)
CommandOption contructor.
OptionType
OptionType is for denoting what type of option this is, with an arg, without an arg or the trailing a...
Definition cmdoptns.h:103
@ noArg
This option is a flag only.
Definition cmdoptns.h:111
@ trailing
Remaining of the command line arguments.
Definition cmdoptns.h:115
@ hasArg
This option is associated with a value.
Definition cmdoptns.h:107
virtual void foundOption(CommandOptionParse *cop, const char **value, int num)
foundOption is called by the CommandOptionParse object during the parsing of the command line options...
const char * optionLetter
option letter, these will be preceded with "-" on the command line.
Definition cmdoptns.h:89
virtual bool hasValue()
For fields with the required flag set, this method is used to determine if the Option has satisfied i...
const char * description
A short description of the option for Usage messages.
Definition cmdoptns.h:96
virtual void performTask(CommandOptionParse *cop)
Once CommandOption objects have completed parsing and there are no errors they may have some specific...
CommandOption type for flags.
Definition cmdoptns.h:348
CommandOptionNoArg(const char *inOptionName, const char *inOptionLetter, const char *inDescription, bool inRequired=false, CommandOption **ppNext=&defaultCommandOptionList)
CommandOptionArg contructor.
int numSet
The number of times this value has been set.
Definition cmdoptns.h:354
virtual void foundOption(CommandOptionParse *cop, const char *value=0)
CommandOptionNoArg::foundOption will evpect a nil "value" passed in.
This is the CommandOptionParse interface class.
Definition cmdoptns.h:390
virtual void performTask()=0
The method should be invoked by the main code once it has determined that the application should be s...
virtual void registerError(const char *errMsg)=0
Register an error with this parser.
virtual const char * printErrors()=0
Return a string of text describing the list of errors encountered.
virtual const char * printUsage()=0
Return a string that contains the usage description of this list of paramaters.
virtual ~CommandOptionParse()=0
Virtual destructor needed so that the object may be correctly deleted.
virtual bool argsHaveError()=0
Get the value of the error flag set if the parser encountered errors.
It only makes sense to have a single one of these set and it is exclusive with CommandOptionCollect.
Definition cmdoptns.h:292
CommandOptionRest(const char *inOptionName, const char *inOptionLetter, const char *inDescription, bool inRequired=false, CommandOption **ppNext=&defaultCommandOptionList)
CommandOptionRest contructor.
Derived class of CommandOption for options that have a value associated with them.
Definition cmdoptns.h:214
int numValue
Number of values in the values array.
Definition cmdoptns.h:225
const char ** values
Array of list of values collected for this option.
Definition cmdoptns.h:220
virtual void foundOption(CommandOptionParse *cop, const char **value, int num)
CommandOptionWithArg(const char *inOptionName, const char *inOptionLetter, const char *inDescription, OptionType inOptionType, bool inRequired=false, CommandOption **ppNext=&defaultCommandOptionList)
CommandOptionWithArg contructor.
virtual void foundOption(CommandOptionParse *cop, const char *value=0)
#define __EXPORT
Definition config.h:1045
Definition address.h:64
__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.
Common C++ generic string class.