1//===- NativeSymbolEnumerator.h - info about enumerator values --*- 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_NATIVE_NATIVESYMBOLENUMERATOR_H
10#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVESYMBOLENUMERATOR_H
11
12#include "llvm/DebugInfo/CodeView/CodeView.h"
13#include "llvm/DebugInfo/PDB/Native/NativeRawSymbol.h"
14#include "llvm/DebugInfo/PDB/Native/NativeSession.h"
15
16namespace llvm {
17namespace pdb {
18class NativeTypeEnum;
19
20class NativeSymbolEnumerator : public NativeRawSymbol {
21public:
22  NativeSymbolEnumerator(NativeSession &Session, SymIndexId Id,
23                         const NativeTypeEnum &Parent,
24                         codeview::EnumeratorRecord Record);
25
26  ~NativeSymbolEnumerator() override;
27
28  void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields,
29            PdbSymbolIdField RecurseIdFields) const override;
30
31  SymIndexId getClassParentId() const override;
32  SymIndexId getLexicalParentId() const override;
33  std::string getName() const override;
34  SymIndexId getTypeId() const override;
35  PDB_DataKind getDataKind() const override;
36  PDB_LocType getLocationType() const override;
37  bool isConstType() const override;
38  bool isVolatileType() const override;
39  bool isUnalignedType() const override;
40  Variant getValue() const override;
41
42protected:
43  const NativeTypeEnum &Parent;
44  codeview::EnumeratorRecord Record;
45};
46
47} // namespace pdb
48} // namespace llvm
49
50#endif // LLVM_DEBUGINFO_PDB_NATIVE_NATIVETYPEENUM_H
51