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 | |
26 | namespace llvm { |
27 | |
28 | namespace codeview { |
29 | class AppendingTypeTableBuilder; |
30 | } |
31 | |
32 | namespace CodeViewYAML { |
33 | |
34 | namespace detail { |
35 | |
36 | struct LeafRecordBase; |
37 | struct MemberRecordBase; |
38 | |
39 | } // end namespace detail |
40 | |
41 | struct MemberRecord { |
42 | std::shared_ptr<detail::MemberRecordBase> Member; |
43 | }; |
44 | |
45 | struct 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 | |
53 | std::vector<LeafRecord> fromDebugT(ArrayRef<uint8_t> DebugTorP, |
54 | StringRef SectionName); |
55 | ArrayRef<uint8_t> toDebugT(ArrayRef<LeafRecord>, BumpPtrAllocator &Alloc, |
56 | StringRef SectionName); |
57 | |
58 | } // end namespace CodeViewYAML |
59 | |
60 | } // end namespace llvm |
61 | |
62 | LLVM_YAML_DECLARE_SCALAR_TRAITS(codeview::GUID, QuotingType::Single) |
63 | |
64 | LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::LeafRecord) |
65 | LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::MemberRecord) |
66 | |
67 | LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::LeafRecord) |
68 | LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::MemberRecord) |
69 | |
70 | #endif // LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H |
71 |