/* */ #ifndef _D_OPTION_HANDLER_H_ #define _D_OPTION_HANDLER_H_ #include "common.h" #include #include #include #include "SharedHandle.h" namespace aria2 { class Option; class OptionHandler { public: virtual ~OptionHandler() {} virtual bool canHandle(const std::string& optName) = 0; virtual void parse(Option& option, const std::string& arg) = 0; virtual std::string createPossibleValuesString() const = 0; virtual bool hasTag(const std::string& tag) const = 0; virtual void addTag(const std::string& tag) = 0; virtual std::string toTagString() const = 0; virtual const std::string& getName() const = 0; virtual const std::string& getDescription() const = 0; virtual const std::string& getDefaultValue() const = 0; virtual bool isHidden() const = 0; virtual void hide() = 0; enum ARG_TYPE { REQ_ARG, OPT_ARG, NO_ARG }; virtual ARG_TYPE getArgType() const = 0; virtual char getShortName() const = 0; virtual int getOptionID() const = 0; virtual void setOptionID(int id) = 0; }; class OptionHandlerNameLesser:public std::binary_function , SharedHandle, bool> { public: bool operator() (const SharedHandle& lhs, const SharedHandle& rhs) const { return lhs->getName() < rhs->getName(); } }; class OptionHandlerIDLesser:public std::binary_function , SharedHandle, bool> { public: bool operator() (const SharedHandle& lhs, const SharedHandle& rhs) const { return lhs->getOptionID() < rhs->getOptionID(); } }; typedef SharedHandle OptionHandlerHandle; typedef std::vector OptionHandlers; std::ostream& operator<<(std::ostream& o, const OptionHandler& optionHandler); } // namespace aria2 #endif // _D_OPTION_HANDLER_H_