This is the mail archive of the
libstdc++@sourceware.cygnus.com
mailing list for the libstdc++ project.
Re: Iterator fix
- To: libstdc++ at sourceware dot cygnus dot com
- Subject: Re: Iterator fix
- From: Thomas Holenstein <thomas at hex dot ch>
- Date: Tue, 6 Jun 2000 12:06:41 +0200 (MET DST)
- Cc: Thomas Holenstein <tholenst at iiic dot ethz dot ch>
- References: <200005261812.UAA07607@rif24.iiic.ethz.ch><Pine.LNX.4.10.10005311828230.25025-100000@decepticon.cygnus.com>
Benjamin Kosnik writes:
> Can you please re-submit this with a ChangeLog entry, and use diff -cp?
Sorry. Don't even try to use such stuff. Hopefully I become better with
time.
The problem was: iterator comparision functions in stl_iterator.h are
not inlined. Just added an inline from operator== to operator>=.
Thomas
Index: libstdc++-v3/ChangeLog
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/ChangeLog,v
retrieving revision 1.56
diff -c -3 -p -r1.56 ChangeLog
*** ChangeLog 2000/06/03 01:52:32 1.56
--- ChangeLog 2000/06/06 09:32:06
***************
*** 1,3 ****
--- 1,7 ----
+ 2000-06-06 Thomas Holenstein <thomas@hex.ch>
+
+ * bits/stl_iterator.h: Added inline to operators == to >=.
+
2000-06-02 Benjamin Kosnik <bkoz@purist.soma.redhat.com>
* bits/locale_facets.h: Tweak.
Index: libstdc++-v3/bits/stl_iterator.h
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/bits/stl_iterator.h,v
retrieving revision 1.2
diff -c -3 -p -r1.2 stl_iterator.h
*** stl_iterator.h 2000/04/25 06:39:48 1.2
--- stl_iterator.h 2000/06/06 09:32:07
*************** public:
*** 1043,1077 ****
// forward iterator requirements
template<typename _IteratorL, typename _IteratorR, typename _Container>
! bool operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return __lhs.base() == __rhs.base(); }
template<typename _IteratorL, typename _IteratorR, typename _Container>
! bool operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return !(__lhs == __rhs); }
// random access iterator requirements
template<typename _IteratorL, typename _IteratorR, typename _Container>
! bool operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return __lhs.base() < __rhs.base(); }
template<typename _IteratorL, typename _IteratorR, typename _Container>
! bool operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return __rhs < __lhs; }
template<typename _IteratorL, typename _IteratorR, typename _Container>
! bool operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return !(__rhs < __lhs); }
template<typename _IteratorL, typename _IteratorR, typename _Container>
! bool operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return !(__lhs < __rhs); }
template<typename _Iterator, typename _Container>
--- 1043,1083 ----
// forward iterator requirements
template<typename _IteratorL, typename _IteratorR, typename _Container>
! inline bool
! operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return __lhs.base() == __rhs.base(); }
template<typename _IteratorL, typename _IteratorR, typename _Container>
! inline bool
! operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return !(__lhs == __rhs); }
// random access iterator requirements
template<typename _IteratorL, typename _IteratorR, typename _Container>
! inline bool
! operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return __lhs.base() < __rhs.base(); }
template<typename _IteratorL, typename _IteratorR, typename _Container>
! inline bool
! operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return __rhs < __lhs; }
template<typename _IteratorL, typename _IteratorR, typename _Container>
! inline bool
! operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return !(__rhs < __lhs); }
template<typename _IteratorL, typename _IteratorR, typename _Container>
! inline bool
! operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
! const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return !(__lhs < __rhs); }
template<typename _Iterator, typename _Container>