diff options
Diffstat (limited to 'include/llvm/Object/ArchiveWriter.h')
-rw-r--r-- | include/llvm/Object/ArchiveWriter.h | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/include/llvm/Object/ArchiveWriter.h b/include/llvm/Object/ArchiveWriter.h index b5d2ba3580809..55b58fac4f66b 100644 --- a/include/llvm/Object/ArchiveWriter.h +++ b/include/llvm/Object/ArchiveWriter.h @@ -20,29 +20,36 @@ namespace llvm { -class NewArchiveIterator { - bool IsNewMember; - StringRef Name; - - object::Archive::Child OldMember; - -public: - NewArchiveIterator(const object::Archive::Child &OldMember, StringRef Name); - NewArchiveIterator(StringRef FileName); - bool isNewMember() const; - StringRef getName() const; - - const object::Archive::Child &getOld() const; - - StringRef getNew() const; - llvm::ErrorOr<int> getFD(sys::fs::file_status &NewStatus) const; - const sys::fs::file_status &getStatus() const; +struct NewArchiveMember { + std::unique_ptr<MemoryBuffer> Buf; + sys::TimeValue ModTime = sys::TimeValue::PosixZeroTime(); + unsigned UID = 0, GID = 0, Perms = 0644; + + NewArchiveMember() = default; + NewArchiveMember(NewArchiveMember &&Other) + : Buf(std::move(Other.Buf)), ModTime(Other.ModTime), UID(Other.UID), + GID(Other.GID), Perms(Other.Perms) {} + NewArchiveMember &operator=(NewArchiveMember &&Other) { + Buf = std::move(Other.Buf); + ModTime = Other.ModTime; + UID = Other.UID; + GID = Other.GID; + Perms = Other.Perms; + return *this; + } + NewArchiveMember(MemoryBufferRef BufRef); + + static Expected<NewArchiveMember> + getOldMember(const object::Archive::Child &OldMember, bool Deterministic); + + static Expected<NewArchiveMember> getFile(StringRef FileName, + bool Deterministic); }; std::pair<StringRef, std::error_code> -writeArchive(StringRef ArcName, std::vector<NewArchiveIterator> &NewMembers, +writeArchive(StringRef ArcName, std::vector<NewArchiveMember> &NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, - bool Thin); + bool Thin, std::unique_ptr<MemoryBuffer> OldArchiveBuf = nullptr); } #endif |