1//==- CodeViewYAMLTypes.h - CodeView YAMLIO Type implementation --*- 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// This file defines classes for handling the YAML representation of CodeView
10// Debug Info.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
15#define LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
16
17#include "llvm/ADT/ArrayRef.h"
18#include "llvm/DebugInfo/CodeView/TypeRecord.h"
19#include "llvm/Support/Allocator.h"
20#include "llvm/Support/Error.h"
21#include "llvm/Support/YAMLTraits.h"
22#include <cstdint>
23#include <memory>
24#include <vector>
25
26namespace llvm {
27
28namespace codeview {
29class AppendingTypeTableBuilder;
30}
31
32namespace CodeViewYAML {
33
34namespace detail {
35
36struct LeafRecordBase;
37struct MemberRecordBase;
38
39} // end namespace detail
40
41struct MemberRecord {
42 std::shared_ptr<detail::MemberRecordBase> Member;
43};
44
45struct LeafRecord {
46 std::shared_ptr<detail::LeafRecordBase> Leaf;
47
48 codeview::CVType
49 toCodeViewRecord(codeview::AppendingTypeTableBuilder &Serializer) const;
50 static Expected<LeafRecord> fromCodeViewRecord(codeview::CVType Type);
51};
52
53std::vector<LeafRecord> fromDebugT(ArrayRef<uint8_t> DebugTorP,
54 StringRef SectionName);
55ArrayRef<uint8_t> toDebugT(ArrayRef<LeafRecord>, BumpPtrAllocator &Alloc,
56 StringRef SectionName);
57
58} // end namespace CodeViewYAML
59
60} // end namespace llvm
61
62LLVM_YAML_DECLARE_SCALAR_TRAITS(codeview::GUID, QuotingType::Single)
63
64LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::LeafRecord)
65LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::MemberRecord)
66
67LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::LeafRecord)
68LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::MemberRecord)
69
70#endif // LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
71

source code of llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h