diff --git a/llvm/include/llvm/Object/Archive.h b/llvm/include/llvm/Object/Archive.h index c6b6ed087e87..4f081206c5bc 100644 --- a/llvm/include/llvm/Object/Archive.h +++ b/llvm/include/llvm/Object/Archive.h @@ -24,11 +24,11 @@ namespace object { class Archive : public Binary { public: class Child { - Archive *Parent; + const Archive *Parent; StringRef Data; public: - Child(Archive *p, StringRef d) : Parent(p), Data(d) {} + Child(const Archive *p, StringRef d) : Parent(p), Data(d) {} bool operator ==(const Child &other) const { return (Parent == other.Parent) && (Data.begin() == other.Data.begin()); @@ -71,8 +71,8 @@ public: Archive(MemoryBuffer *source, error_code &ec); - child_iterator begin_children(); - child_iterator end_children(); + child_iterator begin_children() const; + child_iterator end_children() const; // Cast methods. static inline bool classof(Archive const *v) { return true; } diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp index 80343e3200e9..aeb629b7f23f 100644 --- a/llvm/lib/Object/Archive.cpp +++ b/llvm/lib/Object/Archive.cpp @@ -156,14 +156,14 @@ Archive::Archive(MemoryBuffer *source, error_code &ec) ec = object_error::success; } -Archive::child_iterator Archive::begin_children() { +Archive::child_iterator Archive::begin_children() const { const char *Loc = Data->getBufferStart() + Magic.size(); size_t Size = sizeof(ArchiveMemberHeader) + ToHeader(Loc)->getSize(); return Child(this, StringRef(Loc, Size)); } -Archive::child_iterator Archive::end_children() { +Archive::child_iterator Archive::end_children() const { return Child(this, StringRef(0, 0)); }