diff options
Diffstat (limited to 'clang-tools-extra/clang-doc/YAMLGenerator.cpp')
| -rw-r--r-- | clang-tools-extra/clang-doc/YAMLGenerator.cpp | 36 |
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); } }; |

