1 //===- NativeSourceFile.h - Native source file implementation ---*- 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 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVESOURCEFILE_H
10 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVESOURCEFILE_H
11 
12 #include "llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h"
13 #include "llvm/DebugInfo/PDB/IPDBSourceFile.h"
14 #include "llvm/DebugInfo/PDB/PDBTypes.h"
15 
16 namespace llvm {
17 namespace pdb {
18 class PDBSymbolCompiland;
19 template <typename ChildType> class IPDBEnumChildren;
20 class NativeSession;
21 
22 class NativeSourceFile : public IPDBSourceFile {
23 public:
24   explicit NativeSourceFile(NativeSession &Session, uint32_t FileId,
25                             const codeview::FileChecksumEntry &Checksum);
26 
27   std::string getFileName() const override;
28   uint32_t getUniqueId() const override;
29   std::string getChecksum() const override;
30   PDB_Checksum getChecksumType() const override;
31   std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
32   getCompilands() const override;
33 
34 private:
35   NativeSession &Session;
36   uint32_t FileId;
37   const codeview::FileChecksumEntry Checksum;
38 };
39 } // namespace pdb
40 } // namespace llvm
41 #endif
42