/* */ #include "UriListParser.h" #include #include #include "util.h" #include "Option.h" #include "OptionHandlerFactory.h" #include "OptionHandler.h" #include "A2STR.h" #include "BufferedFile.h" #include "OptionParser.h" namespace aria2 { UriListParser::UriListParser(const std::string& filename) : fp_(filename.c_str(), BufferedFile::READ) {} UriListParser::~UriListParser() {} void UriListParser::parseNext(std::vector& uris, Option& op) { const SharedHandle& optparser = OptionParser::getInstance(); while(1) { if(!line_.empty() && line_[0] != '#') { util::split(line_.begin(), line_.end(), std::back_inserter(uris), '\t', true); // Read options std::stringstream ss; while(1) { line_ = fp_.getLine(); if(line_.empty()) { if(fp_.eof()) { break; } else if(!fp_) { throw DL_ABORT_EX("UriListParser:I/O error."); } else { continue; } } if(line_[0] == ' ' || line_[0] == '\t') { ss << line_ << "\n"; } else if(line_[0] == '#') { continue; } else { break; } } optparser->parse(op, ss); return; } line_ = fp_.getLine(); if(line_.empty()) { if(fp_.eof()) { return; } else if(!fp_) { throw DL_ABORT_EX("UriListParser:I/O error."); } } } } bool UriListParser::hasNext() { return !line_.empty() || (fp_ && !fp_.eof()); } } // namespace aria2