LLVM 19.0.0git
TypeCollection.h
Go to the documentation of this file.
1//===- TypeCollection.h - A collection of CodeView type records -*- 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_CODEVIEW_TYPECOLLECTION_H
10#define LLVM_DEBUGINFO_CODEVIEW_TYPECOLLECTION_H
11
12#include "llvm/ADT/StringRef.h"
15
16namespace llvm {
17namespace codeview {
19public:
20 virtual ~TypeCollection() = default;
21
22 bool empty() { return size() == 0; }
23
24 virtual std::optional<TypeIndex> getFirst() = 0;
25 virtual std::optional<TypeIndex> getNext(TypeIndex Prev) = 0;
26
29 virtual bool contains(TypeIndex Index) = 0;
30 virtual uint32_t size() = 0;
31 virtual uint32_t capacity() = 0;
32 virtual bool replaceType(TypeIndex &Index, CVType Data, bool Stabilize) = 0;
33
34 template <typename TFunc> void ForEachRecord(TFunc Func) {
35 std::optional<TypeIndex> Next = getFirst();
36
37 while (Next) {
38 TypeIndex N = *Next;
39 Func(N, getType(N));
40 Next = getNext(N);
41 }
42 }
43};
44}
45}
46
47#endif
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
virtual std::optional< TypeIndex > getNext(TypeIndex Prev)=0
virtual bool replaceType(TypeIndex &Index, CVType Data, bool Stabilize)=0
virtual CVType getType(TypeIndex Index)=0
virtual bool contains(TypeIndex Index)=0
virtual uint32_t capacity()=0
virtual std::optional< TypeIndex > getFirst()=0
virtual ~TypeCollection()=default
virtual uint32_t size()=0
virtual StringRef getTypeName(TypeIndex Index)=0
A 32-bit type reference.
Definition: TypeIndex.h:96
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
#define N