From de04ffae7dee2a22b221a962a0cb7416fab8e415 Mon Sep 17 00:00:00 2001 From: bkoz Date: Wed, 26 Dec 2001 21:56:17 +0000 Subject: [PATCH] 2001-12-26 Benjamin Kosnik * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@48318 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 23 +++++-- libstdc++-v3/include/bits/stl_iterator.h | 75 +++++++++++----------- .../testsuite/24_iterators/back_insert_iterator.cc | 12 ++++ .../24_iterators/front_insert_iterator.cc | 11 ++++ .../testsuite/24_iterators/insert_iterator.cc | 16 +++++ .../testsuite/24_iterators/reverse_iterator.cc | 25 ++++++++ 6 files changed, 120 insertions(+), 42 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index dcbbda7860b..547b641e4ea 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,16 @@ +2001-12-26 Benjamin Kosnik + + * 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. + 2001-12-25 Gabriel Dos Reis * include/bits/std_limits.h (__glibcpp_xxx_is_modulo): New @@ -5,7 +18,7 @@ (numeric_limits<>::is_modulo): Get value from corresponding __glibcpp_xxx_is_modulo macro. -Sun Dec 23 18:47:24 2001 Jeffrey A Law (law@redhat.com) +2001-12-23 Jeffrey A Law * config/os/hpux/bits/os_defines.h: Do not include <_sys/inttypes.h>. Twiddle return types for strtoll and strtoull to avoid using @@ -15,13 +28,13 @@ Sun Dec 23 18:47:24 2001 Jeffrey A Law (law@redhat.com) * configure.target (CPULIMITSH): Fix typo in alpha case. -Sat Dec 22 09:52:41 2001 Jeffrey A Law (law@redhat.com) +2001-12-22 Jeffrey A Law - * config/os/hpux/bits/os_defines.h: Update to avoid #defines + * config/os/hpux/bits/os_defines.h: Update to avoid #defines for strtoll and strtoull. -Fri Dec 21 17:35:21 2001 Jeffrey A Law (law@redhat.com) - +2001-12-21 Jeffrey A Law + * config/os/hpux/bits/os_defines.h: Include class reverse_iterator - : public 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> + : public 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; + _Iterator _M_current; public: typedef _Iterator iterator_type; @@ -83,25 +83,25 @@ namespace std typedef typename iterator_traits<_Iterator>::pointer pointer; public: - reverse_iterator() {} + reverse_iterator() { } explicit - reverse_iterator(iterator_type __x) : current(__x) {} + reverse_iterator(iterator_type __x) : _M_current(__x) { } reverse_iterator(const reverse_iterator& __x) - : current(__x.current) { } + : _M_current(__x._M_current) { } template reverse_iterator(const reverse_iterator<_Iter>& __x) - : current(__x.base()) {} + : _M_current(__x.base()) { } iterator_type - base() const { return current; } + base() const { return _M_current; } reference operator*() const { - _Iterator __tmp = current; + _Iterator __tmp = _M_current; return *--__tmp; } @@ -111,7 +111,7 @@ namespace std reverse_iterator& operator++() { - --current; + --_M_current; return *this; } @@ -119,38 +119,38 @@ namespace std operator++(int) { reverse_iterator __tmp = *this; - --current; + --_M_current; return __tmp; } reverse_iterator& operator--() { - ++current; + ++_M_current; return *this; } reverse_iterator operator--(int) { reverse_iterator __tmp = *this; - ++current; + ++_M_current; return __tmp; } reverse_iterator operator+(difference_type __n) const - { return reverse_iterator(current - __n); } + { return reverse_iterator(_M_current - __n); } reverse_iterator& operator+=(difference_type __n) { - current -= __n; + _M_current -= __n; return *this; } reverse_iterator operator-(difference_type __n) const - { return reverse_iterator(current + __n); } + { return reverse_iterator(_M_current + __n); } reverse_iterator& operator-=(difference_type __n) @@ -213,22 +213,22 @@ namespace std // 24.4.2.2.1 back_insert_iterator template - class back_insert_iterator + class back_insert_iterator : public iterator { protected: - _Container* container; + _Container* _M_container; public: typedef _Container container_type; explicit - back_insert_iterator(_Container& __x) : container(&__x) {} + back_insert_iterator(_Container& __x) : _M_container(&__x) { } back_insert_iterator& operator=(typename _Container::const_reference __value) { - container->push_back(__value); + _M_container->push_back(__value); return *this; } @@ -249,20 +249,20 @@ namespace std template class front_insert_iterator - : public iterator + : public iterator { protected: - _Container* container; + _Container* _M_container; public: typedef _Container container_type; - explicit front_insert_iterator(_Container& __x) : container(&__x) {} + explicit front_insert_iterator(_Container& __x) : _M_container(&__x) { } front_insert_iterator& operator=(typename _Container::const_reference __value) { - container->push_front(__value); + _M_container->push_front(__value); return *this; } @@ -277,27 +277,28 @@ namespace std }; template - inline front_insert_iterator<_Container> front_inserter(_Container& __x) - { return front_insert_iterator<_Container>(__x); } + inline front_insert_iterator<_Container> + front_inserter(_Container& __x) + { return front_insert_iterator<_Container>(__x); } template class insert_iterator - : public iterator + : public iterator { protected: - _Container* container; + _Container* _M_container; typename _Container::iterator iter; public: typedef _Container container_type; insert_iterator(_Container& __x, typename _Container::iterator __i) - : container(&__x), iter(__i) {} + : _M_container(&__x), iter(__i) {} insert_iterator& operator=(const typename _Container::const_reference __value) { - iter = container->insert(iter, __value); + iter = _M_container->insert(iter, __value); ++iter; return *this; } @@ -313,11 +314,11 @@ namespace std }; template - inline - insert_iterator<_Container> inserter(_Container& __x, _Iterator __i) + inline insert_iterator<_Container> + inserter(_Container& __x, _Iterator __i) { - typedef typename _Container::iterator __iter; - return insert_iterator<_Container>(__x, __iter(__i)); + return insert_iterator<_Container>(__x, + typename _Container::iterator(__i)); } // This iterator adapter is 'normal' in the sense that it does not diff --git a/libstdc++-v3/testsuite/24_iterators/back_insert_iterator.cc b/libstdc++-v3/testsuite/24_iterators/back_insert_iterator.cc index 87d2d7966ed..60e7c231911 100644 --- a/libstdc++-v3/testsuite/24_iterators/back_insert_iterator.cc +++ b/libstdc++-v3/testsuite/24_iterators/back_insert_iterator.cc @@ -43,8 +43,20 @@ void test01() typedef test_iterator::container_type container_type; } + +// Make sure iterator can be instantiated. +template class std::back_insert_iterator >; + +void test02() +{ + typedef std::back_insert_iterator > iterator_type; + std::list li; + iterator_type it = std::back_inserter(li); +} + int main() { test01(); + test02(); return 0; } diff --git a/libstdc++-v3/testsuite/24_iterators/front_insert_iterator.cc b/libstdc++-v3/testsuite/24_iterators/front_insert_iterator.cc index 5e0d04ff1c5..4be3346a5ed 100644 --- a/libstdc++-v3/testsuite/24_iterators/front_insert_iterator.cc +++ b/libstdc++-v3/testsuite/24_iterators/front_insert_iterator.cc @@ -43,8 +43,19 @@ void test01() typedef test_iterator::container_type container_type; } +// Make sure iterator can be instantiated. +template class std::front_insert_iterator >; + +void test02() +{ + typedef std::front_insert_iterator > iterator_type; + std::list li; + iterator_type it = std::front_inserter(li); +} + int main() { test01(); + test02(); return 0; } diff --git a/libstdc++-v3/testsuite/24_iterators/insert_iterator.cc b/libstdc++-v3/testsuite/24_iterators/insert_iterator.cc index aee24700d8a..d3dcd8816a9 100644 --- a/libstdc++-v3/testsuite/24_iterators/insert_iterator.cc +++ b/libstdc++-v3/testsuite/24_iterators/insert_iterator.cc @@ -45,8 +45,24 @@ void test01() typedef test_iterator::container_type container_type; } + + +// Make sure iterator can be instantiated. +template class std::insert_iterator >; + +void test02() +{ + typedef std::insert_iterator > iterator_type; + + std::list li; + std::list::iterator liit; + iterator_type it01(li, liit); + iterator_type it02 = std::inserter(li, liit); +} + int main() { test01(); + test02(); return 0; } diff --git a/libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc b/libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc index 606d393bf37..d20a44f8691 100644 --- a/libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc +++ b/libstdc++-v3/testsuite/24_iterators/reverse_iterator.cc @@ -46,8 +46,33 @@ void test01() typedef test_iterator::iterator_category iteratory_category; } + +// Make sure iterator can be instantiated. +template class std::reverse_iterator; + +void test02() +{ + typedef std::reverse_iterator 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; } + + -- 2.11.0