1cf16437eSNico Weber //===- NativeSourceFile.cpp - Native line number implementation -*- C++ -*-===//
2f8170d87SAmy Huang //
3f8170d87SAmy Huang // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4f8170d87SAmy Huang // See https://llvm.org/LICENSE.txt for license information.
5f8170d87SAmy Huang // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6f8170d87SAmy Huang //
7f8170d87SAmy Huang //===----------------------------------------------------------------------===//
8f8170d87SAmy Huang 
9f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeSourceFile.h"
10f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeSession.h"
11*eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/PDBFile.h"
12*eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/PDBStringTable.h"
13f8170d87SAmy Huang 
14f8170d87SAmy Huang using namespace llvm;
15f8170d87SAmy Huang using namespace llvm::pdb;
16f8170d87SAmy Huang 
NativeSourceFile(NativeSession & Session,uint32_t FileId,const codeview::FileChecksumEntry & Checksum)17f8170d87SAmy Huang NativeSourceFile::NativeSourceFile(NativeSession &Session, uint32_t FileId,
18f8170d87SAmy Huang                                    const codeview::FileChecksumEntry &Checksum)
19f8170d87SAmy Huang     : Session(Session), FileId(FileId), Checksum(Checksum) {}
20f8170d87SAmy Huang 
getFileName() const21f8170d87SAmy Huang std::string NativeSourceFile::getFileName() const {
22f8170d87SAmy Huang   auto ST = Session.getPDBFile().getStringTable();
23f8170d87SAmy Huang   if (!ST) {
24f8170d87SAmy Huang     consumeError(ST.takeError());
25f8170d87SAmy Huang     return "";
26f8170d87SAmy Huang   }
27f8170d87SAmy Huang   auto FileName = ST->getStringTable().getString(Checksum.FileNameOffset);
28f8170d87SAmy Huang   if (!FileName) {
29f8170d87SAmy Huang     consumeError(FileName.takeError());
30f8170d87SAmy Huang     return "";
31f8170d87SAmy Huang   }
32f8170d87SAmy Huang 
33f8170d87SAmy Huang   return std::string(FileName.get());
34f8170d87SAmy Huang }
35f8170d87SAmy Huang 
getUniqueId() const36f8170d87SAmy Huang uint32_t NativeSourceFile::getUniqueId() const { return FileId; }
37f8170d87SAmy Huang 
getChecksum() const38f8170d87SAmy Huang std::string NativeSourceFile::getChecksum() const {
39f8170d87SAmy Huang   return toStringRef(Checksum.Checksum).str();
40f8170d87SAmy Huang }
41f8170d87SAmy Huang 
getChecksumType() const42f8170d87SAmy Huang PDB_Checksum NativeSourceFile::getChecksumType() const {
43f8170d87SAmy Huang   return static_cast<PDB_Checksum>(Checksum.Kind);
44f8170d87SAmy Huang }
45f8170d87SAmy Huang 
46f8170d87SAmy Huang std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
getCompilands() const47f8170d87SAmy Huang NativeSourceFile::getCompilands() const {
48f8170d87SAmy Huang   return nullptr;
49f8170d87SAmy Huang }
50