]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r306325, and update
[FreeBSD/FreeBSD.git] / contrib / llvm / include / llvm / ObjectYAML / CodeViewYAMLTypes.h
1 //===- CodeViewYAMLTypes.h - CodeView YAMLIO Type Record implementation ---===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file defines classes for handling the YAML representation of CodeView
11 // Debug Info.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
16 #define LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
17
18 #include "llvm/DebugInfo/CodeView/CodeView.h"
19 #include "llvm/DebugInfo/CodeView/TypeRecord.h"
20 #include "llvm/ObjectYAML/YAML.h"
21 #include "llvm/Support/Allocator.h"
22
23 namespace llvm {
24 namespace codeview {
25 class TypeTableBuilder;
26 }
27 namespace CodeViewYAML {
28 namespace detail {
29 struct LeafRecordBase;
30 struct MemberRecordBase;
31 }
32
33 struct MemberRecord {
34   std::shared_ptr<detail::MemberRecordBase> Member;
35 };
36
37 struct LeafRecord {
38   std::shared_ptr<detail::LeafRecordBase> Leaf;
39
40   codeview::CVType toCodeViewRecord(BumpPtrAllocator &Allocator) const;
41   codeview::CVType toCodeViewRecord(codeview::TypeTableBuilder &TS) const;
42   static Expected<LeafRecord> fromCodeViewRecord(codeview::CVType Type);
43 };
44
45 std::vector<LeafRecord> fromDebugT(ArrayRef<uint8_t> DebugT);
46 ArrayRef<uint8_t> toDebugT(ArrayRef<LeafRecord>, BumpPtrAllocator &Alloc);
47 } // namespace CodeViewYAML
48 } // namespace llvm
49
50 LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::LeafRecord)
51 LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::MemberRecord)
52
53 LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::LeafRecord)
54 LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::MemberRecord)
55
56 #endif