[v3] reverse_iterator typo
Benjamin Kosnik
bkoz@redhat.com
Wed Dec 26 15:05:00 GMT 2001
tested x86/linux
2001-12-26 Benjamin Kosnik <bkoz@waller.constant.com>
* testsuite/24_iterators/insert_iterator.cc (test02): Add.
* testsuite/24_iterators/front_insert_iterator.cc (test02): Add.
* testsuite/24_iterators/back_insert_iterator.cc (test02): Add.
* testsuite/24_iterators/reverse_iterator.cc (test02): Add.
* include/bits/stl_iterator.h (reverse_iterator): Uglify member
current to _M_current.
(back_insert_iterator): Ulify member container to _M_container.
(front_insert_iterator): Same.
(insert_iterator): Same.
Index: include/bits/stl_iterator.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_iterator.h,v
retrieving revision 1.16
diff -c -p -r1.16 stl_iterator.h
*** stl_iterator.h 2001/12/06 20:29:31 1.16
--- stl_iterator.h 2001/12/26 21:54:05
*************** namespace std
*** 66,79 ****
// 24.4.1 Reverse iterators
template<typename _Iterator>
class reverse_iterator
! : public iterator<typename iterator_traits<_Iterator>::iterator_category,
! typename iterator_traits<_Iterator>::value_type,
! typename iterator_traits<_Iterator>::difference_type,
! typename iterator_traits<_Iterator>::pointer,
! typename iterator_traits<_Iterator>::reference>
{
protected:
! _Iterator current;
public:
typedef _Iterator iterator_type;
--- 66,79 ----
// 24.4.1 Reverse iterators
template<typename _Iterator>
class reverse_iterator
! : public iterator<typename iterator_traits<_Iterator>::iterator_category,
! typename iterator_traits<_Iterator>::value_type,
! typename iterator_traits<_Iterator>::difference_type,
! typename iterator_traits<_Iterator>::pointer,
! typename iterator_traits<_Iterator>::reference>
{
protected:
! _Iterator _M_current;
public:
typedef _Iterator iterator_type;
*************** namespace std
*** 83,107 ****
typedef typename iterator_traits<_Iterator>::pointer pointer;
public:
! reverse_iterator() {}
explicit
! reverse_iterator(iterator_type __x) : current(__x) {}
reverse_iterator(const reverse_iterator& __x)
! : current(__x.current) { }
template<typename _Iter>
reverse_iterator(const reverse_iterator<_Iter>& __x)
! : current(__x.base()) {}
iterator_type
! base() const { return current; }
reference
operator*() const
{
! _Iterator __tmp = current;
return *--__tmp;
}
--- 83,107 ----
typedef typename iterator_traits<_Iterator>::pointer pointer;
public:
! reverse_iterator() { }
explicit
! reverse_iterator(iterator_type __x) : _M_current(__x) { }
reverse_iterator(const reverse_iterator& __x)
! : _M_current(__x._M_current) { }
template<typename _Iter>
reverse_iterator(const reverse_iterator<_Iter>& __x)
! : _M_current(__x.base()) { }
iterator_type
! base() const { return _M_current; }
reference
operator*() const
{
! _Iterator __tmp = _M_current;
return *--__tmp;
}
*************** namespace std
*** 111,117 ****
reverse_iterator&
operator++()
{
! --current;
return *this;
}
--- 111,117 ----
reverse_iterator&
operator++()
{
! --_M_current;
return *this;
}
*************** namespace std
*** 119,156 ****
operator++(int)
{
reverse_iterator __tmp = *this;
! --current;
return __tmp;
}
reverse_iterator&
operator--()
{
! ++current;
return *this;
}
reverse_iterator operator--(int)
{
reverse_iterator __tmp = *this;
! ++current;
return __tmp;
}
reverse_iterator
operator+(difference_type __n) const
! { return reverse_iterator(current - __n); }
reverse_iterator&
operator+=(difference_type __n)
{
! current -= __n;
return *this;
}
reverse_iterator
operator-(difference_type __n) const
! { return reverse_iterator(current + __n); }
reverse_iterator&
operator-=(difference_type __n)
--- 119,156 ----
operator++(int)
{
reverse_iterator __tmp = *this;
! --_M_current;
return __tmp;
}
reverse_iterator&
operator--()
{
! ++_M_current;
return *this;
}
reverse_iterator operator--(int)
{
reverse_iterator __tmp = *this;
! ++_M_current;
return __tmp;
}
reverse_iterator
operator+(difference_type __n) const
! { return reverse_iterator(_M_current - __n); }
reverse_iterator&
operator+=(difference_type __n)
{
! _M_current -= __n;
return *this;
}
reverse_iterator
operator-(difference_type __n) const
! { return reverse_iterator(_M_current + __n); }
reverse_iterator&
operator-=(difference_type __n)
*************** namespace std
*** 213,234 ****
// 24.4.2.2.1 back_insert_iterator
template<typename _Container>
! class back_insert_iterator
: public iterator<output_iterator_tag, void, void, void, void>
{
protected:
! _Container* container;
public:
typedef _Container container_type;
explicit
! back_insert_iterator(_Container& __x) : container(&__x) {}
back_insert_iterator&
operator=(typename _Container::const_reference __value)
{
! container->push_back(__value);
return *this;
}
--- 213,234 ----
// 24.4.2.2.1 back_insert_iterator
template<typename _Container>
! class back_insert_iterator
: public iterator<output_iterator_tag, void, void, void, void>
{
protected:
! _Container* _M_container;
public:
typedef _Container container_type;
explicit
! back_insert_iterator(_Container& __x) : _M_container(&__x) { }
back_insert_iterator&
operator=(typename _Container::const_reference __value)
{
! _M_container->push_back(__value);
return *this;
}
*************** namespace std
*** 249,268 ****
template<typename _Container>
class front_insert_iterator
! : public iterator<output_iterator_tag, void, void, void, void>
{
protected:
! _Container* container;
public:
typedef _Container container_type;
! explicit front_insert_iterator(_Container& __x) : container(&__x) {}
front_insert_iterator&
operator=(typename _Container::const_reference __value)
{
! container->push_front(__value);
return *this;
}
--- 249,268 ----
template<typename _Container>
class front_insert_iterator
! : public iterator<output_iterator_tag, void, void, void, void>
{
protected:
! _Container* _M_container;
public:
typedef _Container container_type;
! explicit front_insert_iterator(_Container& __x) : _M_container(&__x) { }
front_insert_iterator&
operator=(typename _Container::const_reference __value)
{
! _M_container->push_front(__value);
return *this;
}
*************** namespace std
*** 277,303 ****
};
template<typename _Container>
! inline front_insert_iterator<_Container> front_inserter(_Container& __x)
! { return front_insert_iterator<_Container>(__x); }
template<typename _Container>
class insert_iterator
! : public iterator<output_iterator_tag, void, void, void, void>
{
protected:
! _Container* container;
typename _Container::iterator iter;
public:
typedef _Container container_type;
insert_iterator(_Container& __x, typename _Container::iterator __i)
! : container(&__x), iter(__i) {}
insert_iterator&
operator=(const typename _Container::const_reference __value)
{
! iter = container->insert(iter, __value);
++iter;
return *this;
}
--- 277,304 ----
};
template<typename _Container>
! inline front_insert_iterator<_Container>
! front_inserter(_Container& __x)
! { return front_insert_iterator<_Container>(__x); }
template<typename _Container>
class insert_iterator
! : public iterator<output_iterator_tag, void, void, void, void>
{
protected:
! _Container* _M_container;
typename _Container::iterator iter;
public:
typedef _Container container_type;
insert_iterator(_Container& __x, typename _Container::iterator __i)
! : _M_container(&__x), iter(__i) {}
insert_iterator&
operator=(const typename _Container::const_reference __value)
{
! iter = _M_container->insert(iter, __value);
++iter;
return *this;
}
*************** namespace std
*** 313,323 ****
};
template<typename _Container, typename _Iterator>
! inline
! insert_iterator<_Container> inserter(_Container& __x, _Iterator __i)
{
! typedef typename _Container::iterator __iter;
! return insert_iterator<_Container>(__x, __iter(__i));
}
// This iterator adapter is 'normal' in the sense that it does not
--- 314,324 ----
};
template<typename _Container, typename _Iterator>
! inline insert_iterator<_Container>
! inserter(_Container& __x, _Iterator __i)
{
! return insert_iterator<_Container>(__x,
! typename _Container::iterator(__i));
}
// This iterator adapter is 'normal' in the sense that it does not
Index: testsuite/24_iterators/back_insert_iterator.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/24_iterators/back_insert_iterator.cc,v
retrieving revision 1.1
diff -c -p -r1.1 back_insert_iterator.cc
*** back_insert_iterator.cc 2001/06/23 00:08:47 1.1
--- back_insert_iterator.cc 2001/12/26 21:54:07
*************** void test01()
*** 43,50 ****
--- 43,62 ----
typedef test_iterator::container_type container_type;
}
+
+ // Make sure iterator can be instantiated.
+ template class std::back_insert_iterator<std::list<int> >;
+
+ void test02()
+ {
+ typedef std::back_insert_iterator<std::list<int> > iterator_type;
+ std::list<int> li;
+ iterator_type it = std::back_inserter(li);
+ }
+
int main()
{
test01();
+ test02();
return 0;
}
Index: testsuite/24_iterators/front_insert_iterator.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/24_iterators/front_insert_iterator.cc,v
retrieving revision 1.1
diff -c -p -r1.1 front_insert_iterator.cc
*** front_insert_iterator.cc 2001/06/23 00:08:47 1.1
--- front_insert_iterator.cc 2001/12/26 21:54:07
*************** void test01()
*** 43,50 ****
--- 43,61 ----
typedef test_iterator::container_type container_type;
}
+ // Make sure iterator can be instantiated.
+ template class std::front_insert_iterator<std::list<int> >;
+
+ void test02()
+ {
+ typedef std::front_insert_iterator<std::list<int> > iterator_type;
+ std::list<int> li;
+ iterator_type it = std::front_inserter(li);
+ }
+
int main()
{
test01();
+ test02();
return 0;
}
Index: testsuite/24_iterators/insert_iterator.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/24_iterators/insert_iterator.cc,v
retrieving revision 1.1
diff -c -p -r1.1 insert_iterator.cc
*** insert_iterator.cc 2001/06/23 00:08:47 1.1
--- insert_iterator.cc 2001/12/26 21:54:08
*************** void test01()
*** 45,52 ****
--- 45,68 ----
typedef test_iterator::container_type container_type;
}
+
+
+ // Make sure iterator can be instantiated.
+ template class std::insert_iterator<std::list<int> >;
+
+ void test02()
+ {
+ typedef std::insert_iterator<std::list<int> > iterator_type;
+
+ std::list<int> li;
+ std::list<int>::iterator liit;
+ iterator_type it01(li, liit);
+ iterator_type it02 = std::inserter(li, liit);
+ }
+
int main()
{
test01();
+ test02();
return 0;
}
Index: testsuite/24_iterators/reverse_iterator.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc,v
retrieving revision 1.1
diff -c -p -r1.1 reverse_iterator.cc
*** reverse_iterator.cc 2001/06/23 00:08:47 1.1
--- reverse_iterator.cc 2001/12/26 21:54:08
*************** void test01()
*** 46,53 ****
--- 46,78 ----
typedef test_iterator::iterator_category iteratory_category;
}
+
+ // Make sure iterator can be instantiated.
+ template class std::reverse_iterator<int*>;
+
+ void test02()
+ {
+ typedef std::reverse_iterator<int*> iterator_type;
+ iterator_type it01;
+ iterator_type it02;
+
+ // Sanity check non-member operators and functions can be instantiated.
+ it01 == it02;
+ it01 != it02;
+ it01 < it02;
+ it01 <= it02;
+ it01 > it02;
+ it01 >= it02;
+ it01 - it02;
+ 5 + it02;
+ }
+
+
int main()
{
test01();
+ test02();
return 0;
}
+
+
More information about the Gcc-patches
mailing list