1 //==- CodeViewYAMLTypes.h - CodeView YAMLIO Type implementation --*- C++ -*-==//
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
7 //===----------------------------------------------------------------------===//
9 // This file defines classes for handling the YAML representation of CodeView
12 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
15 #define LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H
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"
29 class AppendingTypeTableBuilder
;
32 namespace CodeViewYAML
{
36 struct LeafRecordBase
;
37 struct MemberRecordBase
;
39 } // end namespace detail
42 std::shared_ptr
<detail::MemberRecordBase
> Member
;
46 std::shared_ptr
<detail::LeafRecordBase
> Leaf
;
49 toCodeViewRecord(codeview::AppendingTypeTableBuilder
&Serializer
) const;
50 static Expected
<LeafRecord
> fromCodeViewRecord(codeview::CVType Type
);
53 std::vector
<LeafRecord
> fromDebugT(ArrayRef
<uint8_t> DebugTorP
,
54 StringRef SectionName
);
55 ArrayRef
<uint8_t> toDebugT(ArrayRef
<LeafRecord
>, BumpPtrAllocator
&Alloc
,
56 StringRef SectionName
);
58 } // end namespace CodeViewYAML
60 } // end namespace llvm
62 LLVM_YAML_DECLARE_SCALAR_TRAITS(codeview::GUID
, QuotingType::Single
)
64 LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::LeafRecord
)
65 LLVM_YAML_DECLARE_MAPPING_TRAITS(CodeViewYAML::MemberRecord
)
67 LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::LeafRecord
)
68 LLVM_YAML_IS_SEQUENCE_VECTOR(CodeViewYAML::MemberRecord
)
70 #endif // LLVM_OBJECTYAML_CODEVIEWYAMLTYPES_H