...and then there was one. Only one copy of 'iterators.h' in the test tree for libc++
authorMarshall Clow <mclow@qualcomm.com>
Fri, 4 Jan 2013 18:24:04 +0000 (18:24 +0000)
committerMarshall Clow <mclow@qualcomm.com>
Fri, 4 Jan 2013 18:24:04 +0000 (18:24 +0000)
llvm-svn: 171479

113 files changed:
libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.fill/fill_n.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.generate/generate_n.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.partitions/is_partitioned.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_copy.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.partitions/partition_point.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.partitions/stable_partition.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_copy_if.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.remove/remove_if.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_copy_if.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.replace/replace_if.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.reverse/reverse_copy.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.rotate/rotate_copy.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.swap/swap_ranges.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.transform/binary_transform.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.transform/unary_transform.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_copy_pred.pass.cpp
libcxx/test/algorithms/alg.modifying.operations/alg.unique/unique_pred.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.adjacent.find/adjacent_find_pred.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.all_of/all_of.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.any_of/any_of.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.count/count.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.count/count_if.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.find.end/find_end_pred.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.find.first.of/find_first_of_pred.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.find/find.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.find/find_if_not.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.foreach/test.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.is_permutation/is_permutation_pred.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.none_of/none_of.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.search/search.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/alg.search/search_pred.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.binary.search/binary.search/binary_search_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.binary.search/equal.range/equal_range_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.binary.search/lower.bound/lower_bound_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.binary.search/upper.bound/upper_bound_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.lex.comparison/lexicographical_compare_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.merge/inplace_merge_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.merge/merge.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.merge/merge_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.min.max/max_element.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.min.max/max_element_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.min.max/min_element.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.min.max/min_element_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.min.max/minmax_element_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.permutation.generators/next_permutation_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.permutation.generators/prev_permutation_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/includes/includes_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/set.difference/set_difference_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/set.intersection/set_intersection_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/set.symmetric.difference/set_symmetric_difference_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.set.operations/set.union/set_union_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy.pass.cpp
libcxx/test/algorithms/alg.sorting/alg.sort/partial.sort.copy/partial_sort_copy_comp.pass.cpp
libcxx/test/algorithms/iterators.h [deleted file]
libcxx/test/iterators.h
libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op.const/convert.pass.cpp
libcxx/test/iterators/predef.iterators/move.iterators/move.iter.ops/move.iter.op=/move_iterator.pass.cpp
libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.cons/reverse_iterator.pass.cpp
libcxx/test/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.op=/reverse_iterator.pass.cpp
libcxx/test/numerics/numeric.ops/accumulate/accumulate.pass.cpp
libcxx/test/numerics/numeric.ops/accumulate/accumulate_op.pass.cpp
libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference.pass.cpp
libcxx/test/numerics/numeric.ops/adjacent.difference/adjacent_difference_op.pass.cpp
libcxx/test/numerics/numeric.ops/inner.product/inner_product.pass.cpp
libcxx/test/numerics/numeric.ops/inner.product/inner_product_comp.pass.cpp
libcxx/test/numerics/numeric.ops/iterators.h [deleted file]
libcxx/test/numerics/numeric.ops/numeric.iota/iota.pass.cpp
libcxx/test/numerics/numeric.ops/partial.sum/partial_sum.pass.cpp
libcxx/test/numerics/numeric.ops/partial.sum/partial_sum_op.pass.cpp

index c9339cf..135293d 100644 (file)
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
index a6ad030..cb75591 100644 (file)
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
index 01bef66..7960800 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
index b0bca0d..4eb6e91 100644 (file)
@@ -20,7 +20,7 @@
 #include <memory>
 #endif
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
index d4bfe34..7c900a7 100644 (file)
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct test1
 {
index f29932b..dd3de59 100644 (file)
@@ -16,7 +16,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct test1
 {
index 555993a..39ecfb2 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
index 6bae45e..d77e1e3 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
index 4f9fa4c..bdf9edc 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2>
 void
index 0024b44..a078f06 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
index e3bb29c..321e0c2 100644 (file)
@@ -18,7 +18,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 int main()
 {
index b6b6d48..a3e3c6c 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 struct for_each_test
 {
index 2797e65..0a7e5c7 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2>
 void
index d8c5221..f4317eb 100644 (file)
@@ -18,7 +18,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
index 091068c..7bc0809 100644 (file)
@@ -30,7 +30,7 @@ struct indirect_less
 
 #endif  // _LIBCPP_HAS_NO_RVALUE_REFERENCES
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
index 97bc7a8..0536813 100644 (file)
@@ -19,7 +19,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter1, class InIter2, class OutIter>
 void
index 5ae3805..77c0727 100644 (file)
@@ -22,7 +22,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter1, class InIter2, class OutIter>
 void
index 3e7d5d7..4681041 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
index c20d061..cba4813 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
index 4e19bea..daf1990 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter>
 void
index 2ee894b..8b18c50 100644 (file)
@@ -21,7 +21,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter1, class Iter2, class OutIter>
 void
index b473dda..af75647 100644 (file)
@@ -17,7 +17,7 @@
 #include <algorithm>
 #include <cassert>
 
-#include "../../../iterators.h"
+#include "../../../../iterators.h"
 
 template <class Iter>
 void
diff --git a/libcxx/test/algorithms/iterators.h b/libcxx/test/algorithms/iterators.h
deleted file mode 100644 (file)
index 539a9a4..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-#ifndef ITERATORS_H
-#define ITERATORS_H
-
-#include <iterator>
-
-template <class It>
-class output_iterator
-{
-    It it_;
-
-    template <class U> friend class output_iterator;
-public:
-    typedef          std::output_iterator_tag                  iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    explicit output_iterator(It it) : it_(it) {}
-    template <class U>
-        output_iterator(const output_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-
-    output_iterator& operator++() {++it_; return *this;}
-    output_iterator operator++(int)
-        {output_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class Iter>
-inline
-Iter
-base(output_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class input_iterator
-{
-    It it_;
-
-    template <class U> friend class input_iterator;
-public:
-    typedef          std::input_iterator_tag                   iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    explicit input_iterator(It it) : it_(it) {}
-    template <class U>
-        input_iterator(const input_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    input_iterator& operator++() {++it_; return *this;}
-    input_iterator operator++(int)
-        {input_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const input_iterator<T>& x, const input_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const input_iterator<T>& x, const input_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(input_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class forward_iterator
-{
-    It it_;
-
-    template <class U> friend class forward_iterator;
-public:
-    typedef          std::forward_iterator_tag                 iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    forward_iterator() : it_() {}
-    explicit forward_iterator(It it) : it_(it) {}
-    template <class U>
-        forward_iterator(const forward_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    forward_iterator& operator++() {++it_; return *this;}
-    forward_iterator operator++(int)
-        {forward_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const forward_iterator<T>& x, const forward_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const forward_iterator<T>& x, const forward_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(forward_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class bidirectional_iterator
-{
-    It it_;
-
-    template <class U> friend class bidirectional_iterator;
-public:
-    typedef          std::bidirectional_iterator_tag           iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    bidirectional_iterator() : it_() {}
-    explicit bidirectional_iterator(It it) : it_(it) {}
-    template <class U>
-        bidirectional_iterator(const bidirectional_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    bidirectional_iterator& operator++() {++it_; return *this;}
-    bidirectional_iterator operator++(int)
-        {bidirectional_iterator tmp(*this); ++(*this); return tmp;}
-
-    bidirectional_iterator& operator--() {--it_; return *this;}
-    bidirectional_iterator operator--(int)
-        {bidirectional_iterator tmp(*this); --(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const bidirectional_iterator<T>& x, const bidirectional_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const bidirectional_iterator<T>& x, const bidirectional_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(bidirectional_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class random_access_iterator
-{
-    It it_;
-
-    template <class U> friend class random_access_iterator;
-public:
-    typedef          std::random_access_iterator_tag           iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    random_access_iterator() : it_() {}
-    explicit random_access_iterator(It it) : it_(it) {}
-   template <class U>
-        random_access_iterator(const random_access_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    random_access_iterator& operator++() {++it_; return *this;}
-    random_access_iterator operator++(int)
-        {random_access_iterator tmp(*this); ++(*this); return tmp;}
-
-    random_access_iterator& operator--() {--it_; return *this;}
-    random_access_iterator operator--(int)
-        {random_access_iterator tmp(*this); --(*this); return tmp;}
-
-    random_access_iterator& operator+=(difference_type n) {it_ += n; return *this;}
-    random_access_iterator operator+(difference_type n) const
-        {random_access_iterator tmp(*this); tmp += n; return tmp;}
-    friend random_access_iterator operator+(difference_type n, random_access_iterator x)
-        {x += n; return x;}
-    random_access_iterator& operator-=(difference_type n) {return *this += -n;}
-    random_access_iterator operator-(difference_type n) const
-        {random_access_iterator tmp(*this); tmp -= n; return tmp;}
-
-    reference operator[](difference_type n) const {return it_[n];}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class T, class U>
-inline
-bool
-operator<(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() < y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator<=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(y < x);
-}
-
-template <class T, class U>
-inline
-bool
-operator>(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return y < x;
-}
-
-template <class T, class U>
-inline
-bool
-operator>=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(x < y);
-}
-
-template <class T, class U>
-inline
-typename std::iterator_traits<T>::difference_type
-operator-(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() - y.base();
-}
-
-template <class Iter>
-inline
-Iter
-base(random_access_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class Iter>
-inline
-Iter
-base(Iter i)
-{
-    return i;
-}
-
-#endif  // ITERATORS_H
index 167ed0b..6b3d3d1 100644 (file)
@@ -275,4 +275,22 @@ operator-(const random_access_iterator<T>& x, const random_access_iterator<U>& y
     return x.base() - y.base();
 }
 
+template <class Iter>
+inline Iter base(output_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>
+inline Iter base(input_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>
+inline Iter base(forward_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>
+inline Iter base(bidirectional_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>
+inline Iter base(random_access_iterator<Iter> i) { return i.base(); }
+
+template <class Iter>  // everything else
+inline Iter base(Iter i) { return i; }
+
 #endif  // ITERATORS_H
index 9a5e055..6a370a8 100644 (file)
@@ -29,16 +29,16 @@ test(U u)
     assert(r1.base() == u);
 }
 
-struct base {};
-struct derived : base {};
+struct Base {};
+struct Derived : Base {};
 
 int main()
 {
-    derived d;
+    Derived d;
 
-    test<input_iterator<base*> >(input_iterator<derived*>(&d));
-    test<forward_iterator<base*> >(forward_iterator<derived*>(&d));
-    test<bidirectional_iterator<base*> >(bidirectional_iterator<derived*>(&d));
-    test<random_access_iterator<const base*> >(random_access_iterator<derived*>(&d));
-    test<base*>(&d);
+    test<input_iterator<Base*> >(input_iterator<Derived*>(&d));
+    test<forward_iterator<Base*> >(forward_iterator<Derived*>(&d));
+    test<bidirectional_iterator<Base*> >(bidirectional_iterator<Derived*>(&d));
+    test<random_access_iterator<const Base*> >(random_access_iterator<Derived*>(&d));
+    test<Base*>(&d);
 }
index 262b2d5..919302c 100644 (file)
@@ -32,16 +32,16 @@ test(U u)
     assert(&rr == &r1);
 }
 
-struct base {};
-struct derived : base {};
+struct Base {};
+struct Derived : Base {};
 
 int main()
 {
-    derived d;
+    Derived d;
 
-    test<input_iterator<base*> >(input_iterator<derived*>(&d));
-    test<forward_iterator<base*> >(forward_iterator<derived*>(&d));
-    test<bidirectional_iterator<base*> >(bidirectional_iterator<derived*>(&d));
-    test<random_access_iterator<const base*> >(random_access_iterator<derived*>(&d));
-    test<base*>(&d);
+    test<input_iterator<Base*> >(input_iterator<Derived*>(&d));
+    test<forward_iterator<Base*> >(forward_iterator<Derived*>(&d));
+    test<bidirectional_iterator<Base*> >(bidirectional_iterator<Derived*>(&d));
+    test<random_access_iterator<const Base*> >(random_access_iterator<Derived*>(&d));
+    test<Base*>(&d);
 }
index 383200a..ef3382f 100644 (file)
@@ -29,14 +29,14 @@ test(U u)
     assert(r1.base() == u);
 }
 
-struct base {};
-struct derived : base {};
+struct Base {};
+struct Derived : Base {};
 
 int main()
 {
-    derived d;
+    Derived d;
 
-    test<bidirectional_iterator<base*> >(bidirectional_iterator<derived*>(&d));
-    test<random_access_iterator<const base*> >(random_access_iterator<derived*>(&d));
-    test<base*>(&d);
+    test<bidirectional_iterator<Base*> >(bidirectional_iterator<Derived*>(&d));
+    test<random_access_iterator<const Base*> >(random_access_iterator<Derived*>(&d));
+    test<Base*>(&d);
 }
index 3d4b416..dc20326 100644 (file)
@@ -32,14 +32,14 @@ test(U u)
     assert(&rr == &r1);
 }
 
-struct base {};
-struct derived : base {};
+struct Base {};
+struct Derived : Base {};
 
 int main()
 {
-    derived d;
+    Derived d;
 
-    test<bidirectional_iterator<base*> >(bidirectional_iterator<derived*>(&d));
-    test<random_access_iterator<const base*> >(random_access_iterator<derived*>(&d));
-    test<base*>(&d);
+    test<bidirectional_iterator<Base*> >(bidirectional_iterator<Derived*>(&d));
+    test<random_access_iterator<const Base*> >(random_access_iterator<Derived*>(&d));
+    test<Base*>(&d);
 }
index a3a03b5..d6b303b 100644 (file)
@@ -18,7 +18,7 @@
 #include <numeric>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter, class T>
 void
index b7ed40f..53f460b 100644 (file)
@@ -20,7 +20,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter, class T>
 void
index 06df32d..d23af2f 100644 (file)
@@ -22,7 +22,7 @@
 #include <numeric>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2, class T>
 void
index f720bb6..cf6f9c4 100644 (file)
@@ -24,7 +24,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class Iter1, class Iter2, class T>
 void
diff --git a/libcxx/test/numerics/numeric.ops/iterators.h b/libcxx/test/numerics/numeric.ops/iterators.h
deleted file mode 100644 (file)
index 539a9a4..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-#ifndef ITERATORS_H
-#define ITERATORS_H
-
-#include <iterator>
-
-template <class It>
-class output_iterator
-{
-    It it_;
-
-    template <class U> friend class output_iterator;
-public:
-    typedef          std::output_iterator_tag                  iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    explicit output_iterator(It it) : it_(it) {}
-    template <class U>
-        output_iterator(const output_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-
-    output_iterator& operator++() {++it_; return *this;}
-    output_iterator operator++(int)
-        {output_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class Iter>
-inline
-Iter
-base(output_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class input_iterator
-{
-    It it_;
-
-    template <class U> friend class input_iterator;
-public:
-    typedef          std::input_iterator_tag                   iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    explicit input_iterator(It it) : it_(it) {}
-    template <class U>
-        input_iterator(const input_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    input_iterator& operator++() {++it_; return *this;}
-    input_iterator operator++(int)
-        {input_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const input_iterator<T>& x, const input_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const input_iterator<T>& x, const input_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(input_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class forward_iterator
-{
-    It it_;
-
-    template <class U> friend class forward_iterator;
-public:
-    typedef          std::forward_iterator_tag                 iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    forward_iterator() : it_() {}
-    explicit forward_iterator(It it) : it_(it) {}
-    template <class U>
-        forward_iterator(const forward_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    forward_iterator& operator++() {++it_; return *this;}
-    forward_iterator operator++(int)
-        {forward_iterator tmp(*this); ++(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const forward_iterator<T>& x, const forward_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const forward_iterator<T>& x, const forward_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(forward_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class bidirectional_iterator
-{
-    It it_;
-
-    template <class U> friend class bidirectional_iterator;
-public:
-    typedef          std::bidirectional_iterator_tag           iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    bidirectional_iterator() : it_() {}
-    explicit bidirectional_iterator(It it) : it_(it) {}
-    template <class U>
-        bidirectional_iterator(const bidirectional_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    bidirectional_iterator& operator++() {++it_; return *this;}
-    bidirectional_iterator operator++(int)
-        {bidirectional_iterator tmp(*this); ++(*this); return tmp;}
-
-    bidirectional_iterator& operator--() {--it_; return *this;}
-    bidirectional_iterator operator--(int)
-        {bidirectional_iterator tmp(*this); --(*this); return tmp;}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const bidirectional_iterator<T>& x, const bidirectional_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const bidirectional_iterator<T>& x, const bidirectional_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class Iter>
-inline
-Iter
-base(bidirectional_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class It>
-class random_access_iterator
-{
-    It it_;
-
-    template <class U> friend class random_access_iterator;
-public:
-    typedef          std::random_access_iterator_tag           iterator_category;
-    typedef typename std::iterator_traits<It>::value_type      value_type;
-    typedef typename std::iterator_traits<It>::difference_type difference_type;
-    typedef It                                                 pointer;
-    typedef typename std::iterator_traits<It>::reference       reference;
-
-    It base() const {return it_;}
-
-    random_access_iterator() : it_() {}
-    explicit random_access_iterator(It it) : it_(it) {}
-   template <class U>
-        random_access_iterator(const random_access_iterator<U>& u) :it_(u.it_) {}
-
-    reference operator*() const {return *it_;}
-    pointer operator->() const {return it_;}
-
-    random_access_iterator& operator++() {++it_; return *this;}
-    random_access_iterator operator++(int)
-        {random_access_iterator tmp(*this); ++(*this); return tmp;}
-
-    random_access_iterator& operator--() {--it_; return *this;}
-    random_access_iterator operator--(int)
-        {random_access_iterator tmp(*this); --(*this); return tmp;}
-
-    random_access_iterator& operator+=(difference_type n) {it_ += n; return *this;}
-    random_access_iterator operator+(difference_type n) const
-        {random_access_iterator tmp(*this); tmp += n; return tmp;}
-    friend random_access_iterator operator+(difference_type n, random_access_iterator x)
-        {x += n; return x;}
-    random_access_iterator& operator-=(difference_type n) {return *this += -n;}
-    random_access_iterator operator-(difference_type n) const
-        {random_access_iterator tmp(*this); tmp -= n; return tmp;}
-
-    reference operator[](difference_type n) const {return it_[n];}
-};
-
-template <class T, class U>
-inline
-bool
-operator==(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() == y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator!=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(x == y);
-}
-
-template <class T, class U>
-inline
-bool
-operator<(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() < y.base();
-}
-
-template <class T, class U>
-inline
-bool
-operator<=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(y < x);
-}
-
-template <class T, class U>
-inline
-bool
-operator>(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return y < x;
-}
-
-template <class T, class U>
-inline
-bool
-operator>=(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return !(x < y);
-}
-
-template <class T, class U>
-inline
-typename std::iterator_traits<T>::difference_type
-operator-(const random_access_iterator<T>& x, const random_access_iterator<U>& y)
-{
-    return x.base() - y.base();
-}
-
-template <class Iter>
-inline
-Iter
-base(random_access_iterator<Iter> i)
-{
-    return i.base();
-}
-
-template <class Iter>
-inline
-Iter
-base(Iter i)
-{
-    return i;
-}
-
-#endif  // ITERATORS_H
index d165b11..84f7830 100644 (file)
@@ -15,7 +15,7 @@
 #include <numeric>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter>
 void
index 6fb4c09..5d990a2 100644 (file)
@@ -20,7 +20,7 @@
 #include <numeric>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void
index c0f83bf..3c3f403 100644 (file)
@@ -22,7 +22,7 @@
 #include <functional>
 #include <cassert>
 
-#include "../iterators.h"
+#include "../../../iterators.h"
 
 template <class InIter, class OutIter>
 void