@@ -30,49 +30,50 @@ struct RecordIdToIndexFunctor {
30
30
31
31
using AbbrevDsc = void (*)(std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev);
32
32
33
- static void AbbrevGen (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev,
34
- const std::initializer_list<llvm::BitCodeAbbrevOp> Ops) {
33
+ static void
34
+ generateAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev,
35
+ const std::initializer_list<llvm::BitCodeAbbrevOp> Ops) {
35
36
for (const auto &Op : Ops)
36
37
Abbrev->Add (Op);
37
38
}
38
39
39
- static void BoolAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
40
- AbbrevGen (Abbrev,
41
- {// 0. Boolean
42
- llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
43
- BitCodeConstants::BoolSize)});
40
+ static void genBoolAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
41
+ generateAbbrev (Abbrev,
42
+ {// 0. Boolean
43
+ llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
44
+ BitCodeConstants::BoolSize)});
44
45
}
45
46
46
- static void IntAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
47
- AbbrevGen (Abbrev,
48
- {// 0. Fixed-size integer
49
- llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
50
- BitCodeConstants::IntSize)});
47
+ static void genIntAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
48
+ generateAbbrev (Abbrev,
49
+ {// 0. Fixed-size integer
50
+ llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
51
+ BitCodeConstants::IntSize)});
51
52
}
52
53
53
- static void SymbolIDAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
54
- AbbrevGen (Abbrev,
55
- {// 0. Fixed-size integer (length of the sha1'd USR)
56
- llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
57
- BitCodeConstants::USRLengthSize),
58
- // 1. Fixed-size array of Char6 (USR)
59
- llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Array),
60
- llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
61
- BitCodeConstants::USRBitLengthSize)});
54
+ static void genSymbolIdAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
55
+ generateAbbrev (Abbrev,
56
+ {// 0. Fixed-size integer (length of the sha1'd USR)
57
+ llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
58
+ BitCodeConstants::USRLengthSize),
59
+ // 1. Fixed-size array of Char6 (USR)
60
+ llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Array),
61
+ llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
62
+ BitCodeConstants::USRBitLengthSize)});
62
63
}
63
64
64
- static void StringAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
65
- AbbrevGen (Abbrev,
66
- {// 0. Fixed-size integer (length of the following string)
67
- llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
68
- BitCodeConstants::StringLengthSize),
69
- // 1. The string blob
70
- llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Blob)});
65
+ static void genStringAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
66
+ generateAbbrev (Abbrev,
67
+ {// 0. Fixed-size integer (length of the following string)
68
+ llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
69
+ BitCodeConstants::StringLengthSize),
70
+ // 1. The string blob
71
+ llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Blob)});
71
72
}
72
73
73
74
// Assumes that the file will not have more than 65535 lines.
74
- static void LocationAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
75
- AbbrevGen (
75
+ static void genLocationAbbrev (std::shared_ptr<llvm::BitCodeAbbrev> &Abbrev) {
76
+ generateAbbrev (
76
77
Abbrev,
77
78
{// 0. Fixed-size integer (line number)
78
79
llvm::BitCodeAbbrevOp (llvm::BitCodeAbbrevOp::Fixed ,
@@ -140,67 +141,68 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
140
141
// There is no init-list constructor for the IndexedMap, so have to
141
142
// improvise
142
143
static const std::vector<std::pair<RecordId, RecordIdDsc>> Inits = {
143
- {VERSION, {" Version" , &IntAbbrev}},
144
- {COMMENT_KIND, {" Kind" , &StringAbbrev}},
145
- {COMMENT_TEXT, {" Text" , &StringAbbrev}},
146
- {COMMENT_NAME, {" Name" , &StringAbbrev}},
147
- {COMMENT_DIRECTION, {" Direction" , &StringAbbrev}},
148
- {COMMENT_PARAMNAME, {" ParamName" , &StringAbbrev}},
149
- {COMMENT_CLOSENAME, {" CloseName" , &StringAbbrev}},
150
- {COMMENT_SELFCLOSING, {" SelfClosing" , &BoolAbbrev}},
151
- {COMMENT_EXPLICIT, {" Explicit" , &BoolAbbrev}},
152
- {COMMENT_ATTRKEY, {" AttrKey" , &StringAbbrev}},
153
- {COMMENT_ATTRVAL, {" AttrVal" , &StringAbbrev}},
154
- {COMMENT_ARG, {" Arg" , &StringAbbrev}},
155
- {FIELD_TYPE_NAME, {" Name" , &StringAbbrev}},
156
- {FIELD_DEFAULT_VALUE, {" DefaultValue" , &StringAbbrev}},
157
- {MEMBER_TYPE_NAME, {" Name" , &StringAbbrev}},
158
- {MEMBER_TYPE_ACCESS, {" Access" , &IntAbbrev}},
159
- {MEMBER_TYPE_IS_STATIC, {" IsStatic" , &BoolAbbrev}},
160
- {NAMESPACE_USR, {" USR" , &SymbolIDAbbrev}},
161
- {NAMESPACE_NAME, {" Name" , &StringAbbrev}},
162
- {NAMESPACE_PATH, {" Path" , &StringAbbrev}},
163
- {ENUM_USR, {" USR" , &SymbolIDAbbrev}},
164
- {ENUM_NAME, {" Name" , &StringAbbrev}},
165
- {ENUM_DEFLOCATION, {" DefLocation" , &LocationAbbrev}},
166
- {ENUM_LOCATION, {" Location" , &LocationAbbrev}},
167
- {ENUM_SCOPED, {" Scoped" , &BoolAbbrev}},
168
- {ENUM_VALUE_NAME, {" Name" , &StringAbbrev}},
169
- {ENUM_VALUE_VALUE, {" Value" , &StringAbbrev}},
170
- {ENUM_VALUE_EXPR, {" Expr" , &StringAbbrev}},
171
- {RECORD_USR, {" USR" , &SymbolIDAbbrev}},
172
- {RECORD_NAME, {" Name" , &StringAbbrev}},
173
- {RECORD_PATH, {" Path" , &StringAbbrev}},
174
- {RECORD_DEFLOCATION, {" DefLocation" , &LocationAbbrev}},
175
- {RECORD_LOCATION, {" Location" , &LocationAbbrev}},
176
- {RECORD_TAG_TYPE, {" TagType" , &IntAbbrev}},
177
- {RECORD_IS_TYPE_DEF, {" IsTypeDef" , &BoolAbbrev}},
178
- {BASE_RECORD_USR, {" USR" , &SymbolIDAbbrev}},
179
- {BASE_RECORD_NAME, {" Name" , &StringAbbrev}},
180
- {BASE_RECORD_PATH, {" Path" , &StringAbbrev}},
181
- {BASE_RECORD_TAG_TYPE, {" TagType" , &IntAbbrev}},
182
- {BASE_RECORD_IS_VIRTUAL, {" IsVirtual" , &BoolAbbrev}},
183
- {BASE_RECORD_ACCESS, {" Access" , &IntAbbrev}},
184
- {BASE_RECORD_IS_PARENT, {" IsParent" , &BoolAbbrev}},
185
- {FUNCTION_USR, {" USR" , &SymbolIDAbbrev}},
186
- {FUNCTION_NAME, {" Name" , &StringAbbrev}},
187
- {FUNCTION_DEFLOCATION, {" DefLocation" , &LocationAbbrev}},
188
- {FUNCTION_LOCATION, {" Location" , &LocationAbbrev}},
189
- {FUNCTION_ACCESS, {" Access" , &IntAbbrev}},
190
- {FUNCTION_IS_METHOD, {" IsMethod" , &BoolAbbrev}},
191
- {FUNCTION_IS_STATIC, {" IsStatic" , &BoolAbbrev}},
192
- {REFERENCE_USR, {" USR" , &SymbolIDAbbrev}},
193
- {REFERENCE_NAME, {" Name" , &StringAbbrev}},
194
- {REFERENCE_QUAL_NAME, {" QualName" , &StringAbbrev}},
195
- {REFERENCE_TYPE, {" RefType" , &IntAbbrev}},
196
- {REFERENCE_PATH, {" Path" , &StringAbbrev}},
197
- {REFERENCE_FIELD, {" Field" , &IntAbbrev}},
198
- {TEMPLATE_PARAM_CONTENTS, {" Contents" , &StringAbbrev}},
199
- {TEMPLATE_SPECIALIZATION_OF, {" SpecializationOf" , &SymbolIDAbbrev}},
200
- {TYPEDEF_USR, {" USR" , &SymbolIDAbbrev}},
201
- {TYPEDEF_NAME, {" Name" , &StringAbbrev}},
202
- {TYPEDEF_DEFLOCATION, {" DefLocation" , &LocationAbbrev}},
203
- {TYPEDEF_IS_USING, {" IsUsing" , &BoolAbbrev}}};
144
+ {VERSION, {" Version" , &genIntAbbrev}},
145
+ {COMMENT_KIND, {" Kind" , &genStringAbbrev}},
146
+ {COMMENT_TEXT, {" Text" , &genStringAbbrev}},
147
+ {COMMENT_NAME, {" Name" , &genStringAbbrev}},
148
+ {COMMENT_DIRECTION, {" Direction" , &genStringAbbrev}},
149
+ {COMMENT_PARAMNAME, {" ParamName" , &genStringAbbrev}},
150
+ {COMMENT_CLOSENAME, {" CloseName" , &genStringAbbrev}},
151
+ {COMMENT_SELFCLOSING, {" SelfClosing" , &genBoolAbbrev}},
152
+ {COMMENT_EXPLICIT, {" Explicit" , &genBoolAbbrev}},
153
+ {COMMENT_ATTRKEY, {" AttrKey" , &genStringAbbrev}},
154
+ {COMMENT_ATTRVAL, {" AttrVal" , &genStringAbbrev}},
155
+ {COMMENT_ARG, {" Arg" , &genStringAbbrev}},
156
+ {FIELD_TYPE_NAME, {" Name" , &genStringAbbrev}},
157
+ {FIELD_DEFAULT_VALUE, {" DefaultValue" , &genStringAbbrev}},
158
+ {MEMBER_TYPE_NAME, {" Name" , &genStringAbbrev}},
159
+ {MEMBER_TYPE_ACCESS, {" Access" , &genIntAbbrev}},
160
+ {MEMBER_TYPE_IS_STATIC, {" IsStatic" , &genBoolAbbrev}},
161
+ {NAMESPACE_USR, {" USR" , &genSymbolIdAbbrev}},
162
+ {NAMESPACE_NAME, {" Name" , &genStringAbbrev}},
163
+ {NAMESPACE_PATH, {" Path" , &genStringAbbrev}},
164
+ {ENUM_USR, {" USR" , &genSymbolIdAbbrev}},
165
+ {ENUM_NAME, {" Name" , &genStringAbbrev}},
166
+ {ENUM_DEFLOCATION, {" DefLocation" , &genLocationAbbrev}},
167
+ {ENUM_LOCATION, {" Location" , &genLocationAbbrev}},
168
+ {ENUM_SCOPED, {" Scoped" , &genBoolAbbrev}},
169
+ {ENUM_VALUE_NAME, {" Name" , &genStringAbbrev}},
170
+ {ENUM_VALUE_VALUE, {" Value" , &genStringAbbrev}},
171
+ {ENUM_VALUE_EXPR, {" Expr" , &genStringAbbrev}},
172
+ {RECORD_USR, {" USR" , &genSymbolIdAbbrev}},
173
+ {RECORD_NAME, {" Name" , &genStringAbbrev}},
174
+ {RECORD_PATH, {" Path" , &genStringAbbrev}},
175
+ {RECORD_DEFLOCATION, {" DefLocation" , &genLocationAbbrev}},
176
+ {RECORD_LOCATION, {" Location" , &genLocationAbbrev}},
177
+ {RECORD_TAG_TYPE, {" TagType" , &genIntAbbrev}},
178
+ {RECORD_IS_TYPE_DEF, {" IsTypeDef" , &genBoolAbbrev}},
179
+ {BASE_RECORD_USR, {" USR" , &genSymbolIdAbbrev}},
180
+ {BASE_RECORD_NAME, {" Name" , &genStringAbbrev}},
181
+ {BASE_RECORD_PATH, {" Path" , &genStringAbbrev}},
182
+ {BASE_RECORD_TAG_TYPE, {" TagType" , &genIntAbbrev}},
183
+ {BASE_RECORD_IS_VIRTUAL, {" IsVirtual" , &genBoolAbbrev}},
184
+ {BASE_RECORD_ACCESS, {" Access" , &genIntAbbrev}},
185
+ {BASE_RECORD_IS_PARENT, {" IsParent" , &genBoolAbbrev}},
186
+ {FUNCTION_USR, {" USR" , &genSymbolIdAbbrev}},
187
+ {FUNCTION_NAME, {" Name" , &genStringAbbrev}},
188
+ {FUNCTION_DEFLOCATION, {" DefLocation" , &genLocationAbbrev}},
189
+ {FUNCTION_LOCATION, {" Location" , &genLocationAbbrev}},
190
+ {FUNCTION_ACCESS, {" Access" , &genIntAbbrev}},
191
+ {FUNCTION_IS_METHOD, {" IsMethod" , &genBoolAbbrev}},
192
+ {FUNCTION_IS_STATIC, {" IsStatic" , &genBoolAbbrev}},
193
+ {REFERENCE_USR, {" USR" , &genSymbolIdAbbrev}},
194
+ {REFERENCE_NAME, {" Name" , &genStringAbbrev}},
195
+ {REFERENCE_QUAL_NAME, {" QualName" , &genStringAbbrev}},
196
+ {REFERENCE_TYPE, {" RefType" , &genIntAbbrev}},
197
+ {REFERENCE_PATH, {" Path" , &genStringAbbrev}},
198
+ {REFERENCE_FIELD, {" Field" , &genIntAbbrev}},
199
+ {TEMPLATE_PARAM_CONTENTS, {" Contents" , &genStringAbbrev}},
200
+ {TEMPLATE_SPECIALIZATION_OF,
201
+ {" SpecializationOf" , &genSymbolIdAbbrev}},
202
+ {TYPEDEF_USR, {" USR" , &genSymbolIdAbbrev}},
203
+ {TYPEDEF_NAME, {" Name" , &genStringAbbrev}},
204
+ {TYPEDEF_DEFLOCATION, {" DefLocation" , &genLocationAbbrev}},
205
+ {TYPEDEF_IS_USING, {" IsUsing" , &genBoolAbbrev}}};
204
206
assert (Inits.size () == RecordIdCount);
205
207
for (const auto &Init : Inits) {
206
208
RecordIdNameMap[Init.first ] = Init.second ;
@@ -327,7 +329,7 @@ void ClangDocBitcodeWriter::emitAbbrev(RecordId ID, BlockId Block) {
327
329
328
330
void ClangDocBitcodeWriter::emitRecord (const SymbolID &Sym, RecordId ID) {
329
331
assert (RecordIdNameMap[ID] && " Unknown RecordId." );
330
- assert (RecordIdNameMap[ID].Abbrev == &SymbolIDAbbrev &&
332
+ assert (RecordIdNameMap[ID].Abbrev == &genSymbolIdAbbrev &&
331
333
" Abbrev type mismatch." );
332
334
if (!prepRecordData (ID, Sym != EmptySID))
333
335
return ;
@@ -339,7 +341,7 @@ void ClangDocBitcodeWriter::emitRecord(const SymbolID &Sym, RecordId ID) {
339
341
340
342
void ClangDocBitcodeWriter::emitRecord (llvm::StringRef Str, RecordId ID) {
341
343
assert (RecordIdNameMap[ID] && " Unknown RecordId." );
342
- assert (RecordIdNameMap[ID].Abbrev == &StringAbbrev &&
344
+ assert (RecordIdNameMap[ID].Abbrev == &genStringAbbrev &&
343
345
" Abbrev type mismatch." );
344
346
if (!prepRecordData (ID, !Str.empty ()))
345
347
return ;
@@ -350,7 +352,7 @@ void ClangDocBitcodeWriter::emitRecord(llvm::StringRef Str, RecordId ID) {
350
352
351
353
void ClangDocBitcodeWriter::emitRecord (const Location &Loc, RecordId ID) {
352
354
assert (RecordIdNameMap[ID] && " Unknown RecordId." );
353
- assert (RecordIdNameMap[ID].Abbrev == &LocationAbbrev &&
355
+ assert (RecordIdNameMap[ID].Abbrev == &genLocationAbbrev &&
354
356
" Abbrev type mismatch." );
355
357
if (!prepRecordData (ID, true ))
356
358
return ;
@@ -364,7 +366,8 @@ void ClangDocBitcodeWriter::emitRecord(const Location &Loc, RecordId ID) {
364
366
365
367
void ClangDocBitcodeWriter::emitRecord (bool Val, RecordId ID) {
366
368
assert (RecordIdNameMap[ID] && " Unknown RecordId." );
367
- assert (RecordIdNameMap[ID].Abbrev == &BoolAbbrev && " Abbrev type mismatch." );
369
+ assert (RecordIdNameMap[ID].Abbrev == &genBoolAbbrev &&
370
+ " Abbrev type mismatch." );
368
371
if (!prepRecordData (ID, Val))
369
372
return ;
370
373
Record.push_back (Val);
@@ -373,7 +376,8 @@ void ClangDocBitcodeWriter::emitRecord(bool Val, RecordId ID) {
373
376
374
377
void ClangDocBitcodeWriter::emitRecord (int Val, RecordId ID) {
375
378
assert (RecordIdNameMap[ID] && " Unknown RecordId." );
376
- assert (RecordIdNameMap[ID].Abbrev == &IntAbbrev && " Abbrev type mismatch." );
379
+ assert (RecordIdNameMap[ID].Abbrev == &genIntAbbrev &&
380
+ " Abbrev type mismatch." );
377
381
if (!prepRecordData (ID, Val))
378
382
return ;
379
383
// FIXME: Assert that the integer is of the appropriate size.
@@ -383,7 +387,8 @@ void ClangDocBitcodeWriter::emitRecord(int Val, RecordId ID) {
383
387
384
388
void ClangDocBitcodeWriter::emitRecord (unsigned Val, RecordId ID) {
385
389
assert (RecordIdNameMap[ID] && " Unknown RecordId." );
386
- assert (RecordIdNameMap[ID].Abbrev == &IntAbbrev && " Abbrev type mismatch." );
390
+ assert (RecordIdNameMap[ID].Abbrev == &genIntAbbrev &&
391
+ " Abbrev type mismatch." );
387
392
if (!prepRecordData (ID, Val))
388
393
return ;
389
394
assert (Val < (1U << BitCodeConstants::IntSize));
0 commit comments