xref: /llvm-project/llvm/lib/DebugInfo/PDB/Native/NativeSourceFile.cpp (revision b0abd4893fa1bfae7f71b6b6e98770c9b1c07620)
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"
10*b0abd489SElliot Goodrich #include "llvm/ADT/StringExtras.h"
11f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeSession.h"
12eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/PDBFile.h"
13eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/PDBStringTable.h"
14f8170d87SAmy Huang 
15f8170d87SAmy Huang using namespace llvm;
16f8170d87SAmy Huang using namespace llvm::pdb;
17f8170d87SAmy Huang 
NativeSourceFile(NativeSession & Session,uint32_t FileId,const codeview::FileChecksumEntry & Checksum)18f8170d87SAmy Huang NativeSourceFile::NativeSourceFile(NativeSession &Session, uint32_t FileId,
19f8170d87SAmy Huang                                    const codeview::FileChecksumEntry &Checksum)
20f8170d87SAmy Huang     : Session(Session), FileId(FileId), Checksum(Checksum) {}
21f8170d87SAmy Huang 
getFileName() const22f8170d87SAmy Huang std::string NativeSourceFile::getFileName() const {
23f8170d87SAmy Huang   auto ST = Session.getPDBFile().getStringTable();
24f8170d87SAmy Huang   if (!ST) {
25f8170d87SAmy Huang     consumeError(ST.takeError());
26f8170d87SAmy Huang     return "";
27f8170d87SAmy Huang   }
28f8170d87SAmy Huang   auto FileName = ST->getStringTable().getString(Checksum.FileNameOffset);
29f8170d87SAmy Huang   if (!FileName) {
30f8170d87SAmy Huang     consumeError(FileName.takeError());
31f8170d87SAmy Huang     return "";
32f8170d87SAmy Huang   }
33f8170d87SAmy Huang 
34f8170d87SAmy Huang   return std::string(FileName.get());
35f8170d87SAmy Huang }
36f8170d87SAmy Huang 
getUniqueId() const37f8170d87SAmy Huang uint32_t NativeSourceFile::getUniqueId() const { return FileId; }
38f8170d87SAmy Huang 
getChecksum() const39f8170d87SAmy Huang std::string NativeSourceFile::getChecksum() const {
40f8170d87SAmy Huang   return toStringRef(Checksum.Checksum).str();
41f8170d87SAmy Huang }
42f8170d87SAmy Huang 
getChecksumType() const43f8170d87SAmy Huang PDB_Checksum NativeSourceFile::getChecksumType() const {
44f8170d87SAmy Huang   return static_cast<PDB_Checksum>(Checksum.Kind);
45f8170d87SAmy Huang }
46f8170d87SAmy Huang 
47f8170d87SAmy Huang std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
getCompilands() const48f8170d87SAmy Huang NativeSourceFile::getCompilands() const {
49f8170d87SAmy Huang   return nullptr;
50f8170d87SAmy Huang }
51