1//===- IPDBSourceFile.h - base interface for a PDB source file --*- 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_IPDBSOURCEFILE_H 10#define LLVM_DEBUGINFO_PDB_IPDBSOURCEFILE_H 11 12#include "PDBTypes.h" 13#include <memory> 14#include <string> 15 16namespace llvm { 17class raw_ostream; 18 19namespace pdb { 20 21/// IPDBSourceFile defines an interface used to represent source files whose 22/// information are stored in the PDB. 23class IPDBSourceFile { 24public: 25 virtual ~IPDBSourceFile(); 26 27 void dump(raw_ostream &OS, int Indent) const; 28 29 virtual std::string getFileName() const = 0; 30 virtual uint32_t getUniqueId() const = 0; 31 virtual std::string getChecksum() const = 0; 32 virtual PDB_Checksum getChecksumType() const = 0; 33 virtual std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>> 34 getCompilands() const = 0; 35}; 36} 37} 38 39#endif 40