summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2013-01-31 23:53:05 +0000
committerBill Wendling <isanbard@gmail.com>2013-01-31 23:53:05 +0000
commit16c4b3cf2943ae2327752cf3de39769d14cfcece (patch)
tree1bbb475c858240f8c52496ba3ad2bb19f82428c3
parentac08785edaac826afe11a4e596a46fc693848848 (diff)
downloadexternal_llvm-16c4b3cf2943ae2327752cf3de39769d14cfcece.zip
external_llvm-16c4b3cf2943ae2327752cf3de39769d14cfcece.tar.gz
external_llvm-16c4b3cf2943ae2327752cf3de39769d14cfcece.tar.bz2
Add iterators to the AttributeSet class so that we can access the Attributes in a nice way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174120 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/IR/Attributes.h5
-rw-r--r--lib/IR/Attributes.cpp12
2 files changed, 17 insertions, 0 deletions
diff --git a/include/llvm/IR/Attributes.h b/include/llvm/IR/Attributes.h
index 508277c..49ef884 100644
--- a/include/llvm/IR/Attributes.h
+++ b/include/llvm/IR/Attributes.h
@@ -270,6 +270,11 @@ public:
/// \brief Return the attributes at the index as a string.
std::string getAsString(unsigned Index) const;
+ typedef ArrayRef<Attribute>::iterator iterator;
+
+ iterator begin(unsigned Idx);
+ iterator end(unsigned Idx);
+
/// operator==/!= - Provide equality predicates.
bool operator==(const AttributeSet &RHS) const {
return pImpl == RHS.pImpl;
diff --git a/lib/IR/Attributes.cpp b/lib/IR/Attributes.cpp
index 14aba08..9d5f53b 100644
--- a/lib/IR/Attributes.cpp
+++ b/lib/IR/Attributes.cpp
@@ -740,6 +740,18 @@ AttributeSetNode *AttributeSet::getAttributes(unsigned Idx) const {
return 0;
}
+AttributeSet::iterator AttributeSet::begin(unsigned Idx) {
+ if (!pImpl)
+ return ArrayRef<Attribute>().begin();
+ return pImpl->begin(Idx);
+}
+
+AttributeSet::iterator AttributeSet::end(unsigned Idx) {
+ if (!pImpl)
+ return ArrayRef<Attribute>().end();
+ return pImpl->begin(Idx);
+}
+
//===----------------------------------------------------------------------===//
// AttributeSet Introspection Methods
//===----------------------------------------------------------------------===//