Object: Add range iterators to Archive symbols
authorRui Ueyama <ruiu@google.com>
Wed, 4 Mar 2015 02:05:06 +0000 (02:05 +0000)
committerRui Ueyama <ruiu@google.com>
Wed, 4 Mar 2015 02:05:06 +0000 (02:05 +0000)
Also define operator* for symbol iterator just like Archive children iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231203 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/Archive.h

index 4f8e28172c8d7edb67b000c5603d7238bfc9e12d..d40dc9db9f5bfb5795efeb64ef70ece6443eefe0 100644 (file)
@@ -155,9 +155,8 @@ public:
     Symbol symbol;
   public:
     symbol_iterator(const Symbol &s) : symbol(s) {}
-    const Symbol *operator->() const {
-      return &symbol;
-    }
+    const Symbol *operator->() const { return &symbol; }
+    const Symbol &operator*() const { return symbol; }
 
     bool operator==(const symbol_iterator &other) const {
       return symbol == other.symbol;
@@ -194,6 +193,9 @@ public:
 
   symbol_iterator symbol_begin() const;
   symbol_iterator symbol_end() const;
+  iterator_range<symbol_iterator> symbols() const {
+    return iterator_range<symbol_iterator>(symbol_begin(), symbol_end());
+  }
 
   // Cast methods.
   static inline bool classof(Binary const *v) {