From 9a08ca318e63912e4c19977abc1173f30866b704 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Sun, 28 Nov 2010 07:21:48 +0000 Subject: [PATCH] Add default constructors for iterators. These iterators don't point anywhere, and they can't be compared to anything. They are only good for assigning to. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120239 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/IntervalMap.h | 6 ++++++ unittests/ADT/IntervalMapTest.cpp | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/include/llvm/ADT/IntervalMap.h b/include/llvm/ADT/IntervalMap.h index bf8dee6f3ae..2bd885cf8a7 100644 --- a/include/llvm/ADT/IntervalMap.h +++ b/include/llvm/ADT/IntervalMap.h @@ -1397,6 +1397,9 @@ protected: void treeAdvanceTo(KeyT x); public: + /// const_iterator - Create an iterator that isn't pointing anywhere. + const_iterator() : map(0) {} + /// valid - Return true if the current position is valid, false for end(). bool valid() const { return path.valid(); } @@ -1583,6 +1586,9 @@ class IntervalMap::iterator : public const_iterator { void eraseNode(unsigned Level); void treeErase(bool UpdateRoot = true); public: + /// iterator - Create null iterator. + iterator() {} + /// insert - Insert mapping [a;b] -> y before the current position. void insert(KeyT a, KeyT b, ValT y); diff --git a/unittests/ADT/IntervalMapTest.cpp b/unittests/ADT/IntervalMapTest.cpp index f4b1ebc8d3a..6b8e761ae70 100644 --- a/unittests/ADT/IntervalMapTest.cpp +++ b/unittests/ADT/IntervalMapTest.cpp @@ -41,6 +41,14 @@ TEST(IntervalMapTest, EmptyMap) { UUMap::iterator I = map.begin(); EXPECT_FALSE(I.valid()); EXPECT_TRUE(I == map.end()); + + // Default constructor and cross-constness compares. + UUMap::const_iterator CI; + CI = map.begin(); + EXPECT_TRUE(CI == I); + UUMap::iterator I2; + I2 = map.end(); + EXPECT_TRUE(I2 == CI); } // Single entry map tests