diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-02-27 15:14:40 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-02-27 15:14:40 +0000 |
| commit | 88656eb14e9694ab7c311517a55e0d9577cbdfd0 (patch) | |
| tree | e6248d8beb30cf14f854c50c1298d782eba2e29c | |
| parent | 0c62e907309da29d23b669da91034d00f378bade (diff) | |
2010-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Use vector instead of deque for MetalinkEntry and MetalinkResource
objects.
* src/Metalink2RequestGroup.cc
* src/Metalink2RequestGroup.h
* src/MetalinkEntry.cc
* src/MetalinkEntry.h
* src/MetalinkHelper.cc
* src/MetalinkHelper.h
* src/Metalinker.cc
* src/Metalinker.h
* src/main.cc
* test/MetalinkEntryTest.cc
* test/MetalinkHelperTest.cc
* test/MetalinkProcessorTest.cc
* test/MetalinkerTest.cc
| -rw-r--r-- | ChangeLog | 18 | ||||
| -rw-r--r-- | src/Metalink2RequestGroup.cc | 10 | ||||
| -rw-r--r-- | src/Metalink2RequestGroup.h | 3 | ||||
| -rw-r--r-- | src/MetalinkEntry.cc | 10 | ||||
| -rw-r--r-- | src/MetalinkEntry.h | 9 | ||||
| -rw-r--r-- | src/MetalinkHelper.cc | 6 | ||||
| -rw-r--r-- | src/MetalinkHelper.h | 7 | ||||
| -rw-r--r-- | src/Metalinker.cc | 2 | ||||
| -rw-r--r-- | src/Metalinker.h | 10 | ||||
| -rw-r--r-- | src/main.cc | 4 | ||||
| -rw-r--r-- | test/MetalinkEntryTest.cc | 4 | ||||
| -rw-r--r-- | test/MetalinkHelperTest.cc | 4 | ||||
| -rw-r--r-- | test/MetalinkProcessorTest.cc | 20 | ||||
| -rw-r--r-- | test/MetalinkerTest.cc | 10 |
14 files changed, 72 insertions, 45 deletions
@@ -1,5 +1,23 @@ 2010-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> + Use vector instead of deque for MetalinkEntry and MetalinkResource + objects. + * src/Metalink2RequestGroup.cc + * src/Metalink2RequestGroup.h + * src/MetalinkEntry.cc + * src/MetalinkEntry.h + * src/MetalinkHelper.cc + * src/MetalinkHelper.h + * src/Metalinker.cc + * src/Metalinker.h + * src/main.cc + * test/MetalinkEntryTest.cc + * test/MetalinkHelperTest.cc + * test/MetalinkProcessorTest.cc + * test/MetalinkerTest.cc + +2010-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net> + Fixed the bug that grouped FileEntry objects are not used but instead all FileEntry objects are used for each metaurl group. * src/Metalink2RequestGroup.cc diff --git a/src/Metalink2RequestGroup.cc b/src/Metalink2RequestGroup.cc index 95edd28c..fc3ff427 100644 --- a/src/Metalink2RequestGroup.cc +++ b/src/Metalink2RequestGroup.cc @@ -107,7 +107,7 @@ Metalink2RequestGroup::generate(std::deque<SharedHandle<RequestGroup> >& groups, const std::string& metalinkFile, const SharedHandle<Option>& option) { - std::deque<SharedHandle<MetalinkEntry> > entries; + std::vector<SharedHandle<MetalinkEntry> > entries; MetalinkHelper::parseAndQuery(entries, metalinkFile, option.get()); createRequestGroup(groups, entries, option); } @@ -117,7 +117,7 @@ Metalink2RequestGroup::generate(std::deque<SharedHandle<RequestGroup> >& groups, const SharedHandle<BinaryStream>& binaryStream, const SharedHandle<Option>& option) { - std::deque<SharedHandle<MetalinkEntry> > entries; + std::vector<SharedHandle<MetalinkEntry> > entries; MetalinkHelper::parseAndQuery(entries, binaryStream, option.get()); createRequestGroup(groups, entries, option); } @@ -136,7 +136,7 @@ void removeMetalinkContentTypes(const SharedHandle<RequestGroup>& group) void Metalink2RequestGroup::createRequestGroup (std::deque<SharedHandle<RequestGroup> >& groups, - const std::deque<SharedHandle<MetalinkEntry> >& entries, + const std::vector<SharedHandle<MetalinkEntry> >& entries, const SharedHandle<Option>& option) { if(entries.empty()) { @@ -149,7 +149,7 @@ Metalink2RequestGroup::createRequestGroup std::vector<SharedHandle<MetalinkEntry> > selectedEntries; selectedEntries.reserve(entries.size()); - std::deque<std::string> locations; + std::vector<std::string> locations; if(option->defined(PREF_METALINK_LOCATION)) { util::split(option->get(PREF_METALINK_LOCATION), std::back_inserter(locations), ",", true); @@ -162,7 +162,7 @@ Metalink2RequestGroup::createRequestGroup } { int32_t count = 1; - for(std::deque<SharedHandle<MetalinkEntry> >::const_iterator i = + for(std::vector<SharedHandle<MetalinkEntry> >::const_iterator i = entries.begin(); i != entries.end(); ++i, ++count) { (*i)->dropUnsupportedResource(); if((*i)->resources.empty() && (*i)->metaurls.empty()) { diff --git a/src/Metalink2RequestGroup.h b/src/Metalink2RequestGroup.h index a3d84011..00d2d712 100644 --- a/src/Metalink2RequestGroup.h +++ b/src/Metalink2RequestGroup.h @@ -39,6 +39,7 @@ #include "SharedHandle.h" #include <string> #include <deque> +#include <vector> namespace aria2 { @@ -54,7 +55,7 @@ private: void createRequestGroup(std::deque<SharedHandle<RequestGroup> >& groups, - const std::deque<SharedHandle<MetalinkEntry> >& entries, + const std::vector<SharedHandle<MetalinkEntry> >& entries, const SharedHandle<Option>& option); public: Metalink2RequestGroup(); diff --git a/src/MetalinkEntry.cc b/src/MetalinkEntry.cc index 75e5dc36..3515e5e6 100644 --- a/src/MetalinkEntry.cc +++ b/src/MetalinkEntry.cc @@ -59,11 +59,11 @@ MetalinkEntry::~MetalinkEntry() {} class AddLocationPriority { private: - std::deque<std::string> _locations; + std::vector<std::string> _locations; int _priorityToAdd; public: AddLocationPriority - (const std::deque<std::string>& locations, int priorityToAdd): + (const std::vector<std::string>& locations, int priorityToAdd): _locations(locations), _priorityToAdd(priorityToAdd) { std::sort(_locations.begin(), _locations.end()); @@ -105,7 +105,7 @@ uint64_t MetalinkEntry::getLength() const } void MetalinkEntry::setLocationPriority -(const std::deque<std::string>& locations, int priorityToAdd) +(const std::vector<std::string>& locations, int priorityToAdd) { std::for_each(resources.begin(), resources.end(), AddLocationPriority(locations, priorityToAdd)); @@ -183,8 +183,8 @@ void MetalinkEntry::dropUnsupportedResource() { } void MetalinkEntry::toFileEntry -(std::deque<SharedHandle<FileEntry> >& fileEntries, - const std::deque<SharedHandle<MetalinkEntry> >& metalinkEntries) +(std::vector<SharedHandle<FileEntry> >& fileEntries, + const std::vector<SharedHandle<MetalinkEntry> >& metalinkEntries) { std::transform(metalinkEntries.begin(), metalinkEntries.end(), std::back_inserter(fileEntries), diff --git a/src/MetalinkEntry.h b/src/MetalinkEntry.h index 2fbb6795..5382e15d 100644 --- a/src/MetalinkEntry.h +++ b/src/MetalinkEntry.h @@ -38,7 +38,6 @@ #include "common.h" #include <string> -#include <deque> #include <vector> #include <algorithm> @@ -63,7 +62,7 @@ public: std::vector<std::string> oses; // True if size is specified in Metalink document. bool sizeKnown; - std::deque<SharedHandle<MetalinkResource> > resources; + std::vector<SharedHandle<MetalinkResource> > resources; std::vector<SharedHandle<MetalinkMetaurl> > metaurls; int maxConnections; // Metalink3Spec #ifdef ENABLE_MESSAGE_DIGEST @@ -106,13 +105,13 @@ public: } void setLocationPriority - (const std::deque<std::string>& locations, int priorityToAdd); + (const std::vector<std::string>& locations, int priorityToAdd); void setProtocolPriority(const std::string& protocol, int priorityToAdd); static void toFileEntry - (std::deque<SharedHandle<FileEntry> >& fileEntries, - const std::deque<SharedHandle<MetalinkEntry> >& metalinkEntries); + (std::vector<SharedHandle<FileEntry> >& fileEntries, + const std::vector<SharedHandle<MetalinkEntry> >& metalinkEntries); void setSignature(const SharedHandle<Signature>& signature); diff --git a/src/MetalinkHelper.cc b/src/MetalinkHelper.cc index abfbc99a..0635b3d2 100644 --- a/src/MetalinkHelper.cc +++ b/src/MetalinkHelper.cc @@ -50,7 +50,7 @@ MetalinkHelper::MetalinkHelper() {} MetalinkHelper::~MetalinkHelper() {} void MetalinkHelper::parseAndQuery -(std::deque<SharedHandle<MetalinkEntry> >& result, +(std::vector<SharedHandle<MetalinkEntry> >& result, const std::string& filename, const Option* option) { MetalinkProcessor proc; @@ -59,7 +59,7 @@ void MetalinkHelper::parseAndQuery } void MetalinkHelper::parseAndQuery -(std::deque<SharedHandle<MetalinkEntry> >& result, +(std::vector<SharedHandle<MetalinkEntry> >& result, const SharedHandle<BinaryStream>& binaryStream, const Option* option) { MetalinkProcessor proc; @@ -68,7 +68,7 @@ void MetalinkHelper::parseAndQuery } void MetalinkHelper::query -(std::deque<SharedHandle<MetalinkEntry> >& result, +(std::vector<SharedHandle<MetalinkEntry> >& result, const SharedHandle<Metalinker>& metalinker, const Option* option) { if(metalinker->entries.empty()) { diff --git a/src/MetalinkHelper.h b/src/MetalinkHelper.h index 10586fc5..955f985b 100644 --- a/src/MetalinkHelper.h +++ b/src/MetalinkHelper.h @@ -38,7 +38,6 @@ #include "common.h" #include <string> -#include <deque> #include <vector> #include "SharedHandle.h" @@ -57,16 +56,16 @@ private: ~MetalinkHelper(); static void query - (std::deque<SharedHandle<MetalinkEntry> >& result, + (std::vector<SharedHandle<MetalinkEntry> >& result, const SharedHandle<Metalinker>& metalinker, const Option* option); public: static void parseAndQuery - (std::deque<SharedHandle<MetalinkEntry> >& result, + (std::vector<SharedHandle<MetalinkEntry> >& result, const std::string& filename, const Option* option); static void parseAndQuery - (std::deque<SharedHandle<MetalinkEntry> >& result, + (std::vector<SharedHandle<MetalinkEntry> >& result, const SharedHandle<BinaryStream>& binaryStream, const Option* option); static void groupEntryByMetaurlName diff --git a/src/Metalinker.cc b/src/Metalinker.cc index 521fe3fe..1b88ba80 100644 --- a/src/Metalinker.cc +++ b/src/Metalinker.cc @@ -76,7 +76,7 @@ public: }; void Metalinker::queryEntry -(std::deque<SharedHandle<MetalinkEntry> >& queryResult, +(std::vector<SharedHandle<MetalinkEntry> >& queryResult, const std::string& version, const std::string& language, const std::string& os) const diff --git a/src/Metalinker.h b/src/Metalinker.h index 9ef348ab..9a834ab2 100644 --- a/src/Metalinker.h +++ b/src/Metalinker.h @@ -36,9 +36,11 @@ #define _D_METALINKER_H_ #include "common.h" -#include "SharedHandle.h" + #include <string> -#include <deque> +#include <vector> + +#include "SharedHandle.h" namespace aria2 { @@ -46,7 +48,7 @@ class MetalinkEntry; class Metalinker { public: - std::deque<SharedHandle<MetalinkEntry> > entries; + std::vector<SharedHandle<MetalinkEntry> > entries; public: Metalinker(); ~Metalinker(); @@ -59,7 +61,7 @@ public: } void queryEntry - (std::deque<SharedHandle<MetalinkEntry> >& queryResult, + (std::vector<SharedHandle<MetalinkEntry> >& queryResult, const std::string& version, const std::string& language, const std::string& os) const; diff --git a/src/main.cc b/src/main.cc index b5d6ecee..03cac9fa 100644 --- a/src/main.cc +++ b/src/main.cc @@ -121,9 +121,9 @@ static void showTorrentFile(const std::string& uri) static void showMetalinkFile (const std::string& uri, const SharedHandle<Option>& op) { - std::deque<SharedHandle<MetalinkEntry> > metalinkEntries; + std::vector<SharedHandle<MetalinkEntry> > metalinkEntries; MetalinkHelper::parseAndQuery(metalinkEntries, uri, op.get()); - std::deque<SharedHandle<FileEntry> > fileEntries; + std::vector<SharedHandle<FileEntry> > fileEntries; MetalinkEntry::toFileEntry(fileEntries, metalinkEntries); util::toStream(fileEntries.begin(), fileEntries.end(), std::cout); std::cout << std::endl; diff --git a/test/MetalinkEntryTest.cc b/test/MetalinkEntryTest.cc index 2074bf82..be4314cb 100644 --- a/test/MetalinkEntryTest.cc +++ b/test/MetalinkEntryTest.cc @@ -79,7 +79,7 @@ void MetalinkEntryTest::testDropUnsupportedResource() { CPPUNIT_ASSERT_EQUAL((size_t)2, entry->resources.size()); #endif // ENABLE_MESSAGE_DIGEST - std::deque<SharedHandle<MetalinkResource> >::const_iterator itr = + std::vector<SharedHandle<MetalinkResource> >::const_iterator itr = entry->resources.begin(); CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP, (*itr++)->type); @@ -113,7 +113,7 @@ void MetalinkEntryTest::testSetLocationPriority() const char* locationsSrc[] = { "jp", "al", "ro" }; - std::deque<std::string> locations(&locationsSrc[0], &locationsSrc[3]); + std::vector<std::string> locations(&locationsSrc[0], &locationsSrc[3]); entry->setLocationPriority(locations, -100); diff --git a/test/MetalinkHelperTest.cc b/test/MetalinkHelperTest.cc index 3886ac9b..e6f7a840 100644 --- a/test/MetalinkHelperTest.cc +++ b/test/MetalinkHelperTest.cc @@ -30,7 +30,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION( MetalinkHelperTest ); void MetalinkHelperTest::testParseAndQuery() { Option option; - std::deque<SharedHandle<MetalinkEntry> > result; + std::vector<SharedHandle<MetalinkEntry> > result; MetalinkHelper::parseAndQuery(result, "test.xml", &option); CPPUNIT_ASSERT_EQUAL((size_t)5, result.size()); } @@ -39,7 +39,7 @@ void MetalinkHelperTest::testParseAndQuery_version() { Option option; option.put(PREF_METALINK_VERSION, "0.5.1"); - std::deque<SharedHandle<MetalinkEntry> > result; + std::vector<SharedHandle<MetalinkEntry> > result; MetalinkHelper::parseAndQuery(result, "test.xml", &option); CPPUNIT_ASSERT_EQUAL((size_t)1, result.size()); SharedHandle<MetalinkEntry> entry = result.front(); diff --git a/test/MetalinkProcessorTest.cc b/test/MetalinkProcessorTest.cc index 9821bc80..b5ef067e 100644 --- a/test/MetalinkProcessorTest.cc +++ b/test/MetalinkProcessorTest.cc @@ -147,7 +147,7 @@ void MetalinkProcessorTest::testParseFileV4_attrs() MetalinkProcessor proc; SharedHandle<Metalinker> m = proc.parseFile("metalink4-attrs.xml"); CPPUNIT_ASSERT_EQUAL((size_t)1, m->entries.size()); - std::deque<SharedHandle<MetalinkResource> > resources = + std::vector<SharedHandle<MetalinkResource> > resources = m->entries[0]->resources; CPPUNIT_ASSERT_EQUAL((size_t)3, resources.size()); CPPUNIT_ASSERT_EQUAL(999999, resources[0]->priority); @@ -172,7 +172,8 @@ void MetalinkProcessorTest::testParseFile() try { SharedHandle<Metalinker> metalinker = proc.parseFile("test.xml"); - std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = metalinker->entries.begin(); + std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr = + metalinker->entries.begin(); SharedHandle<MetalinkEntry> entry1 = *entryItr; CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.2.tar.bz2"), entry1->getPath()); @@ -202,7 +203,8 @@ void MetalinkProcessorTest::testParseFile() "-----END PGP SIGNATURE-----"), entry1->getSignature()->getBody()); - std::deque<SharedHandle<MetalinkResource> >::iterator resourceItr1 = entry1->resources.begin(); + std::vector<SharedHandle<MetalinkResource> >::iterator resourceItr1 = + entry1->resources.begin(); SharedHandle<MetalinkResource> resource1 = *resourceItr1; CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP, resource1->type); CPPUNIT_ASSERT_EQUAL(std::string("jp"), resource1->location); @@ -294,7 +296,8 @@ void MetalinkProcessorTest::testParseFromBinaryStream() try { SharedHandle<Metalinker> m = proc.parseFromBinaryStream(dw); - std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = m->entries.begin(); + std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr = + m->entries.begin(); SharedHandle<MetalinkEntry> entry1 = *entryItr; CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.2.tar.bz2"), entry1->getPath()); } catch(Exception& e) { @@ -348,7 +351,8 @@ void MetalinkProcessorTest::testBadSize() try { SharedHandle<Metalinker> m = proc.parseFromBinaryStream(dw); - std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = m->entries.begin(); + std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr = + m->entries.begin(); SharedHandle<MetalinkEntry> e = *entryItr; CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.2.tar.bz2"), e->getPath()); CPPUNIT_ASSERT_EQUAL((uint64_t)0ULL, e->getLength()); @@ -380,7 +384,8 @@ void MetalinkProcessorTest::testBadMaxConn() try { SharedHandle<Metalinker> m = proc.parseFromBinaryStream(dw); - std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = m->entries.begin(); + std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr = + m->entries.begin(); SharedHandle<MetalinkEntry> e = *entryItr; CPPUNIT_ASSERT_EQUAL((uint64_t)43743838ULL, e->getLength()); } catch(Exception& e) { @@ -412,7 +417,8 @@ void MetalinkProcessorTest::testNoName() try { SharedHandle<Metalinker> m = proc.parseFromBinaryStream(dw); CPPUNIT_ASSERT_EQUAL((size_t)1, m->entries.size()); - std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = m->entries.begin(); + std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr = + m->entries.begin(); SharedHandle<MetalinkEntry> e = *entryItr; CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.2.tar.bz2"), e->getPath()); } catch(Exception& e) { diff --git a/test/MetalinkerTest.cc b/test/MetalinkerTest.cc index 7a46e307..fcb82cc6 100644 --- a/test/MetalinkerTest.cc +++ b/test/MetalinkerTest.cc @@ -1,7 +1,9 @@ #include "Metalinker.h" -#include "MetalinkEntry.h" + #include <cppunit/extensions/HelperMacros.h> +#include "MetalinkEntry.h" + namespace aria2 { class MetalinkerTest:public CppUnit::TestFixture { @@ -44,7 +46,7 @@ void MetalinkerTest::testQueryEntry() { language = "ja-JP"; os = "Linux-m68k"; { - std::deque<SharedHandle<MetalinkEntry> > result; + std::vector<SharedHandle<MetalinkEntry> > result; metalinker->queryEntry(result, version, language, os); CPPUNIT_ASSERT_EQUAL((size_t)1, result.size()); CPPUNIT_ASSERT_EQUAL(std::string("0.5.1"), result.at(0)->version); @@ -55,7 +57,7 @@ void MetalinkerTest::testQueryEntry() { language = ""; os = ""; { - std::deque<SharedHandle<MetalinkEntry> > result; + std::vector<SharedHandle<MetalinkEntry> > result; metalinker->queryEntry(result, version, language, os); CPPUNIT_ASSERT_EQUAL((size_t)0, result.size()); } @@ -64,7 +66,7 @@ void MetalinkerTest::testQueryEntry() { language = ""; os = ""; { - std::deque<SharedHandle<MetalinkEntry> > result; + std::vector<SharedHandle<MetalinkEntry> > result; metalinker->queryEntry(result, version, language, os); CPPUNIT_ASSERT_EQUAL((size_t)1, result.size()); CPPUNIT_ASSERT_EQUAL(std::string("0.5.2"), result.at(0)->version); |
