/* */ #ifndef D_NAME_MATCH_OPTION_HANDLER_H #define D_NAME_MATCH_OPTION_HANDLER_H #include "OptionHandler.h" #include #include "A2STR.h" namespace aria2 { class Option; class NameMatchOptionHandler : public OptionHandler { protected: std::string optName_; std::string description_; std::string defaultValue_; std::vector tags_; 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, ARG_TYPE argType = REQ_ARG, char shortName = 0); virtual ~NameMatchOptionHandler(); virtual bool canHandle(const std::string& optName); virtual void parse(Option& option, const std::string& arg); virtual bool hasTag(const std::string& tag) const; virtual void addTag(const std::string& tag); virtual std::string toTagString() const; virtual const std::string& getName() const { return optName_; } virtual const std::string& getDescription() const { return description_; } virtual const std::string& getDefaultValue() const { return defaultValue_; } virtual bool isHidden() const { return hidden_; } virtual 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 NameMatchOptionHandlerHandle; } // namespace aria2 #endif // D_NAME_MATCH_OPTION_HANDLER_H