/* */ #include "UriListParser.h" #include #include #include "util.h" #include "Option.h" #include "OptionHandlerFactory.h" #include "OptionHandler.h" #include "A2STR.h" namespace aria2 { UriListParser::UriListParser(std::istream& in):in_(in) { optparser_.setOptionHandlers(OptionHandlerFactory::createOptionHandlers()); } UriListParser::~UriListParser() {} void UriListParser::getOptions(Option& op) { std::stringstream ss; while(getline(in_, line_)) { if(util::startsWith(line_, " ")) { ss << line_ << "\n"; } else if(util::startsWith(line_, A2STR::SHARP_C)) { continue; } else { break; } } optparser_.parse(op, ss); } void UriListParser::parseNext(std::vector& uris, Option& op) { if(line_.empty()) { getline(in_, line_); } if(!in_) { return; } do { if(!util::startsWith(line_, A2STR::SHARP_C) && !util::strip(line_).empty()){ util::split(line_, std::back_inserter(uris), "\t", true); getOptions(op); return; } } while(getline(in_, line_)); } bool UriListParser::hasNext() const { return in_; } } // namespace aria2