diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-02-07 11:00:34 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-02-07 11:00:34 +0000 |
| commit | 2881dbe025d2002fc5260969cd0c402404713ebc (patch) | |
| tree | 4d30de40e909a9c9e9f3d2bdb0ad2748afc35922 /src/NameMatchOptionHandler.h | |
| parent | bbb3589293139db527cf72f0a30e989fc2889a53 (diff) | |
2009-02-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added OptionParser::parseArg() which internally uses getopt_long
to parse command-line options. All command-line options are now
configured by OptionHandler. No manual editing of struct option*
is required any more.
* src/NameMatchOptionHandler.h
* src/OptionHandler.h
* src/OptionHandlerFactory.cc
* src/OptionHandlerImpl.h
* src/OptionParser.cc
* src/OptionParser.h
* src/array_fun.h
* src/main.cc
* src/option_processing.cc
* test/OptionHandlerTest.cc
* test/OptionParserTest.cc
Diffstat (limited to 'src/NameMatchOptionHandler.h')
| -rw-r--r-- | src/NameMatchOptionHandler.h | 55 |
1 files changed, 46 insertions, 9 deletions
diff --git a/src/NameMatchOptionHandler.h b/src/NameMatchOptionHandler.h index 8ef962fa..a1024951 100644 --- a/src/NameMatchOptionHandler.h +++ b/src/NameMatchOptionHandler.h @@ -36,14 +36,17 @@ #define _D_NAME_MATCH_OPTION_HANDLER_H_ #include "OptionHandler.h" -#include "A2STR.h" -#include "Util.h" -#include "OptionHandlerException.h" + #include <strings.h> + #include <algorithm> #include <sstream> #include <iterator> +#include "A2STR.h" +#include "Util.h" +#include "OptionHandlerException.h" + #define NO_DESCRIPTION A2STR::NIL #define NO_DEFAULT_VALUE A2STR::NIL @@ -59,20 +62,30 @@ protected: std::string _defaultValue; - bool _hidden; - std::deque<std::string> _tags; - virtual void parseArg(Option* option, const std::string& arg) = 0; + int _id; + + OptionHandler::ARG_TYPE _argType; + + char _shortName; + + bool _hidden; + + virtual void parseArg(Option& option, const std::string& arg) = 0; public: NameMatchOptionHandler(const std::string& optName, const std::string& description = NO_DESCRIPTION, const std::string& defaultValue = NO_DEFAULT_VALUE, - bool hidden = false): + ARG_TYPE argType = REQ_ARG, + char shortName = 0): _optName(optName), _description(description), _defaultValue(defaultValue), - _hidden(hidden) {} + _id(0), + _argType(argType), + _shortName(shortName), + _hidden(false) {} virtual ~NameMatchOptionHandler() {} @@ -81,7 +94,7 @@ public: return strcasecmp(_optName.c_str(), optName.c_str()) == 0; } - virtual void parse(Option* option, const std::string& arg) + virtual void parse(Option& option, const std::string& arg) { try { parseArg(option, arg); @@ -128,6 +141,30 @@ public: return _hidden; } + void hide() + { + _hidden = true; + } + + virtual char getShortName() const + { + return _shortName; + } + + virtual int getOptionID() const + { + return _id; + } + + virtual void setOptionID(int id) + { + _id = id; + } + + virtual OptionHandler::ARG_TYPE getArgType() const + { + return _argType; + } }; typedef SharedHandle<NameMatchOptionHandler> NameMatchOptionHandlerHandle; |
