Skip to content

Commit eac48b6

Browse files
committed
Object: Add range iterators for Archive children
No functional change intended. llvm-svn: 218471
1 parent f3a3fc5 commit eac48b6

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

llvm/include/llvm/Object/Archive.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#ifndef LLVM_OBJECT_ARCHIVE_H
1515
#define LLVM_OBJECT_ARCHIVE_H
1616

17+
#include "llvm/ADT/iterator_range.h"
1718
#include "llvm/ADT/StringRef.h"
1819
#include "llvm/Object/Binary.h"
1920
#include "llvm/Support/ErrorHandling.h"
@@ -97,12 +98,12 @@ class Archive : public Binary {
9798

9899
class child_iterator {
99100
Child child;
101+
100102
public:
101103
child_iterator() : child(Child(nullptr, nullptr)) {}
102104
child_iterator(const Child &c) : child(c) {}
103-
const Child* operator->() const {
104-
return &child;
105-
}
105+
const Child *operator->() const { return &child; }
106+
const Child &operator*() const { return child; }
106107

107108
bool operator==(const child_iterator &other) const {
108109
return child == other.child;
@@ -112,11 +113,11 @@ class Archive : public Binary {
112113
return !(*this == other);
113114
}
114115

115-
bool operator <(const child_iterator &other) const {
116+
bool operator<(const child_iterator &other) const {
116117
return child < other.child;
117118
}
118119

119-
child_iterator& operator++() { // Preincrement
120+
child_iterator &operator++() { // Preincrement
120121
child = child.getNext();
121122
return *this;
122123
}
@@ -178,6 +179,10 @@ class Archive : public Binary {
178179

179180
child_iterator child_begin(bool SkipInternal = true) const;
180181
child_iterator child_end() const;
182+
iterator_range<child_iterator> children(bool SkipInternal = true) const {
183+
return iterator_range<child_iterator>(child_begin(SkipInternal),
184+
child_end());
185+
}
181186

182187
symbol_iterator symbol_begin() const;
183188
symbol_iterator symbol_end() const;

llvm/tools/llvm-vtabledump/llvm-vtabledump.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,8 @@ static void dumpVTables(const ObjectFile *Obj) {
137137
}
138138

139139
static void dumpArchive(const Archive *Arc) {
140-
for (Archive::child_iterator ArcI = Arc->child_begin(),
141-
ArcE = Arc->child_end();
142-
ArcI != ArcE; ++ArcI) {
143-
ErrorOr<std::unique_ptr<Binary>> ChildOrErr = ArcI->getAsBinary();
140+
for (const Archive::Child &ArcC : Arc->children()) {
141+
ErrorOr<std::unique_ptr<Binary>> ChildOrErr = ArcC.getAsBinary();
144142
if (std::error_code EC = ChildOrErr.getError()) {
145143
// Ignore non-object files.
146144
if (EC != object_error::invalid_file_type)

0 commit comments

Comments
 (0)