Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===- ArchiveWriter.h - ar archive file format writer ----------*- C++ -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. //
  9. // Declares the writeArchive function for writing an archive file.
  10. //
  11. //===----------------------------------------------------------------------===//
  12.  
  13. #ifndef LLVM_OBJECT_ARCHIVEWRITER_H
  14. #define LLVM_OBJECT_ARCHIVEWRITER_H
  15.  
  16. #include "llvm/Object/Archive.h"
  17.  
  18. namespace llvm {
  19.  
  20. struct NewArchiveMember {
  21.   std::unique_ptr<MemoryBuffer> Buf;
  22.   StringRef MemberName;
  23.   sys::TimePoint<std::chrono::seconds> ModTime;
  24.   unsigned UID = 0, GID = 0, Perms = 0644;
  25.  
  26.   NewArchiveMember() = default;
  27.   NewArchiveMember(MemoryBufferRef BufRef);
  28.  
  29.   // Detect the archive format from the object or bitcode file. This helps
  30.   // assume the archive format when creating or editing archives in the case
  31.   // one isn't explicitly set.
  32.   object::Archive::Kind detectKindFromObject() const;
  33.  
  34.   static Expected<NewArchiveMember>
  35.   getOldMember(const object::Archive::Child &OldMember, bool Deterministic);
  36.  
  37.   static Expected<NewArchiveMember> getFile(StringRef FileName,
  38.                                             bool Deterministic);
  39. };
  40.  
  41. Expected<std::string> computeArchiveRelativePath(StringRef From, StringRef To);
  42.  
  43. Error writeArchive(StringRef ArcName, ArrayRef<NewArchiveMember> NewMembers,
  44.                    bool WriteSymtab, object::Archive::Kind Kind,
  45.                    bool Deterministic, bool Thin,
  46.                    std::unique_ptr<MemoryBuffer> OldArchiveBuf = nullptr);
  47.  
  48. // writeArchiveToBuffer is similar to writeArchive but returns the Archive in a
  49. // buffer instead of writing it out to a file.
  50. Expected<std::unique_ptr<MemoryBuffer>>
  51. writeArchiveToBuffer(ArrayRef<NewArchiveMember> NewMembers, bool WriteSymtab,
  52.                      object::Archive::Kind Kind, bool Deterministic, bool Thin);
  53. }
  54.  
  55. #endif
  56.