[paludis-commits] r4092 - in trunk: . paludis/util

ciaranm at svn.pioto.org ciaranm at svn.pioto.org
Sun Dec 16 18:55:21 UTC 2007


Author: ciaranm
Date: 2007-12-16 18:55:18 +0000 (Sun, 16 Dec 2007)
New Revision: 4092

Modified:
   trunk/ChangeLog
   trunk/paludis/util/indirect_iterator.hh
   trunk/paludis/util/indirect_iterator_TEST.cc
Log:
Let IndirectIterator work on iterators too


Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-12-16 18:42:47 UTC (rev 4091)
+++ trunk/ChangeLog	2007-12-16 18:55:18 UTC (rev 4092)
@@ -7,6 +7,10 @@
 
 2007-12-16 Ciaran McCreesh
 
+	* paludis/util/: Let IndirectIterator work on iterators too.
+
+2007-12-16 Ciaran McCreesh
+
 	* paludis/: DepLabel work.
 
 2007-12-16 Piotr Jaroszyński

Modified: trunk/paludis/util/indirect_iterator.hh
===================================================================
--- trunk/paludis/util/indirect_iterator.hh	2007-12-16 18:42:47 UTC (rev 4091)
+++ trunk/paludis/util/indirect_iterator.hh	2007-12-16 18:55:18 UTC (rev 4092)
@@ -29,6 +29,12 @@
 namespace paludis
 {
     template <typename T_>
+    struct IndirectIteratorValueType
+    {
+        typedef typename std::iterator_traits<T_>::value_type Type;
+    };
+
+    template <typename T_>
     struct IndirectIteratorValueType<T_ *>
     {
         typedef T_ Type;

Modified: trunk/paludis/util/indirect_iterator_TEST.cc
===================================================================
--- trunk/paludis/util/indirect_iterator_TEST.cc	2007-12-16 18:42:47 UTC (rev 4091)
+++ trunk/paludis/util/indirect_iterator_TEST.cc	2007-12-16 18:55:18 UTC (rev 4092)
@@ -19,6 +19,8 @@
  */
 
 #include <paludis/util/indirect_iterator-impl.hh>
+#include <paludis/util/join.hh>
+#include <paludis/util/iterator_funcs.hh>
 #include <test/test_runner.hh>
 #include <test/test_framework.hh>
 #include <vector>
@@ -136,5 +138,24 @@
             std::for_each(v.begin(), v.end(), Deleter());
         }
     } test_indirect_iterator_list_p_int;
+
+    struct IndirectIteratorListListIterIntTest : TestCase
+    {
+        IndirectIteratorListListIterIntTest() : TestCase("list<list<int>::iterator>") { }
+
+        void run()
+        {
+            std::list<int> v;
+            v.push_back(5);
+            v.push_back(10);
+
+            std::list<std::list<int>::iterator> w;
+            w.push_back(v.begin());
+            w.push_back(next(v.begin()));
+
+            TEST_CHECK_EQUAL(join(indirect_iterator(w.begin()), indirect_iterator(w.end()), ", "), "5, 10");
+
+        }
+    } test_indirect_iterator_list_list_int_iter;
 }
 



More information about the paludis-commits mailing list