1189251Ssam//===- NativeExeSymbol.h - native impl for PDBSymbolExe ---------*- C++ -*-===//
2214734Srpaulo//
3214734Srpaulo// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4189251Ssam// See https://llvm.org/LICENSE.txt for license information.
5189251Ssam// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6189251Ssam//
7189251Ssam//===----------------------------------------------------------------------===//
8189251Ssam
9189251Ssam#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVEEXESYMBOL_H
10189251Ssam#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVEEXESYMBOL_H
11189251Ssam
12189251Ssam#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
13189251Ssam#include "llvm/DebugInfo/PDB/Native/NativeSession.h"
14189251Ssam
15189251Ssamnamespace llvm {
16189251Ssamnamespace pdb {
17189251Ssam
18214734Srpauloclass DbiStream;
19214734Srpaulo
20214734Srpauloclass NativeExeSymbol : public NativeRawSymbol {
21189251Ssam  // EXE symbol is the authority on the various symbol types.
22214734Srpaulo  DbiStream *Dbi = nullptr;
23214734Srpaulo
24214734Srpaulopublic:
25189251Ssam  NativeExeSymbol(NativeSession &Session, SymIndexId Id);
26189251Ssam
27214734Srpaulo  std::unique_ptr<IPDBEnumSymbols>
28214734Srpaulo  findChildren(PDB_SymType Type) const override;
29214734Srpaulo
30214734Srpaulo  uint32_t getAge() const override;
31214734Srpaulo  std::string getSymbolsFileName() const override;
32214734Srpaulo  codeview::GUID getGuid() const override;
33214734Srpaulo  bool hasCTypes() const override;
34214734Srpaulo  bool hasPrivateSymbols() const override;
35214734Srpaulo};
36214734Srpaulo
37214734Srpaulo} // namespace pdb
38214734Srpaulo} // namespace llvm
39214734Srpaulo
40189251Ssam#endif
41189251Ssam