/* */ #ifndef _D_NAME_MATCH_OPTION_HANDLER_H_ #define _D_NAME_MATCH_OPTION_HANDLER_H_ #include "OptionHandler.h" #include "DlAbortEx.h" #include "StringFormat.h" #include namespace aria2 { class Option; class NameMatchOptionHandler : public OptionHandler { protected: std::string _optName; virtual void parseArg(Option* option, const std::string& arg) = 0; public: NameMatchOptionHandler(const std::string& optName):_optName(optName) {} virtual ~NameMatchOptionHandler() {} virtual bool canHandle(const std::string& optName) { return strcasecmp(_optName.c_str(), optName.c_str()) == 0; } virtual void parse(Option* option, const std::string& arg) { try { parseArg(option, arg); } catch(Exception& e) { throw DlAbortEx (StringFormat("Exception occurred while processing option %s", _optName.c_str()).str(), e); } } }; typedef SharedHandle NameMatchOptionHandlerHandle; } // namespace aria2 #endif // _D_NAME_MATCH_OPTION_HANDLER_H_