]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
Merge ^/head r319251 through r319479.
[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
22 namespace llvm {
23 namespace CodeViewYAML {
24 namespace detail {
25 struct LeafRecordBase;
26 struct MemberRecordBase;
27 }
28
29 struct MemberRecord {
30   std::shared_ptr<detail::MemberRecordBase> Member;
31 };
32
33 struct LeafRecord {
34   std::shared_ptr<detail::LeafRecordBase> Leaf;
35
36   codeview::CVType toCodeViewRecord(BumpPtrAllocator &Allocator) const;
37   static Expected<LeafRecord> fromCodeViewRecord(codeview::CVType Type);
38 };
39 } // namespace CodeViewYAML
40 } // namespace llvm
41
42 LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::LeafRecord)
43 LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::MemberRecord)
44
45 LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::LeafRecord)
46 LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::MemberRecord)
47
48 #endif