aboutsummaryrefslogtreecommitdiff
path: root/toolchain/linux_trampolines/IWYU_mapping.imp
blob: 3a982038b843184ce4e7090d6ed2673d6b0d59cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
[
  { include: ["<__algorithm/all_of.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/any_of.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/copy.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/copy_n.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/count.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/equal.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/equal_range.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/fill.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/fill_n.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/find.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/find_if.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/is_sorted.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/lower_bound.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/max.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/max_element.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/min.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/min_element.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/minmax.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/move.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/remove.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/remove_if.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/reverse.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/search.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/sort.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/stable_sort.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/unique.h>", "private", "<algorithm>", "public"] },
  { include: ["<__algorithm/upper_bound.h>", "private", "<algorithm>", "public"] },

  { symbol: ["std::swap", "private", "<algorithm>", "public"] },
  { symbol: ["std::swap", "private", "<utility>", "public"] },
  { symbol: ["std::swap", "private", "<string_view>", "public"] },

  { include: ["<__chrono/duration.h>", "private", "<chrono>", "public"] },
  { include: ["<__chrono/steady_clock.h>", "private", "<chrono>", "public"] },
  { include: ["<__chrono/time_point.h>", "private", "<chrono>", "public"] },

  { symbol: ["INT32_MAX", "private", "<climits>", "public"]},

  { symbol: ["abs", "private", "<cmath>", "public"]},
  { symbol: ["fabs", "private", "<cmath>", "public"]},
  { symbol: ["sqrt", "private", "<cmath>", "public"]},

  { symbol: ["std::abs", "private", "<cmath>", "public"]},
  { symbol: ["std::abs", "private", "<cstdlib>", "public"]},

  # Prefer cstring over string.h for memcpy and memcmp.
  { symbol: ["memcpy", "private", "<cstring>", "public"]},
  { symbol: ["memcmp", "private", "<cstring>", "public"]},
  { symbol: ["std::memcpy", "private", "<cstring>", "public"]},
  { symbol: ["std::memcmp", "private", "<cstring>", "public"]},

  # The first of these is the preferred include, but the others are acceptable.
  { symbol: ["size_t", "private", "<cstddef>", "public"]},
  { symbol: ["size_t", "private", "<cstdio>", "public"]},
  { symbol: ["size_t", "private", "<cstdlib>", "public"]},
  { symbol: ["size_t", "private", "<cstring>", "public"]},
  { symbol: ["size_t", "private", "<ctime>", "public"]},
  { symbol: ["size_t", "private", "<cuchar>", "public"]},
  { symbol: ["size_t", "private", "<cwchar>", "public"]},

  { symbol: ["std::size_t", "private", "<cstddef>", "public"]},
  { symbol: ["std::size_t", "private", "<cstdio>", "public"]},
  { symbol: ["std::size_t", "private", "<cstdlib>", "public"]},
  { symbol: ["std::size_t", "private", "<cstring>", "public"]},
  { symbol: ["std::size_t", "private", "<ctime>", "public"]},
  { symbol: ["std::size_t", "private", "<cuchar>", "public"]},
  { symbol: ["std::size_t", "private", "<cwchar>", "public"]},

  { symbol: ["std::size", "private", "<array>", "public"]},
  { symbol: ["std::size", "private", "<deque>", "public"]},
  { symbol: ["std::size", "private", "<forward_list>", "public"]},
  { symbol: ["std::size", "private", "<iterator>", "public"]},
  { symbol: ["std::size", "private", "<list>", "public"]},
  { symbol: ["std::size", "private", "<map>", "public"]},
  { symbol: ["std::size", "private", "<regex>", "public"]},
  { symbol: ["std::size", "private", "<set>", "public"]},
  { symbol: ["std::size", "private", "<span>", "public"]},
  { symbol: ["std::size", "private", "<string>", "public"]},
  { symbol: ["std::size", "private", "<string_view>", "public"]},
  { symbol: ["std::size", "private", "<unordered_map>", "public"]},
  { symbol: ["std::size", "private", "<unordered_set>", "public"]},
  { symbol: ["std::size", "private", "<vector>", "public"]},

  { symbol: ["int8_t", "private", "<cstdint>", "public"]},
  { symbol: ["int16_t", "private", "<cstdint>", "public"]},
  { symbol: ["int32_t", "private", "<cstdint>", "public"]},
  { symbol: ["int64_t", "private", "<cstdint>", "public"]},
  { symbol: ["uint8_t", "private", "<cstdint>", "public"]},
  { symbol: ["uint16_t", "private", "<cstdint>", "public"]},
  { symbol: ["uint32_t", "private", "<cstdint>", "public"]},
  { symbol: ["uint64_t", "private", "<cstdint>", "public"]},

  { include: ["<__stddef_max_align_t.h>", "private", "<cstddef>", "public"] },

  { symbol: ["FILE", "private", "<cstdio>", "public"]},

  { include: ["<__functional/binary_function.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/binary_negate.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/binder1st.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/binder2nd.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/bind_front.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/bind.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/default_searcher.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/function.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/hash.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/identity.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/invoke.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/is_transparent.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/mem_fn.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/mem_fun_ref.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/not_fn.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/operations.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/perfect_forward.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/pointer_to_binary_function.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/pointer_to_unary_function.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/ranges_operations.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/reference_wrapper.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/unary_function.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/unary_negate.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/unwrap_ref.h>", "private", "<functional>", "public"] },
  { include: ["<__functional/weak_result_type.h>", "private", "<functional>", "public"] },

  { include: ["<__iterator/access.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/advance.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/back_insert_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/bounded_iter.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/common_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/concepts.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/counted_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/data.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/default_sentinel.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/distance.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/empty.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/erase_if_container.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/front_insert_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/incrementable_traits.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/indirectly_comparable.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/insert_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/istreambuf_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/istream_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/iterator_traits.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/iter_move.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/iter_swap.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/mergeable.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/move_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/move_sentinel.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/next.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/ostreambuf_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/ostream_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/permutable.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/prev.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/projected.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/readable_traits.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/reverse_access.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/reverse_iterator.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/sortable.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/unreachable_sentinel.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/wrap_iter.h>", "private", "<iterator>", "public"] },

  # The first of these is the preferred include, but the others are acceptable.
  { include: ["<__iterator/size.h>", "private", "<array>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<deque>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<forward_list>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<iterator>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<list>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<map>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<regex>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<set>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<string>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<string_view>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<unordered_map>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<unordered_set>", "public"] },
  { include: ["<__iterator/size.h>", "private", "<vector>", "public"] },

  # std::size is available from all of these
  { symbol: ["std::size", "private", "<iterator>", "public"] },
  { symbol: ["std::size", "private", "<array>", "public"] },
  { symbol: ["std::size", "private", "<deque>", "public"] },
  { symbol: ["std::size", "private", "<forward_list>", "public"] },
  { symbol: ["std::size", "private", "<list>", "public"] },
  { symbol: ["std::size", "private", "<map>", "public"] },
  { symbol: ["std::size", "private", "<regex>", "public"] },
  { symbol: ["std::size", "private", "<set>", "public"] },
  { symbol: ["std::size", "private", "<string>", "public"] },
  { symbol: ["std::size", "private", "<string_view>", "public"] },
  { symbol: ["std::size", "private", "<unordered_map>", "public"] },
  { symbol: ["std::size", "private", "<unordered_set>", "public"] },
  { symbol: ["std::size", "private", "<vector>", "public"] },

  # std::data is available from all of these
  { symbol: ["std::data", "private", "<iterator>", "public"] },
  { symbol: ["std::data", "private", "<array>", "public"] },
  { symbol: ["std::data", "private", "<deque>", "public"] },
  { symbol: ["std::data", "private", "<forward_list>", "public"] },
  { symbol: ["std::data", "private", "<list>", "public"] },
  { symbol: ["std::data", "private", "<map>", "public"] },
  { symbol: ["std::data", "private", "<regex>", "public"] },
  { symbol: ["std::data", "private", "<set>", "public"] },
  { symbol: ["std::data", "private", "<string>", "public"] },
  { symbol: ["std::data", "private", "<string_view>", "public"] },
  { symbol: ["std::data", "private", "<unordered_map>", "public"] },
  { symbol: ["std::data", "private", "<unordered_set>", "public"] },
  { symbol: ["std::data", "private", "<vector>", "public"] },

  { include: ["<__locale>", "private", "<locale>", "public"] },

  { include: ["<__numeric/accumulate.h>", "private", "<numeric>", "public"] },
  { include: ["<__numeric/iota.h>", "private", "<numeric>", "public"] },

  { include: ["<__memory/shared_ptr.h>", "private", "<memory>", "public"] },
  { include: ["<__memory/unique_ptr.h>", "private", "<memory>", "public"] },

  { include: ["<__random/random_device.h>", "private", "<random>", "public"] },

  { include: ["<__tuple>", "private", "<tuple>", "public"] },

  { include: ["<__tree>", "private", "<set>", "public"] },

  { symbol: ["std::istringstream", "private", "<sstream>", "public"] },
  { symbol: ["std::ostringstream", "private", "<sstream>", "public"] },
  { symbol: ["std::stringstream", "private", "<sstream>", "public"] },
  { symbol: ["std::stringbuf", "private", "<sstream>", "public"] },
  { symbol: ["std::basic_istringstream", "private", "<sstream>", "public"] },
  { symbol: ["std::basic_ostringstream", "private", "<sstream>", "public"] },
  { symbol: ["std::basic_stringstream", "private", "<sstream>", "public"] },
  { symbol: ["std::basic_stringbuf", "private", "<sstream>", "public"] },

  { symbol: ["va_list", "private", "<stdarg.h>", "public"] },

  { symbol: ["std::string", "private", "<string>", "public"] },

  { include: ["<__fwd/string_view.h>", "private", "<string_view>", "public"] },

  { include: ["<__hash_table>", "private", "<unordered_map>", "public"] },

  { include: ["<__utility/as_const.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/cmp.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/__decay_copy.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/declval.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/exchange.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/forward.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/in_place.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/integer_sequence.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/move.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/pair.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/piecewise_construct.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/rel_ops.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/swap.h>", "private", "<utility>", "public"] },
  { include: ["<__utility/to_underlying.h>", "private", "<utility>", "public"] },


  { include: ["<__type_traits/add_const.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/add_cv.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/add_lvalue_reference.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/add_pointer.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/add_rvalue_reference.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/add_volatile.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/aligned_storage.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/aligned_union.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/alignment_of.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/apply_cv.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/common_reference.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/common_type.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/conditional.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/conjunction.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/copy_cv.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/copy_cvref.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/decay.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/disjunction.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/enable_if.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/extent.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/has_unique_object_representation.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/has_virtual_destructor.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/integral_constant.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_abstract.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_aggregate.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_arithmetic.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_array.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_assignable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_base_of.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_bounded_array.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_callable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_class.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_compound.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_constant_evaluated.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_const.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_convertible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_copy_assignable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_copy_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_core_convertible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_default_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_destructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_empty.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_enum.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_final.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_floating_point.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_function.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_fundamental.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_integral.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_literal_type.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_member_function_pointer.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_member_object_pointer.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_member_pointer.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_move_assignable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_move_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_nothrow_assignable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_nothrow_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_nothrow_convertible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_nothrow_copy_assignable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_nothrow_copy_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_nothrow_default_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_nothrow_destructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_nothrow_move_assignable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_nothrow_move_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_null_pointer.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_object.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_pod.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_pointer.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_polymorphic.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_primary_template.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_referenceable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_reference.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_reference_wrapper.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_same.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_scalar.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_scoped_enum.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_signed.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_signed_integer.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_standard_layout.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivial.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivially_assignable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivially_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivially_copyable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivially_copy_assignable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivially_copy_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivially_default_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivially_destructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivially_move_assignable.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_trivially_move_constructible.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_unbounded_array.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_union.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_unsigned.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_unsigned_integer.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_valid_expansion.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_void.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/is_volatile.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/lazy.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/make_32_64_or_128_bit.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/make_signed.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/make_unsigned.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/nat.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/negation.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/promote.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/rank.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/remove_all_extents.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/remove_const.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/remove_cv.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/remove_cvref.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/remove_extent.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/remove_pointer.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/remove_reference.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/remove_volatile.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/type_identity.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/type_list.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/underlying_type.h>", "private", "<type_traits>", "public"] },
  { include: ["<__type_traits/void_t.h>", "private", "<type_traits>", "public"] },

  { symbol: ["std::__bit_reference", "private", "<vector>", "public"] },
  { include: ["<__bit_reference>", "private",  "<vector>", "public"] },

  { include: ["<scripts/pnglibconf.h.prebuilt>", "private", "<pngconf.h>", "public"] },

  # Without these, IWYU won't accept the C++ wrappers and throws
  # a mysterious "cyclical import" error.
  # https://github.com/include-what-you-use/include-what-you-use/blob/4c0f39615982c57a9cb313c971c6f45fca1cc1fe/iwyu_include_picker.cc#L573
  { include: ["<assert.h>", "public", "<cassert>", "public"] },
  { include: ["<complex.h>", "public", "<ccomplex>", "public"] },
  { include: ["<ctype.h>", "public", "<cctype>", "public"] },
  { include: ["<errno.h>", "public", "<cerrno>", "public"] },
  { include: ["<fenv.h>", "public", "<cfenv>", "public"] },
  { include: ["<float.h>", "public", "<cfloat>", "public"] },
  { include: ["<inttypes.h>", "public", "<cinttypes>", "public"] },
  { include: ["<iso646.h>", "public", "<ciso646>", "public"] },
  { include: ["<limits.h>", "public", "<climits>", "public"] },
  { include: ["<locale.h>", "public", "<clocale>", "public"] },
  { include: ["<math.h>", "public", "<cmath>", "public"] },
  { include: ["<setjmp.h>", "public", "<csetjmp>", "public"] },
  { include: ["<signal.h>", "public", "<csignal>", "public"] },
  { include: ["<stdalign.h>", "public", "<cstdalign>", "public"] },
  { include: ["<stdarg.h>", "public", "<cstdarg>", "public"] },
  { include: ["<stdbool.h>", "public", "<cstdbool>", "public"] },
  { include: ["<stddef.h>", "public", "<cstddef>", "public"] },
  { include: ["<stdint.h>", "public", "<cstdint>", "public"] },
  { include: ["<stdio.h>", "public", "<cstdio>", "public"] },
  { include: ["<stdlib.h>", "public", "<cstdlib>", "public"] },
  { include: ["<string.h>", "public", "<cstring>", "public"] },
  { include: ["<tgmath.h>", "public", "<ctgmath>", "public"] },
  { include: ["<time.h>", "public", "<ctime>", "public"] },
  { include: ["<uchar.h>", "public", "<cuchar>", "public"] },
  { include: ["<wchar.h>", "public", "<cwchar>", "public"] },
  { include: ["<wctype.h>", "public", "<cwctype>", "public"] },

  # From https://github.com/include-what-you-use/include-what-you-use/blob/4c0f39615982c57a9cb313c971c6f45fca1cc1fe/iwyu_include_picker.cc#L327
  { symbol: ["std::allocator", "private", "<memory>", "public"] },
  { symbol: ["std::allocator", "private", "<string>", "public"] },
  { symbol: ["std::allocator", "private", "<vector>", "public"] },
  { symbol: ["std::allocator", "private", "<map>", "public"] },
  { symbol: ["std::allocator", "private", "<set>", "public"] },
  { symbol: ["std::char_traits", "private", "<string>", "public"] },
  { symbol: ["std::char_traits", "private", "<ostream>", "public"] },
  { symbol: ["std::char_traits", "private", "<istream>", "public"] },

  { symbol: ["std::time_t", "private", "<ctime>", "public"] },
  { symbol: ["time_t", "private", "<ctime>", "public"] },
  { symbol: ["tm", "private", "<ctime>", "public"] },

  # We are pretty forgiving with iostream headers. If we specify
  # any of them, that is generally sufficient.
  # https://github.com/include-what-you-use/include-what-you-use/blob/4c0f39615982c57a9cb313c971c6f45fca1cc1fe/iwyu_include_picker.cc#L995
  {include: ["<ios>", "public", "<istream>", "public"] },
  {include: ["<ios>", "public", "<ostream>", "public"] },
  {include: ["<iosfwd>", "public", "<ios>", "public"] },
  {include: ["<iosfwd>", "public", "<streambuf>", "public"] },
  {include: ["<istream>", "public", "<fstream>", "public"] },
  {include: ["<istream>", "public", "<iostream>", "public"] },
  {include: ["<istream>", "public", "<sstream>", "public"] },
  {include: ["<ostream>", "public", "<fstream>", "public"] },
  {include: ["<ostream>", "public", "<iostream>", "public"] },
  {include: ["<ostream>", "public", "<istream>", "public"] },
  {include: ["<ostream>", "public", "<sstream>", "public"] },
  {include: ["<streambuf>", "public", "<ios>", "public"] },

  { symbol: ["inflate", "private", "\"zlib.h\"", "public"] },
  { symbol: ["inflateEnd", "private", "\"zlib.h\"", "public"] },

  { include: ["<asm/errno-base.h>", "private", "<errno.h>", "public"] },

  # Pretend SK_DEBUG is defined in SkDebug.h
  { symbol: ["SK_DEBUG", "private", "\"include/private/base/SkDebug.h\"", "public"] },
  { symbol: ["SK_DEBUG", "private", "\"include/private/base/SkLoadUserConfig.h\"", "public"] },

  # Pretend SK_GANESH is defined in any of these
  { symbol: ["SK_GANESH", "private", "\"include/private/base/SkLoadUserConfig.h\"", "public"] },
  { symbol: ["SK_GANESH", "private", "\"include/core/SkTypes.h\"", "public"] },

  { symbol: ["SkScalar", "private", "\"include/core/SkScalar.h\"", "public"] },

  # IWYU seems to get confused on where the namespace sktext is "defined". Any files in
  # this list are ok.
  { symbol: ["sktext", "private", "\"src/text/StrikeForGPU.h\"", "public"] },
  { symbol: ["sktext", "private", "\"src/text/GlyphRun.h\"", "public"] },

  # IWYU gets confused where namespace skia_private is "defined". Start a list, but figure
  # out if this can be done with a glob.
  { symbol: ["skia_private", "private", "\"include/private/base/SkTemplates.h\"", "public"] },
  { symbol: ["skia_private", "private", "\"include/private/base/SkTArray.h\"", "public"] },
  { symbol: ["skia_private", "private", "\"src/core/SkTHash.h\"", "public"] },
  { symbol: ["skia_private", "private", "\"src/core/SkTraceEvent.h\"", "public"] },

  { include: ["\"modules/skcms/src/skcms_public.h\"", "private", "\"modules/skcms/skcms.h\"", "public"] },

  { include: ["\"jmorecfg.h\"", "private", "\"jpeglib.h\"", "public"] },
]