/* */ #ifndef D_OPTION_HANDLER_IMPL_H #define D_OPTION_HANDLER_IMPL_H #include "OptionHandler.h" #include #include "NameMatchOptionHandler.h" namespace aria2 { class Option; class Pref; class NullOptionHandler : public OptionHandler { private: int id_; public: virtual ~NullOptionHandler(); 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; virtual const std::string& getDescription() const; virtual const std::string& getDefaultValue() const; virtual std::string createPossibleValuesString() const; virtual bool isHidden() const; virtual void hide(); virtual OptionHandler::ARG_TYPE getArgType() const; virtual int getOptionID() const; virtual void setOptionID(int id); virtual char getShortName() const; virtual bool getEraseAfterParse() const; virtual void setEraseAfterParse(bool eraseAfterParse); }; class BooleanOptionHandler : public NameMatchOptionHandler { public: BooleanOptionHandler(const Pref* pref, const std::string& description = NO_DESCRIPTION, const std::string& defaultValue = NO_DEFAULT_VALUE, OptionHandler::ARG_TYPE argType = OptionHandler::REQ_ARG, char shortName = 0); virtual ~BooleanOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class IntegerRangeOptionHandler : public NameMatchOptionHandler { private: int32_t min_; int32_t max_; public: IntegerRangeOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, int32_t min, int32_t max, char shortName = 0); virtual ~IntegerRangeOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class NumberOptionHandler : public NameMatchOptionHandler { private: int64_t min_; int64_t max_; public: NumberOptionHandler(const Pref* pref, const std::string& description = NO_DESCRIPTION, const std::string& defaultValue = NO_DEFAULT_VALUE, int64_t min = -1, int64_t max = -1, char shortName = 0); virtual ~NumberOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); void parseArg(Option& option, int64_t number); virtual std::string createPossibleValuesString() const; }; class UnitNumberOptionHandler : public NumberOptionHandler { public: UnitNumberOptionHandler(const Pref* pref, const std::string& description = NO_DESCRIPTION, const std::string& defaultValue = NO_DEFAULT_VALUE, int64_t min = -1, int64_t max = -1, char shortName = 0); virtual ~UnitNumberOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); }; class FloatNumberOptionHandler : public NameMatchOptionHandler { private: double min_; double max_; public: FloatNumberOptionHandler(const Pref* pref, const std::string& description = NO_DESCRIPTION, const std::string& defaultValue = NO_DEFAULT_VALUE, double min = -1, double max = -1, char shortName = 0); virtual ~FloatNumberOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class DefaultOptionHandler : public NameMatchOptionHandler { private: std::string possibleValuesString_; public: DefaultOptionHandler(const Pref* pref, const std::string& description = NO_DESCRIPTION, const std::string& defaultValue = NO_DEFAULT_VALUE, const std::string& possibleValuesString = A2STR::NIL, OptionHandler::ARG_TYPE argType = OptionHandler::REQ_ARG, char shortName = 0); virtual ~DefaultOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class CumulativeOptionHandler : public NameMatchOptionHandler { private: std::string delim_; std::string possibleValuesString_; public: CumulativeOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, const std::string& delim, const std::string& possibleValuesString = A2STR::NIL, OptionHandler::ARG_TYPE argType = OptionHandler::REQ_ARG, char shortName = 0); virtual ~CumulativeOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class IndexOutOptionHandler : public NameMatchOptionHandler { public: IndexOutOptionHandler(const Pref* pref, const std::string& description, char shortName = 0); virtual ~IndexOutOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class ChecksumOptionHandler : public NameMatchOptionHandler { public: ChecksumOptionHandler(const Pref* pref, const std::string& description, char shortName = 0); virtual ~ChecksumOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class ParameterOptionHandler : public NameMatchOptionHandler { private: std::vector validParamValues_; public: ParameterOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, const std::vector& validParamValues, char shortName = 0); ParameterOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, const std::string& validParamValue, char shortName = 0); ParameterOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, const std::string& validParamValue1, const std::string& validParamValue2, char shortName = 0); ParameterOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, const std::string& validParamValue1, const std::string& validParamValue2, const std::string& validParamValue3, char shortName = 0); virtual ~ParameterOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class HostPortOptionHandler : public NameMatchOptionHandler { private: const Pref* hostOptionName_; const Pref* portOptionName_; public: HostPortOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, const Pref* hostOptionName, const Pref* portOptionName, char shortName = 0); virtual ~HostPortOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); void setHostAndPort (Option& option, const std::string& hostname, uint16_t port); virtual std::string createPossibleValuesString() const; }; class HttpProxyUserOptionHandler:public NameMatchOptionHandler { public: HttpProxyUserOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, char shortName = 0); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class HttpProxyPasswdOptionHandler:public NameMatchOptionHandler { public: HttpProxyPasswdOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, char shortName = 0); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class HttpProxyOptionHandler : public NameMatchOptionHandler { private: const Pref* proxyUserPref_; const Pref* proxyPasswdPref_; public: HttpProxyOptionHandler(const Pref* pref, const std::string& description, const std::string& defaultValue, char shortName = 0); virtual ~HttpProxyOptionHandler(); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class LocalFilePathOptionHandler : public NameMatchOptionHandler { private: bool acceptStdin_; public: LocalFilePathOptionHandler (const Pref* pref, const std::string& description = NO_DESCRIPTION, const std::string& defaultValue = NO_DEFAULT_VALUE, bool acceptStdin = false, char shortName = 0); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; class PrioritizePieceOptionHandler:public NameMatchOptionHandler { public: PrioritizePieceOptionHandler (const Pref* pref, const std::string& description = NO_DESCRIPTION, const std::string& defaultValue = NO_DEFAULT_VALUE, char shortName = 0); virtual void parseArg(Option& option, const std::string& optarg); virtual std::string createPossibleValuesString() const; }; // This class is used to deprecate option and optionally handle its // option value using replacing option. class DeprecatedOptionHandler:public OptionHandler { private: SharedHandle depOptHandler_; SharedHandle repOptHandler_; public: // depOptHandler is deprecated option and repOptHandler is replacing // new option. If there is no replacing option, omit second // argument. DeprecatedOptionHandler (const SharedHandle& depOptHandler, const SharedHandle& repOptHandler = SharedHandle()); virtual bool canHandle(const std::string& optName); virtual void parse(Option& option, const std::string& arg); virtual std::string createPossibleValuesString() const; 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; virtual const std::string& getDescription() const; virtual const std::string& getDefaultValue() const; virtual bool isHidden() const; virtual void hide(); virtual ARG_TYPE getArgType() const; virtual char getShortName() const; virtual int getOptionID() const; virtual void setOptionID(int id); virtual bool getEraseAfterParse() const; virtual void setEraseAfterParse(bool eraseAfterParse); }; } // namespace aria2 #endif // D_OPTION_HANDLER_IMPL_H