26 std::vector<codeview::TypeLeafKind> Kinds)
27 : Matches(),
Index(0), Session(PDBSession) {
35 Matches.push_back(*TI);
36 }
else if (K == TypeLeafKind::LF_MODIFIER) {
44 Matches.push_back(*TI);
52 std::vector<codeview::TypeIndex> Indices)
53 : Matches(
std::move(Indices)), Index(0), Session(PDBSession) {}
56 return static_cast<uint32_t>(Matches.size());
60 if (N < Matches.size()) {
This class represents lattice values for constants.
TypeLeafKind
Duplicate copy of the above enum, but using the official CV names.
bool isUdtForwardRef(CVType CVT)
Given an arbitrary codeview type, determine if it is an LF_STRUCTURE, LF_CLASS, LF_INTERFACE, LF_UNION, or LF_ENUM with the forward ref class option.
Optional< TypeIndex > getNext(TypeIndex Prev) override
TypeIndex getModifiedType(const CVType &CVT)
Given a CVType which is assumed to be an LF_MODIFIER, return the TypeIndex of the type that the LF_MO...
std::unique_ptr< PDBSymbol > getSymbolById(SymIndexId SymbolId) const
CVType getType(TypeIndex Index) override
std::unique_ptr< PDBSymbol > getNext() override
std::unique_ptr< PDBSymbol > getChildAtIndex(uint32_t Index) const override
NativeEnumTypes(NativeSession &Session, codeview::LazyRandomTypeCollection &TypeCollection, std::vector< codeview::TypeLeafKind > Kinds)
uint32_t getChildCount() const override
SymIndexId findSymbolByTypeIndex(codeview::TypeIndex TI)
SymbolCache & getSymbolCache()
Optional< TypeIndex > getFirst() override
Provides amortized O(1) random access to a CodeView type stream.
bool is_contained(R &&Range, const E &Element)
Wrapper function around std::find to detect if an element exists in a container.