diff options
Diffstat (limited to 'clang-tools-extra/clang-doc/BitcodeWriter.cpp')
| -rw-r--r-- | clang-tools-extra/clang-doc/BitcodeWriter.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-doc/BitcodeWriter.cpp b/clang-tools-extra/clang-doc/BitcodeWriter.cpp index 56aa9e56602..7c5a128bbff 100644 --- a/clang-tools-extra/clang-doc/BitcodeWriter.cpp +++ b/clang-tools-extra/clang-doc/BitcodeWriter.cpp @@ -116,6 +116,7 @@ static const llvm::IndexedMap<llvm::StringRef, BlockIdToIndexFunctor> {BI_FIELD_TYPE_BLOCK_ID, "FieldTypeBlock"}, {BI_MEMBER_TYPE_BLOCK_ID, "MemberTypeBlock"}, {BI_RECORD_BLOCK_ID, "RecordBlock"}, + {BI_BASE_RECORD_BLOCK_ID, "BaseRecordBlock"}, {BI_FUNCTION_BLOCK_ID, "FunctionBlock"}, {BI_COMMENT_BLOCK_ID, "CommentBlock"}, {BI_REFERENCE_BLOCK_ID, "ReferenceBlock"}}; @@ -165,6 +166,13 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor> {RECORD_LOCATION, {"Location", &LocationAbbrev}}, {RECORD_TAG_TYPE, {"TagType", &IntAbbrev}}, {RECORD_IS_TYPE_DEF, {"IsTypeDef", &BoolAbbrev}}, + {BASE_RECORD_USR, {"USR", &SymbolIDAbbrev}}, + {BASE_RECORD_NAME, {"Name", &StringAbbrev}}, + {BASE_RECORD_PATH, {"Path", &StringAbbrev}}, + {BASE_RECORD_TAG_TYPE, {"TagType", &IntAbbrev}}, + {BASE_RECORD_IS_VIRTUAL, {"IsVirtual", &BoolAbbrev}}, + {BASE_RECORD_ACCESS, {"Access", &IntAbbrev}}, + {BASE_RECORD_IS_PARENT, {"IsParent", &BoolAbbrev}}, {FUNCTION_USR, {"USR", &SymbolIDAbbrev}}, {FUNCTION_NAME, {"Name", &StringAbbrev}}, {FUNCTION_DEFLOCATION, {"DefLocation", &LocationAbbrev}}, @@ -213,6 +221,11 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>> {BI_RECORD_BLOCK_ID, {RECORD_USR, RECORD_NAME, RECORD_PATH, RECORD_DEFLOCATION, RECORD_LOCATION, RECORD_TAG_TYPE, RECORD_IS_TYPE_DEF}}, + // BaseRecord Block + {BI_BASE_RECORD_BLOCK_ID, + {BASE_RECORD_USR, BASE_RECORD_NAME, BASE_RECORD_PATH, + BASE_RECORD_TAG_TYPE, BASE_RECORD_IS_VIRTUAL, BASE_RECORD_ACCESS, + BASE_RECORD_IS_PARENT}}, // Function Block {BI_FUNCTION_BLOCK_ID, {FUNCTION_USR, FUNCTION_NAME, FUNCTION_DEFLOCATION, FUNCTION_LOCATION, @@ -494,6 +507,8 @@ void ClangDocBitcodeWriter::emitBlock(const RecordInfo &I) { emitBlock(P, FieldId::F_parent); for (const auto &P : I.VirtualParents) emitBlock(P, FieldId::F_vparent); + for (const auto &PB : I.Bases) + emitBlock(PB); for (const auto &C : I.ChildRecords) emitBlock(C, FieldId::F_child_record); for (const auto &C : I.ChildFunctions) @@ -502,6 +517,21 @@ void ClangDocBitcodeWriter::emitBlock(const RecordInfo &I) { emitBlock(C); } +void ClangDocBitcodeWriter::emitBlock(const BaseRecordInfo &I) { + StreamSubBlockGuard Block(Stream, BI_BASE_RECORD_BLOCK_ID); + emitRecord(I.USR, BASE_RECORD_USR); + emitRecord(I.Name, BASE_RECORD_NAME); + emitRecord(I.Path, BASE_RECORD_PATH); + emitRecord(I.TagType, BASE_RECORD_TAG_TYPE); + emitRecord(I.IsVirtual, BASE_RECORD_IS_VIRTUAL); + emitRecord(I.Access, BASE_RECORD_ACCESS); + emitRecord(I.IsParent, BASE_RECORD_IS_PARENT); + for (const auto &M : I.Members) + emitBlock(M); + for (const auto &C : I.ChildFunctions) + emitBlock(C); +} + void ClangDocBitcodeWriter::emitBlock(const FunctionInfo &I) { StreamSubBlockGuard Block(Stream, BI_FUNCTION_BLOCK_ID); emitRecord(I.USR, FUNCTION_USR); |

