From 3d4227bec59358199c7d53fad8f03fd075723fcf Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Thu, 16 Oct 2008 00:12:39 +0000 Subject: [PATCH] Fix several places that called mapped_iterator's constructor without passing in a function object. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57615 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/STLExtras.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/include/llvm/ADT/STLExtras.h b/include/llvm/ADT/STLExtras.h index 5c5e4aa9444..e009939cec1 100644 --- a/include/llvm/ADT/STLExtras.h +++ b/include/llvm/ADT/STLExtras.h @@ -73,6 +73,7 @@ public: typedef mapped_iterator _Self; inline const RootIt &getCurrent() const { return current; } + inline const UnaryFunc &getFunc() const { return Fn; } inline explicit mapped_iterator(const RootIt &I, UnaryFunc F) : current(I), Fn(F) {} @@ -87,9 +88,13 @@ public: _Self& operator--() { --current; return *this; } _Self operator++(int) { _Self __tmp = *this; ++current; return __tmp; } _Self operator--(int) { _Self __tmp = *this; --current; return __tmp; } - _Self operator+ (difference_type n) const { return _Self(current + n); } + _Self operator+ (difference_type n) const { + return _Self(current + n, Fn); + } _Self& operator+= (difference_type n) { current += n; return *this; } - _Self operator- (difference_type n) const { return _Self(current - n); } + _Self operator- (difference_type n) const { + return _Self(current - n, Fn); + } _Self& operator-= (difference_type n) { current -= n; return *this; } reference operator[](difference_type n) const { return *(*this + n); } @@ -106,7 +111,7 @@ template inline mapped_iterator<_Iterator, Func> operator+(typename mapped_iterator<_Iterator, Func>::difference_type N, const mapped_iterator<_Iterator, Func>& X) { - return mapped_iterator<_Iterator, Func>(X.getCurrent() - N); + return mapped_iterator<_Iterator, Func>(X.getCurrent() - N, X.getFunc()); }