1//===- TypeTableCollection.h ---------------------------------- *- 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_TYPETABLECOLLECTION_H
10#define LLVM_DEBUGINFO_CODEVIEW_TYPETABLECOLLECTION_H
11
12#include "llvm/DebugInfo/CodeView/TypeCollection.h"
13#include "llvm/Support/StringSaver.h"
14
15#include <vector>
16
17namespace llvm {
18namespace codeview {
19
20class TypeTableCollection : public TypeCollection {
21public:
22 explicit TypeTableCollection(ArrayRef<ArrayRef<uint8_t>> Records);
23
24 std::optional<TypeIndex> getFirst() override;
25 std::optional<TypeIndex> getNext(TypeIndex Prev) override;
26
27 CVType getType(TypeIndex Index) override;
28 StringRef getTypeName(TypeIndex Index) override;
29 bool contains(TypeIndex Index) override;
30 uint32_t size() override;
31 uint32_t capacity() override;
32 bool replaceType(TypeIndex &Index, CVType Data, bool Stabilize) override;
33
34private:
35 BumpPtrAllocator Allocator;
36 StringSaver NameStorage;
37 std::vector<StringRef> Names;
38 ArrayRef<ArrayRef<uint8_t>> Records;
39};
40}
41}
42
43#endif
44

source code of llvm/include/llvm/DebugInfo/CodeView/TypeTableCollection.h