Add iterators to the AttributeSet class so that we can access the Attributes in a...
authorBill Wendling <isanbard@gmail.com>
Thu, 31 Jan 2013 23:53:05 +0000 (23:53 +0000)
committerBill Wendling <isanbard@gmail.com>
Thu, 31 Jan 2013 23:53:05 +0000 (23:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174120 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/Attributes.h
lib/IR/Attributes.cpp

index 508277c1306d0d1720d17c5162a7102bc52fa755..49ef884b702f7eb498997c5508c6b9a4dfde6efa 100644 (file)
@@ -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;
index 14aba080abee235c103ceb5ccc41ee436672e712..9d5f53bfdcd69b2c15f9ee16dc607b239719b280 100644 (file)
@@ -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
 //===----------------------------------------------------------------------===//