Przeglądaj źródła

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
Tatsuhiro Tsujikawa 15 lat temu
rodzic
commit
88656eb14e

+ 18 - 0
ChangeLog

@@ -1,3 +1,21 @@
+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

+ 5 - 5
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()) {

+ 2 - 1
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();

+ 5 - 5
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),

+ 4 - 5
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);
 

+ 3 - 3
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()) {

+ 3 - 4
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

+ 1 - 1
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

+ 6 - 4
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;

+ 2 - 2
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;

+ 2 - 2
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);
 

+ 2 - 2
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();

+ 13 - 7
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) {

+ 6 - 4
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);