summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-doc/YAMLGenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clang-doc/YAMLGenerator.cpp')
-rw-r--r--clang-tools-extra/clang-doc/YAMLGenerator.cpp36
1 files changed, 26 insertions, 10 deletions
diff --git a/clang-tools-extra/clang-doc/YAMLGenerator.cpp b/clang-tools-extra/clang-doc/YAMLGenerator.cpp
index 45649622665..da22a76d5b5 100644
--- a/clang-tools-extra/clang-doc/YAMLGenerator.cpp
+++ b/clang-tools-extra/clang-doc/YAMLGenerator.cpp
@@ -21,6 +21,7 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(Location)
LLVM_YAML_IS_SEQUENCE_VECTOR(CommentInfo)
LLVM_YAML_IS_SEQUENCE_VECTOR(FunctionInfo)
LLVM_YAML_IS_SEQUENCE_VECTOR(EnumInfo)
+LLVM_YAML_IS_SEQUENCE_VECTOR(BaseRecordInfo)
LLVM_YAML_IS_SEQUENCE_VECTOR(std::unique_ptr<CommentInfo>)
LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::SmallString<16>)
@@ -124,6 +125,19 @@ static void SymbolInfoMapping(IO &IO, SymbolInfo &I) {
IO.mapOptional("Location", I.Loc, llvm::SmallVector<Location, 2>());
}
+static void RecordInfoMapping(IO &IO, RecordInfo &I) {
+ SymbolInfoMapping(IO, I);
+ IO.mapOptional("TagType", I.TagType, clang::TagTypeKind::TTK_Struct);
+ IO.mapOptional("Members", I.Members);
+ IO.mapOptional("Bases", I.Bases);
+ IO.mapOptional("Parents", I.Parents, llvm::SmallVector<Reference, 4>());
+ IO.mapOptional("VirtualParents", I.VirtualParents,
+ llvm::SmallVector<Reference, 4>());
+ IO.mapOptional("ChildRecords", I.ChildRecords, std::vector<Reference>());
+ IO.mapOptional("ChildFunctions", I.ChildFunctions);
+ IO.mapOptional("ChildEnums", I.ChildEnums);
+}
+
static void CommentInfoMapping(IO &IO, CommentInfo &I) {
IO.mapOptional("Kind", I.Kind, SmallString<16>());
IO.mapOptional("Text", I.Text, SmallString<64>());
@@ -193,16 +207,18 @@ template <> struct MappingTraits<NamespaceInfo> {
};
template <> struct MappingTraits<RecordInfo> {
- static void mapping(IO &IO, RecordInfo &I) {
- SymbolInfoMapping(IO, I);
- IO.mapOptional("TagType", I.TagType, clang::TagTypeKind::TTK_Struct);
- IO.mapOptional("Members", I.Members);
- IO.mapOptional("Parents", I.Parents, llvm::SmallVector<Reference, 4>());
- IO.mapOptional("VirtualParents", I.VirtualParents,
- llvm::SmallVector<Reference, 4>());
- IO.mapOptional("ChildRecords", I.ChildRecords, std::vector<Reference>());
- IO.mapOptional("ChildFunctions", I.ChildFunctions);
- IO.mapOptional("ChildEnums", I.ChildEnums);
+ static void mapping(IO &IO, RecordInfo &I) { RecordInfoMapping(IO, I); }
+};
+
+template <> struct MappingTraits<BaseRecordInfo> {
+ static void mapping(IO &IO, BaseRecordInfo &I) {
+ RecordInfoMapping(IO, I);
+ IO.mapOptional("IsVirtual", I.IsVirtual, false);
+ // clang::AccessSpecifier::AS_none is used as the default here because it's
+ // the AS that shouldn't be part of the output. Even though AS_public is the
+ // default in the struct, it should be displayed in the YAML output.
+ IO.mapOptional("Access", I.Access, clang::AccessSpecifier::AS_none);
+ IO.mapOptional("IsParent", I.IsParent, false);
}
};
OpenPOWER on IntegriCloud