14
14
#ifndef LLVM_OBJECT_ARCHIVE_H
15
15
#define LLVM_OBJECT_ARCHIVE_H
16
16
17
+ #include " llvm/ADT/iterator_range.h"
17
18
#include " llvm/ADT/StringRef.h"
18
19
#include " llvm/Object/Binary.h"
19
20
#include " llvm/Support/ErrorHandling.h"
@@ -97,12 +98,12 @@ class Archive : public Binary {
97
98
98
99
class child_iterator {
99
100
Child child;
101
+
100
102
public:
101
103
child_iterator () : child(Child(nullptr , nullptr )) {}
102
104
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; }
106
107
107
108
bool operator ==(const child_iterator &other) const {
108
109
return child == other.child ;
@@ -112,11 +113,11 @@ class Archive : public Binary {
112
113
return !(*this == other);
113
114
}
114
115
115
- bool operator <(const child_iterator &other) const {
116
+ bool operator <(const child_iterator &other) const {
116
117
return child < other.child ;
117
118
}
118
119
119
- child_iterator& operator ++() { // Preincrement
120
+ child_iterator & operator ++() { // Preincrement
120
121
child = child.getNext ();
121
122
return *this ;
122
123
}
@@ -178,6 +179,10 @@ class Archive : public Binary {
178
179
179
180
child_iterator child_begin (bool SkipInternal = true ) const ;
180
181
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
+ }
181
186
182
187
symbol_iterator symbol_begin () const ;
183
188
symbol_iterator symbol_end () const ;
0 commit comments