summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2016-11-02 00:59:58 +0000
committerMichael Gottesman <mgottesman@apple.com>2016-11-02 00:59:58 +0000
commitb4a9bd83de7e7268bc64da5e1be54aa490e3610c (patch)
tree7273b1e138fd10012d696782f0fd65ea0ccd3c77
parenta0fe8a324e3794fa9e2a7c4a707dfe1cfdd4a39e (diff)
downloadbcm5719-llvm-b4a9bd83de7e7268bc64da5e1be54aa490e3610c.tar.gz
bcm5719-llvm-b4a9bd83de7e7268bc64da5e1be54aa490e3610c.zip
[ilist_node] Add a getReverseIterator() method and a unittest for it.
This is the reverse_iterator analogue of getIterator(). llvm-svn: 285780
-rw-r--r--llvm/include/llvm/ADT/ilist_node.h6
-rw-r--r--llvm/unittests/ADT/SimpleIListTest.cpp17
2 files changed, 23 insertions, 0 deletions
diff --git a/llvm/include/llvm/ADT/ilist_node.h b/llvm/include/llvm/ADT/ilist_node.h
index 84208b0841b..7244d0f4058 100644
--- a/llvm/include/llvm/ADT/ilist_node.h
+++ b/llvm/include/llvm/ADT/ilist_node.h
@@ -80,6 +80,12 @@ private:
public:
self_iterator getIterator() { return self_iterator(*this); }
const_self_iterator getIterator() const { return const_self_iterator(*this); }
+ reverse_self_iterator getReverseIterator() {
+ return reverse_self_iterator(*this);
+ }
+ const_reverse_self_iterator getReverseIterator() const {
+ return const_reverse_self_iterator(*this);
+ }
// Under-approximation, but always available for assertions.
using node_base_type::isKnownSentinel;
diff --git a/llvm/unittests/ADT/SimpleIListTest.cpp b/llvm/unittests/ADT/SimpleIListTest.cpp
index 5a3834822d6..a354f332006 100644
--- a/llvm/unittests/ADT/SimpleIListTest.cpp
+++ b/llvm/unittests/ADT/SimpleIListTest.cpp
@@ -178,6 +178,23 @@ TEST(SimpleIListTest, erase) {
EXPECT_EQ(2u, L.size());
}
+TEST(SimpleIListTest, reverse_iterator) {
+ simple_ilist<Node> L;
+ Node A, B, C;
+ L.push_back(A);
+ L.push_back(B);
+ L.push_back(C);
+
+ auto ReverseIter = L.rbegin();
+ EXPECT_EQ(C.getReverseIterator(), ReverseIter);
+ ++ReverseIter;
+ EXPECT_EQ(B.getReverseIterator(), ReverseIter);
+ ++ReverseIter;
+ EXPECT_EQ(A.getReverseIterator(), ReverseIter);
+ ++ReverseIter;
+ EXPECT_EQ(L.rend(), ReverseIter);
+}
+
TEST(SimpleIListTest, eraseAndDispose) {
simple_ilist<Node> L;
Node A, C;
OpenPOWER on IntegriCloud