summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clang-doc/BitcodeWriter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clang-doc/BitcodeWriter.cpp')
-rw-r--r--clang-tools-extra/clang-doc/BitcodeWriter.cpp30
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);
OpenPOWER on IntegriCloud