10b57cec5SDimitry Andric// define the module for __config outside of the top level 'std' module
20b57cec5SDimitry Andric// since __config may be included from C headers which may create an
30b57cec5SDimitry Andric// include cycle.
40b57cec5SDimitry Andricmodule std_config [system] [extern_c] {
50b57cec5SDimitry Andric    header "__config"
60b57cec5SDimitry Andric}
70b57cec5SDimitry Andric
80b57cec5SDimitry Andricmodule std [system] {
90b57cec5SDimitry Andric  export std_config
100b57cec5SDimitry Andric  // FIXME: The standard does not require that each of these submodules
110b57cec5SDimitry Andric  // re-exports its imported modules. We should provide an alternative form of
120b57cec5SDimitry Andric  // export that issues a warning if a name from the submodule is used, and
130b57cec5SDimitry Andric  // use that to provide a 'strict mode' for libc++.
140b57cec5SDimitry Andric
150b57cec5SDimitry Andric  // Deprecated C-compatibility headers. These can all be included from within
160b57cec5SDimitry Andric  // an 'extern "C"' context.
170b57cec5SDimitry Andric  module depr [extern_c] {
180b57cec5SDimitry Andric    // <assert.h> provided by C library.
190b57cec5SDimitry Andric    module ctype_h {
200b57cec5SDimitry Andric      header "ctype.h"
210b57cec5SDimitry Andric      export *
220b57cec5SDimitry Andric    }
230b57cec5SDimitry Andric    module errno_h {
240b57cec5SDimitry Andric      header "errno.h"
250b57cec5SDimitry Andric      export *
260b57cec5SDimitry Andric    }
270b57cec5SDimitry Andric    module fenv_h {
280b57cec5SDimitry Andric      header "fenv.h"
290b57cec5SDimitry Andric      export *
300b57cec5SDimitry Andric    }
310b57cec5SDimitry Andric    // <float.h> provided by compiler or C library.
320b57cec5SDimitry Andric    module inttypes_h {
330b57cec5SDimitry Andric      header "inttypes.h"
340b57cec5SDimitry Andric      export stdint_h
350b57cec5SDimitry Andric      export *
360b57cec5SDimitry Andric    }
370b57cec5SDimitry Andric    // <iso646.h> provided by compiler.
380b57cec5SDimitry Andric    // <limits.h> provided by compiler or C library.
390b57cec5SDimitry Andric    module locale_h {
400b57cec5SDimitry Andric      header "locale.h"
410b57cec5SDimitry Andric      export *
420b57cec5SDimitry Andric    }
430b57cec5SDimitry Andric    module math_h {
440b57cec5SDimitry Andric      header "math.h"
450b57cec5SDimitry Andric      export *
460b57cec5SDimitry Andric    }
470b57cec5SDimitry Andric    module setjmp_h {
480b57cec5SDimitry Andric      header "setjmp.h"
490b57cec5SDimitry Andric      export *
500b57cec5SDimitry Andric    }
510b57cec5SDimitry Andric    // FIXME: <stdalign.h> is missing.
520b57cec5SDimitry Andric    // <signal.h> provided by C library.
530b57cec5SDimitry Andric    // <stdarg.h> provided by compiler.
540b57cec5SDimitry Andric    // <stdbool.h> provided by compiler.
550b57cec5SDimitry Andric    module stddef_h {
560b57cec5SDimitry Andric      // <stddef.h>'s __need_* macros require textual inclusion.
570b57cec5SDimitry Andric      textual header "stddef.h"
580b57cec5SDimitry Andric    }
590b57cec5SDimitry Andric    module stdint_h {
600b57cec5SDimitry Andric      header "stdint.h"
610b57cec5SDimitry Andric      export *
620b57cec5SDimitry Andric      // FIXME: This module only exists on OS X and for some reason the
630b57cec5SDimitry Andric      // wildcard above doesn't export it.
640b57cec5SDimitry Andric      export Darwin.C.stdint
650b57cec5SDimitry Andric    }
660b57cec5SDimitry Andric    module stdio_h {
670b57cec5SDimitry Andric      // <stdio.h>'s __need_* macros require textual inclusion.
680b57cec5SDimitry Andric      textual header "stdio.h"
690b57cec5SDimitry Andric      export *
700b57cec5SDimitry Andric      export Darwin.C.stdio
710b57cec5SDimitry Andric    }
720b57cec5SDimitry Andric    module stdlib_h {
730b57cec5SDimitry Andric      // <stdlib.h>'s __need_* macros require textual inclusion.
740b57cec5SDimitry Andric      textual header "stdlib.h"
750b57cec5SDimitry Andric      export *
760b57cec5SDimitry Andric    }
770b57cec5SDimitry Andric    module string_h {
780b57cec5SDimitry Andric      header "string.h"
790b57cec5SDimitry Andric      export *
800b57cec5SDimitry Andric    }
810b57cec5SDimitry Andric    // FIXME: <uchar.h> is missing.
820b57cec5SDimitry Andric    // <time.h> provided by C library.
830b57cec5SDimitry Andric    module wchar_h {
840b57cec5SDimitry Andric      // <wchar.h>'s __need_* macros require textual inclusion.
850b57cec5SDimitry Andric      textual header "wchar.h"
860b57cec5SDimitry Andric      export *
870b57cec5SDimitry Andric    }
880b57cec5SDimitry Andric    module wctype_h {
890b57cec5SDimitry Andric      header "wctype.h"
900b57cec5SDimitry Andric      export *
910b57cec5SDimitry Andric    }
920b57cec5SDimitry Andric  }
930b57cec5SDimitry Andric
940b57cec5SDimitry Andric  // <complex.h> and <tgmath.h> are not C headers in any real sense, do not
950b57cec5SDimitry Andric  // allow their use in extern "C" contexts.
960b57cec5SDimitry Andric  module complex_h {
970b57cec5SDimitry Andric    header "complex.h"
980b57cec5SDimitry Andric    export ccomplex
990b57cec5SDimitry Andric    export *
1000b57cec5SDimitry Andric  }
1010b57cec5SDimitry Andric  module tgmath_h {
1020b57cec5SDimitry Andric    header "tgmath.h"
1030b57cec5SDimitry Andric    export ccomplex
1040b57cec5SDimitry Andric    export cmath
1050b57cec5SDimitry Andric    export *
1060b57cec5SDimitry Andric  }
1070b57cec5SDimitry Andric
1080b57cec5SDimitry Andric  // C compatibility headers.
1090b57cec5SDimitry Andric  module compat {
1100b57cec5SDimitry Andric    module cassert {
1110b57cec5SDimitry Andric      // <cassert>'s use of NDEBUG requires textual inclusion.
1120b57cec5SDimitry Andric      textual header "cassert"
1130b57cec5SDimitry Andric    }
1140b57cec5SDimitry Andric    module ccomplex {
1150b57cec5SDimitry Andric      header "ccomplex"
1160b57cec5SDimitry Andric      export complex
1170b57cec5SDimitry Andric      export *
1180b57cec5SDimitry Andric    }
1190b57cec5SDimitry Andric    module cctype {
1200b57cec5SDimitry Andric      header "cctype"
1210b57cec5SDimitry Andric      export *
1220b57cec5SDimitry Andric    }
1230b57cec5SDimitry Andric    module cerrno {
1240b57cec5SDimitry Andric      header "cerrno"
1250b57cec5SDimitry Andric      export *
1260b57cec5SDimitry Andric    }
1270b57cec5SDimitry Andric    module cfenv {
1280b57cec5SDimitry Andric      header "cfenv"
1290b57cec5SDimitry Andric      export *
1300b57cec5SDimitry Andric    }
1310b57cec5SDimitry Andric    module cfloat {
1320b57cec5SDimitry Andric      header "cfloat"
1330b57cec5SDimitry Andric      export *
1340b57cec5SDimitry Andric    }
1350b57cec5SDimitry Andric    module cinttypes {
1360b57cec5SDimitry Andric      header "cinttypes"
1370b57cec5SDimitry Andric      export cstdint
1380b57cec5SDimitry Andric      export *
1390b57cec5SDimitry Andric    }
1400b57cec5SDimitry Andric    module ciso646 {
1410b57cec5SDimitry Andric      header "ciso646"
1420b57cec5SDimitry Andric      export *
1430b57cec5SDimitry Andric    }
1440b57cec5SDimitry Andric    module climits {
1450b57cec5SDimitry Andric      header "climits"
1460b57cec5SDimitry Andric      export *
1470b57cec5SDimitry Andric    }
1480b57cec5SDimitry Andric    module clocale {
1490b57cec5SDimitry Andric      header "clocale"
1500b57cec5SDimitry Andric      export *
1510b57cec5SDimitry Andric    }
1520b57cec5SDimitry Andric    module cmath {
1530b57cec5SDimitry Andric      header "cmath"
1540b57cec5SDimitry Andric      export *
1550b57cec5SDimitry Andric    }
1560b57cec5SDimitry Andric    module csetjmp {
1570b57cec5SDimitry Andric      header "csetjmp"
1580b57cec5SDimitry Andric      export *
1590b57cec5SDimitry Andric    }
1600b57cec5SDimitry Andric    module csignal {
1610b57cec5SDimitry Andric      header "csignal"
1620b57cec5SDimitry Andric      export *
1630b57cec5SDimitry Andric    }
1640b57cec5SDimitry Andric    // FIXME: <cstdalign> is missing.
1650b57cec5SDimitry Andric    module cstdarg {
1660b57cec5SDimitry Andric      header "cstdarg"
1670b57cec5SDimitry Andric      export *
1680b57cec5SDimitry Andric    }
1690b57cec5SDimitry Andric    module cstdbool {
1700b57cec5SDimitry Andric      header "cstdbool"
1710b57cec5SDimitry Andric      export *
1720b57cec5SDimitry Andric    }
1730b57cec5SDimitry Andric    module cstddef {
1740b57cec5SDimitry Andric      header "cstddef"
1750b57cec5SDimitry Andric      export *
1760b57cec5SDimitry Andric    }
1770b57cec5SDimitry Andric    module cstdint {
1780b57cec5SDimitry Andric      header "cstdint"
1790b57cec5SDimitry Andric      export depr.stdint_h
1800b57cec5SDimitry Andric      export *
1810b57cec5SDimitry Andric    }
1820b57cec5SDimitry Andric    module cstdio {
1830b57cec5SDimitry Andric      header "cstdio"
1840b57cec5SDimitry Andric      export *
1850b57cec5SDimitry Andric    }
1860b57cec5SDimitry Andric    module cstdlib {
1870b57cec5SDimitry Andric      header "cstdlib"
1880b57cec5SDimitry Andric      export *
1890b57cec5SDimitry Andric    }
1900b57cec5SDimitry Andric    module cstring {
1910b57cec5SDimitry Andric      header "cstring"
1920b57cec5SDimitry Andric      export *
1930b57cec5SDimitry Andric    }
1940b57cec5SDimitry Andric    module ctgmath {
1950b57cec5SDimitry Andric      header "ctgmath"
1960b57cec5SDimitry Andric      export ccomplex
1970b57cec5SDimitry Andric      export cmath
1980b57cec5SDimitry Andric      export *
1990b57cec5SDimitry Andric    }
2000b57cec5SDimitry Andric    module ctime {
2010b57cec5SDimitry Andric      header "ctime"
2020b57cec5SDimitry Andric      export *
2030b57cec5SDimitry Andric    }
2040b57cec5SDimitry Andric    // FIXME: <cuchar> is missing.
2050b57cec5SDimitry Andric    module cwchar {
2060b57cec5SDimitry Andric      header "cwchar"
2070b57cec5SDimitry Andric      export depr.stdio_h
2080b57cec5SDimitry Andric      export *
2090b57cec5SDimitry Andric    }
2100b57cec5SDimitry Andric    module cwctype {
2110b57cec5SDimitry Andric      header "cwctype"
2120b57cec5SDimitry Andric      export *
2130b57cec5SDimitry Andric    }
2140b57cec5SDimitry Andric  }
2150b57cec5SDimitry Andric
2160b57cec5SDimitry Andric  module algorithm {
2170b57cec5SDimitry Andric    header "algorithm"
2180b57cec5SDimitry Andric    export initializer_list
2190b57cec5SDimitry Andric    export *
220*5f7ddb14SDimitry Andric
221*5f7ddb14SDimitry Andric    module __algorithm {
222*5f7ddb14SDimitry Andric      module adjacent_find            { private header "__algorithm/adjacent_find.h" }
223*5f7ddb14SDimitry Andric      module all_of                   { private header "__algorithm/all_of.h" }
224*5f7ddb14SDimitry Andric      module any_of                   { private header "__algorithm/any_of.h" }
225*5f7ddb14SDimitry Andric      module binary_search            { private header "__algorithm/binary_search.h" }
226*5f7ddb14SDimitry Andric      module clamp                    { private header "__algorithm/clamp.h" }
227*5f7ddb14SDimitry Andric      module comp                     { private header "__algorithm/comp.h" }
228*5f7ddb14SDimitry Andric      module comp_ref_type            { private header "__algorithm/comp_ref_type.h" }
229*5f7ddb14SDimitry Andric      module copy                     { private header "__algorithm/copy.h" }
230*5f7ddb14SDimitry Andric      module copy_backward            { private header "__algorithm/copy_backward.h" }
231*5f7ddb14SDimitry Andric      module copy_if                  { private header "__algorithm/copy_if.h" }
232*5f7ddb14SDimitry Andric      module copy_n                   { private header "__algorithm/copy_n.h" }
233*5f7ddb14SDimitry Andric      module count                    { private header "__algorithm/count.h" }
234*5f7ddb14SDimitry Andric      module count_if                 { private header "__algorithm/count_if.h" }
235*5f7ddb14SDimitry Andric      module equal                    { private header "__algorithm/equal.h" }
236*5f7ddb14SDimitry Andric      module equal_range              { private header "__algorithm/equal_range.h" }
237*5f7ddb14SDimitry Andric      module fill                     { private header "__algorithm/fill.h" }
238*5f7ddb14SDimitry Andric      module fill_n                   { private header "__algorithm/fill_n.h" }
239*5f7ddb14SDimitry Andric      module find                     { private header "__algorithm/find.h" }
240*5f7ddb14SDimitry Andric      module find_end                 { private header "__algorithm/find_end.h" }
241*5f7ddb14SDimitry Andric      module find_first_of            { private header "__algorithm/find_first_of.h" }
242*5f7ddb14SDimitry Andric      module find_if                  { private header "__algorithm/find_if.h" }
243*5f7ddb14SDimitry Andric      module find_if_not              { private header "__algorithm/find_if_not.h" }
244*5f7ddb14SDimitry Andric      module for_each                 { private header "__algorithm/for_each.h" }
245*5f7ddb14SDimitry Andric      module for_each_n               { private header "__algorithm/for_each_n.h" }
246*5f7ddb14SDimitry Andric      module generate                 { private header "__algorithm/generate.h" }
247*5f7ddb14SDimitry Andric      module generate_n               { private header "__algorithm/generate_n.h" }
248*5f7ddb14SDimitry Andric      module half_positive            { private header "__algorithm/half_positive.h" }
249*5f7ddb14SDimitry Andric      module includes                 { private header "__algorithm/includes.h" }
250*5f7ddb14SDimitry Andric      module inplace_merge            { private header "__algorithm/inplace_merge.h" }
251*5f7ddb14SDimitry Andric      module is_heap                  { private header "__algorithm/is_heap.h" }
252*5f7ddb14SDimitry Andric      module is_heap_until            { private header "__algorithm/is_heap_until.h" }
253*5f7ddb14SDimitry Andric      module is_partitioned           { private header "__algorithm/is_partitioned.h" }
254*5f7ddb14SDimitry Andric      module is_permutation           { private header "__algorithm/is_permutation.h" }
255*5f7ddb14SDimitry Andric      module is_sorted                { private header "__algorithm/is_sorted.h" }
256*5f7ddb14SDimitry Andric      module is_sorted_until          { private header "__algorithm/is_sorted_until.h" }
257*5f7ddb14SDimitry Andric      module iter_swap                { private header "__algorithm/iter_swap.h" }
258*5f7ddb14SDimitry Andric      module lexicographical_compare  { private header "__algorithm/lexicographical_compare.h" }
259*5f7ddb14SDimitry Andric      module lower_bound              { private header "__algorithm/lower_bound.h" }
260*5f7ddb14SDimitry Andric      module make_heap                { private header "__algorithm/make_heap.h" }
261*5f7ddb14SDimitry Andric      module max                      { private header "__algorithm/max.h" }
262*5f7ddb14SDimitry Andric      module max_element              { private header "__algorithm/max_element.h" }
263*5f7ddb14SDimitry Andric      module merge                    { private header "__algorithm/merge.h" }
264*5f7ddb14SDimitry Andric      module min                      { private header "__algorithm/min.h" }
265*5f7ddb14SDimitry Andric      module min_element              { private header "__algorithm/min_element.h" }
266*5f7ddb14SDimitry Andric      module minmax                   { private header "__algorithm/minmax.h" }
267*5f7ddb14SDimitry Andric      module minmax_element           { private header "__algorithm/minmax_element.h" }
268*5f7ddb14SDimitry Andric      module mismatch                 { private header "__algorithm/mismatch.h" }
269*5f7ddb14SDimitry Andric      module move                     { private header "__algorithm/move.h" }
270*5f7ddb14SDimitry Andric      module move_backward            { private header "__algorithm/move_backward.h" }
271*5f7ddb14SDimitry Andric      module next_permutation         { private header "__algorithm/next_permutation.h" }
272*5f7ddb14SDimitry Andric      module none_of                  { private header "__algorithm/none_of.h" }
273*5f7ddb14SDimitry Andric      module nth_element              { private header "__algorithm/nth_element.h" }
274*5f7ddb14SDimitry Andric      module partial_sort             { private header "__algorithm/partial_sort.h" }
275*5f7ddb14SDimitry Andric      module partial_sort_copy        { private header "__algorithm/partial_sort_copy.h" }
276*5f7ddb14SDimitry Andric      module partition                { private header "__algorithm/partition.h" }
277*5f7ddb14SDimitry Andric      module partition_copy           { private header "__algorithm/partition_copy.h" }
278*5f7ddb14SDimitry Andric      module partition_point          { private header "__algorithm/partition_point.h" }
279*5f7ddb14SDimitry Andric      module pop_heap                 { private header "__algorithm/pop_heap.h" }
280*5f7ddb14SDimitry Andric      module prev_permutation         { private header "__algorithm/prev_permutation.h" }
281*5f7ddb14SDimitry Andric      module push_heap                { private header "__algorithm/push_heap.h" }
282*5f7ddb14SDimitry Andric      module remove                   { private header "__algorithm/remove.h" }
283*5f7ddb14SDimitry Andric      module remove_copy              { private header "__algorithm/remove_copy.h" }
284*5f7ddb14SDimitry Andric      module remove_copy_if           { private header "__algorithm/remove_copy_if.h" }
285*5f7ddb14SDimitry Andric      module remove_if                { private header "__algorithm/remove_if.h" }
286*5f7ddb14SDimitry Andric      module replace                  { private header "__algorithm/replace.h" }
287*5f7ddb14SDimitry Andric      module replace_copy             { private header "__algorithm/replace_copy.h" }
288*5f7ddb14SDimitry Andric      module replace_copy_if          { private header "__algorithm/replace_copy_if.h" }
289*5f7ddb14SDimitry Andric      module replace_if               { private header "__algorithm/replace_if.h" }
290*5f7ddb14SDimitry Andric      module reverse                  { private header "__algorithm/reverse.h" }
291*5f7ddb14SDimitry Andric      module reverse_copy             { private header "__algorithm/reverse_copy.h" }
292*5f7ddb14SDimitry Andric      module rotate                   { private header "__algorithm/rotate.h" }
293*5f7ddb14SDimitry Andric      module rotate_copy              { private header "__algorithm/rotate_copy.h" }
294*5f7ddb14SDimitry Andric      module sample                   { private header "__algorithm/sample.h" }
295*5f7ddb14SDimitry Andric      module search                   { private header "__algorithm/search.h" }
296*5f7ddb14SDimitry Andric      module search_n                 { private header "__algorithm/search_n.h" }
297*5f7ddb14SDimitry Andric      module set_difference           { private header "__algorithm/set_difference.h" }
298*5f7ddb14SDimitry Andric      module set_intersection         { private header "__algorithm/set_intersection.h" }
299*5f7ddb14SDimitry Andric      module set_symmetric_difference { private header "__algorithm/set_symmetric_difference.h" }
300*5f7ddb14SDimitry Andric      module set_union                { private header "__algorithm/set_union.h" }
301*5f7ddb14SDimitry Andric      module shift_left               { private header "__algorithm/shift_left.h" }
302*5f7ddb14SDimitry Andric      module shift_right              { private header "__algorithm/shift_right.h" }
303*5f7ddb14SDimitry Andric      module shuffle                  { private header "__algorithm/shuffle.h" }
304*5f7ddb14SDimitry Andric      module sift_down                { private header "__algorithm/sift_down.h" }
305*5f7ddb14SDimitry Andric      module sort                     { private header "__algorithm/sort.h" }
306*5f7ddb14SDimitry Andric      module sort_heap                { private header "__algorithm/sort_heap.h" }
307*5f7ddb14SDimitry Andric      module stable_partition         { private header "__algorithm/stable_partition.h" }
308*5f7ddb14SDimitry Andric      module stable_sort              { private header "__algorithm/stable_sort.h" }
309*5f7ddb14SDimitry Andric      module swap_ranges              { private header "__algorithm/swap_ranges.h" }
310*5f7ddb14SDimitry Andric      module transform                { private header "__algorithm/transform.h" }
311*5f7ddb14SDimitry Andric      module unique                   { private header "__algorithm/unique.h" }
312*5f7ddb14SDimitry Andric      module unique_copy              { private header "__algorithm/unique_copy.h" }
313*5f7ddb14SDimitry Andric      module unwrap_iter              { private header "__algorithm/unwrap_iter.h" }
314*5f7ddb14SDimitry Andric      module upper_bound              { private header "__algorithm/upper_bound.h" }
315*5f7ddb14SDimitry Andric    }
3160b57cec5SDimitry Andric  }
3170b57cec5SDimitry Andric  module any {
3180b57cec5SDimitry Andric    header "any"
3190b57cec5SDimitry Andric    export *
3200b57cec5SDimitry Andric  }
3210b57cec5SDimitry Andric  module array {
3220b57cec5SDimitry Andric    header "array"
3230b57cec5SDimitry Andric    export initializer_list
3240b57cec5SDimitry Andric    export *
3250b57cec5SDimitry Andric  }
3260b57cec5SDimitry Andric  module atomic {
3270b57cec5SDimitry Andric    header "atomic"
3280b57cec5SDimitry Andric    export *
3290b57cec5SDimitry Andric  }
3305ffd83dbSDimitry Andric  module barrier {
3315ffd83dbSDimitry Andric    requires cplusplus14
3325ffd83dbSDimitry Andric    header "barrier"
3335ffd83dbSDimitry Andric    export *
3345ffd83dbSDimitry Andric  }
3350b57cec5SDimitry Andric  module bit {
3360b57cec5SDimitry Andric    header "bit"
3370b57cec5SDimitry Andric    export *
3380b57cec5SDimitry Andric  }
3390b57cec5SDimitry Andric  module bitset {
3400b57cec5SDimitry Andric    header "bitset"
3410b57cec5SDimitry Andric    export string
3420b57cec5SDimitry Andric    export iosfwd
3430b57cec5SDimitry Andric    export *
3440b57cec5SDimitry Andric  }
3450b57cec5SDimitry Andric  // No submodule for cassert. It fundamentally needs repeated, textual inclusion.
3460b57cec5SDimitry Andric  module charconv {
3470b57cec5SDimitry Andric    header "charconv"
3480b57cec5SDimitry Andric    export *
3490b57cec5SDimitry Andric  }
3500b57cec5SDimitry Andric  module chrono {
3510b57cec5SDimitry Andric    header "chrono"
3520b57cec5SDimitry Andric    export *
3530b57cec5SDimitry Andric  }
3540b57cec5SDimitry Andric  module codecvt {
3550b57cec5SDimitry Andric    header "codecvt"
3560b57cec5SDimitry Andric    export *
3570b57cec5SDimitry Andric  }
3580b57cec5SDimitry Andric  module compare {
3590b57cec5SDimitry Andric    header "compare"
3600b57cec5SDimitry Andric    export *
3610b57cec5SDimitry Andric  }
3620b57cec5SDimitry Andric  module complex {
3630b57cec5SDimitry Andric    header "complex"
3640b57cec5SDimitry Andric    export *
3650b57cec5SDimitry Andric  }
3665ffd83dbSDimitry Andric  module concepts {
3675ffd83dbSDimitry Andric    header "concepts"
3685ffd83dbSDimitry Andric    export *
3695ffd83dbSDimitry Andric  }
3700b57cec5SDimitry Andric  module condition_variable {
3710b57cec5SDimitry Andric    header "condition_variable"
3720b57cec5SDimitry Andric    export *
3730b57cec5SDimitry Andric  }
3740b57cec5SDimitry Andric  module deque {
3750b57cec5SDimitry Andric    header "deque"
3760b57cec5SDimitry Andric    export initializer_list
3770b57cec5SDimitry Andric    export *
3780b57cec5SDimitry Andric  }
3790b57cec5SDimitry Andric  module exception {
3800b57cec5SDimitry Andric    header "exception"
3810b57cec5SDimitry Andric    export *
3820b57cec5SDimitry Andric  }
383e40139ffSDimitry Andric  module execution {
384e40139ffSDimitry Andric    header "execution"
385e40139ffSDimitry Andric    export *
386e40139ffSDimitry Andric  }
3870b57cec5SDimitry Andric  module filesystem {
3880b57cec5SDimitry Andric    header "filesystem"
3890b57cec5SDimitry Andric    export *
3900b57cec5SDimitry Andric  }
391*5f7ddb14SDimitry Andric  module format {
392*5f7ddb14SDimitry Andric    header "format"
393*5f7ddb14SDimitry Andric    export *
394*5f7ddb14SDimitry Andric
395*5f7ddb14SDimitry Andric    module __format {
396*5f7ddb14SDimitry Andric      module format_error         { private header "__format/format_error.h"         }
397*5f7ddb14SDimitry Andric      module format_parse_context { private header "__format/format_parse_context.h" }
398*5f7ddb14SDimitry Andric    }
399*5f7ddb14SDimitry Andric  }
4000b57cec5SDimitry Andric  module forward_list {
4010b57cec5SDimitry Andric    header "forward_list"
4020b57cec5SDimitry Andric    export initializer_list
4030b57cec5SDimitry Andric    export *
4040b57cec5SDimitry Andric  }
4050b57cec5SDimitry Andric  module fstream {
4060b57cec5SDimitry Andric    header "fstream"
4070b57cec5SDimitry Andric    export *
4080b57cec5SDimitry Andric  }
4090b57cec5SDimitry Andric  module functional {
4100b57cec5SDimitry Andric    header "functional"
4110b57cec5SDimitry Andric    export *
412*5f7ddb14SDimitry Andric
413*5f7ddb14SDimitry Andric    module __functional {
414*5f7ddb14SDimitry Andric      module binary_function            { private header "__functional/binary_function.h" }
415*5f7ddb14SDimitry Andric      module binary_negate              { private header "__functional/binary_negate.h" }
416*5f7ddb14SDimitry Andric      module bind                       { private header "__functional/bind.h" }
417*5f7ddb14SDimitry Andric      module bind_front                 { private header "__functional/bind_front.h" }
418*5f7ddb14SDimitry Andric      module binder1st                  { private header "__functional/binder1st.h" }
419*5f7ddb14SDimitry Andric      module binder2nd                  { private header "__functional/binder2nd.h" }
420*5f7ddb14SDimitry Andric      module default_searcher           { private header "__functional/default_searcher.h" }
421*5f7ddb14SDimitry Andric      module function                   { private header "__functional/function.h" }
422*5f7ddb14SDimitry Andric      module hash                       { private header "__functional/hash.h" }
423*5f7ddb14SDimitry Andric      module identity                   { private header "__functional/identity.h" }
424*5f7ddb14SDimitry Andric      module is_transparent             { private header "__functional/is_transparent.h" }
425*5f7ddb14SDimitry Andric      module invoke                     { private header "__functional/invoke.h" }
426*5f7ddb14SDimitry Andric      module mem_fn                     { private header "__functional/mem_fn.h"  }
427*5f7ddb14SDimitry Andric      module mem_fun_ref                { private header "__functional/mem_fun_ref.h"  }
428*5f7ddb14SDimitry Andric      module not_fn                     { private header "__functional/not_fn.h" }
429*5f7ddb14SDimitry Andric      module operations                 { private header "__functional/operations.h" }
430*5f7ddb14SDimitry Andric      module perfect_forward            { private header "__functional/perfect_forward.h" }
431*5f7ddb14SDimitry Andric      module pointer_to_binary_function { private header "__functional/pointer_to_binary_function.h" }
432*5f7ddb14SDimitry Andric      module pointer_to_unary_function  { private header "__functional/pointer_to_unary_function.h" }
433*5f7ddb14SDimitry Andric      module ranges_operations          { private header "__functional/ranges_operations.h" }
434*5f7ddb14SDimitry Andric      module reference_wrapper          { private header "__functional/reference_wrapper.h" }
435*5f7ddb14SDimitry Andric      module unary_function             { private header "__functional/unary_function.h" }
436*5f7ddb14SDimitry Andric      module unary_negate               { private header "__functional/unary_negate.h" }
437*5f7ddb14SDimitry Andric      module unwrap_ref                 { private header "__functional/unwrap_ref.h" }
438*5f7ddb14SDimitry Andric      module weak_result_type           { private header "__functional/weak_result_type.h" }
439*5f7ddb14SDimitry Andric    }
4400b57cec5SDimitry Andric  }
4410b57cec5SDimitry Andric  module future {
4420b57cec5SDimitry Andric    header "future"
4430b57cec5SDimitry Andric    export *
4440b57cec5SDimitry Andric  }
4450b57cec5SDimitry Andric  module initializer_list {
4460b57cec5SDimitry Andric    header "initializer_list"
4470b57cec5SDimitry Andric    export *
4480b57cec5SDimitry Andric  }
4490b57cec5SDimitry Andric  module iomanip {
4500b57cec5SDimitry Andric    header "iomanip"
4510b57cec5SDimitry Andric    export *
4520b57cec5SDimitry Andric  }
4530b57cec5SDimitry Andric  module ios {
4540b57cec5SDimitry Andric    header "ios"
4550b57cec5SDimitry Andric    export iosfwd
4560b57cec5SDimitry Andric    export *
4570b57cec5SDimitry Andric  }
4580b57cec5SDimitry Andric  module iosfwd {
4590b57cec5SDimitry Andric    header "iosfwd"
4600b57cec5SDimitry Andric    export *
4610b57cec5SDimitry Andric  }
4620b57cec5SDimitry Andric  module iostream {
4630b57cec5SDimitry Andric    header "iostream"
4640b57cec5SDimitry Andric    export ios
4650b57cec5SDimitry Andric    export streambuf
4660b57cec5SDimitry Andric    export istream
4670b57cec5SDimitry Andric    export ostream
4680b57cec5SDimitry Andric    export *
4690b57cec5SDimitry Andric  }
4700b57cec5SDimitry Andric  module istream {
4710b57cec5SDimitry Andric    header "istream"
4720b57cec5SDimitry Andric    // FIXME: should re-export ios, streambuf?
4730b57cec5SDimitry Andric    export *
4740b57cec5SDimitry Andric  }
4750b57cec5SDimitry Andric  module iterator {
4760b57cec5SDimitry Andric    header "iterator"
4770b57cec5SDimitry Andric    export *
478*5f7ddb14SDimitry Andric
479*5f7ddb14SDimitry Andric    module __iterator {
480*5f7ddb14SDimitry Andric      module access                { private header "__iterator/access.h" }
481*5f7ddb14SDimitry Andric      module advance               {
482*5f7ddb14SDimitry Andric        private header "__iterator/advance.h"
483*5f7ddb14SDimitry Andric        export __function_like
484*5f7ddb14SDimitry Andric      }
485*5f7ddb14SDimitry Andric      module back_insert_iterator  { private header "__iterator/back_insert_iterator.h" }
486*5f7ddb14SDimitry Andric      module common_iterator       { private header "__iterator/common_iterator.h" }
487*5f7ddb14SDimitry Andric      module concepts              { private header "__iterator/concepts.h" }
488*5f7ddb14SDimitry Andric      module counted_iterator      { private header "__iterator/counted_iterator.h" }
489*5f7ddb14SDimitry Andric      module data                  { private header "__iterator/data.h" }
490*5f7ddb14SDimitry Andric      module default_sentinel      { private header "__iterator/default_sentinel.h" }
491*5f7ddb14SDimitry Andric      module distance              { private header "__iterator/distance.h" }
492*5f7ddb14SDimitry Andric      module empty                 { private header "__iterator/empty.h" }
493*5f7ddb14SDimitry Andric      module erase_if_container    { private header "__iterator/erase_if_container.h" }
494*5f7ddb14SDimitry Andric      module front_insert_iterator { private header "__iterator/front_insert_iterator.h" }
495*5f7ddb14SDimitry Andric      module incrementable_traits  { private header "__iterator/incrementable_traits.h" }
496*5f7ddb14SDimitry Andric      module insert_iterator       { private header "__iterator/insert_iterator.h" }
497*5f7ddb14SDimitry Andric      module istream_iterator      { private header "__iterator/istream_iterator.h" }
498*5f7ddb14SDimitry Andric      module istreambuf_iterator   { private header "__iterator/istreambuf_iterator.h" }
499*5f7ddb14SDimitry Andric      module iter_move             { private header "__iterator/iter_move.h" }
500*5f7ddb14SDimitry Andric      module iter_swap             { private header "__iterator/iter_swap.h" }
501*5f7ddb14SDimitry Andric      module iterator              { private header "__iterator/iterator.h" }
502*5f7ddb14SDimitry Andric      module iterator_traits       { private header "__iterator/iterator_traits.h" }
503*5f7ddb14SDimitry Andric      module move_iterator         { private header "__iterator/move_iterator.h" }
504*5f7ddb14SDimitry Andric      module next                  {
505*5f7ddb14SDimitry Andric        private header "__iterator/next.h"
506*5f7ddb14SDimitry Andric        export __function_like
507*5f7ddb14SDimitry Andric      }
508*5f7ddb14SDimitry Andric      module ostream_iterator      { private header "__iterator/ostream_iterator.h" }
509*5f7ddb14SDimitry Andric      module ostreambuf_iterator   { private header "__iterator/ostreambuf_iterator.h" }
510*5f7ddb14SDimitry Andric      module prev                  {
511*5f7ddb14SDimitry Andric        private header "__iterator/prev.h"
512*5f7ddb14SDimitry Andric        export __function_like
513*5f7ddb14SDimitry Andric      }
514*5f7ddb14SDimitry Andric      module projected             { private header "__iterator/projected.h" }
515*5f7ddb14SDimitry Andric      module readable_traits       { private header "__iterator/readable_traits.h" }
516*5f7ddb14SDimitry Andric      module reverse_access        { private header "__iterator/reverse_access.h" }
517*5f7ddb14SDimitry Andric      module reverse_iterator      { private header "__iterator/reverse_iterator.h" }
518*5f7ddb14SDimitry Andric      module size                  { private header "__iterator/size.h" }
519*5f7ddb14SDimitry Andric      module wrap_iter             { private header "__iterator/wrap_iter.h" }
520*5f7ddb14SDimitry Andric    }
5210b57cec5SDimitry Andric  }
5225ffd83dbSDimitry Andric  module latch {
5235ffd83dbSDimitry Andric    requires cplusplus14
5245ffd83dbSDimitry Andric    header "latch"
5255ffd83dbSDimitry Andric    export *
5265ffd83dbSDimitry Andric  }
5270b57cec5SDimitry Andric  module limits {
5280b57cec5SDimitry Andric    header "limits"
5290b57cec5SDimitry Andric    export *
5300b57cec5SDimitry Andric  }
5310b57cec5SDimitry Andric  module list {
5320b57cec5SDimitry Andric    header "list"
5330b57cec5SDimitry Andric    export initializer_list
5340b57cec5SDimitry Andric    export *
5350b57cec5SDimitry Andric  }
5360b57cec5SDimitry Andric  module locale {
5370b57cec5SDimitry Andric    header "locale"
5380b57cec5SDimitry Andric    export *
5390b57cec5SDimitry Andric  }
5400b57cec5SDimitry Andric  module map {
5410b57cec5SDimitry Andric    header "map"
5420b57cec5SDimitry Andric    export initializer_list
5430b57cec5SDimitry Andric    export *
5440b57cec5SDimitry Andric  }
5450b57cec5SDimitry Andric  module memory {
5460b57cec5SDimitry Andric    header "memory"
5470b57cec5SDimitry Andric    export *
548*5f7ddb14SDimitry Andric
549*5f7ddb14SDimitry Andric    module __memory {
550*5f7ddb14SDimitry Andric      module addressof                { private header "__memory/addressof.h"                }
551*5f7ddb14SDimitry Andric      module allocation_guard         { private header "__memory/allocation_guard.h"         }
552*5f7ddb14SDimitry Andric      module allocator                { private header "__memory/allocator.h"                }
553*5f7ddb14SDimitry Andric      module allocator_arg_t          { private header "__memory/allocator_arg_t.h"          }
554*5f7ddb14SDimitry Andric      module allocator_traits         { private header "__memory/allocator_traits.h"         }
555*5f7ddb14SDimitry Andric      module auto_ptr                 { private header "__memory/auto_ptr.h"                 }
556*5f7ddb14SDimitry Andric      module compressed_pair          { private header "__memory/compressed_pair.h"          }
557*5f7ddb14SDimitry Andric      module construct_at             { private header "__memory/construct_at.h"             }
558*5f7ddb14SDimitry Andric      module pointer_safety           { private header "__memory/pointer_safety.h"           }
559*5f7ddb14SDimitry Andric      module pointer_traits           { private header "__memory/pointer_traits.h"           }
560*5f7ddb14SDimitry Andric      module raw_storage_iterator     { private header "__memory/raw_storage_iterator.h"     }
561*5f7ddb14SDimitry Andric      module shared_ptr               { private header "__memory/shared_ptr.h"               }
562*5f7ddb14SDimitry Andric      module temporary_buffer         { private header "__memory/temporary_buffer.h"         }
563*5f7ddb14SDimitry Andric      module uninitialized_algorithms { private header "__memory/uninitialized_algorithms.h" }
564*5f7ddb14SDimitry Andric      module unique_ptr               { private header "__memory/unique_ptr.h"               }
565*5f7ddb14SDimitry Andric      module uses_allocator           { private header "__memory/uses_allocator.h"           }
566*5f7ddb14SDimitry Andric    }
5670b57cec5SDimitry Andric  }
5680b57cec5SDimitry Andric  module mutex {
5690b57cec5SDimitry Andric    header "mutex"
5700b57cec5SDimitry Andric    export *
5710b57cec5SDimitry Andric  }
5720b57cec5SDimitry Andric  module new {
5730b57cec5SDimitry Andric    header "new"
5740b57cec5SDimitry Andric    export *
5750b57cec5SDimitry Andric  }
5765ffd83dbSDimitry Andric  module numbers {
5775ffd83dbSDimitry Andric    header "numbers"
5785ffd83dbSDimitry Andric    export *
5795ffd83dbSDimitry Andric  }
5800b57cec5SDimitry Andric  module numeric {
5810b57cec5SDimitry Andric    header "numeric"
5820b57cec5SDimitry Andric    export *
5830b57cec5SDimitry Andric  }
5840b57cec5SDimitry Andric  module optional {
5850b57cec5SDimitry Andric    header "optional"
5860b57cec5SDimitry Andric    export *
5870b57cec5SDimitry Andric  }
5880b57cec5SDimitry Andric  module ostream {
5890b57cec5SDimitry Andric    header "ostream"
5900b57cec5SDimitry Andric    // FIXME: should re-export ios, streambuf?
5910b57cec5SDimitry Andric    export *
5920b57cec5SDimitry Andric  }
5930b57cec5SDimitry Andric  module queue {
5940b57cec5SDimitry Andric    header "queue"
5950b57cec5SDimitry Andric    export initializer_list
5960b57cec5SDimitry Andric    export *
5970b57cec5SDimitry Andric  }
5980b57cec5SDimitry Andric  module random {
5990b57cec5SDimitry Andric    header "random"
6000b57cec5SDimitry Andric    export initializer_list
6010b57cec5SDimitry Andric    export *
602*5f7ddb14SDimitry Andric
603*5f7ddb14SDimitry Andric    module __random {
604*5f7ddb14SDimitry Andric      module uniform_int_distribution { private header "__random/uniform_int_distribution.h" }
605*5f7ddb14SDimitry Andric    }
606*5f7ddb14SDimitry Andric  }
607*5f7ddb14SDimitry Andric  module ranges {
608*5f7ddb14SDimitry Andric    header "ranges"
609*5f7ddb14SDimitry Andric    export compare
610*5f7ddb14SDimitry Andric    export initializer_list
611*5f7ddb14SDimitry Andric    export iterator
612*5f7ddb14SDimitry Andric    export *
613*5f7ddb14SDimitry Andric
614*5f7ddb14SDimitry Andric    module __ranges {
615*5f7ddb14SDimitry Andric      module access                 { private header "__ranges/access.h"                }
616*5f7ddb14SDimitry Andric      module all                    { private header "__ranges/all.h"                   }
617*5f7ddb14SDimitry Andric      module common_view            { private header "__ranges/common_view.h"           }
618*5f7ddb14SDimitry Andric      module concepts               { private header "__ranges/concepts.h"              }
619*5f7ddb14SDimitry Andric      module copyable_box           { private header "__ranges/copyable_box.h"          }
620*5f7ddb14SDimitry Andric      module dangling               { private header "__ranges/dangling.h"              }
621*5f7ddb14SDimitry Andric      module data                   { private header "__ranges/data.h"                  }
622*5f7ddb14SDimitry Andric      module drop_view              { private header "__ranges/drop_view.h"             }
623*5f7ddb14SDimitry Andric      module empty                  { private header "__ranges/empty.h"                 }
624*5f7ddb14SDimitry Andric      module empty_view             { private header "__ranges/empty_view.h"            }
625*5f7ddb14SDimitry Andric      module enable_borrowed_range  { private header "__ranges/enable_borrowed_range.h" }
626*5f7ddb14SDimitry Andric      module enable_view            { private header "__ranges/enable_view.h"           }
627*5f7ddb14SDimitry Andric      module non_propagating_cache  { private header "__ranges/non_propagating_cache.h" }
628*5f7ddb14SDimitry Andric      module ref_view               { private header "__ranges/ref_view.h"              }
629*5f7ddb14SDimitry Andric      module size                   { private header "__ranges/size.h"                  }
630*5f7ddb14SDimitry Andric      module subrange               { private header "__ranges/subrange.h"              }
631*5f7ddb14SDimitry Andric      module transform_view         { private header "__ranges/transform_view.h"        }
632*5f7ddb14SDimitry Andric      module view_interface         { private header "__ranges/view_interface.h"        }
633*5f7ddb14SDimitry Andric    }
6340b57cec5SDimitry Andric  }
6350b57cec5SDimitry Andric  module ratio {
6360b57cec5SDimitry Andric    header "ratio"
6370b57cec5SDimitry Andric    export *
6380b57cec5SDimitry Andric  }
6390b57cec5SDimitry Andric  module regex {
6400b57cec5SDimitry Andric    header "regex"
6410b57cec5SDimitry Andric    export initializer_list
6420b57cec5SDimitry Andric    export *
6430b57cec5SDimitry Andric  }
6440b57cec5SDimitry Andric  module scoped_allocator {
6450b57cec5SDimitry Andric    header "scoped_allocator"
6460b57cec5SDimitry Andric    export *
6470b57cec5SDimitry Andric  }
6485ffd83dbSDimitry Andric  module semaphore {
6495ffd83dbSDimitry Andric    requires cplusplus14
6505ffd83dbSDimitry Andric    header "semaphore"
6515ffd83dbSDimitry Andric    export *
6525ffd83dbSDimitry Andric  }
6530b57cec5SDimitry Andric  module set {
6540b57cec5SDimitry Andric    header "set"
6550b57cec5SDimitry Andric    export initializer_list
6560b57cec5SDimitry Andric    export *
6570b57cec5SDimitry Andric  }
658*5f7ddb14SDimitry Andric  module shared_mutex {
659*5f7ddb14SDimitry Andric    header "shared_mutex"
660*5f7ddb14SDimitry Andric    export version
661*5f7ddb14SDimitry Andric  }
662*5f7ddb14SDimitry Andric  module span {
663*5f7ddb14SDimitry Andric    header "span"
664*5f7ddb14SDimitry Andric    export ranges.__ranges.enable_borrowed_range
665*5f7ddb14SDimitry Andric    export version
666*5f7ddb14SDimitry Andric  }
6670b57cec5SDimitry Andric  module sstream {
6680b57cec5SDimitry Andric    header "sstream"
6690b57cec5SDimitry Andric    // FIXME: should re-export istream, ostream, ios, streambuf, string?
6700b57cec5SDimitry Andric    export *
6710b57cec5SDimitry Andric  }
6720b57cec5SDimitry Andric  module stack {
6730b57cec5SDimitry Andric    header "stack"
6740b57cec5SDimitry Andric    export initializer_list
6750b57cec5SDimitry Andric    export *
6760b57cec5SDimitry Andric  }
6770b57cec5SDimitry Andric  module stdexcept {
6780b57cec5SDimitry Andric    header "stdexcept"
6790b57cec5SDimitry Andric    export *
6800b57cec5SDimitry Andric  }
6810b57cec5SDimitry Andric  module streambuf {
6820b57cec5SDimitry Andric    header "streambuf"
6830b57cec5SDimitry Andric    export *
6840b57cec5SDimitry Andric  }
6850b57cec5SDimitry Andric  module string {
6860b57cec5SDimitry Andric    header "string"
6870b57cec5SDimitry Andric    export initializer_list
6880b57cec5SDimitry Andric    export string_view
6890b57cec5SDimitry Andric    export __string
6900b57cec5SDimitry Andric    export *
6910b57cec5SDimitry Andric  }
6920b57cec5SDimitry Andric  module string_view {
6930b57cec5SDimitry Andric    header "string_view"
6940b57cec5SDimitry Andric    export initializer_list
6950b57cec5SDimitry Andric    export __string
6960b57cec5SDimitry Andric    export *
6970b57cec5SDimitry Andric  }
6980b57cec5SDimitry Andric  module strstream {
6990b57cec5SDimitry Andric    header "strstream"
7000b57cec5SDimitry Andric    export *
7010b57cec5SDimitry Andric  }
7020b57cec5SDimitry Andric  module system_error {
7030b57cec5SDimitry Andric    header "system_error"
7040b57cec5SDimitry Andric    export *
7050b57cec5SDimitry Andric  }
7060b57cec5SDimitry Andric  module thread {
7070b57cec5SDimitry Andric    header "thread"
7080b57cec5SDimitry Andric    export *
7090b57cec5SDimitry Andric  }
7100b57cec5SDimitry Andric  module tuple {
7110b57cec5SDimitry Andric    header "tuple"
7120b57cec5SDimitry Andric    export *
7130b57cec5SDimitry Andric  }
7140b57cec5SDimitry Andric  module type_traits {
7150b57cec5SDimitry Andric    header "type_traits"
716*5f7ddb14SDimitry Andric    export functional.__functional.unwrap_ref
7170b57cec5SDimitry Andric    export *
7180b57cec5SDimitry Andric  }
7190b57cec5SDimitry Andric  module typeindex {
7200b57cec5SDimitry Andric    header "typeindex"
7210b57cec5SDimitry Andric    export *
7220b57cec5SDimitry Andric  }
7230b57cec5SDimitry Andric  module typeinfo {
7240b57cec5SDimitry Andric    header "typeinfo"
7250b57cec5SDimitry Andric    export *
7260b57cec5SDimitry Andric  }
7270b57cec5SDimitry Andric  module unordered_map {
7280b57cec5SDimitry Andric    header "unordered_map"
7290b57cec5SDimitry Andric    export initializer_list
7300b57cec5SDimitry Andric    export *
7310b57cec5SDimitry Andric  }
7320b57cec5SDimitry Andric  module unordered_set {
7330b57cec5SDimitry Andric    header "unordered_set"
7340b57cec5SDimitry Andric    export initializer_list
7350b57cec5SDimitry Andric    export *
7360b57cec5SDimitry Andric  }
7370b57cec5SDimitry Andric  module utility {
7380b57cec5SDimitry Andric    header "utility"
7390b57cec5SDimitry Andric    export initializer_list
7400b57cec5SDimitry Andric    export *
741*5f7ddb14SDimitry Andric
742*5f7ddb14SDimitry Andric    module __utility {
743*5f7ddb14SDimitry Andric      module __decay_copy        { private header "__utility/__decay_copy.h"        }
744*5f7ddb14SDimitry Andric      module as_const            { private header "__utility/as_const.h"            }
745*5f7ddb14SDimitry Andric      module cmp                 { private header "__utility/cmp.h"                 }
746*5f7ddb14SDimitry Andric      module declval             { private header "__utility/declval.h"             }
747*5f7ddb14SDimitry Andric      module exchange            { private header "__utility/exchange.h"            }
748*5f7ddb14SDimitry Andric      module forward             { private header "__utility/forward.h"             }
749*5f7ddb14SDimitry Andric      module in_place            { private header "__utility/in_place.h"            }
750*5f7ddb14SDimitry Andric      module integer_sequence    { private header "__utility/integer_sequence.h"    }
751*5f7ddb14SDimitry Andric      module move                { private header "__utility/move.h"                }
752*5f7ddb14SDimitry Andric      module pair                { private header "__utility/pair.h"                }
753*5f7ddb14SDimitry Andric      module piecewise_construct { private header "__utility/piecewise_construct.h" }
754*5f7ddb14SDimitry Andric      module rel_ops             { private header "__utility/rel_ops.h"             }
755*5f7ddb14SDimitry Andric      module swap                { private header "__utility/swap.h"                }
756*5f7ddb14SDimitry Andric      module to_underlying       { private header "__utility/to_underlying.h"       }
757*5f7ddb14SDimitry Andric    }
7580b57cec5SDimitry Andric  }
7590b57cec5SDimitry Andric  module valarray {
7600b57cec5SDimitry Andric    header "valarray"
7610b57cec5SDimitry Andric    export initializer_list
7620b57cec5SDimitry Andric    export *
7630b57cec5SDimitry Andric  }
7640b57cec5SDimitry Andric  module variant {
7650b57cec5SDimitry Andric    header "variant"
7660b57cec5SDimitry Andric    export *
767*5f7ddb14SDimitry Andric
768*5f7ddb14SDimitry Andric    module __variant {
769*5f7ddb14SDimitry Andric      module monostate { private header "__variant/monostate.h" }
770*5f7ddb14SDimitry Andric    }
7710b57cec5SDimitry Andric  }
7720b57cec5SDimitry Andric  module vector {
7730b57cec5SDimitry Andric    header "vector"
7740b57cec5SDimitry Andric    export initializer_list
7750b57cec5SDimitry Andric    export *
7760b57cec5SDimitry Andric  }
7770b57cec5SDimitry Andric  module version {
7780b57cec5SDimitry Andric    header "version"
7790b57cec5SDimitry Andric    export *
7800b57cec5SDimitry Andric  }
7810b57cec5SDimitry Andric
782*5f7ddb14SDimitry Andric  // __config not modularised due to a bug in Clang
7830b57cec5SDimitry Andric  // FIXME: These should be private.
784*5f7ddb14SDimitry Andric  module __availability      { private header "__availability"      export * }
785*5f7ddb14SDimitry Andric  module __bit_reference     { private header "__bit_reference"     export * }
786*5f7ddb14SDimitry Andric  module __bits              { private header "__bits"              export * }
7870b57cec5SDimitry Andric  module __debug             { header "__debug"             export * }
788*5f7ddb14SDimitry Andric  module __errc              { private header "__errc"              export * }
789*5f7ddb14SDimitry Andric  module __function_like     { private header "__function_like.h"   export * }
7900b57cec5SDimitry Andric  module __hash_table        { header "__hash_table"        export * }
791*5f7ddb14SDimitry Andric  module __locale            { private header "__locale"            export * }
792*5f7ddb14SDimitry Andric  module __mutex_base        { private header "__mutex_base"        export * }
793*5f7ddb14SDimitry Andric  module __node_handle       { private header "__node_handle"       export * }
794*5f7ddb14SDimitry Andric  module __nullptr           { header "__nullptr"           export * }
795*5f7ddb14SDimitry Andric  module __split_buffer      { private header "__split_buffer"      export * }
796*5f7ddb14SDimitry Andric  module __std_stream        { private header "__std_stream"        export * }
797*5f7ddb14SDimitry Andric  module __string            { private header "__string"            export * }
798*5f7ddb14SDimitry Andric  module __threading_support { header "__threading_support" export * }
7990b57cec5SDimitry Andric  module __tree              { header "__tree"              export * }
800*5f7ddb14SDimitry Andric  module __tuple             { private header "__tuple"             export * }
8010b57cec5SDimitry Andric  module __undef_macros      { header "__undef_macros"      export * }
8020b57cec5SDimitry Andric
8030b57cec5SDimitry Andric  module experimental {
8040b57cec5SDimitry Andric    requires cplusplus11
8050b57cec5SDimitry Andric
8060b57cec5SDimitry Andric    module algorithm {
8070b57cec5SDimitry Andric      header "experimental/algorithm"
8080b57cec5SDimitry Andric      export *
8090b57cec5SDimitry Andric    }
8100b57cec5SDimitry Andric     module coroutine {
8110b57cec5SDimitry Andric      requires coroutines
8120b57cec5SDimitry Andric      header "experimental/coroutine"
8130b57cec5SDimitry Andric      export *
8140b57cec5SDimitry Andric    }
8150b57cec5SDimitry Andric    module deque {
8160b57cec5SDimitry Andric      header "experimental/deque"
8170b57cec5SDimitry Andric      export *
8180b57cec5SDimitry Andric    }
8190b57cec5SDimitry Andric    module filesystem {
8200b57cec5SDimitry Andric      header "experimental/filesystem"
8210b57cec5SDimitry Andric      export *
8220b57cec5SDimitry Andric    }
8230b57cec5SDimitry Andric    module forward_list {
8240b57cec5SDimitry Andric      header "experimental/forward_list"
8250b57cec5SDimitry Andric      export *
8260b57cec5SDimitry Andric    }
8270b57cec5SDimitry Andric    module functional {
8280b57cec5SDimitry Andric      header "experimental/functional"
8290b57cec5SDimitry Andric      export *
8300b57cec5SDimitry Andric    }
8310b57cec5SDimitry Andric    module iterator {
8320b57cec5SDimitry Andric      header "experimental/iterator"
8330b57cec5SDimitry Andric      export *
8340b57cec5SDimitry Andric    }
8350b57cec5SDimitry Andric    module list {
8360b57cec5SDimitry Andric      header "experimental/list"
8370b57cec5SDimitry Andric      export *
8380b57cec5SDimitry Andric    }
8390b57cec5SDimitry Andric    module map {
8400b57cec5SDimitry Andric      header "experimental/map"
8410b57cec5SDimitry Andric      export *
8420b57cec5SDimitry Andric    }
8430b57cec5SDimitry Andric    module memory_resource {
8440b57cec5SDimitry Andric      header "experimental/memory_resource"
8450b57cec5SDimitry Andric      export *
8460b57cec5SDimitry Andric    }
8470b57cec5SDimitry Andric    module propagate_const {
8480b57cec5SDimitry Andric      header "experimental/propagate_const"
8490b57cec5SDimitry Andric      export *
8500b57cec5SDimitry Andric    }
8510b57cec5SDimitry Andric    module regex {
8520b57cec5SDimitry Andric      header "experimental/regex"
8530b57cec5SDimitry Andric      export *
8540b57cec5SDimitry Andric    }
8550b57cec5SDimitry Andric    module simd {
8560b57cec5SDimitry Andric      header "experimental/simd"
8570b57cec5SDimitry Andric      export *
8580b57cec5SDimitry Andric    }
8590b57cec5SDimitry Andric    module set {
8600b57cec5SDimitry Andric      header "experimental/set"
8610b57cec5SDimitry Andric      export *
8620b57cec5SDimitry Andric    }
8630b57cec5SDimitry Andric    module span {
8640b57cec5SDimitry Andric      header "span"
8650b57cec5SDimitry Andric      export *
8660b57cec5SDimitry Andric    }
8670b57cec5SDimitry Andric    module string {
8680b57cec5SDimitry Andric      header "experimental/string"
8690b57cec5SDimitry Andric      export *
8700b57cec5SDimitry Andric    }
8710b57cec5SDimitry Andric    module type_traits {
8720b57cec5SDimitry Andric      header "experimental/type_traits"
8730b57cec5SDimitry Andric      export *
8740b57cec5SDimitry Andric    }
8750b57cec5SDimitry Andric    module unordered_map {
8760b57cec5SDimitry Andric      header "experimental/unordered_map"
8770b57cec5SDimitry Andric      export *
8780b57cec5SDimitry Andric    }
8790b57cec5SDimitry Andric    module unordered_set {
8800b57cec5SDimitry Andric      header "experimental/unordered_set"
8810b57cec5SDimitry Andric      export *
8820b57cec5SDimitry Andric    }
8830b57cec5SDimitry Andric    module utility {
8840b57cec5SDimitry Andric      header "experimental/utility"
8850b57cec5SDimitry Andric      export *
8860b57cec5SDimitry Andric    }
8870b57cec5SDimitry Andric    module vector {
8880b57cec5SDimitry Andric      header "experimental/vector"
8890b57cec5SDimitry Andric      export *
8900b57cec5SDimitry Andric    }
8910b57cec5SDimitry Andric    // FIXME these should be private
8920b57cec5SDimitry Andric    module __memory {
8930b57cec5SDimitry Andric      header "experimental/__memory"
8940b57cec5SDimitry Andric      export *
8950b57cec5SDimitry Andric    }
8960b57cec5SDimitry Andric  } // end experimental
8970b57cec5SDimitry Andric}
898