aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2010-11-28 07:21:48 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2010-11-28 07:21:48 +0000
commit9a08ca318e63912e4c19977abc1173f30866b704 (patch)
treecb79c780102d035f01268d14331491603e0a4643
parent180e1247ca330b047eabafbc72926ce9bfd8bf8e (diff)
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
-rw-r--r--include/llvm/ADT/IntervalMap.h6
-rw-r--r--unittests/ADT/IntervalMapTest.cpp8
2 files changed, 14 insertions, 0 deletions
diff --git a/include/llvm/ADT/IntervalMap.h b/include/llvm/ADT/IntervalMap.h
index bf8dee6f3a..2bd885cf8a 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<KeyT, ValT, N, Traits>::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 f4b1ebc8d3..6b8e761ae7 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