xref: /freebsd-src/contrib/llvm-project/llvm/lib/DebugInfo/PDB/Native/NativeSourceFile.cpp (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
1e8d8bef9SDimitry Andric //===- NativeSourceFile.cpp - Native line number implementation -*- C++ -*-===//
25ffd83dbSDimitry Andric //
35ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
55ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65ffd83dbSDimitry Andric //
75ffd83dbSDimitry Andric //===----------------------------------------------------------------------===//
85ffd83dbSDimitry Andric 
95ffd83dbSDimitry Andric #include "llvm/DebugInfo/PDB/Native/NativeSourceFile.h"
10*06c3fb27SDimitry Andric #include "llvm/ADT/StringExtras.h"
115ffd83dbSDimitry Andric #include "llvm/DebugInfo/PDB/Native/NativeSession.h"
1281ad6265SDimitry Andric #include "llvm/DebugInfo/PDB/Native/PDBFile.h"
1381ad6265SDimitry Andric #include "llvm/DebugInfo/PDB/Native/PDBStringTable.h"
145ffd83dbSDimitry Andric 
155ffd83dbSDimitry Andric using namespace llvm;
165ffd83dbSDimitry Andric using namespace llvm::pdb;
175ffd83dbSDimitry Andric 
NativeSourceFile(NativeSession & Session,uint32_t FileId,const codeview::FileChecksumEntry & Checksum)185ffd83dbSDimitry Andric NativeSourceFile::NativeSourceFile(NativeSession &Session, uint32_t FileId,
195ffd83dbSDimitry Andric                                    const codeview::FileChecksumEntry &Checksum)
205ffd83dbSDimitry Andric     : Session(Session), FileId(FileId), Checksum(Checksum) {}
215ffd83dbSDimitry Andric 
getFileName() const225ffd83dbSDimitry Andric std::string NativeSourceFile::getFileName() const {
235ffd83dbSDimitry Andric   auto ST = Session.getPDBFile().getStringTable();
245ffd83dbSDimitry Andric   if (!ST) {
255ffd83dbSDimitry Andric     consumeError(ST.takeError());
265ffd83dbSDimitry Andric     return "";
275ffd83dbSDimitry Andric   }
285ffd83dbSDimitry Andric   auto FileName = ST->getStringTable().getString(Checksum.FileNameOffset);
295ffd83dbSDimitry Andric   if (!FileName) {
305ffd83dbSDimitry Andric     consumeError(FileName.takeError());
315ffd83dbSDimitry Andric     return "";
325ffd83dbSDimitry Andric   }
335ffd83dbSDimitry Andric 
345ffd83dbSDimitry Andric   return std::string(FileName.get());
355ffd83dbSDimitry Andric }
365ffd83dbSDimitry Andric 
getUniqueId() const375ffd83dbSDimitry Andric uint32_t NativeSourceFile::getUniqueId() const { return FileId; }
385ffd83dbSDimitry Andric 
getChecksum() const395ffd83dbSDimitry Andric std::string NativeSourceFile::getChecksum() const {
405ffd83dbSDimitry Andric   return toStringRef(Checksum.Checksum).str();
415ffd83dbSDimitry Andric }
425ffd83dbSDimitry Andric 
getChecksumType() const435ffd83dbSDimitry Andric PDB_Checksum NativeSourceFile::getChecksumType() const {
445ffd83dbSDimitry Andric   return static_cast<PDB_Checksum>(Checksum.Kind);
455ffd83dbSDimitry Andric }
465ffd83dbSDimitry Andric 
475ffd83dbSDimitry Andric std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>>
getCompilands() const485ffd83dbSDimitry Andric NativeSourceFile::getCompilands() const {
495ffd83dbSDimitry Andric   return nullptr;
505ffd83dbSDimitry Andric }
51