/* */ #include "download_helper.h" #include #include #include #include #include #include "RequestGroup.h" #include "Option.h" #include "prefs.h" #include "Metalink2RequestGroup.h" #include "ProtocolDetector.h" #include "ParameterizedStringParser.h" #include "PStringBuildVisitor.h" #include "UriListParser.h" #include "SingleFileDownloadContext.h" #include "RecoverableException.h" #include "FatalException.h" #include "message.h" #include "StringFormat.h" #include "DefaultBtContext.h" #include "FileEntry.h" #include "LogFactory.h" #include "File.h" #include "Util.h" #include "array_fun.h" #include "OptionHandler.h" namespace aria2 { const std::vector& listRequestOptions() { static const std::string REQUEST_OPTIONS[] = { PREF_DIR, PREF_OUT, PREF_SELECT_FILE, PREF_INDEX_OUT }; static std::vector requestOptions (&REQUEST_OPTIONS[0], &REQUEST_OPTIONS[arrayLength(REQUEST_OPTIONS)]);; return requestOptions; } static void unfoldURI (std::deque& result, const std::deque& args) { ParameterizedStringParser p; PStringBuildVisitor v; for(std::deque::const_iterator itr = args.begin(); itr != args.end(); ++itr) { v.reset(); p.parse(*itr)->accept(v); result.insert(result.end(), v.getURIs().begin(), v.getURIs().end()); } } static void splitURI(std::deque& result, std::deque::const_iterator begin, std::deque::const_iterator end, size_t numSplit) { size_t numURIs = std::distance(begin, end); if(numURIs >= numSplit) { result.insert(result.end(), begin, end); } else if(numURIs > 0) { for(size_t i = 0; i < numSplit/numURIs; ++i) { result.insert(result.end(), begin, end); } result.insert(result.end(), begin, begin+(numSplit%numURIs)); } } static SharedHandle createRequestGroup (const SharedHandle