xref: /freebsd/contrib/llvm-project/libcxx/include/module.modulemap (revision 9729f076e4d93c5a37e78d427bfe0f1ab99bbcc6)
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.
4module std_config [system] [extern_c] {
5  textual header "__config"
6  textual header "__config_site"
7}
8
9module 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}
1093