@@ -154,6 +154,8 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
154
154
{COMMENT_ARG, {" Arg" , &StringAbbrev}},
155
155
{FIELD_TYPE_NAME, {" Name" , &StringAbbrev}},
156
156
{FIELD_DEFAULT_VALUE, {" DefaultValue" , &StringAbbrev}},
157
+ {TYPE_IS_BUILTIN, {" IsBuiltIn" , &BoolAbbrev}},
158
+ {TYPE_IS_TEMPLATE, {" IsTemplate" , &BoolAbbrev}},
157
159
{MEMBER_TYPE_NAME, {" Name" , &StringAbbrev}},
158
160
{MEMBER_TYPE_ACCESS, {" Access" , &IntAbbrev}},
159
161
{NAMESPACE_USR, {" USR" , &SymbolIDAbbrev}},
@@ -169,6 +171,7 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
169
171
{ENUM_VALUE_EXPR, {" Expr" , &StringAbbrev}},
170
172
{RECORD_USR, {" USR" , &SymbolIDAbbrev}},
171
173
{RECORD_NAME, {" Name" , &StringAbbrev}},
174
+ {RECORD_FULLNAME, {" FullName" , &StringAbbrev}},
172
175
{RECORD_PATH, {" Path" , &StringAbbrev}},
173
176
{RECORD_DEFLOCATION, {" DefLocation" , &LocationAbbrev}},
174
177
{RECORD_LOCATION, {" Location" , &LocationAbbrev}},
@@ -187,6 +190,7 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
187
190
{FUNCTION_LOCATION, {" Location" , &LocationAbbrev}},
188
191
{FUNCTION_ACCESS, {" Access" , &IntAbbrev}},
189
192
{FUNCTION_IS_METHOD, {" IsMethod" , &BoolAbbrev}},
193
+ {FUNCTION_PROTOTYPE, {" ProtoType" , &StringAbbrev}},
190
194
{REFERENCE_USR, {" USR" , &SymbolIDAbbrev}},
191
195
{REFERENCE_NAME, {" Name" , &StringAbbrev}},
192
196
{REFERENCE_QUAL_NAME, {" QualName" , &StringAbbrev}},
@@ -218,7 +222,7 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>>
218
222
COMMENT_PARAMNAME, COMMENT_CLOSENAME, COMMENT_SELFCLOSING,
219
223
COMMENT_EXPLICIT, COMMENT_ATTRKEY, COMMENT_ATTRVAL, COMMENT_ARG}},
220
224
// Type Block
221
- {BI_TYPE_BLOCK_ID, {}},
225
+ {BI_TYPE_BLOCK_ID, {TYPE_IS_BUILTIN, TYPE_IS_TEMPLATE }},
222
226
// FieldType Block
223
227
{BI_FIELD_TYPE_BLOCK_ID, {FIELD_TYPE_NAME, FIELD_DEFAULT_VALUE}},
224
228
// MemberType Block
@@ -237,7 +241,7 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>>
237
241
{NAMESPACE_USR, NAMESPACE_NAME, NAMESPACE_PATH}},
238
242
// Record Block
239
243
{BI_RECORD_BLOCK_ID,
240
- {RECORD_USR, RECORD_NAME, RECORD_PATH, RECORD_DEFLOCATION,
244
+ {RECORD_USR, RECORD_NAME, RECORD_FULLNAME, RECORD_PATH, RECORD_DEFLOCATION,
241
245
RECORD_LOCATION, RECORD_TAG_TYPE, RECORD_IS_TYPE_DEF}},
242
246
// BaseRecord Block
243
247
{BI_BASE_RECORD_BLOCK_ID,
@@ -246,11 +250,11 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>>
246
250
BASE_RECORD_IS_PARENT}},
247
251
// Function Block
248
252
{BI_FUNCTION_BLOCK_ID,
249
- {FUNCTION_USR, FUNCTION_NAME, FUNCTION_DEFLOCATION, FUNCTION_LOCATION,
250
- FUNCTION_ACCESS, FUNCTION_IS_METHOD}},
253
+ {FUNCTION_USR, FUNCTION_PROTOTYPE, FUNCTION_NAME, FUNCTION_DEFLOCATION,
254
+ FUNCTION_LOCATION, FUNCTION_ACCESS, FUNCTION_IS_METHOD}},
251
255
// Reference Block
252
256
{BI_REFERENCE_BLOCK_ID,
253
- {REFERENCE_USR, REFERENCE_NAME, REFERENCE_QUAL_NAME, REFERENCE_TYPE,
257
+ {REFERENCE_USR, REFERENCE_NAME, REFERENCE_QUAL_NAME, REFERENCE_TYPE,
254
258
REFERENCE_PATH, REFERENCE_FIELD}},
255
259
// Template Blocks.
256
260
{BI_TEMPLATE_BLOCK_ID, {}},
@@ -425,6 +429,11 @@ void ClangDocBitcodeWriter::emitBlockInfo(BlockId BID,
425
429
void ClangDocBitcodeWriter::emitBlock (const Reference &R, FieldId Field) {
426
430
if (R.USR == EmptySID && R.Name .empty ())
427
431
return ;
432
+
433
+ if (R.Name == " const Shape &" ) {
434
+ llvm::outs () << " const Shape & USR: " <<
435
+ llvm::toHex (llvm::toStringRef (R.USR )) << " \n " ;
436
+ }
428
437
StreamSubBlockGuard Block (Stream, BI_REFERENCE_BLOCK_ID);
429
438
emitRecord (R.USR , REFERENCE_USR);
430
439
emitRecord (R.Name , REFERENCE_NAME);
@@ -437,6 +446,8 @@ void ClangDocBitcodeWriter::emitBlock(const Reference &R, FieldId Field) {
437
446
void ClangDocBitcodeWriter::emitBlock (const TypeInfo &T) {
438
447
StreamSubBlockGuard Block (Stream, BI_TYPE_BLOCK_ID);
439
448
emitBlock (T.Type , FieldId::F_type);
449
+ emitRecord (T.IsBuiltIn , TYPE_IS_BUILTIN);
450
+ emitRecord (T.IsTemplate , TYPE_IS_TEMPLATE);
440
451
}
441
452
442
453
void ClangDocBitcodeWriter::emitBlock (const TypedefInfo &T) {
@@ -455,14 +466,14 @@ void ClangDocBitcodeWriter::emitBlock(const TypedefInfo &T) {
455
466
456
467
void ClangDocBitcodeWriter::emitBlock (const FieldTypeInfo &T) {
457
468
StreamSubBlockGuard Block (Stream, BI_FIELD_TYPE_BLOCK_ID);
458
- emitBlock (T. Type , FieldId::F_type );
469
+ emitBlock (static_cast <TypeInfo>(T) );
459
470
emitRecord (T.Name , FIELD_TYPE_NAME);
460
471
emitRecord (T.DefaultValue , FIELD_DEFAULT_VALUE);
461
472
}
462
473
463
474
void ClangDocBitcodeWriter::emitBlock (const MemberTypeInfo &T) {
464
475
StreamSubBlockGuard Block (Stream, BI_MEMBER_TYPE_BLOCK_ID);
465
- emitBlock (T. Type , FieldId::F_type );
476
+ emitBlock (static_cast <FieldTypeInfo>(T) );
466
477
emitRecord (T.Name , MEMBER_TYPE_NAME);
467
478
emitRecord (T.Access , MEMBER_TYPE_ACCESS);
468
479
for (const auto &CI : T.Description )
@@ -544,6 +555,7 @@ void ClangDocBitcodeWriter::emitBlock(const RecordInfo &I) {
544
555
StreamSubBlockGuard Block (Stream, BI_RECORD_BLOCK_ID);
545
556
emitRecord (I.USR , RECORD_USR);
546
557
emitRecord (I.Name , RECORD_NAME);
558
+ emitRecord (I.FullName , RECORD_FULLNAME);
547
559
emitRecord (I.Path , RECORD_PATH);
548
560
for (const auto &N : I.Namespace )
549
561
emitBlock (N, FieldId::F_namespace);
@@ -593,6 +605,7 @@ void ClangDocBitcodeWriter::emitBlock(const BaseRecordInfo &I) {
593
605
void ClangDocBitcodeWriter::emitBlock (const FunctionInfo &I) {
594
606
StreamSubBlockGuard Block (Stream, BI_FUNCTION_BLOCK_ID);
595
607
emitRecord (I.USR , FUNCTION_USR);
608
+ emitRecord (I.ProtoType , FUNCTION_PROTOTYPE);
596
609
emitRecord (I.Name , FUNCTION_NAME);
597
610
for (const auto &N : I.Namespace )
598
611
emitBlock (N, FieldId::F_namespace);
0 commit comments