summaryrefslogtreecommitdiff
path: root/src/OptionParser.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-10-22 01:03:14 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-10-22 01:03:14 +0900
commitd5c8d048efeb524d5d2222b4547f9dd19e943f13 (patch)
tree117dd74fff2594be1ee6d6ba00dc9d8c301bf05e /src/OptionParser.h
parent3832ed97c616eff0057d7a0e5a161c4282537160 (diff)
Rewritten OptionParser. Made it simpler and efficient.
Diffstat (limited to 'src/OptionParser.h')
-rw-r--r--src/OptionParser.h31
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