1 //==- NativeEnumTypes.h - Native Type Enumerator impl ------------*- C++ -*-==//
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
7 //===----------------------------------------------------------------------===//
9 #ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMTYPES_H
10 #define LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMTYPES_H
12 #include "llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h"
13 #include "llvm/DebugInfo/CodeView/TypeRecord.h"
14 #include "llvm/DebugInfo/PDB/IPDBEnumChildren.h"
15 #include "llvm/DebugInfo/PDB/PDBSymbol.h"
24 class NativeEnumTypes : public IPDBEnumChildren<PDBSymbol> {
26 NativeEnumTypes(NativeSession &Session,
27 codeview::LazyRandomTypeCollection &TypeCollection,
28 std::vector<codeview::TypeLeafKind> Kinds);
30 NativeEnumTypes(NativeSession &Session,
31 std::vector<codeview::TypeIndex> Indices);
33 uint32_t getChildCount() const override;
34 std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index) const override;
35 std::unique_ptr<PDBSymbol> getNext() override;
36 void reset() override;
39 std::vector<codeview::TypeIndex> Matches;
41 NativeSession &Session;