aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Object/MachOUniversal.h
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2014-11-24 09:08:18 +0000
committerDimitry Andric <dim@FreeBSD.org>2014-11-24 09:08:18 +0000
commit5ca98fd98791947eba83a1ed3f2c8191ef7afa6c (patch)
treef5944309621cee4fe0976be6f9ac619b7ebfc4c2 /include/llvm/Object/MachOUniversal.h
parent68bcb7db193e4bc81430063148253d30a791023e (diff)
Diffstat (limited to 'include/llvm/Object/MachOUniversal.h')
-rw-r--r--include/llvm/Object/MachOUniversal.h25
1 files changed, 18 insertions, 7 deletions
diff --git a/include/llvm/Object/MachOUniversal.h b/include/llvm/Object/MachOUniversal.h
index c5d1359256b0..e6677f5bf28b 100644
--- a/include/llvm/Object/MachOUniversal.h
+++ b/include/llvm/Object/MachOUniversal.h
@@ -14,10 +14,12 @@
#ifndef LLVM_OBJECT_MACHOUNIVERSAL_H
#define LLVM_OBJECT_MACHOUNIVERSAL_H
-#include "llvm/ADT/OwningPtr.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Triple.h"
#include "llvm/Object/Binary.h"
+#include "llvm/Object/Archive.h"
+#include "llvm/Object/MachO.h"
+#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/MachO.h"
namespace llvm {
@@ -41,7 +43,7 @@ public:
ObjectForArch(const MachOUniversalBinary *Parent, uint32_t Index);
void clear() {
- Parent = 0;
+ Parent = nullptr;
Index = 0;
}
@@ -51,8 +53,14 @@ public:
ObjectForArch getNext() const { return ObjectForArch(Parent, Index + 1); }
uint32_t getCPUType() const { return Header.cputype; }
+ std::string getArchTypeName() const {
+ Triple T = MachOObjectFile::getArch(Header.cputype, Header.cpusubtype);
+ return T.getArchName();
+ }
+
+ ErrorOr<std::unique_ptr<ObjectFile>> getAsObjectFile() const;
- error_code getAsObjectFile(OwningPtr<ObjectFile> &Result) const;
+ std::error_code getAsArchive(std::unique_ptr<Archive> &Result) const;
};
class object_iterator {
@@ -76,13 +84,16 @@ public:
}
};
- MachOUniversalBinary(MemoryBuffer *Source, error_code &ec);
+ MachOUniversalBinary(std::unique_ptr<MemoryBuffer> Source,
+ std::error_code &ec);
+ static ErrorOr<MachOUniversalBinary *>
+ create(std::unique_ptr<MemoryBuffer> Source);
object_iterator begin_objects() const {
return ObjectForArch(this, 0);
}
object_iterator end_objects() const {
- return ObjectForArch(0, 0);
+ return ObjectForArch(nullptr, 0);
}
uint32_t getNumberOfObjects() const { return NumberOfObjects; }
@@ -92,8 +103,8 @@ public:
return V->isMachOUniversalBinary();
}
- error_code getObjectForArch(Triple::ArchType Arch,
- OwningPtr<ObjectFile> &Result) const;
+ ErrorOr<std::unique_ptr<ObjectFile>>
+ getObjectForArch(Triple::ArchType Arch) const;
};
}