1343171Sdim//===- NativeSymbolEnumerator.h - info about enumerator values --*- C++ -*-===//
2343171Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6343171Sdim//
7343171Sdim//===----------------------------------------------------------------------===//
8343171Sdim
9343171Sdim#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVESYMBOLENUMERATOR_H
10343171Sdim#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVESYMBOLENUMERATOR_H
11343171Sdim
12343171Sdim#include "llvm/DebugInfo/CodeView/CodeView.h"
13343171Sdim#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
14343171Sdim#include "llvm/DebugInfo/PDB/Native/NativeSession.h"
15343171Sdim
16343171Sdimnamespace llvm {
17343171Sdimnamespace pdb {
18343171Sdimclass NativeTypeEnum;
19343171Sdim
20343171Sdimclass NativeSymbolEnumerator : public NativeRawSymbol {
21343171Sdimpublic:
22343171Sdim  NativeSymbolEnumerator(NativeSession &Session, SymIndexId Id,
23343171Sdim                         const NativeTypeEnum &Parent,
24343171Sdim                         codeview::EnumeratorRecord Record);
25343171Sdim
26343171Sdim  ~NativeSymbolEnumerator() override;
27343171Sdim
28343171Sdim  void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
29343171Sdim            PdbSymbolIdField RecurseIdFields) const override;
30343171Sdim
31343171Sdim  SymIndexId getClassParentId() const override;
32343171Sdim  SymIndexId getLexicalParentId() const override;
33343171Sdim  std::string getName() const override;
34343171Sdim  SymIndexId getTypeId() const override;
35343171Sdim  PDB_DataKind getDataKind() const override;
36343171Sdim  PDB_LocType getLocationType() const override;
37343171Sdim  bool isConstType() const override;
38343171Sdim  bool isVolatileType() const override;
39343171Sdim  bool isUnalignedType() const override;
40343171Sdim  Variant getValue() const override;
41343171Sdim
42343171Sdimprotected:
43343171Sdim  const NativeTypeEnum &Parent;
44343171Sdim  codeview::EnumeratorRecord Record;
45343171Sdim};
46343171Sdim
47343171Sdim} // namespace pdb
48343171Sdim} // namespace llvm
49343171Sdim
50343171Sdim#endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_H
51