/* */ #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: const Pref* 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(const Pref* 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; virtual bool hasTag(uint32_t tag) const; virtual void addTag(uint32_t tag); virtual std::string toTagString() const; virtual const char* getName() const; virtual const char* getDescription() const { return description_; } virtual const std::string& getDefaultValue() const { return defaultValue_; } virtual const Pref* getPref() const { return pref_; } virtual char getShortName() const { return shortName_; } virtual OptionHandler::ARG_TYPE getArgType() const { return argType_; } virtual bool isHidden() const; virtual void hide(); virtual bool getEraseAfterParse() const; virtual void setEraseAfterParse(bool f); virtual bool getInitialOption() const; virtual void setInitialOption(bool f); virtual bool getChangeOption() const; virtual void setChangeOption(bool f); virtual bool getChangeOptionForReserved() const; virtual void setChangeOptionForReserved(bool f); virtual bool getChangeGlobalOption() const; virtual void setChangeGlobalOption(bool f); virtual bool getCumulative() const; virtual void setCumulative(bool f); 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