]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/libcxx/include/module.modulemap
Apply libc++ fix for <ranges> not compiling at all
[FreeBSD/FreeBSD.git] / contrib / llvm-project / libcxx / include / module.modulemap
1 // define the module for __config outside of the top level 'std' module
2 // since __config may be included from C headers which may create an
3 // include cycle.
4 module std_config [system] [extern_c] {
5   textual header "__config"
6   textual header "__config_site"
7 }
8
9 module std [system] {
10   export std_config
11   // FIXME: The standard does not require that each of these submodules
12   // re-exports its imported modules. We should provide an alternative form of
13   // export that issues a warning if a name from the submodule is used, and
14   // use that to provide a 'strict mode' for libc++.
15
16   // Deprecated C-compatibility headers. These can all be included from within
17   // an 'extern "C"' context.
18   module depr [extern_c] {
19     // <assert.h> provided by C library.
20     module ctype_h {
21       header "ctype.h"
22       export *
23     }
24     module errno_h {
25       header "errno.h"
26       export *
27     }
28     module fenv_h {
29       header "fenv.h"
30       export *
31     }
32     // <float.h> provided by compiler or C library.
33     module inttypes_h {
34       header "inttypes.h"
35       export stdint_h
36       export *
37     }
38     // <iso646.h> provided by compiler.
39     // <limits.h> provided by compiler or C library.
40     module locale_h {
41       header "locale.h"
42       export *
43     }
44     module math_h {
45       header "math.h"
46       export *
47     }
48     module setjmp_h {
49       header "setjmp.h"
50       export *
51     }
52     // FIXME: <stdalign.h> is missing.
53     // <signal.h> provided by C library.
54     // <stdarg.h> provided by compiler.
55     // <stdbool.h> provided by compiler.
56     module stddef_h {
57       // <stddef.h>'s __need_* macros require textual inclusion.
58       textual header "stddef.h"
59     }
60     module stdint_h {
61       header "stdint.h"
62       export *
63       // FIXME: This module only exists on OS X and for some reason the
64       // wildcard above doesn't export it.
65       export Darwin.C.stdint
66     }
67     module stdio_h {
68       // <stdio.h>'s __need_* macros require textual inclusion.
69       textual header "stdio.h"
70       export *
71       export Darwin.C.stdio
72     }
73     module stdlib_h {
74       // <stdlib.h>'s __need_* macros require textual inclusion.
75       textual header "stdlib.h"
76       export *
77     }
78     module string_h {
79       header "string.h"
80       export *
81     }
82     // FIXME: <uchar.h> is missing.
83     // <time.h> provided by C library.
84     module wchar_h {
85       // <wchar.h>'s __need_* macros require textual inclusion.
86       textual header "wchar.h"
87       export *
88     }
89     module wctype_h {
90       header "wctype.h"
91       export *
92     }
93   }
94
95   // <complex.h> and <tgmath.h> are not C headers in any real sense, do not
96   // allow their use in extern "C" contexts.
97   module complex_h {
98     header "complex.h"
99     export ccomplex
100     export *
101   }
102   module tgmath_h {
103     header "tgmath.h"
104     export ccomplex
105     export cmath
106     export *
107   }
108
109   // C compatibility headers.
110   module compat {
111     module cassert {
112       // <cassert>'s use of NDEBUG requires textual inclusion.
113       textual header "cassert"
114     }
115     module ccomplex {
116       header "ccomplex"
117       export complex
118       export *
119     }
120     module cctype {
121       header "cctype"
122       export *
123     }
124     module cerrno {
125       header "cerrno"
126       export *
127     }
128     module cfenv {
129       header "cfenv"
130       export *
131     }
132     module cfloat {
133       header "cfloat"
134       export *
135     }
136     module cinttypes {
137       header "cinttypes"
138       export cstdint
139       export *
140     }
141     module ciso646 {
142       header "ciso646"
143       export *
144     }
145     module climits {
146       header "climits"
147       export *
148     }
149     module clocale {
150       header "clocale"
151       export *
152     }
153     module cmath {
154       header "cmath"
155       export *
156     }
157     module csetjmp {
158       header "csetjmp"
159       export *
160     }
161     module csignal {
162       header "csignal"
163       export *
164     }
165     // FIXME: <cstdalign> is missing.
166     module cstdarg {
167       header "cstdarg"
168       export *
169     }
170     module cstdbool {
171       header "cstdbool"
172       export *
173     }
174     module cstddef {
175       header "cstddef"
176       export *
177     }
178     module cstdint {
179       header "cstdint"
180       export depr.stdint_h
181       export *
182     }
183     module cstdio {
184       header "cstdio"
185       export *
186     }
187     module cstdlib {
188       header "cstdlib"
189       export *
190     }
191     module cstring {
192       header "cstring"
193       export *
194     }
195     module ctgmath {
196       header "ctgmath"
197       export ccomplex
198       export cmath
199       export *
200     }
201     module ctime {
202       header "ctime"
203       export *
204     }
205     // FIXME: <cuchar> is missing.
206     module cwchar {
207       header "cwchar"
208       export depr.stdio_h
209       export *
210     }
211     module cwctype {
212       header "cwctype"
213       export *
214     }
215   }
216
217   module algorithm {
218     header "algorithm"
219     export initializer_list
220     export *
221
222     module __algorithm {
223       module adjacent_find            { private header "__algorithm/adjacent_find.h" }
224       module all_of                   { private header "__algorithm/all_of.h" }
225       module any_of                   { private header "__algorithm/any_of.h" }
226       module binary_search            { private header "__algorithm/binary_search.h" }
227       module clamp                    { private header "__algorithm/clamp.h" }
228       module comp                     { private header "__algorithm/comp.h" }
229       module comp_ref_type            { private header "__algorithm/comp_ref_type.h" }
230       module copy                     { private header "__algorithm/copy.h" }
231       module copy_backward            { private header "__algorithm/copy_backward.h" }
232       module copy_if                  { private header "__algorithm/copy_if.h" }
233       module copy_n                   { private header "__algorithm/copy_n.h" }
234       module count                    { private header "__algorithm/count.h" }
235       module count_if                 { private header "__algorithm/count_if.h" }
236       module equal                    { private header "__algorithm/equal.h" }
237       module equal_range              { private header "__algorithm/equal_range.h" }
238       module fill                     { private header "__algorithm/fill.h" }
239       module fill_n                   { private header "__algorithm/fill_n.h" }
240       module find                     { private header "__algorithm/find.h" }
241       module find_end                 { private header "__algorithm/find_end.h" }
242       module find_first_of            { private header "__algorithm/find_first_of.h" }
243       module find_if                  { private header "__algorithm/find_if.h" }
244       module find_if_not              { private header "__algorithm/find_if_not.h" }
245       module for_each                 { private header "__algorithm/for_each.h" }
246       module for_each_n               { private header "__algorithm/for_each_n.h" }
247       module generate                 { private header "__algorithm/generate.h" }
248       module generate_n               { private header "__algorithm/generate_n.h" }
249       module half_positive            { private header "__algorithm/half_positive.h" }
250       module in_in_out_result         { private header "__algorithm/in_in_out_result.h" }
251       module in_in_result             { private header "__algorithm/in_in_result.h" }
252       module in_out_result            { private header "__algorithm/in_out_result.h" }
253       module includes                 { private header "__algorithm/includes.h" }
254       module inplace_merge            { private header "__algorithm/inplace_merge.h" }
255       module is_heap                  { private header "__algorithm/is_heap.h" }
256       module is_heap_until            { private header "__algorithm/is_heap_until.h" }
257       module is_partitioned           { private header "__algorithm/is_partitioned.h" }
258       module is_permutation           { private header "__algorithm/is_permutation.h" }
259       module is_sorted                { private header "__algorithm/is_sorted.h" }
260       module is_sorted_until          { private header "__algorithm/is_sorted_until.h" }
261       module iter_swap                { private header "__algorithm/iter_swap.h" }
262       module lexicographical_compare  { private header "__algorithm/lexicographical_compare.h" }
263       module lower_bound              { private header "__algorithm/lower_bound.h" }
264       module make_heap                { private header "__algorithm/make_heap.h" }
265       module max                      { private header "__algorithm/max.h" }
266       module max_element              { private header "__algorithm/max_element.h" }
267       module merge                    { private header "__algorithm/merge.h" }
268       module min                      { private header "__algorithm/min.h" }
269       module min_element              { private header "__algorithm/min_element.h" }
270       module minmax                   { private header "__algorithm/minmax.h" }
271       module minmax_element           { private header "__algorithm/minmax_element.h" }
272       module mismatch                 { private header "__algorithm/mismatch.h" }
273       module move                     { private header "__algorithm/move.h" }
274       module move_backward            { private header "__algorithm/move_backward.h" }
275       module next_permutation         { private header "__algorithm/next_permutation.h" }
276       module none_of                  { private header "__algorithm/none_of.h" }
277       module nth_element              { private header "__algorithm/nth_element.h" }
278       module partial_sort             { private header "__algorithm/partial_sort.h" }
279       module partial_sort_copy        { private header "__algorithm/partial_sort_copy.h" }
280       module partition                { private header "__algorithm/partition.h" }
281       module partition_copy           { private header "__algorithm/partition_copy.h" }
282       module partition_point          { private header "__algorithm/partition_point.h" }
283       module pop_heap                 { private header "__algorithm/pop_heap.h" }
284       module prev_permutation         { private header "__algorithm/prev_permutation.h" }
285       module push_heap                { private header "__algorithm/push_heap.h" }
286       module remove                   { private header "__algorithm/remove.h" }
287       module remove_copy              { private header "__algorithm/remove_copy.h" }
288       module remove_copy_if           { private header "__algorithm/remove_copy_if.h" }
289       module remove_if                { private header "__algorithm/remove_if.h" }
290       module replace                  { private header "__algorithm/replace.h" }
291       module replace_copy             { private header "__algorithm/replace_copy.h" }
292       module replace_copy_if          { private header "__algorithm/replace_copy_if.h" }
293       module replace_if               { private header "__algorithm/replace_if.h" }
294       module reverse                  { private header "__algorithm/reverse.h" }
295       module reverse_copy             { private header "__algorithm/reverse_copy.h" }
296       module rotate                   { private header "__algorithm/rotate.h" }
297       module rotate_copy              { private header "__algorithm/rotate_copy.h" }
298       module sample                   { private header "__algorithm/sample.h" }
299       module search                   { private header "__algorithm/search.h" }
300       module search_n                 { private header "__algorithm/search_n.h" }
301       module set_difference           { private header "__algorithm/set_difference.h" }
302       module set_intersection         { private header "__algorithm/set_intersection.h" }
303       module set_symmetric_difference { private header "__algorithm/set_symmetric_difference.h" }
304       module set_union                { private header "__algorithm/set_union.h" }
305       module shift_left               { private header "__algorithm/shift_left.h" }
306       module shift_right              { private header "__algorithm/shift_right.h" }
307       module shuffle                  { private header "__algorithm/shuffle.h" }
308       module sift_down                { private header "__algorithm/sift_down.h" }
309       module sort                     { private header "__algorithm/sort.h" }
310       module sort_heap                { private header "__algorithm/sort_heap.h" }
311       module stable_partition         { private header "__algorithm/stable_partition.h" }
312       module stable_sort              { private header "__algorithm/stable_sort.h" }
313       module swap_ranges              { private header "__algorithm/swap_ranges.h" }
314       module transform                { private header "__algorithm/transform.h" }
315       module unique                   { private header "__algorithm/unique.h" }
316       module unique_copy              { private header "__algorithm/unique_copy.h" }
317       module unwrap_iter              { private header "__algorithm/unwrap_iter.h" }
318       module upper_bound              { private header "__algorithm/upper_bound.h" }
319     }
320   }
321   module any {
322     header "any"
323     export *
324   }
325   module array {
326     header "array"
327     export initializer_list
328     export *
329   }
330   module atomic {
331     header "atomic"
332     export *
333   }
334   module barrier {
335     requires cplusplus14
336     header "barrier"
337     export *
338   }
339   module bit {
340     header "bit"
341     export *
342
343     module __bit {
344       module bit_cast { private header "__bit/bit_cast.h" }
345       module byteswap { private header "__bit/byteswap.h" }
346     }
347   }
348   module bitset {
349     header "bitset"
350     export string
351     export iosfwd
352     export *
353   }
354   // No submodule for cassert. It fundamentally needs repeated, textual inclusion.
355   module charconv {
356     header "charconv"
357     export *
358
359     module __charconv {
360       module chars_format      { private header "__charconv/chars_format.h" }
361       module from_chars_result { private header "__charconv/from_chars_result.h" }
362       module to_chars_result   { private header "__charconv/to_chars_result.h" }
363     }
364
365   }
366   module chrono {
367     header "chrono"
368     export *
369
370     module __chrono {
371       module calendar              { private header "__chrono/calendar.h" }
372       module convert_to_timespec   { private header "__chrono/convert_to_timespec.h" }
373       module duration              { private header "__chrono/duration.h" }
374       module file_clock            { private header "__chrono/file_clock.h" }
375       module high_resolution_clock { private header "__chrono/high_resolution_clock.h" }
376       module steady_clock          { private header "__chrono/steady_clock.h" }
377       module system_clock          { private header "__chrono/system_clock.h" }
378       module time_point            { private header "__chrono/time_point.h" }
379     }
380   }
381   module codecvt {
382     header "codecvt"
383     export *
384   }
385   module compare {
386     header "compare"
387     export *
388
389     module __compare {
390       module common_comparison_category     { private header "__compare/common_comparison_category.h" }
391       module compare_partial_order_fallback { private header "__compare/compare_partial_order_fallback.h" }
392       module compare_strong_order_fallback  { private header "__compare/compare_strong_order_fallback.h" }
393       module compare_three_way              { private header "__compare/compare_three_way.h" }
394       module compare_three_way_result       { private header "__compare/compare_three_way_result.h" }
395       module compare_weak_order_fallback    { private header "__compare/compare_weak_order_fallback.h" }
396       module is_eq                          { private header "__compare/is_eq.h" }
397       module ordering                       { private header "__compare/ordering.h" }
398       module partial_order                  { private header "__compare/partial_order.h" }
399       module strong_order                   { private header "__compare/strong_order.h" }
400       module synth_three_way                { private header "__compare/synth_three_way.h" }
401       module three_way_comparable           { private header "__compare/three_way_comparable.h" }
402       module weak_order                     { private header "__compare/weak_order.h" }
403     }
404   }
405   module complex {
406     header "complex"
407     export *
408   }
409   module concepts {
410     header "concepts"
411     export *
412
413     module __concepts {
414       module arithmetic                 { private header "__concepts/arithmetic.h" }
415       module assignable                 { private header "__concepts/assignable.h" }
416       module boolean_testable           { private header "__concepts/boolean_testable.h" }
417       module class_or_enum              { private header "__concepts/class_or_enum.h" }
418       module common_reference_with      { private header "__concepts/common_reference_with.h" }
419       module common_with                { private header "__concepts/common_with.h" }
420       module constructible              { private header "__concepts/constructible.h" }
421       module convertible_to             { private header "__concepts/convertible_to.h" }
422       module copyable                   { private header "__concepts/copyable.h" }
423       module derived_from               { private header "__concepts/derived_from.h" }
424       module destructible               { private header "__concepts/destructible.h" }
425       module different_from             { private header "__concepts/different_from.h" }
426       module equality_comparable        { private header "__concepts/equality_comparable.h" }
427       module invocable                  { private header "__concepts/invocable.h" }
428       module movable                    { private header "__concepts/movable.h" }
429       module predicate                  { private header "__concepts/predicate.h" }
430       module regular                    { private header "__concepts/regular.h" }
431       module relation                   { private header "__concepts/relation.h" }
432       module same_as                    { private header "__concepts/same_as.h" }
433       module semiregular                { private header "__concepts/semiregular.h" }
434       module swappable                  { private header "__concepts/swappable.h" }
435       module totally_ordered            { private header "__concepts/totally_ordered.h" }
436     }
437   }
438   module condition_variable {
439     header "condition_variable"
440     export *
441   }
442   module coroutine {
443     requires coroutines
444     header "coroutine"
445     export compare
446     export *
447
448     module __coroutine {
449       module coroutine_handle           { private header "__coroutine/coroutine_handle.h" }
450       module coroutine_traits           { private header "__coroutine/coroutine_traits.h" }
451       module noop_coroutine_handle      { private header "__coroutine/noop_coroutine_handle.h" }
452       module trivial_awaitables         { private header "__coroutine/trivial_awaitables.h" }
453     }
454   }
455   module deque {
456     header "deque"
457     export initializer_list
458     export *
459   }
460   module exception {
461     header "exception"
462     export *
463   }
464   module execution {
465     header "execution"
466     export *
467   }
468   module filesystem {
469     header "filesystem"
470     export *
471
472     module __filesystem {
473       module copy_options                 { private header "__filesystem/copy_options.h" }
474       module directory_entry              { private header "__filesystem/directory_entry.h" }
475       module directory_iterator           { private header "__filesystem/directory_iterator.h" }
476       module directory_options            { private header "__filesystem/directory_options.h" }
477       module file_status                  { private header "__filesystem/file_status.h" }
478       module file_time_type               { private header "__filesystem/file_time_type.h" }
479       module file_type                    { private header "__filesystem/file_type.h" }
480       module filesystem_error             { private header "__filesystem/filesystem_error.h" }
481       module operations                   { private header "__filesystem/operations.h" }
482       module path                         { private header "__filesystem/path.h" }
483       module path_iterator                { private header "__filesystem/path_iterator.h" }
484       module perm_options                 { private header "__filesystem/perm_options.h" }
485       module perms                        { private header "__filesystem/perms.h" }
486       module recursive_directory_iterator { private header "__filesystem/recursive_directory_iterator.h" }
487       module space_info                   { private header "__filesystem/space_info.h" }
488       module u8path                       { private header "__filesystem/u8path.h" }
489     }
490   }
491   module format {
492     header "format"
493     export *
494
495     module __format {
496       module format_arg               { private header "__format/format_arg.h" }
497       module format_args              { private header "__format/format_args.h" }
498       module format_context {
499         private header "__format/format_context.h"
500         export optional
501         export locale
502       }
503       module format_error             { private header "__format/format_error.h" }
504       module format_fwd               { private header "__format/format_fwd.h" }
505       module format_parse_context     { private header "__format/format_parse_context.h" }
506       module format_string            { private header "__format/format_string.h" }
507       module format_to_n_result       { private header "__format/format_to_n_result.h" }
508       module formatter                { private header "__format/formatter.h" }
509       module formatter_bool           { private header "__format/formatter_bool.h" }
510       module formatter_char           { private header "__format/formatter_char.h" }
511       module formatter_floating_point { private header "__format/formatter_floating_point.h" }
512       module formatter_integer        { private header "__format/formatter_integer.h" }
513       module formatter_integral       { private header "__format/formatter_integral.h" }
514       module formatter_pointer        { private header "__format/formatter_pointer.h" }
515       module formatter_string         { private header "__format/formatter_string.h" }
516       module parser_std_format_spec   { private header "__format/parser_std_format_spec.h" }
517     }
518   }
519   module forward_list {
520     header "forward_list"
521     export initializer_list
522     export *
523   }
524   module fstream {
525     header "fstream"
526     export *
527   }
528   module functional {
529     header "functional"
530     export *
531
532     module __functional {
533       module binary_function            { private header "__functional/binary_function.h" }
534       module binary_negate              { private header "__functional/binary_negate.h" }
535       module bind                       { private header "__functional/bind.h" }
536       module bind_back                  { private header "__functional/bind_back.h" }
537       module bind_front                 { private header "__functional/bind_front.h" }
538       module binder1st                  { private header "__functional/binder1st.h" }
539       module binder2nd                  { private header "__functional/binder2nd.h" }
540       module compose                    { private header "__functional/compose.h" }
541       module default_searcher           { private header "__functional/default_searcher.h" }
542       module function                   { private header "__functional/function.h" }
543       module hash                       { private header "__functional/hash.h" }
544       module identity                   { private header "__functional/identity.h" }
545       module invoke                     { private header "__functional/invoke.h" }
546       module is_transparent             { private header "__functional/is_transparent.h" }
547       module mem_fn                     { private header "__functional/mem_fn.h" }
548       module mem_fun_ref                { private header "__functional/mem_fun_ref.h" }
549       module not_fn                     { private header "__functional/not_fn.h" }
550       module operations                 { private header "__functional/operations.h" }
551       module perfect_forward            { private header "__functional/perfect_forward.h" }
552       module pointer_to_binary_function { private header "__functional/pointer_to_binary_function.h" }
553       module pointer_to_unary_function  { private header "__functional/pointer_to_unary_function.h" }
554       module ranges_operations          { private header "__functional/ranges_operations.h" }
555       module reference_wrapper          { private header "__functional/reference_wrapper.h" }
556       module unary_function             { private header "__functional/unary_function.h" }
557       module unary_negate               { private header "__functional/unary_negate.h" }
558       module unwrap_ref                 { private header "__functional/unwrap_ref.h" }
559       module weak_result_type           { private header "__functional/weak_result_type.h" }
560     }
561   }
562   module future {
563     header "future"
564     export *
565   }
566   module initializer_list {
567     header "initializer_list"
568     export *
569   }
570   module iomanip {
571     header "iomanip"
572     export *
573   }
574   module ios {
575     header "ios"
576     export iosfwd
577     export *
578   }
579   module iosfwd {
580     header "iosfwd"
581     export *
582   }
583   module iostream {
584     header "iostream"
585     export ios
586     export streambuf
587     export istream
588     export ostream
589     export *
590   }
591   module istream {
592     header "istream"
593     // FIXME: should re-export ios, streambuf?
594     export *
595   }
596   module iterator {
597     header "iterator"
598     export *
599
600     module __iterator {
601       module access                { private header "__iterator/access.h" }
602       module advance               { private header "__iterator/advance.h" }
603       module back_insert_iterator  { private header "__iterator/back_insert_iterator.h" }
604       module common_iterator       { private header "__iterator/common_iterator.h" }
605       module concepts              { private header "__iterator/concepts.h" }
606       module counted_iterator      { private header "__iterator/counted_iterator.h" }
607       module data                  { private header "__iterator/data.h" }
608       module default_sentinel      { private header "__iterator/default_sentinel.h" }
609       module distance              { private header "__iterator/distance.h" }
610       module empty                 { private header "__iterator/empty.h" }
611       module erase_if_container    { private header "__iterator/erase_if_container.h" }
612       module front_insert_iterator { private header "__iterator/front_insert_iterator.h" }
613       module incrementable_traits  { private header "__iterator/incrementable_traits.h" }
614       module indirectly_comparable { private header "__iterator/indirectly_comparable.h" }
615       module insert_iterator       { private header "__iterator/insert_iterator.h" }
616       module istream_iterator      { private header "__iterator/istream_iterator.h" }
617       module istreambuf_iterator   { private header "__iterator/istreambuf_iterator.h" }
618       module iter_move             { private header "__iterator/iter_move.h" }
619       module iter_swap             { private header "__iterator/iter_swap.h" }
620       module iterator              { private header "__iterator/iterator.h" }
621       module iterator_traits       { private header "__iterator/iterator_traits.h" }
622       module move_iterator         { private header "__iterator/move_iterator.h" }
623       module next                  { private header "__iterator/next.h" }
624       module ostream_iterator      { private header "__iterator/ostream_iterator.h" }
625       module ostreambuf_iterator   { private header "__iterator/ostreambuf_iterator.h" }
626       module prev                  { private header "__iterator/prev.h" }
627       module projected             { private header "__iterator/projected.h" }
628       module readable_traits       { private header "__iterator/readable_traits.h" }
629       module reverse_access        { private header "__iterator/reverse_access.h" }
630       module reverse_iterator      { private header "__iterator/reverse_iterator.h" }
631       module size                  { private header "__iterator/size.h" }
632       module unreachable_sentinel  { private header "__iterator/unreachable_sentinel.h" }
633       module wrap_iter             { private header "__iterator/wrap_iter.h" }
634     }
635   }
636   module latch {
637     requires cplusplus14
638     header "latch"
639     export *
640   }
641   module limits {
642     header "limits"
643     export *
644   }
645   module list {
646     header "list"
647     export initializer_list
648     export *
649   }
650   module locale {
651     header "locale"
652     export *
653   }
654   module map {
655     header "map"
656     export initializer_list
657     export *
658   }
659   module memory {
660     header "memory"
661     export *
662
663     module __memory {
664       module addressof                       { private header "__memory/addressof.h" }
665       module allocation_guard                { private header "__memory/allocation_guard.h" }
666       module allocator                       { private header "__memory/allocator.h" }
667       module allocator_arg_t                 { private header "__memory/allocator_arg_t.h" }
668       module allocator_traits                { private header "__memory/allocator_traits.h" }
669       module auto_ptr                        { private header "__memory/auto_ptr.h" }
670       module compressed_pair                 { private header "__memory/compressed_pair.h" }
671       module concepts                        { private header "__memory/concepts.h" }
672       module construct_at                    { private header "__memory/construct_at.h" }
673       module pointer_traits                  { private header "__memory/pointer_traits.h" }
674       module ranges_construct_at             { private header "__memory/ranges_construct_at.h" }
675       module ranges_uninitialized_algorithms { private header "__memory/ranges_uninitialized_algorithms.h" }
676       module raw_storage_iterator            { private header "__memory/raw_storage_iterator.h" }
677       module shared_ptr                      { private header "__memory/shared_ptr.h" }
678       module temporary_buffer                { private header "__memory/temporary_buffer.h" }
679       module uninitialized_algorithms        { private header "__memory/uninitialized_algorithms.h" }
680       module unique_ptr                      { private header "__memory/unique_ptr.h" }
681       module uses_allocator                  { private header "__memory/uses_allocator.h" }
682       module voidify                         { private header "__memory/voidify.h" }
683     }
684   }
685   module mutex {
686     header "mutex"
687     export *
688   }
689   module new {
690     header "new"
691     export *
692   }
693   module numbers {
694     header "numbers"
695     export *
696   }
697   module numeric {
698     header "numeric"
699     export *
700
701     module __numeric {
702       module accumulate               { private header "__numeric/accumulate.h" }
703       module adjacent_difference      { private header "__numeric/adjacent_difference.h" }
704       module exclusive_scan           { private header "__numeric/exclusive_scan.h" }
705       module gcd_lcm                  { private header "__numeric/gcd_lcm.h" }
706       module inclusive_scan           { private header "__numeric/inclusive_scan.h" }
707       module inner_product            { private header "__numeric/inner_product.h" }
708       module iota                     { private header "__numeric/iota.h" }
709       module midpoint                 { private header "__numeric/midpoint.h" }
710       module partial_sum              { private header "__numeric/partial_sum.h" }
711       module reduce                   { private header "__numeric/reduce.h" }
712       module transform_exclusive_scan { private header "__numeric/transform_exclusive_scan.h" }
713       module transform_inclusive_scan { private header "__numeric/transform_inclusive_scan.h" }
714       module transform_reduce         { private header "__numeric/transform_reduce.h" }
715     }
716   }
717   module optional {
718     header "optional"
719     export *
720   }
721   module ostream {
722     header "ostream"
723     // FIXME: should re-export ios, streambuf?
724     export *
725   }
726   module queue {
727     header "queue"
728     export initializer_list
729     export *
730   }
731   module random {
732     header "random"
733     export initializer_list
734     export *
735
736     module __random {
737       module bernoulli_distribution          { private header "__random/bernoulli_distribution.h" }
738       module binomial_distribution           { private header "__random/binomial_distribution.h" }
739       module cauchy_distribution             { private header "__random/cauchy_distribution.h" }
740       module chi_squared_distribution        { private header "__random/chi_squared_distribution.h" }
741       module clamp_to_integral               { private header "__random/clamp_to_integral.h" }
742       module default_random_engine           { private header "__random/default_random_engine.h" }
743       module discard_block_engine            { private header "__random/discard_block_engine.h" }
744       module discrete_distribution           { private header "__random/discrete_distribution.h" }
745       module exponential_distribution        { private header "__random/exponential_distribution.h" }
746       module extreme_value_distribution      { private header "__random/extreme_value_distribution.h" }
747       module fisher_f_distribution           { private header "__random/fisher_f_distribution.h" }
748       module gamma_distribution              { private header "__random/gamma_distribution.h" }
749       module generate_canonical              { private header "__random/generate_canonical.h" }
750       module geometric_distribution          { private header "__random/geometric_distribution.h" }
751       module independent_bits_engine         { private header "__random/independent_bits_engine.h" }
752       module is_seed_sequence                { private header "__random/is_seed_sequence.h" }
753       module knuth_b                         { private header "__random/knuth_b.h" }
754       module linear_congruential_engine      { private header "__random/linear_congruential_engine.h" }
755       module log2                            { private header "__random/log2.h" }
756       module lognormal_distribution          { private header "__random/lognormal_distribution.h" }
757       module mersenne_twister_engine         { private header "__random/mersenne_twister_engine.h" }
758       module negative_binomial_distribution  { private header "__random/negative_binomial_distribution.h" }
759       module normal_distribution             { private header "__random/normal_distribution.h" }
760       module piecewise_constant_distribution { private header "__random/piecewise_constant_distribution.h" }
761       module piecewise_linear_distribution   { private header "__random/piecewise_linear_distribution.h" }
762       module poisson_distribution            { private header "__random/poisson_distribution.h" }
763       module random_device                   { private header "__random/random_device.h" }
764       module ranlux                          { private header "__random/ranlux.h" }
765       module seed_seq                        { private header "__random/seed_seq.h" }
766       module shuffle_order_engine            { private header "__random/shuffle_order_engine.h" }
767       module student_t_distribution          { private header "__random/student_t_distribution.h" }
768       module subtract_with_carry_engine      { private header "__random/subtract_with_carry_engine.h" }
769       module uniform_int_distribution        { private header "__random/uniform_int_distribution.h" }
770       module uniform_random_bit_generator    { private header "__random/uniform_random_bit_generator.h" }
771       module uniform_real_distribution       { private header "__random/uniform_real_distribution.h" }
772       module weibull_distribution            { private header "__random/weibull_distribution.h" }
773     }
774   }
775   module ranges {
776     header "ranges"
777     export compare
778     export initializer_list
779     export iterator
780     export *
781
782     module __ranges {
783       module access                 { private header "__ranges/access.h" }
784       module all                    {
785         private header "__ranges/all.h"
786         export functional.__functional.compose
787         export functional.__functional.perfect_forward
788       }
789       module common_view            { private header "__ranges/common_view.h" }
790       module concepts               { private header "__ranges/concepts.h" }
791       module copyable_box           { private header "__ranges/copyable_box.h" }
792       module counted                {
793         private header "__ranges/counted.h"
794         export span
795       }
796       module dangling               { private header "__ranges/dangling.h" }
797       module data                   { private header "__ranges/data.h" }
798       module drop_view              { private header "__ranges/drop_view.h" }
799       module empty                  { private header "__ranges/empty.h" }
800       module empty_view             { private header "__ranges/empty_view.h" }
801       module enable_borrowed_range  { private header "__ranges/enable_borrowed_range.h" }
802       module enable_view            { private header "__ranges/enable_view.h" }
803       module iota_view              { private header "__ranges/iota_view.h" }
804       module join_view              { private header "__ranges/join_view.h" }
805       module non_propagating_cache  { private header "__ranges/non_propagating_cache.h" }
806       module owning_view            { private header "__ranges/owning_view.h" }
807       module range_adaptor          { private header "__ranges/range_adaptor.h" }
808       module ref_view               { private header "__ranges/ref_view.h" }
809       module reverse_view           { private header "__ranges/reverse_view.h" }
810       module single_view            { private header "__ranges/single_view.h" }
811       module size                   { private header "__ranges/size.h" }
812       module subrange               { private header "__ranges/subrange.h" }
813       module take_view              { private header "__ranges/take_view.h" }
814       module transform_view         {
815         private header "__ranges/transform_view.h"
816         export functional.__functional.bind_back
817         export functional.__functional.perfect_forward
818       }
819       module view_interface         { private header "__ranges/view_interface.h" }
820       module views                  { private header "__ranges/views.h" }
821     }
822   }
823   module ratio {
824     header "ratio"
825     export *
826   }
827   module regex {
828     header "regex"
829     export initializer_list
830     export *
831   }
832   module scoped_allocator {
833     header "scoped_allocator"
834     export *
835   }
836   module semaphore {
837     requires cplusplus14
838     header "semaphore"
839     export *
840   }
841   module set {
842     header "set"
843     export initializer_list
844     export *
845   }
846   module shared_mutex {
847     header "shared_mutex"
848     export version
849   }
850   module span {
851     header "span"
852     export ranges.__ranges.enable_borrowed_range
853     export version
854   }
855   module sstream {
856     header "sstream"
857     // FIXME: should re-export istream, ostream, ios, streambuf, string?
858     export *
859   }
860   module stack {
861     header "stack"
862     export initializer_list
863     export *
864   }
865   module stdexcept {
866     header "stdexcept"
867     export *
868   }
869   module streambuf {
870     header "streambuf"
871     export *
872   }
873   module string {
874     header "string"
875     export initializer_list
876     export string_view
877     export __string
878     export *
879   }
880   module string_view {
881     header "string_view"
882     export initializer_list
883     export __string
884     export *
885   }
886   module strstream {
887     header "strstream"
888     export *
889   }
890   module system_error {
891     header "system_error"
892     export *
893   }
894   module thread {
895     header "thread"
896     export *
897
898     module __thread {
899       module poll_with_backoff    { private header "__thread/poll_with_backoff.h" }
900       module timed_backoff_policy { private header "__thread/timed_backoff_policy.h" }
901     }
902   }
903   module tuple {
904     header "tuple"
905     export *
906   }
907   module type_traits {
908     header "type_traits"
909     export functional.__functional.unwrap_ref
910     export *
911   }
912   module typeindex {
913     header "typeindex"
914     export *
915   }
916   module typeinfo {
917     header "typeinfo"
918     export *
919   }
920   module unordered_map {
921     header "unordered_map"
922     export initializer_list
923     export *
924   }
925   module unordered_set {
926     header "unordered_set"
927     export initializer_list
928     export *
929   }
930   module utility {
931     header "utility"
932     export initializer_list
933     export *
934
935     module __utility {
936       module as_const            { private header "__utility/as_const.h" }
937       module auto_cast           { private header "__utility/auto_cast.h" }
938       module cmp                 { private header "__utility/cmp.h" }
939       module declval             { private header "__utility/declval.h" }
940       module exchange            { private header "__utility/exchange.h" }
941       module forward             { private header "__utility/forward.h" }
942       module in_place            { private header "__utility/in_place.h" }
943       module integer_sequence    { private header "__utility/integer_sequence.h" }
944       module move                { private header "__utility/move.h" }
945       module pair                { private header "__utility/pair.h" }
946       module piecewise_construct { private header "__utility/piecewise_construct.h" }
947       module priority_tag        { private header "__utility/priority_tag.h" }
948       module rel_ops             { private header "__utility/rel_ops.h" }
949       module swap                { private header "__utility/swap.h" }
950       module to_underlying       { private header "__utility/to_underlying.h" }
951       module transaction         { private header "__utility/transaction.h" }
952     }
953   }
954   module valarray {
955     header "valarray"
956     export initializer_list
957     export *
958   }
959   module variant {
960     header "variant"
961     export *
962
963     module __variant {
964       module monostate { private header "__variant/monostate.h" }
965     }
966   }
967   module vector {
968     header "vector"
969     export initializer_list
970     export *
971   }
972   module version {
973     header "version"
974     export *
975   }
976
977   // __config not modularised due to a bug in Clang
978   // FIXME: These should be private.
979   module __availability      { private header "__availability"      export * }
980   module __bit_reference     { private header "__bit_reference"     export * }
981   module __bits              { private header "__bits"              export * }
982   module __debug             {         header "__debug"             export * }
983   module __errc              { private header "__errc"              export * }
984   module __hash_table        {         header "__hash_table"        export * }
985   module __locale            { private header "__locale"            export * }
986   module __mbstate_t         { private header "__mbstate_t.h"       export * }
987   module __mutex_base        { private header "__mutex_base"        export * }
988   module __node_handle       { private header "__node_handle"       export * }
989   module __nullptr           {         header "__nullptr"           export * }
990   module __split_buffer      { private header "__split_buffer"      export * }
991   module __std_stream        { private header "__std_stream"        export * }
992   module __string            { private header "__string"            export * }
993   module __threading_support {         header "__threading_support" export * }
994   module __tree              {         header "__tree"              export * }
995   module __tuple             { private header "__tuple"             export * }
996   module __undef_macros      {         header "__undef_macros"      export * }
997
998   module experimental {
999     requires cplusplus11
1000
1001     module algorithm {
1002       header "experimental/algorithm"
1003       export *
1004     }
1005      module coroutine {
1006       requires coroutines
1007       header "experimental/coroutine"
1008       export *
1009     }
1010     module deque {
1011       header "experimental/deque"
1012       export *
1013     }
1014     module filesystem {
1015       header "experimental/filesystem"
1016       export *
1017     }
1018     module forward_list {
1019       header "experimental/forward_list"
1020       export *
1021     }
1022     module functional {
1023       header "experimental/functional"
1024       export *
1025     }
1026     module iterator {
1027       header "experimental/iterator"
1028       export *
1029     }
1030     module list {
1031       header "experimental/list"
1032       export *
1033     }
1034     module map {
1035       header "experimental/map"
1036       export *
1037     }
1038     module memory_resource {
1039       header "experimental/memory_resource"
1040       export *
1041     }
1042     module propagate_const {
1043       header "experimental/propagate_const"
1044       export *
1045     }
1046     module regex {
1047       header "experimental/regex"
1048       export *
1049     }
1050     module simd {
1051       header "experimental/simd"
1052       export *
1053     }
1054     module set {
1055       header "experimental/set"
1056       export *
1057     }
1058     module span {
1059       header "span"
1060       export *
1061     }
1062     module string {
1063       header "experimental/string"
1064       export *
1065     }
1066     module type_traits {
1067       header "experimental/type_traits"
1068       export *
1069     }
1070     module unordered_map {
1071       header "experimental/unordered_map"
1072       export *
1073     }
1074     module unordered_set {
1075       header "experimental/unordered_set"
1076       export *
1077     }
1078     module utility {
1079       header "experimental/utility"
1080       export *
1081     }
1082     module vector {
1083       header "experimental/vector"
1084       export *
1085     }
1086     // FIXME these should be private
1087     module __memory {
1088       header "experimental/__memory"
1089       export *
1090     }
1091   } // end experimental
1092 }