浏览代码

Rewritten parseIndexPath. Renamed createIndexPathMap as createIndexPaths.

Tatsuhiro Tsujikawa 14 年之前
父节点
当前提交
f884ad8339
共有 4 个文件被更改,包括 21 次插入21 次删除
  1. 4 4
      src/download_helper.cc
  2. 6 6
      src/util.cc
  3. 2 2
      src/util.h
  4. 9 9
      test/UtilTest.cc

+ 4 - 4
src/download_helper.cc

@@ -189,10 +189,10 @@ createBtRequestGroup(const std::string& torrentFilePath,
   sgl.normalize();
   dctx->setFileFilter(sgl);
   std::istringstream indexOutIn(option->get(PREF_INDEX_OUT));
-  std::map<size_t, std::string> indexPathMap =
-    util::createIndexPathMap(indexOutIn);
-  for(std::map<size_t, std::string>::const_iterator i = indexPathMap.begin(),
-        eoi = indexPathMap.end(); i != eoi; ++i) {
+  std::vector<std::pair<size_t, std::string> > indexPaths =
+    util::createIndexPaths(indexOutIn);
+  for(std::vector<std::pair<size_t, std::string> >::const_iterator i =
+        indexPaths.begin(), eoi = indexPaths.end(); i != eoi; ++i) {
     dctx->setFilePathWithIndex
       ((*i).first, util::applyDir(option->get(PREF_DIR), (*i).second));
   }

+ 6 - 6
src/util.cc

@@ -1370,7 +1370,7 @@ std::string htmlEscape(const std::string& src)
   return dest;
 }
 
-std::map<size_t, std::string>::value_type
+std::pair<size_t, std::string>
 parseIndexPath(const std::string& line)
 {
   std::pair<std::string, std::string> p;
@@ -1380,17 +1380,17 @@ parseIndexPath(const std::string& line)
     throw DL_ABORT_EX(fmt("Path with index=%u is empty.",
                           static_cast<unsigned int>(index)));
   }
-  return std::map<size_t, std::string>::value_type(index, p.second);
+  return std::make_pair(index, p.second);
 }
 
-std::map<size_t, std::string> createIndexPathMap(std::istream& i)
+std::vector<std::pair<size_t, std::string> > createIndexPaths(std::istream& i)
 {
-  std::map<size_t, std::string> indexPathMap;
+  std::vector<std::pair<size_t, std::string> > indexPaths;
   std::string line;
   while(getline(i, line)) {
-    indexPathMap.insert(indexPathMap.begin(), parseIndexPath(line));
+    indexPaths.push_back(parseIndexPath(line));
   }
-  return indexPathMap;
+  return indexPaths;
 }
 
 namespace {

+ 2 - 2
src/util.h

@@ -347,10 +347,10 @@ std::string joinPath(InputIterator first, InputIterator last)
 
 // Parses INDEX=PATH format string. INDEX must be an unsigned
 // integer.
-std::map<size_t, std::string>::value_type
+std::pair<size_t, std::string>
 parseIndexPath(const std::string& line);
 
-std::map<size_t, std::string> createIndexPathMap(std::istream& i);
+std::vector<std::pair<size_t, std::string> > createIndexPaths(std::istream& i);
 
 /**
  * Take a string src which is a delimited list and add its elements

+ 9 - 9
test/UtilTest.cc

@@ -62,7 +62,7 @@ class UtilTest:public CppUnit::TestFixture {
   CPPUNIT_TEST(testHtmlEscape);
   CPPUNIT_TEST(testJoinPath);
   CPPUNIT_TEST(testParseIndexPath);
-  CPPUNIT_TEST(testCreateIndexPathMap);
+  CPPUNIT_TEST(testCreateIndexPaths);
   CPPUNIT_TEST(testGenerateRandomData);
   CPPUNIT_TEST(testFromHex);
   CPPUNIT_TEST(testParsePrioritizePieceRange);
@@ -122,7 +122,7 @@ public:
   void testHtmlEscape();
   void testJoinPath();
   void testParseIndexPath();
-  void testCreateIndexPathMap();
+  void testCreateIndexPaths();
   void testGenerateRandomData();
   void testFromHex();
   void testParsePrioritizePieceRange();
@@ -1015,7 +1015,7 @@ void UtilTest::testJoinPath()
 
 void UtilTest::testParseIndexPath()
 {
-  std::map<size_t, std::string>::value_type p = util::parseIndexPath("1=foo");
+  std::pair<size_t, std::string> p = util::parseIndexPath("1=foo");
   CPPUNIT_ASSERT_EQUAL((size_t)1, p.first);
   CPPUNIT_ASSERT_EQUAL(std::string("foo"), p.second);
   try {
@@ -1032,17 +1032,17 @@ void UtilTest::testParseIndexPath()
   }
 }
 
-void UtilTest::testCreateIndexPathMap()
+void UtilTest::testCreateIndexPaths()
 {
   std::stringstream in
     ("1=/tmp/myfile\n"
      "100=/myhome/mypicture.png\n");
-  std::map<size_t, std::string> m = util::createIndexPathMap(in);
+  std::vector<std::pair<size_t, std::string> > m = util::createIndexPaths(in);
   CPPUNIT_ASSERT_EQUAL((size_t)2, m.size());
-  CPPUNIT_ASSERT(m.find(1) != m.end());
-  CPPUNIT_ASSERT_EQUAL(std::string("/tmp/myfile"), m[1]);
-  CPPUNIT_ASSERT(m.find(100) != m.end());
-  CPPUNIT_ASSERT_EQUAL(std::string("/myhome/mypicture.png"), m[100]);
+  CPPUNIT_ASSERT_EQUAL((size_t)1, m[0].first);
+  CPPUNIT_ASSERT_EQUAL(std::string("/tmp/myfile"), m[0].second);
+  CPPUNIT_ASSERT_EQUAL((size_t)100, m[1].first);
+  CPPUNIT_ASSERT_EQUAL(std::string("/myhome/mypicture.png"), m[1].second);
 }
 
 void UtilTest::testGenerateRandomData()