/* */ #ifndef D_OPTION_HANDLER_IMPL_H #define D_OPTION_HANDLER_IMPL_H #include "OptionHandler.h" #include #include "NameMatchOptionHandler.h" namespace aria2 { class Option; 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; }; class BooleanOptionHandler : public NameMatchOptionHandler { public: BooleanOptionHandler(const std::string& optName, 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 std::string& optName, 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 std::string& optName, 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 std::string& optName, 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 std::string& optName, 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 std::string& optName, 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 std::string& optName, 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 { private: public: IndexOutOptionHandler(const std::string& optName, const std::string& description, char shortName = 0); virtual ~IndexOutOptionHandler(); 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 std::string& optName, const std::string& description, const std::string& defaultValue, const std::vector& validParamValues, char shortName = 0); ParameterOptionHandler(const std::string& optName, const std::string& description, const std::string& defaultValue, const std::string& validParamValue, char shortName = 0); ParameterOptionHandler(const std::string& optName, const std::string& description, const std::string& defaultValue, const std::string& validParamValue1, const std::string& validParamValue2, char shortName = 0); ParameterOptionHandler(const std::string& optName, 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: std::string hostOptionName_; std::string portOptionName_; public: HostPortOptionHandler(const std::string& optName, const std::string& description, const std::string& defaultValue, const std::string& hostOptionName, const std::string& 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 std::string& optName, 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 std::string& optName, 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: std::string proxyUserPref_; std::string proxyPasswdPref_; public: HttpProxyOptionHandler(const std::string& optName, 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 std::string& optName, 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 std::string& optName, 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; }; class DeprecatedOptionHandler:public OptionHandler { private: SharedHandle depOptHandler_; std::string repOptName_; public: DeprecatedOptionHandler (const SharedHandle& depOptHandler, const std::string& repOptName); 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); }; } // namespace aria2 #endif // D_OPTION_HANDLER_IMPL_H