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