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(PDBFile &File);
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   Expected<std::unique_ptr<DbiStream>> build();
41 
42 private:
43   PDBFile &File;
44   Optional<PdbRaw_DbiVer> VerHeader;
45   uint32_t Age;
46   uint16_t BuildNumber;
47   uint16_t PdbDllVersion;
48   uint16_t PdbDllRbld;
49   uint16_t Flags;
50   PDB_Machine MachineType;
51 };
52 }
53 }
54 
55 #endif
56