1215226Sadrian//==- NativeEnumTypes.h - Native Type Enumerator impl ------------*- C++ -*-==// 2215226Sadrian// 3215226Sadrian// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4215226Sadrian// See https://llvm.org/LICENSE.txt for license information. 5215226Sadrian// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6215226Sadrian// 7215226Sadrian//===----------------------------------------------------------------------===// 8215226Sadrian 9215226Sadrian#ifndef LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMTYPES_H 10215226Sadrian#define LLVM_DEBUGINFO_PDB_NATIVE_NATIVEENUMTYPES_H 11215226Sadrian 12215226Sadrian#include "llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h" 13215226Sadrian#include "llvm/DebugInfo/CodeView/TypeRecord.h" 14215226Sadrian#include "llvm/DebugInfo/PDB/IPDBEnumChildren.h" 15215226Sadrian#include "llvm/DebugInfo/PDB/PDBSymbol.h" 16215226Sadrian 17215226Sadrian#include <vector> 18215226Sadrian 19215226Sadriannamespace llvm { 20215226Sadriannamespace pdb { 21215226Sadrian 22215226Sadrianclass NativeSession; 23215226Sadrian 24215226Sadrianclass NativeEnumTypes : public IPDBEnumChildren<PDBSymbol> { 25215226Sadrianpublic: 26215226Sadrian NativeEnumTypes(NativeSession &Session, 27215226Sadrian codeview::LazyRandomTypeCollection &TypeCollection, 28215226Sadrian std::vector<codeview::TypeLeafKind> Kinds); 29215226Sadrian 30215226Sadrian NativeEnumTypes(NativeSession &Session, 31215226Sadrian std::vector<codeview::TypeIndex> Indices); 32215226Sadrian 33215226Sadrian uint32_t getChildCount() const override; 34215226Sadrian std::unique_ptr<PDBSymbol> getChildAtIndex(uint32_t Index) const override; 35215226Sadrian std::unique_ptr<PDBSymbol> getNext() override; 36215226Sadrian void reset() override; 37215226Sadrian 38215226Sadrianprivate: 39252048Ssjg std::vector<codeview::TypeIndex> Matches; 40252048Ssjg uint32_t Index; 41215226Sadrian NativeSession &Session; 42215226Sadrian}; 43215226Sadrian 44215226Sadrian} // namespace pdb 45215226Sadrian} // namespace llvm 46215226Sadrian 47252827Semaste#endif 48252827Semaste