diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-10-22 01:03:14 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-10-22 01:03:14 +0900 |
| commit | d5c8d048efeb524d5d2222b4547f9dd19e943f13 (patch) | |
| tree | 117dd74fff2594be1ee6d6ba00dc9d8c301bf05e /src/OptionParser.h | |
| parent | 3832ed97c616eff0057d7a0e5a161c4282537160 (diff) | |
Rewritten OptionParser. Made it simpler and efficient.
Diffstat (limited to 'src/OptionParser.h')
| -rw-r--r-- | src/OptionParser.h | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/src/OptionParser.h b/src/OptionParser.h index 0c767229..0d05d568 100644 --- a/src/OptionParser.h +++ b/src/OptionParser.h @@ -47,38 +47,32 @@ namespace aria2 { class Option; class OptionHandler; +class Pref; class OptionParser { private: - int idCounter_; - - // optionHandlers_ is sorted by OptionHandler::getName() in - // ascending order. - std::vector<SharedHandle<OptionHandler> > optionHandlers_; - - SharedHandle<OptionHandler> - getOptionHandlerByName(const std::string& optName); - + std::vector<SharedHandle<OptionHandler> > handlers_; + // Index of handler in handlers_ for option who has short option name. + std::vector<size_t> shortOpts_; static SharedHandle<OptionParser> optionParser_; public: OptionParser(); - ~OptionParser(); // Parses options in argv and writes option name and value to out in // NAME=VALUE format. Non-option strings are stored in nonopts. // Throws Exception when an unrecognized option is found. void parseArg(std::ostream& out, std::vector<std::string>& nonopts, - int argc, char* argv[]); + int argc, char* argv[]) const; - void parse(Option& option, std::istream& ios); + void parse(Option& option, std::istream& ios) const; void parseDefaultValues(Option& option) const; void setOptionHandlers - (const std::vector<SharedHandle<OptionHandler> >& optionHandlers); + (const std::vector<SharedHandle<OptionHandler> >& handlers); - void addOptionHandler(const SharedHandle<OptionHandler>& optionHandler); + void addOptionHandler(const SharedHandle<OptionHandler>& handler); // Hidden options are not returned. std::vector<SharedHandle<OptionHandler> > @@ -92,20 +86,17 @@ public: std::vector<SharedHandle<OptionHandler> > findAll() const; // Hidden options are not returned. - SharedHandle<OptionHandler> - findByName(const std::string& name) const; + const SharedHandle<OptionHandler>& find(const Pref* pref) const; // Hidden options are not returned. - SharedHandle<OptionHandler> findByID(int id) const; + const SharedHandle<OptionHandler>& findById(size_t id) const; // Hidden options are not returned. - SharedHandle<OptionHandler> findByShortName(char shortName) const; + const SharedHandle<OptionHandler>& findByShortName(char shortName) const; static const SharedHandle<OptionParser>& getInstance(); }; -typedef SharedHandle<OptionParser> OptionParserHandle; - } // namespace aria2 #endif // D_OPTION_PARSER_H |
