IR: Add accessors to MDExpression

Add some accessors to `MDExpression`.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228648 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith 2015-02-10 01:36:46 +00:00
parent aee15e8513
commit db7dea0e2e
2 changed files with 13 additions and 0 deletions

View File

@ -1410,6 +1410,12 @@ public:
ArrayRef<uint64_t> getElements() const { return Elements; }
unsigned getNumElements() const { return Elements.size(); }
uint64_t getElement(unsigned I) const {
assert(I < Elements.size() && "Index out of range");
return Elements[I];
}
typedef ArrayRef<uint64_t>::iterator element_iterator;
element_iterator elements_begin() const { return getElements().begin(); }
element_iterator elements_end() const { return getElements().end(); }

View File

@ -1389,6 +1389,13 @@ TEST_F(MDExpressionTest, get) {
auto *N = MDExpression::get(Context, Elements);
EXPECT_EQ(makeArrayRef(Elements), N->getElements());
EXPECT_EQ(N, MDExpression::get(Context, Elements));
EXPECT_EQ(5u, N->getNumElements());
EXPECT_EQ(2u, N->getElement(0));
EXPECT_EQ(6u, N->getElement(1));
EXPECT_EQ(9u, N->getElement(2));
EXPECT_EQ(78u, N->getElement(3));
EXPECT_EQ(0u, N->getElement(4));
}
typedef MetadataTest MDObjCPropertyTest;