Convert the Archive API to use ErrorOr.

Now that we have c++11, even things like ErrorOr<std::unique_ptr<...>> are
easy to use.

No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211033 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2014-06-16 16:08:36 +00:00
parent d492c19894
commit 0659928fec
8 changed files with 93 additions and 98 deletions

View File

@ -369,8 +369,9 @@ static void performReadOperation(ArchiveOperation Operation,
for (object::Archive::child_iterator I = OldArchive->child_begin(),
E = OldArchive->child_end();
I != E; ++I) {
StringRef Name;
failIfError(I->getName(Name));
ErrorOr<StringRef> NameOrErr = I->getName();
failIfError(NameOrErr.getError());
StringRef Name = NameOrErr.get();
if (!Members.empty() &&
std::find(Members.begin(), Members.end(), Name) == Members.end())
@ -544,8 +545,9 @@ computeNewArchiveMembers(ArchiveOperation Operation,
E = OldArchive->child_end();
I != E; ++I) {
int Pos = Ret.size();
StringRef Name;
failIfError(I->getName(Name));
ErrorOr<StringRef> NameOrErr = I->getName();
failIfError(NameOrErr.getError());
StringRef Name = NameOrErr.get();
if (Name == PosName) {
assert(AddAfter || AddBefore);
if (AddBefore)
@ -783,7 +785,10 @@ static void performWriteOperation(ArchiveOperation Operation,
} else {
object::Archive::child_iterator OldMember = Member.getOld();
failIfError(OldMember->getMemoryBuffer(MemberBuffer));
ErrorOr<std::unique_ptr<MemoryBuffer>> MemberBufferOrErr =
OldMember->getMemoryBuffer();
failIfError(MemberBufferOrErr.getError());
MemberBuffer = std::move(MemberBufferOrErr.get());
}
MemberBuffers[I] = MemberBuffer.release();
}