/* */ #ifndef D_ABSTRACT_OPTION_HANDLER_H #define D_ABSTRACT_OPTION_HANDLER_H #include "OptionHandler.h" namespace aria2 { class Option; struct Pref; class AbstractOptionHandler : public OptionHandler { protected: PrefPtr pref_; const char* description_; std::string defaultValue_; OptionHandler::ARG_TYPE argType_; char shortName_; virtual void parseArg(Option& option, const std::string& arg) const = 0; public: AbstractOptionHandler(PrefPtr pref, const char* description = NO_DESCRIPTION, const std::string& defaultValue = NO_DEFAULT_VALUE, ARG_TYPE argType = REQ_ARG, char shortName = 0); virtual ~AbstractOptionHandler(); virtual void parse(Option& option, const std::string& arg) const CXX11_OVERRIDE; virtual bool hasTag(uint32_t tag) const CXX11_OVERRIDE; virtual void addTag(uint32_t tag) CXX11_OVERRIDE; virtual std::string toTagString() const CXX11_OVERRIDE; virtual const char* getName() const CXX11_OVERRIDE; virtual const char* getDescription() const CXX11_OVERRIDE { return description_; } virtual const std::string& getDefaultValue() const CXX11_OVERRIDE { return defaultValue_; } virtual PrefPtr getPref() const CXX11_OVERRIDE { return pref_; } virtual char getShortName() const CXX11_OVERRIDE { return shortName_; } virtual OptionHandler::ARG_TYPE getArgType() const CXX11_OVERRIDE { return argType_; } virtual bool isHidden() const CXX11_OVERRIDE; virtual void hide() CXX11_OVERRIDE; virtual bool getEraseAfterParse() const CXX11_OVERRIDE; virtual void setEraseAfterParse(bool f) CXX11_OVERRIDE; virtual bool getInitialOption() const CXX11_OVERRIDE; virtual void setInitialOption(bool f) CXX11_OVERRIDE; virtual bool getChangeOption() const CXX11_OVERRIDE; virtual void setChangeOption(bool f) CXX11_OVERRIDE; virtual bool getChangeOptionForReserved() const CXX11_OVERRIDE; virtual void setChangeOptionForReserved(bool f) CXX11_OVERRIDE; virtual bool getChangeGlobalOption() const CXX11_OVERRIDE; virtual void setChangeGlobalOption(bool f) CXX11_OVERRIDE; virtual bool getCumulative() const CXX11_OVERRIDE; virtual void setCumulative(bool f) CXX11_OVERRIDE; enum Flag { FLAG_HIDDEN = 1, FLAG_ERASE_AFTER_PARSE = 1 << 1, FLAG_INITIAL_OPTION = 1 << 2, FLAG_CHANGE_OPTION = 1 << 3, FLAG_CHANGE_OPTION_FOR_RESERVED = 1 << 4, FLAG_CHANGE_GLOBAL_OPTION = 1 << 5, FLAG_CUMULATIVE = 1 << 6 }; private: // bitwise OR of (1 << HelpTag value) defined in help_tags.h. uint32_t tags_; // bitwise OR of Flag values. uint8_t flags_; void updateFlags(int flag, bool val); }; } // namespace aria2 #endif // D_ABSTRACT_OPTION_HANDLER_H