]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h
Merge ^/head r306906 through r307382.
[FreeBSD/FreeBSD.git] / contrib / llvm / include / llvm / DebugInfo / PDB / Raw / DbiStreamBuilder.h
1 //===- DbiStreamBuilder.h - PDB Dbi Stream Creation -------------*- 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 #ifndef LLVM_DEBUGINFO_PDB_RAW_PDBDBISTREAMBUILDER_H
11 #define LLVM_DEBUGINFO_PDB_RAW_PDBDBISTREAMBUILDER_H
12
13 #include "llvm/ADT/Optional.h"
14 #include "llvm/Support/Error.h"
15
16 #include "llvm/DebugInfo/PDB/PDBTypes.h"
17 #include "llvm/DebugInfo/PDB/Raw/PDBFile.h"
18 #include "llvm/DebugInfo/PDB/Raw/RawConstants.h"
19
20 namespace llvm {
21 namespace pdb {
22 class DbiStream;
23 class PDBFile;
24
25 class DbiStreamBuilder {
26 public:
27   DbiStreamBuilder();
28
29   DbiStreamBuilder(const DbiStreamBuilder &) = delete;
30   DbiStreamBuilder &operator=(const DbiStreamBuilder &) = delete;
31
32   void setVersionHeader(PdbRaw_DbiVer V);
33   void setAge(uint32_t A);
34   void setBuildNumber(uint16_t B);
35   void setPdbDllVersion(uint16_t V);
36   void setPdbDllRbld(uint16_t R);
37   void setFlags(uint16_t F);
38   void setMachineType(PDB_Machine M);
39
40   uint32_t calculateSerializedLength() const;
41
42   Expected<std::unique_ptr<DbiStream>> build(PDBFile &File);
43
44 private:
45   Optional<PdbRaw_DbiVer> VerHeader;
46   uint32_t Age;
47   uint16_t BuildNumber;
48   uint16_t PdbDllVersion;
49   uint16_t PdbDllRbld;
50   uint16_t Flags;
51   PDB_Machine MachineType;
52 };
53 }
54 }
55
56 #endif