Add a symbols() range and use a range loop.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 18 Jun 2014 21:14:57 +0000 (21:14 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 18 Jun 2014 21:14:57 +0000 (21:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211222 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/SymbolicFile.h
tools/llvm-ar/llvm-ar.cpp

index 1133736945562ed6c230080271e7250a78163452..40015ec9f6dbe80fad159b20ba1c28e598fcc6e4 100644 (file)
@@ -136,6 +136,10 @@ public:
   basic_symbol_iterator symbol_end() const {
     return symbol_end_impl();
   }
+  typedef iterator_range<basic_symbol_iterator> basic_symbol_iterator_range;
+  basic_symbol_iterator_range symbols() const {
+    return basic_symbol_iterator_range(symbol_begin(), symbol_end());
+  }
 
   // construction aux.
   static ErrorOr<SymbolicFile *> createIRObjectFile(MemoryBuffer *Object,
index 920a4701b2731a8347f59e889df4282540dcf0f9..80a977c30bc87349e77448743126c7495beded8a 100644 (file)
@@ -710,17 +710,15 @@ static void writeSymbolTable(
       print32BE(Out, 0);
     }
 
-    for (object::basic_symbol_iterator I = Obj->symbol_begin(),
-                                       E = Obj->symbol_end();
-         I != E; ++I) {
-      uint32_t Symflags = I->getFlags();
+    for (const object::BasicSymbolRef &S : Obj->symbols()) {
+      uint32_t Symflags = S.getFlags();
       if (Symflags & object::SymbolRef::SF_FormatSpecific)
         continue;
       if (!(Symflags & object::SymbolRef::SF_Global))
         continue;
       if (Symflags & object::SymbolRef::SF_Undefined)
         continue;
-      failIfError(I->printName(NameOS));
+      failIfError(S.printName(NameOS));
       NameOS << '\0';
       ++NumSyms;
       MemberOffsetRefs.push_back(std::make_pair(Out.tell(), MemberNum));