fc4669de1ba10591c9a4ad8ae45a5d3f426c9c35
[oota-llvm.git] / include / llvm / Object / ArchiveWriter.h
1 //===- ArchiveWriter.h - ar archive file format writer ----------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // Declares the writeArchive function for writing an archive file.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef LLVM_OBJECT_ARCHIVEWRITER_H
15 #define LLVM_OBJECT_ARCHIVEWRITER_H
16
17 #include "llvm/ADT/StringRef.h"
18 #include "llvm/Object/Archive.h"
19 #include "llvm/Support/FileSystem.h"
20
21 namespace llvm {
22
23 class NewArchiveIterator {
24   bool IsNewMember;
25   StringRef Name;
26
27   object::Archive::child_iterator OldI;
28
29 public:
30   NewArchiveIterator(object::Archive::child_iterator I, StringRef Name);
31   NewArchiveIterator(StringRef FileName);
32   bool isNewMember() const;
33   StringRef getName() const;
34
35   object::Archive::child_iterator getOld() const;
36
37   StringRef getNew() const;
38   llvm::ErrorOr<int> getFD(sys::fs::file_status &NewStatus) const;
39   const sys::fs::file_status &getStatus() const;
40 };
41
42 std::pair<StringRef, std::error_code>
43 writeArchive(StringRef ArcName, std::vector<NewArchiveIterator> &NewMembers,
44              bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic,
45              bool Thin);
46 }
47
48 #endif