@@ -116,6 +116,7 @@ static const llvm::IndexedMap<llvm::StringRef, BlockIdToIndexFunctor>
116
116
{BI_FIELD_TYPE_BLOCK_ID, " FieldTypeBlock" },
117
117
{BI_MEMBER_TYPE_BLOCK_ID, " MemberTypeBlock" },
118
118
{BI_RECORD_BLOCK_ID, " RecordBlock" },
119
+ {BI_BASE_RECORD_BLOCK_ID, " BaseRecordBlock" },
119
120
{BI_FUNCTION_BLOCK_ID, " FunctionBlock" },
120
121
{BI_COMMENT_BLOCK_ID, " CommentBlock" },
121
122
{BI_REFERENCE_BLOCK_ID, " ReferenceBlock" }};
@@ -165,6 +166,13 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
165
166
{RECORD_LOCATION, {" Location" , &LocationAbbrev}},
166
167
{RECORD_TAG_TYPE, {" TagType" , &IntAbbrev}},
167
168
{RECORD_IS_TYPE_DEF, {" IsTypeDef" , &BoolAbbrev}},
169
+ {BASE_RECORD_USR, {" USR" , &SymbolIDAbbrev}},
170
+ {BASE_RECORD_NAME, {" Name" , &StringAbbrev}},
171
+ {BASE_RECORD_PATH, {" Path" , &StringAbbrev}},
172
+ {BASE_RECORD_TAG_TYPE, {" TagType" , &IntAbbrev}},
173
+ {BASE_RECORD_IS_VIRTUAL, {" IsVirtual" , &BoolAbbrev}},
174
+ {BASE_RECORD_ACCESS, {" Access" , &IntAbbrev}},
175
+ {BASE_RECORD_IS_PARENT, {" IsParent" , &BoolAbbrev}},
168
176
{FUNCTION_USR, {" USR" , &SymbolIDAbbrev}},
169
177
{FUNCTION_NAME, {" Name" , &StringAbbrev}},
170
178
{FUNCTION_DEFLOCATION, {" DefLocation" , &LocationAbbrev}},
@@ -213,6 +221,11 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>>
213
221
{BI_RECORD_BLOCK_ID,
214
222
{RECORD_USR, RECORD_NAME, RECORD_PATH, RECORD_DEFLOCATION,
215
223
RECORD_LOCATION, RECORD_TAG_TYPE, RECORD_IS_TYPE_DEF}},
224
+ // BaseRecord Block
225
+ {BI_BASE_RECORD_BLOCK_ID,
226
+ {BASE_RECORD_USR, BASE_RECORD_NAME, BASE_RECORD_PATH,
227
+ BASE_RECORD_TAG_TYPE, BASE_RECORD_IS_VIRTUAL, BASE_RECORD_ACCESS,
228
+ BASE_RECORD_IS_PARENT}},
216
229
// Function Block
217
230
{BI_FUNCTION_BLOCK_ID,
218
231
{FUNCTION_USR, FUNCTION_NAME, FUNCTION_DEFLOCATION, FUNCTION_LOCATION,
@@ -494,6 +507,8 @@ void ClangDocBitcodeWriter::emitBlock(const RecordInfo &I) {
494
507
emitBlock (P, FieldId::F_parent);
495
508
for (const auto &P : I.VirtualParents )
496
509
emitBlock (P, FieldId::F_vparent);
510
+ for (const auto &PB : I.Bases )
511
+ emitBlock (PB);
497
512
for (const auto &C : I.ChildRecords )
498
513
emitBlock (C, FieldId::F_child_record);
499
514
for (const auto &C : I.ChildFunctions )
@@ -502,6 +517,21 @@ void ClangDocBitcodeWriter::emitBlock(const RecordInfo &I) {
502
517
emitBlock (C);
503
518
}
504
519
520
+ void ClangDocBitcodeWriter::emitBlock (const BaseRecordInfo &I) {
521
+ StreamSubBlockGuard Block (Stream, BI_BASE_RECORD_BLOCK_ID);
522
+ emitRecord (I.USR , BASE_RECORD_USR);
523
+ emitRecord (I.Name , BASE_RECORD_NAME);
524
+ emitRecord (I.Path , BASE_RECORD_PATH);
525
+ emitRecord (I.TagType , BASE_RECORD_TAG_TYPE);
526
+ emitRecord (I.IsVirtual , BASE_RECORD_IS_VIRTUAL);
527
+ emitRecord (I.Access , BASE_RECORD_ACCESS);
528
+ emitRecord (I.IsParent , BASE_RECORD_IS_PARENT);
529
+ for (const auto &M : I.Members )
530
+ emitBlock (M);
531
+ for (const auto &C : I.ChildFunctions )
532
+ emitBlock (C);
533
+ }
534
+
505
535
void ClangDocBitcodeWriter::emitBlock (const FunctionInfo &I) {
506
536
StreamSubBlockGuard Block (Stream, BI_FUNCTION_BLOCK_ID);
507
537
emitRecord (I.USR , FUNCTION_USR);
0 commit comments