diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2022-07-04 19:20:19 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-02-08 19:02:26 +0000 |
commit | 81ad626541db97eb356e2c1d4a20eb2a26a766ab (patch) | |
tree | 311b6a8987c32b1e1dcbab65c54cfac3fdb56175 /lib/libc++ | |
parent | 5fff09660e06a66bed6482da9c70df328e16bbb6 (diff) | |
parent | 145449b1e420787bb99721a429341fa6be3adfb6 (diff) |
Diffstat (limited to 'lib/libc++')
-rw-r--r-- | lib/libc++/Makefile | 225 | ||||
-rw-r--r-- | lib/libc++/__config_site | 24 | ||||
-rw-r--r-- | lib/libc++/module.modulemap | 1322 |
3 files changed, 1558 insertions, 13 deletions
diff --git a/lib/libc++/Makefile b/lib/libc++/Makefile index e5bf55e37804..3e6b852e642d 100644 --- a/lib/libc++/Makefile +++ b/lib/libc++/Makefile @@ -18,6 +18,7 @@ SHLIB_LDSCRIPT= libc++.ldscript SRCS+= algorithm.cpp SRCS+= any.cpp +SRCS+= assert.cpp SRCS+= atomic.cpp SRCS+= barrier.cpp SRCS+= bind.cpp @@ -37,6 +38,7 @@ SRCS+= hash.cpp SRCS+= ios.cpp SRCS+= ios.instantiations.cpp SRCS+= iostream.cpp +SRCS+= legacy_debug_handler.cpp SRCS+= legacy_pointer_safety.cpp SRCS+= locale.cpp SRCS+= memory.cpp @@ -96,6 +98,7 @@ LIBADD+= cxxrt INCSGROUPS+= STD STDDIR= ${CXXINCLUDEDIR} +STD_HEADERS+= __assert STD_HEADERS+= __availability STD_HEADERS+= __bit_reference STD_HEADERS+= __bits @@ -104,17 +107,13 @@ STD_HEADERS+= __bsd_locale_fallbacks.h STD_HEADERS+= __config STD_HEADERS+= __debug STD_HEADERS+= __errc -STD_HEADERS+= __functional_base STD_HEADERS+= __hash_table -STD_HEADERS+= __libcpp_version STD_HEADERS+= __locale STD_HEADERS+= __mbstate_t.h STD_HEADERS+= __mutex_base STD_HEADERS+= __node_handle -STD_HEADERS+= __nullptr STD_HEADERS+= __split_buffer STD_HEADERS+= __std_stream -STD_HEADERS+= __string STD_HEADERS+= __threading_support STD_HEADERS+= __tree STD_HEADERS+= __tuple @@ -158,6 +157,7 @@ STD_HEADERS+= cstring STD_HEADERS+= ctgmath STD_HEADERS+= ctime STD_HEADERS+= ctype.h +STD_HEADERS+= cuchar STD_HEADERS+= cwchar STD_HEADERS+= cwctype STD_HEADERS+= deque @@ -189,7 +189,6 @@ STD_HEADERS+= locale.h STD_HEADERS+= map STD_HEADERS+= math.h STD_HEADERS+= memory -STD_HEADERS+= module.modulemap STD_HEADERS+= mutex STD_HEADERS+= new STD_HEADERS+= numbers @@ -209,6 +208,7 @@ STD_HEADERS+= shared_mutex STD_HEADERS+= span STD_HEADERS+= sstream STD_HEADERS+= stack +STD_HEADERS+= stdatomic.h STD_HEADERS+= stdbool.h STD_HEADERS+= stddef.h STD_HEADERS+= stdexcept @@ -227,6 +227,7 @@ STD_HEADERS+= tuple STD_HEADERS+= type_traits STD_HEADERS+= typeindex STD_HEADERS+= typeinfo +STD_HEADERS+= uchar.h STD_HEADERS+= unordered_map STD_HEADERS+= unordered_set STD_HEADERS+= utility @@ -244,6 +245,10 @@ STD+= ${HDRDIR}/${hdr} # CMake, and as of 13.0.0 installed side-by-side with__config. STD+= ${.CURDIR}/__config_site +# Special case for module.modulemap, which as of libc++ 15.0.0 is generated by +# CMake. +STD+= ${.CURDIR}/module.modulemap + RT_HEADERS+= cxxabi.h .for hdr in ${RT_HEADERS} STD+= ${_LIBCXXRTDIR}/${hdr} @@ -278,8 +283,11 @@ ALG_HEADERS+= for_each_n.h ALG_HEADERS+= generate.h ALG_HEADERS+= generate_n.h ALG_HEADERS+= half_positive.h +ALG_HEADERS+= in_found_result.h +ALG_HEADERS+= in_fun_result.h ALG_HEADERS+= in_in_out_result.h ALG_HEADERS+= in_in_result.h +ALG_HEADERS+= in_out_out_result.h ALG_HEADERS+= in_out_result.h ALG_HEADERS+= includes.h ALG_HEADERS+= inplace_merge.h @@ -290,14 +298,17 @@ ALG_HEADERS+= is_permutation.h ALG_HEADERS+= is_sorted.h ALG_HEADERS+= is_sorted_until.h ALG_HEADERS+= iter_swap.h +ALG_HEADERS+= iterator_operations.h ALG_HEADERS+= lexicographical_compare.h ALG_HEADERS+= lower_bound.h ALG_HEADERS+= make_heap.h +ALG_HEADERS+= make_projected.h ALG_HEADERS+= max.h ALG_HEADERS+= max_element.h ALG_HEADERS+= merge.h ALG_HEADERS+= min.h ALG_HEADERS+= min_element.h +ALG_HEADERS+= min_max_result.h ALG_HEADERS+= minmax.h ALG_HEADERS+= minmax_element.h ALG_HEADERS+= mismatch.h @@ -314,6 +325,48 @@ ALG_HEADERS+= partition_point.h ALG_HEADERS+= pop_heap.h ALG_HEADERS+= prev_permutation.h ALG_HEADERS+= push_heap.h +ALG_HEADERS+= ranges_adjacent_find.h +ALG_HEADERS+= ranges_all_of.h +ALG_HEADERS+= ranges_any_of.h +ALG_HEADERS+= ranges_binary_search.h +ALG_HEADERS+= ranges_copy.h +ALG_HEADERS+= ranges_copy_backward.h +ALG_HEADERS+= ranges_copy_if.h +ALG_HEADERS+= ranges_copy_n.h +ALG_HEADERS+= ranges_count.h +ALG_HEADERS+= ranges_count_if.h +ALG_HEADERS+= ranges_equal.h +ALG_HEADERS+= ranges_fill.h +ALG_HEADERS+= ranges_fill_n.h +ALG_HEADERS+= ranges_find.h +ALG_HEADERS+= ranges_find_first_of.h +ALG_HEADERS+= ranges_find_if.h +ALG_HEADERS+= ranges_find_if_not.h +ALG_HEADERS+= ranges_for_each.h +ALG_HEADERS+= ranges_for_each_n.h +ALG_HEADERS+= ranges_is_partitioned.h +ALG_HEADERS+= ranges_is_sorted.h +ALG_HEADERS+= ranges_is_sorted_until.h +ALG_HEADERS+= ranges_lexicographical_compare.h +ALG_HEADERS+= ranges_lower_bound.h +ALG_HEADERS+= ranges_max.h +ALG_HEADERS+= ranges_max_element.h +ALG_HEADERS+= ranges_min.h +ALG_HEADERS+= ranges_min_element.h +ALG_HEADERS+= ranges_minmax.h +ALG_HEADERS+= ranges_minmax_element.h +ALG_HEADERS+= ranges_mismatch.h +ALG_HEADERS+= ranges_move.h +ALG_HEADERS+= ranges_move_backward.h +ALG_HEADERS+= ranges_none_of.h +ALG_HEADERS+= ranges_replace.h +ALG_HEADERS+= ranges_replace_if.h +ALG_HEADERS+= ranges_reverse.h +ALG_HEADERS+= ranges_sort.h +ALG_HEADERS+= ranges_stable_sort.h +ALG_HEADERS+= ranges_swap_ranges.h +ALG_HEADERS+= ranges_transform.h +ALG_HEADERS+= ranges_upper_bound.h ALG_HEADERS+= remove.h ALG_HEADERS+= remove_copy.h ALG_HEADERS+= remove_copy_if.h @@ -363,6 +416,8 @@ INCSGROUPS+= CHC CHCDIR= ${CXXINCLUDEDIR}/__charconv CHC_HEADERS+= chars_format.h CHC_HEADERS+= from_chars_result.h +CHC_HEADERS+= tables.h +CHC_HEADERS+= to_chars_base_10.h CHC_HEADERS+= to_chars_result.h .for hdr in ${CHC_HEADERS} CHC+= ${HDRDIR}/__charconv/${hdr} @@ -372,12 +427,23 @@ INCSGROUPS+= CHR CHRDIR= ${CXXINCLUDEDIR}/__chrono CHR_HEADERS+= calendar.h CHR_HEADERS+= convert_to_timespec.h +CHR_HEADERS+= day.h CHR_HEADERS+= duration.h CHR_HEADERS+= file_clock.h +CHR_HEADERS+= hh_mm_ss.h CHR_HEADERS+= high_resolution_clock.h +CHR_HEADERS+= literals.h +CHR_HEADERS+= month.h +CHR_HEADERS+= month_weekday.h +CHR_HEADERS+= monthday.h CHR_HEADERS+= steady_clock.h CHR_HEADERS+= system_clock.h CHR_HEADERS+= time_point.h +CHR_HEADERS+= weekday.h +CHR_HEADERS+= year.h +CHR_HEADERS+= year_month.h +CHR_HEADERS+= year_month_day.h +CHR_HEADERS+= year_month_weekday.h .for hdr in ${CHR_HEADERS} CHR+= ${HDRDIR}/__chrono/${hdr} .endfor @@ -463,7 +529,11 @@ FS+= ${HDRDIR}/__filesystem/${hdr} INCSGROUPS+= FMT FMTDIR= ${CXXINCLUDEDIR}/__format +FMT_HEADERS+= buffer.h +FMT_HEADERS+= concepts.h +FMT_HEADERS+= enable_insertable.h FMT_HEADERS+= format_arg.h +FMT_HEADERS+= format_arg_store.h FMT_HEADERS+= format_args.h FMT_HEADERS+= format_context.h FMT_HEADERS+= format_error.h @@ -477,6 +547,7 @@ FMT_HEADERS+= formatter_char.h FMT_HEADERS+= formatter_floating_point.h FMT_HEADERS+= formatter_integer.h FMT_HEADERS+= formatter_integral.h +FMT_HEADERS+= formatter_output.h FMT_HEADERS+= formatter_pointer.h FMT_HEADERS+= formatter_string.h FMT_HEADERS+= parser_std_format_spec.h @@ -493,6 +564,7 @@ FUN_HEADERS+= bind_back.h FUN_HEADERS+= bind_front.h FUN_HEADERS+= binder1st.h FUN_HEADERS+= binder2nd.h +FUN_HEADERS+= boyer_moore_searcher.h FUN_HEADERS+= compose.h FUN_HEADERS+= default_searcher.h FUN_HEADERS+= function.h @@ -517,11 +589,27 @@ FUN_HEADERS+= weak_result_type.h FUN+= ${HDRDIR}/__functional/${hdr} .endfor +INCSGROUPS+= FWD +FWDDIR= ${CXXINCLUDEDIR}/__fwd +FWD_HEADERS+= span.h +FWD_HEADERS+= string_view.h +.for hdr in ${FWD_HEADERS} +FWD+= ${HDRDIR}/__fwd/${hdr} +.endfor + +INCSGROUPS+= IOS +IOSDIR= ${CXXINCLUDEDIR}/__ios +IOS_HEADERS+= fpos.h +.for hdr in ${IOS_HEADERS} +IOS+= ${HDRDIR}/__ios/${hdr} +.endfor + INCSGROUPS+= IT ITDIR= ${CXXINCLUDEDIR}/__iterator IT_HEADERS+= access.h IT_HEADERS+= advance.h IT_HEADERS+= back_insert_iterator.h +IT_HEADERS+= bounded_iter.h IT_HEADERS+= common_iterator.h IT_HEADERS+= concepts.h IT_HEADERS+= counted_iterator.h @@ -540,16 +628,20 @@ IT_HEADERS+= iter_move.h IT_HEADERS+= iter_swap.h IT_HEADERS+= iterator.h IT_HEADERS+= iterator_traits.h +IT_HEADERS+= mergeable.h IT_HEADERS+= move_iterator.h +IT_HEADERS+= move_sentinel.h IT_HEADERS+= next.h IT_HEADERS+= ostream_iterator.h IT_HEADERS+= ostreambuf_iterator.h +IT_HEADERS+= permutable.h IT_HEADERS+= prev.h IT_HEADERS+= projected.h IT_HEADERS+= readable_traits.h IT_HEADERS+= reverse_access.h IT_HEADERS+= reverse_iterator.h IT_HEADERS+= size.h +IT_HEADERS+= sortable.h IT_HEADERS+= unreachable_sentinel.h IT_HEADERS+= wrap_iter.h .for hdr in ${IT_HEADERS} @@ -559,10 +651,12 @@ IT+= ${HDRDIR}/__iterator/${hdr} INCSGROUPS+= MEM MEMDIR= ${CXXINCLUDEDIR}/__memory MEM_HEADERS+= addressof.h +MEM_HEADERS+= allocate_at_least.h MEM_HEADERS+= allocation_guard.h MEM_HEADERS+= allocator.h MEM_HEADERS+= allocator_arg_t.h MEM_HEADERS+= allocator_traits.h +MEM_HEADERS+= assume_aligned.h MEM_HEADERS+= auto_ptr.h MEM_HEADERS+= compressed_pair.h MEM_HEADERS+= concepts.h @@ -581,7 +675,7 @@ MEM_HEADERS+= voidify.h MEM+= ${HDRDIR}/__memory/${hdr} .endfor -INCSGROUPS+= NUM +INCSGROUPS+= NUM NUMDIR= ${CXXINCLUDEDIR}/__numeric NUM_HEADERS+= accumulate.h NUM_HEADERS+= adjacent_difference.h @@ -618,6 +712,7 @@ RND_HEADERS+= generate_canonical.h RND_HEADERS+= geometric_distribution.h RND_HEADERS+= independent_bits_engine.h RND_HEADERS+= is_seed_sequence.h +RND_HEADERS+= is_valid.h RND_HEADERS+= knuth_b.h RND_HEADERS+= linear_congruential_engine.h RND_HEADERS+= log2.h @@ -657,12 +752,16 @@ RNG_HEADERS+= empty.h RNG_HEADERS+= empty_view.h RNG_HEADERS+= enable_borrowed_range.h RNG_HEADERS+= enable_view.h +RNG_HEADERS+= filter_view.h RNG_HEADERS+= iota_view.h RNG_HEADERS+= join_view.h +RNG_HEADERS+= lazy_split_view.h RNG_HEADERS+= non_propagating_cache.h RNG_HEADERS+= owning_view.h RNG_HEADERS+= range_adaptor.h +RNG_HEADERS+= rbegin.h RNG_HEADERS+= ref_view.h +RNG_HEADERS+= rend.h RNG_HEADERS+= reverse_view.h RNG_HEADERS+= single_view.h RNG_HEADERS+= size.h @@ -671,10 +770,19 @@ RNG_HEADERS+= take_view.h RNG_HEADERS+= transform_view.h RNG_HEADERS+= view_interface.h RNG_HEADERS+= views.h +RNG_HEADERS+= zip_view.h .for hdr in ${RNG_HEADERS} RNG+= ${HDRDIR}/__ranges/${hdr} .endfor +INCSGROUPS+= STR +STRDIR= ${CXXINCLUDEDIR}/__string +STR_HEADERS+= char_traits.h +STR_HEADERS+= extern_template_lists.h +.for hdr in ${STR_HEADERS} +STR+= ${HDRDIR}/__string/${hdr} +.endfor + INCSGROUPS+= THR THRDIR= ${CXXINCLUDEDIR}/__thread THR_HEADERS+= poll_with_backoff.h @@ -683,6 +791,109 @@ THR_HEADERS+= timed_backoff_policy.h THR+= ${HDRDIR}/__thread/${hdr} .endfor +INCSGROUPS+= TTR +TTRDIR= ${CXXINCLUDEDIR}/__type_traits +TTR_HEADERS+= add_const.h +TTR_HEADERS+= add_cv.h +TTR_HEADERS+= add_lvalue_reference.h +TTR_HEADERS+= add_pointer.h +TTR_HEADERS+= add_rvalue_reference.h +TTR_HEADERS+= add_volatile.h +TTR_HEADERS+= alignment_of.h +TTR_HEADERS+= apply_cv.h +TTR_HEADERS+= conditional.h +TTR_HEADERS+= conjunction.h +TTR_HEADERS+= decay.h +TTR_HEADERS+= disjunction.h +TTR_HEADERS+= enable_if.h +TTR_HEADERS+= extent.h +TTR_HEADERS+= has_unique_object_representation.h +TTR_HEADERS+= has_virtual_destructor.h +TTR_HEADERS+= integral_constant.h +TTR_HEADERS+= is_abstract.h +TTR_HEADERS+= is_aggregate.h +TTR_HEADERS+= is_arithmetic.h +TTR_HEADERS+= is_array.h +TTR_HEADERS+= is_assignable.h +TTR_HEADERS+= is_base_of.h +TTR_HEADERS+= is_bounded_array.h +TTR_HEADERS+= is_callable.h +TTR_HEADERS+= is_class.h +TTR_HEADERS+= is_compound.h +TTR_HEADERS+= is_const.h +TTR_HEADERS+= is_constant_evaluated.h +TTR_HEADERS+= is_constructible.h +TTR_HEADERS+= is_convertible.h +TTR_HEADERS+= is_copy_assignable.h +TTR_HEADERS+= is_copy_constructible.h +TTR_HEADERS+= is_core_convertible.h +TTR_HEADERS+= is_default_constructible.h +TTR_HEADERS+= is_destructible.h +TTR_HEADERS+= is_empty.h +TTR_HEADERS+= is_enum.h +TTR_HEADERS+= is_final.h +TTR_HEADERS+= is_floating_point.h +TTR_HEADERS+= is_function.h +TTR_HEADERS+= is_fundamental.h +TTR_HEADERS+= is_integral.h +TTR_HEADERS+= is_literal_type.h +TTR_HEADERS+= is_member_function_pointer.h +TTR_HEADERS+= is_member_object_pointer.h +TTR_HEADERS+= is_member_pointer.h +TTR_HEADERS+= is_move_assignable.h +TTR_HEADERS+= is_move_constructible.h +TTR_HEADERS+= is_nothrow_assignable.h +TTR_HEADERS+= is_nothrow_constructible.h +TTR_HEADERS+= is_nothrow_copy_assignable.h +TTR_HEADERS+= is_nothrow_copy_constructible.h +TTR_HEADERS+= is_nothrow_default_constructible.h +TTR_HEADERS+= is_nothrow_destructible.h +TTR_HEADERS+= is_nothrow_move_assignable.h +TTR_HEADERS+= is_nothrow_move_constructible.h +TTR_HEADERS+= is_null_pointer.h +TTR_HEADERS+= is_object.h +TTR_HEADERS+= is_pod.h +TTR_HEADERS+= is_pointer.h +TTR_HEADERS+= is_polymorphic.h +TTR_HEADERS+= is_reference.h +TTR_HEADERS+= is_reference_wrapper.h +TTR_HEADERS+= is_referenceable.h +TTR_HEADERS+= is_same.h +TTR_HEADERS+= is_scalar.h +TTR_HEADERS+= is_scoped_enum.h +TTR_HEADERS+= is_signed.h +TTR_HEADERS+= is_standard_layout.h +TTR_HEADERS+= is_trivial.h +TTR_HEADERS+= is_trivially_assignable.h +TTR_HEADERS+= is_trivially_constructible.h +TTR_HEADERS+= is_trivially_copy_assignable.h +TTR_HEADERS+= is_trivially_copy_constructible.h +TTR_HEADERS+= is_trivially_copyable.h +TTR_HEADERS+= is_trivially_default_constructible.h +TTR_HEADERS+= is_trivially_destructible.h +TTR_HEADERS+= is_trivially_move_assignable.h +TTR_HEADERS+= is_trivially_move_constructible.h +TTR_HEADERS+= is_unbounded_array.h +TTR_HEADERS+= is_union.h +TTR_HEADERS+= is_unsigned.h +TTR_HEADERS+= is_void.h +TTR_HEADERS+= is_volatile.h +TTR_HEADERS+= negation.h +TTR_HEADERS+= rank.h +TTR_HEADERS+= remove_all_extents.h +TTR_HEADERS+= remove_const.h +TTR_HEADERS+= remove_cv.h +TTR_HEADERS+= remove_extent.h +TTR_HEADERS+= remove_pointer.h +TTR_HEADERS+= remove_reference.h +TTR_HEADERS+= remove_volatile.h +TTR_HEADERS+= type_identity.h +TTR_HEADERS+= underlying_type.h +TTR_HEADERS+= void_t.h +.for hdr in ${TTR_HEADERS} +TTR+= ${HDRDIR}/__type_traits/${hdr} +.endfor + INCSGROUPS+= UTL UTLDIR= ${CXXINCLUDEDIR}/__utility UTL_HEADERS+= as_const.h @@ -701,6 +912,7 @@ UTL_HEADERS+= rel_ops.h UTL_HEADERS+= swap.h UTL_HEADERS+= to_underlying.h UTL_HEADERS+= transaction.h +UTL_HEADERS+= unreachable.h .for hdr in ${UTL_HEADERS} UTL+= ${HDRDIR}/__utility/${hdr} .endfor @@ -719,7 +931,6 @@ EXP_HEADERS+= __memory EXP_HEADERS+= algorithm EXP_HEADERS+= coroutine EXP_HEADERS+= deque -EXP_HEADERS+= filesystem EXP_HEADERS+= forward_list EXP_HEADERS+= functional EXP_HEADERS+= iterator diff --git a/lib/libc++/__config_site b/lib/libc++/__config_site index 69629625b697..2d7d5d73f0ff 100644 --- a/lib/libc++/__config_site +++ b/lib/libc++/__config_site @@ -6,11 +6,11 @@ // //===----------------------------------------------------------------------===// -#ifndef _LIBCPP_CONFIG_SITE -#define _LIBCPP_CONFIG_SITE +#ifndef _LIBCPP___CONFIG_SITE +#define _LIBCPP___CONFIG_SITE -/* #undef _LIBCPP_ABI_VERSION */ -/* #undef _LIBCPP_ABI_UNSTABLE */ +#define _LIBCPP_ABI_VERSION 1 +#define _LIBCPP_ABI_NAMESPACE __1 /* #undef _LIBCPP_ABI_FORCE_ITANIUM */ /* #undef _LIBCPP_ABI_FORCE_MICROSOFT */ /* #undef _LIBCPP_HIDE_FROM_ABI_PER_TU_BY_DEFAULT */ @@ -25,7 +25,6 @@ #define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS /* #undef _LIBCPP_NO_VCRUNTIME */ /* #undef _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION */ -/* #undef _LIBCPP_ABI_NAMESPACE */ /* #undef _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY */ /* #undef _LIBCPP_HAS_PARALLEL_ALGORITHMS */ /* #undef _LIBCPP_HAS_NO_RANDOM_DEVICE */ @@ -33,7 +32,20 @@ /* #undef _LIBCPP_HAS_NO_WIDE_CHARACTERS */ /* #undef _LIBCPP_HAS_NO_INCOMPLETE_FORMAT */ /* #undef _LIBCPP_HAS_NO_INCOMPLETE_RANGES */ +#define _LIBCPP_ENABLE_ASSERTIONS_DEFAULT 0 +/* #undef _LIBCPP_ENABLE_DEBUG_MODE */ +// __USE_MINGW_ANSI_STDIO gets redefined on MinGW +#ifdef __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wmacro-redefined" +#endif -#endif // _LIBCPP_CONFIG_SITE + + +#ifdef __clang__ +# pragma clang diagnostic pop +#endif + +#endif // _LIBCPP___CONFIG_SITE diff --git a/lib/libc++/module.modulemap b/lib/libc++/module.modulemap new file mode 100644 index 000000000000..75df8e58310f --- /dev/null +++ b/lib/libc++/module.modulemap @@ -0,0 +1,1322 @@ +// define the module for __config outside of the top level 'std' module +// since __config may be included from C headers which may create an +// include cycle. +module std_config [system] [extern_c] { + header "__config" + export * +} + +module std [system] { + export std_config + // FIXME: The standard does not require that each of these submodules + // re-exports its imported modules. We should provide an alternative form of + // export that issues a warning if a name from the submodule is used, and + // use that to provide a 'strict mode' for libc++. + + // Deprecated C-compatibility headers. These can all be included from within + // an 'extern "C"' context. + module depr [extern_c] { + // <assert.h> provided by C library. + module ctype_h { + header "ctype.h" + export * + } + module errno_h { + header "errno.h" + export * + } + module fenv_h { + header "fenv.h" + export * + } + // <float.h> provided by compiler or C library. + module inttypes_h { + header "inttypes.h" + export stdint_h + export * + } + // <iso646.h> provided by compiler. + // <limits.h> provided by compiler or C library. + module locale_h { + + header "locale.h" + export * + } + module math_h { + header "math.h" + export * + } + module setjmp_h { + header "setjmp.h" + export * + } + module stdatomic_h { + + requires cplusplus23 + header "stdatomic.h" + export * + } + // FIXME: <stdalign.h> is missing. + // <signal.h> provided by C library. + // <stdarg.h> provided by compiler. + // <stdbool.h> provided by compiler. + module stddef_h { + // <stddef.h>'s __need_* macros require textual inclusion. + textual header "stddef.h" + } + module stdint_h { + header "stdint.h" + export * + // FIXME: This module only exists on OS X and for some reason the + // wildcard above doesn't export it. + export Darwin.C.stdint + } + module stdio_h { + // <stdio.h>'s __need_* macros require textual inclusion. + textual header "stdio.h" + export * + export Darwin.C.stdio + } + module stdlib_h { + // <stdlib.h>'s __need_* macros require textual inclusion. + textual header "stdlib.h" + export * + } + module string_h { + header "string.h" + export * + } + module uchar_h { + header "uchar.h" + export * + } + // <time.h> provided by C library. + module wchar_h { + + // <wchar.h>'s __need_* macros require textual inclusion. + textual header "wchar.h" + export * + } + module wctype_h { + + header "wctype.h" + export * + } + } + + // <complex.h> and <tgmath.h> are not C headers in any real sense, do not + // allow their use in extern "C" contexts. + module complex_h { + header "complex.h" + export ccomplex + export * + } + module tgmath_h { + header "tgmath.h" + export ccomplex + export cmath + export * + } + + // C compatibility headers. + module compat { + module cassert { + // <cassert>'s use of NDEBUG requires textual inclusion. + textual header "cassert" + } + module ccomplex { + header "ccomplex" + export complex + export * + } + module cctype { + header "cctype" + export * + } + module cerrno { + header "cerrno" + export * + } + module cfenv { + header "cfenv" + export * + } + module cfloat { + header "cfloat" + export * + } + module cinttypes { + header "cinttypes" + export cstdint + export * + } + module ciso646 { + header "ciso646" + export * + } + module climits { + header "climits" + export * + } + module clocale { + + header "clocale" + export * + } + module cmath { + header "cmath" + export * + } + module csetjmp { + header "csetjmp" + export * + } + module csignal { + header "csignal" + export * + } + // FIXME: <cstdalign> is missing. + module cstdarg { + header "cstdarg" + export * + } + module cstdbool { + header "cstdbool" + export * + } + module cstddef { + header "cstddef" + export * + } + module cstdint { + header "cstdint" + export depr.stdint_h + export * + } + module cstdio { + header "cstdio" + export * + } + module cstdlib { + header "cstdlib" + export * + } + module cstring { + header "cstring" + export * + } + module ctgmath { + header "ctgmath" + export ccomplex + export cmath + export * + } + module ctime { + header "ctime" + export * + } + module cuchar { + header "cuchar" + export * + } + module cwchar { + + header "cwchar" + export depr.stdio_h + export * + } + module cwctype { + + header "cwctype" + export * + } + } + + module algorithm { + header "algorithm" + export initializer_list + export * + + module __algorithm { + module adjacent_find { private header "__algorithm/adjacent_find.h" } + module all_of { private header "__algorithm/all_of.h" } + module any_of { private header "__algorithm/any_of.h" } + module binary_search { private header "__algorithm/binary_search.h" } + module clamp { private header "__algorithm/clamp.h" } + module comp { private header "__algorithm/comp.h" } + module comp_ref_type { private header "__algorithm/comp_ref_type.h" } + module copy { private header "__algorithm/copy.h" } + module copy_backward { private header "__algorithm/copy_backward.h" } + module copy_if { private header "__algorithm/copy_if.h" } + module copy_n { private header "__algorithm/copy_n.h" } + module count { private header "__algorithm/count.h" } + module count_if { private header "__algorithm/count_if.h" } + module equal { private header "__algorithm/equal.h" } + module equal_range { private header "__algorithm/equal_range.h" } + module fill { private header "__algorithm/fill.h" } + module fill_n { private header "__algorithm/fill_n.h" } + module find { private header "__algorithm/find.h" } + module find_end { private header "__algorithm/find_end.h" } + module find_first_of { private header "__algorithm/find_first_of.h" } + module find_if { private header "__algorithm/find_if.h" } + module find_if_not { private header "__algorithm/find_if_not.h" } + module for_each { private header "__algorithm/for_each.h" } + module for_each_n { private header "__algorithm/for_each_n.h" } + module generate { private header "__algorithm/generate.h" } + module generate_n { private header "__algorithm/generate_n.h" } + module half_positive { private header "__algorithm/half_positive.h" } + module in_found_result { private header "__algorithm/in_found_result.h" } + module in_fun_result { private header "__algorithm/in_fun_result.h" } + module in_in_out_result { private header "__algorithm/in_in_out_result.h" } + module in_in_result { private header "__algorithm/in_in_result.h" } + module in_out_out_result { private header "__algorithm/in_out_out_result.h" } + module in_out_result { private header "__algorithm/in_out_result.h" } + module includes { private header "__algorithm/includes.h" } + module inplace_merge { private header "__algorithm/inplace_merge.h" } + module is_heap { private header "__algorithm/is_heap.h" } + module is_heap_until { private header "__algorithm/is_heap_until.h" } + module is_partitioned { private header "__algorithm/is_partitioned.h" } + module is_permutation { private header "__algorithm/is_permutation.h" } + module is_sorted { private header "__algorithm/is_sorted.h" } + module is_sorted_until { private header "__algorithm/is_sorted_until.h" } + module iter_swap { private header "__algorithm/iter_swap.h" } + module iterator_operations { private header "__algorithm/iterator_operations.h" } + module lexicographical_compare { private header "__algorithm/lexicographical_compare.h" } + module lower_bound { private header "__algorithm/lower_bound.h" } + module make_heap { private header "__algorithm/make_heap.h" } + module make_projected { private header "__algorithm/make_projected.h" } + module max { private header "__algorithm/max.h" } + module max_element { private header "__algorithm/max_element.h" } + module merge { private header "__algorithm/merge.h" } + module min { private header "__algorithm/min.h" } + module min_element { private header "__algorithm/min_element.h" } + module min_max_result { private header "__algorithm/min_max_result.h" } + module minmax { private header "__algorithm/minmax.h" } + module minmax_element { private header "__algorithm/minmax_element.h" } + module mismatch { private header "__algorithm/mismatch.h" } + module move { private header "__algorithm/move.h" } + module move_backward { private header "__algorithm/move_backward.h" } + module next_permutation { private header "__algorithm/next_permutation.h" } + module none_of { private header "__algorithm/none_of.h" } + module nth_element { private header "__algorithm/nth_element.h" } + module partial_sort { private header "__algorithm/partial_sort.h" } + module partial_sort_copy { private header "__algorithm/partial_sort_copy.h" } + module partition { private header "__algorithm/partition.h" } + module partition_copy { private header "__algorithm/partition_copy.h" } + module partition_point { private header "__algorithm/partition_point.h" } + module pop_heap { private header "__algorithm/pop_heap.h" } + module prev_permutation { private header "__algorithm/prev_permutation.h" } + module push_heap { private header "__algorithm/push_heap.h" } + module ranges_adjacent_find { private header "__algorithm/ranges_adjacent_find.h" } + module ranges_all_of { private header "__algorithm/ranges_all_of.h" } + module ranges_any_of { private header "__algorithm/ranges_any_of.h" } + module ranges_binary_search { private header "__algorithm/ranges_binary_search.h" } + module ranges_copy { private header "__algorithm/ranges_copy.h" } + module ranges_copy_backward { private header "__algorithm/ranges_copy_backward.h" } + module ranges_copy_if { private header "__algorithm/ranges_copy_if.h" } + module ranges_copy_n { private header "__algorithm/ranges_copy_n.h" } + module ranges_count { private header "__algorithm/ranges_count.h" } + module ranges_count_if { private header "__algorithm/ranges_count_if.h" } + module ranges_equal { private header "__algorithm/ranges_equal.h" } + module ranges_fill { private header "__algorithm/ranges_fill.h" } + module ranges_fill_n { private header "__algorithm/ranges_fill_n.h" } + module ranges_find { private header "__algorithm/ranges_find.h" } + module ranges_find_first_of { private header "__algorithm/ranges_find_first_of.h" } + module ranges_find_if { private header "__algorithm/ranges_find_if.h" } + module ranges_find_if_not { private header "__algorithm/ranges_find_if_not.h" } + module ranges_for_each { private header "__algorithm/ranges_for_each.h" } + module ranges_for_each_n { private header "__algorithm/ranges_for_each_n.h" } + module ranges_is_partitioned { private header "__algorithm/ranges_is_partitioned.h" } + module ranges_is_sorted { private header "__algorithm/ranges_is_sorted.h" } + module ranges_is_sorted_until { private header "__algorithm/ranges_is_sorted_until.h" } + module ranges_lexicographical_compare { private header "__algorithm/ranges_lexicographical_compare.h" } + module ranges_lower_bound { private header "__algorithm/ranges_lower_bound.h" } + module ranges_max { private header "__algorithm/ranges_max.h" } + module ranges_max_element { private header "__algorithm/ranges_max_element.h" } + module ranges_min { private header "__algorithm/ranges_min.h" } + module ranges_min_element { private header "__algorithm/ranges_min_element.h" } + module ranges_minmax { private header "__algorithm/ranges_minmax.h" } + module ranges_minmax_element { private header "__algorithm/ranges_minmax_element.h" } + module ranges_mismatch { private header "__algorithm/ranges_mismatch.h" } + module ranges_move { private header "__algorithm/ranges_move.h" } + module ranges_move_backward { private header "__algorithm/ranges_move_backward.h" } + module ranges_none_of { private header "__algorithm/ranges_none_of.h" } + module ranges_replace { private header "__algorithm/ranges_replace.h" } + module ranges_replace_if { private header "__algorithm/ranges_replace_if.h" } + module ranges_reverse { private header "__algorithm/ranges_reverse.h" } + module ranges_sort { private header "__algorithm/ranges_sort.h" } + module ranges_stable_sort { private header "__algorithm/ranges_stable_sort.h" } + module ranges_swap_ranges { private header "__algorithm/ranges_swap_ranges.h" } + module ranges_transform { private header "__algorithm/ranges_transform.h" } + module ranges_upper_bound { private header "__algorithm/ranges_upper_bound.h" } + module remove { private header "__algorithm/remove.h" } + module remove_copy { private header "__algorithm/remove_copy.h" } + module remove_copy_if { private header "__algorithm/remove_copy_if.h" } + module remove_if { private header "__algorithm/remove_if.h" } + module replace { private header "__algorithm/replace.h" } + module replace_copy { private header "__algorithm/replace_copy.h" } + module replace_copy_if { private header "__algorithm/replace_copy_if.h" } + module replace_if { private header "__algorithm/replace_if.h" } + module reverse { private header "__algorithm/reverse.h" } + module reverse_copy { private header "__algorithm/reverse_copy.h" } + module rotate { private header "__algorithm/rotate.h" } + module rotate_copy { private header "__algorithm/rotate_copy.h" } + module sample { private header "__algorithm/sample.h" } + module search { private header "__algorithm/search.h" } + module search_n { private header "__algorithm/search_n.h" } + module set_difference { private header "__algorithm/set_difference.h" } + module set_intersection { private header "__algorithm/set_intersection.h" } + module set_symmetric_difference { private header "__algorithm/set_symmetric_difference.h" } + module set_union { private header "__algorithm/set_union.h" } + module shift_left { private header "__algorithm/shift_left.h" } + module shift_right { private header "__algorithm/shift_right.h" } + module shuffle { private header "__algorithm/shuffle.h" } + module sift_down { private header "__algorithm/sift_down.h" } + module sort { private header "__algorithm/sort.h" } + module sort_heap { private header "__algorithm/sort_heap.h" } + module stable_partition { private header "__algorithm/stable_partition.h" } + module stable_sort { private header "__algorithm/stable_sort.h" } + module swap_ranges { private header "__algorithm/swap_ranges.h" } + module transform { private header "__algorithm/transform.h" } + module unique { private header "__algorithm/unique.h" } + module unique_copy { private header "__algorithm/unique_copy.h" } + module unwrap_iter { private header "__algorithm/unwrap_iter.h" } + module upper_bound { private header "__algorithm/upper_bound.h" } + } + } + module any { + header "any" + export * + } + module array { + header "array" + export initializer_list + export * + } + module atomic { + header "atomic" + export * + } + module barrier { + + header "barrier" + export * + } + module bit { + header "bit" + export * + + module __bit { + module bit_cast { private header "__bit/bit_cast.h" } + module byteswap { private header "__bit/byteswap.h" } + } + } + module bitset { + header "bitset" + export string + export iosfwd + export * + } + // No submodule for cassert. It fundamentally needs repeated, textual inclusion. + module charconv { + header "charconv" + export * + + module __charconv { + module chars_format { private header "__charconv/chars_format.h" } + module from_chars_result { private header "__charconv/from_chars_result.h" } + module tables { private header "__charconv/tables.h" } + module to_chars_base_10 { private header "__charconv/to_chars_base_10.h" } + module to_chars_result { private header "__charconv/to_chars_result.h" } + } + + } + module chrono { + header "chrono" + export * + + module __chrono { + module calendar { private header "__chrono/calendar.h" } + module convert_to_timespec { private header "__chrono/convert_to_timespec.h" } + module day { private header "__chrono/day.h" } + module duration { private header "__chrono/duration.h" } + module file_clock { private header "__chrono/file_clock.h" } + module hh_mm_ss { private header "__chrono/hh_mm_ss.h" } + module high_resolution_clock { + private header "__chrono/high_resolution_clock.h" + export steady_clock + export system_clock + } + module literals { private header "__chrono/literals.h" } + module month { private header "__chrono/month.h" } + module month_weekday { private header "__chrono/month_weekday.h" } + module monthday { private header "__chrono/monthday.h" } + module steady_clock { private header "__chrono/steady_clock.h" } + module system_clock { private header "__chrono/system_clock.h" } + module time_point { private header "__chrono/time_point.h" } + module weekday { private header "__chrono/weekday.h" } + module year { private header "__chrono/year.h" } + module year_month { private header "__chrono/year_month.h" } + module year_month_day { private header "__chrono/year_month_day.h" } + module year_month_weekday { private header "__chrono/year_month_weekday.h" } + } + } + module codecvt { + + header "codecvt" + export * + } + module compare { + header "compare" + export * + + module __compare { + module common_comparison_category { private header "__compare/common_comparison_category.h" } + module compare_partial_order_fallback { private header "__compare/compare_partial_order_fallback.h" } + module compare_strong_order_fallback { private header "__compare/compare_strong_order_fallback.h" } + module compare_three_way { private header "__compare/compare_three_way.h" } + module compare_three_way_result { private header "__compare/compare_three_way_result.h" } + module compare_weak_order_fallback { private header "__compare/compare_weak_order_fallback.h" } + module is_eq { private header "__compare/is_eq.h" } + module ordering { private header "__compare/ordering.h" } + module partial_order { private header "__compare/partial_order.h" } + module strong_order { private header "__compare/strong_order.h" } + module synth_three_way { private header "__compare/synth_three_way.h" } + module three_way_comparable { private header "__compare/three_way_comparable.h" } + module weak_order { private header "__compare/weak_order.h" } + } + } + module complex { + header "complex" + export * + } + module concepts { + header "concepts" + export * + + module __concepts { + module arithmetic { private header "__concepts/arithmetic.h" } + module assignable { private header "__concepts/assignable.h" } + module boolean_testable { private header "__concepts/boolean_testable.h" } + module class_or_enum { private header "__concepts/class_or_enum.h" } + module common_reference_with { private header "__concepts/common_reference_with.h" } + module common_with { private header "__concepts/common_with.h" } + module constructible { private header "__concepts/constructible.h" } + module convertible_to { private header "__concepts/convertible_to.h" } + module copyable { private header "__concepts/copyable.h" } + module derived_from { private header "__concepts/derived_from.h" } + module destructible { private header "__concepts/destructible.h" } + module different_from { private header "__concepts/different_from.h" } + module equality_comparable { private header "__concepts/equality_comparable.h" } + module invocable { private header "__concepts/invocable.h" } + module movable { private header "__concepts/movable.h" } + module predicate { private header "__concepts/predicate.h" } + module regular { private header "__concepts/regular.h" } + module relation { private header "__concepts/relation.h" } + module same_as { private header "__concepts/same_as.h" } + module semiregular { private header "__concepts/semiregular.h" } + module swappable { private header "__concepts/swappable.h" } + module totally_ordered { private header "__concepts/totally_ordered.h" } + } + } + module condition_variable { + header "condition_variable" + export * + } + module coroutine { + requires coroutines + header "coroutine" + export compare + export * + + module __coroutine { + module coroutine_handle { private header "__coroutine/coroutine_handle.h" } + module coroutine_traits { private header "__coroutine/coroutine_traits.h" } + module noop_coroutine_handle { private header "__coroutine/noop_coroutine_handle.h" } + module trivial_awaitables { private header "__coroutine/trivial_awaitables.h" } + } + } + module deque { + header "deque" + export initializer_list + export * + } + module exception { + header "exception" + export * + } + module execution { + header "execution" + export * + } + module filesystem { + + header "filesystem" + export * + + module __filesystem { + module copy_options { private header "__filesystem/copy_options.h" } + module directory_entry { private header "__filesystem/directory_entry.h" } + module directory_iterator { private header "__filesystem/directory_iterator.h" } + module directory_options { private header "__filesystem/directory_options.h" } + module file_status { private header "__filesystem/file_status.h" } + module file_time_type { private header "__filesystem/file_time_type.h" } + module file_type { private header "__filesystem/file_type.h" } + module filesystem_error { private header "__filesystem/filesystem_error.h" } + module operations { private header "__filesystem/operations.h" } + module path { private header "__filesystem/path.h" } + module path_iterator { private header "__filesystem/path_iterator.h" } + module perm_options { private header "__filesystem/perm_options.h" } + module perms { private header "__filesystem/perms.h" } + module recursive_directory_iterator { private header "__filesystem/recursive_directory_iterator.h" } + module space_info { private header "__filesystem/space_info.h" } + module u8path { private header "__filesystem/u8path.h" } + } + } + module format { + header "format" + export * + + module __format { + module buffer { private header "__format/buffer.h" } + module concepts { private header "__format/concepts.h" } + module enable_insertable { private header "__format/enable_insertable.h" } + module format_arg { private header "__format/format_arg.h" } + module format_arg_store { private header "__format/format_arg_store.h" } + module format_args { private header "__format/format_args.h" } + module format_context { + private header "__format/format_context.h" + export optional + export locale + } + module format_error { private header "__format/format_error.h" } + module format_fwd { private header "__format/format_fwd.h" } + module format_parse_context { private header "__format/format_parse_context.h" } + module format_string { private header "__format/format_string.h" } + module format_to_n_result { private header "__format/format_to_n_result.h" } + module formatter { private header "__format/formatter.h" } + module formatter_bool { private header "__format/formatter_bool.h" } + module formatter_char { private header "__format/formatter_char.h" } + module formatter_floating_point { private header "__format/formatter_floating_point.h" } + module formatter_integer { private header "__format/formatter_integer.h" } + module formatter_integral { private header "__format/formatter_integral.h" } + module formatter_output { private header "__format/formatter_output.h" } + module formatter_pointer { private header "__format/formatter_pointer.h" } + module formatter_string { private header "__format/formatter_string.h" } + module parser_std_format_spec { private header "__format/parser_std_format_spec.h" } + } + } + module forward_list { + header "forward_list" + export initializer_list + export * + } + module fstream { + + header "fstream" + export * + } + module functional { + header "functional" + export * + + module __functional { + module binary_function { private header "__functional/binary_function.h" } + module binary_negate { private header "__functional/binary_negate.h" } + module bind { private header "__functional/bind.h" } + module bind_back { private header "__functional/bind_back.h" } + module bind_front { private header "__functional/bind_front.h" } + module binder1st { private header "__functional/binder1st.h" } + module binder2nd { private header "__functional/binder2nd.h" } + module boyer_moore_searcher { private header "__functional/boyer_moore_searcher.h" } + module compose { private header "__functional/compose.h" } + module default_searcher { private header "__functional/default_searcher.h" } + module function { private header "__functional/function.h" } + module hash { private header "__functional/hash.h" } + module identity { private header "__functional/identity.h" } + module invoke { private header "__functional/invoke.h" } + module is_transparent { private header "__functional/is_transparent.h" } + module mem_fn { private header "__functional/mem_fn.h" } + module mem_fun_ref { private header "__functional/mem_fun_ref.h" } + module not_fn { private header "__functional/not_fn.h" } + module operations { private header "__functional/operations.h" } + module perfect_forward { private header "__functional/perfect_forward.h" } + module pointer_to_binary_function { private header "__functional/pointer_to_binary_function.h" } + module pointer_to_unary_function { private header "__functional/pointer_to_unary_function.h" } + module ranges_operations { private header "__functional/ranges_operations.h" } + module reference_wrapper { private header "__functional/reference_wrapper.h" } + module unary_function { private header "__functional/unary_function.h" } + module unary_negate { private header "__functional/unary_negate.h" } + module unwrap_ref { private header "__functional/unwrap_ref.h" } + module weak_result_type { private header "__functional/weak_result_type.h" } + } + } + module future { + + header "future" + export * + } + module initializer_list { + header "initializer_list" + export * + } + module iomanip { + + header "iomanip" + export * + } + module ios { + + header "ios" + export iosfwd + export * + + module __ios { + module fpos { private header "__ios/fpos.h" } + } + } + module iosfwd { + header "iosfwd" + export * + } + module iostream { + + header "iostream" + export ios + export streambuf + export istream + export ostream + export * + } + module istream { + + header "istream" + // FIXME: should re-export ios, streambuf? + export * + } + module iterator { + header "iterator" + export * + + module __iterator { + module access { private header "__iterator/access.h" } + module advance { private header "__iterator/advance.h" } + module back_insert_iterator { private header "__iterator/back_insert_iterator.h" } + module bounded_iter { private header "__iterator/bounded_iter.h" } + module common_iterator { private header "__iterator/common_iterator.h" } + module concepts { private header "__iterator/concepts.h" } + module counted_iterator { private header "__iterator/counted_iterator.h" } + module data { private header "__iterator/data.h" } + module default_sentinel { private header "__iterator/default_sentinel.h" } + module distance { private header "__iterator/distance.h" } + module empty { private header "__iterator/empty.h" } + module erase_if_container { private header "__iterator/erase_if_container.h" } + module front_insert_iterator { private header "__iterator/front_insert_iterator.h" } + module incrementable_traits { private header "__iterator/incrementable_traits.h" } + module indirectly_comparable { private header "__iterator/indirectly_comparable.h" } + module insert_iterator { private header "__iterator/insert_iterator.h" } + module istream_iterator { private header "__iterator/istream_iterator.h" } + module istreambuf_iterator { private header "__iterator/istreambuf_iterator.h" } + module iter_move { private header "__iterator/iter_move.h" } + module iter_swap { private header "__iterator/iter_swap.h" } + module iterator { private header "__iterator/iterator.h" } + module iterator_traits { private header "__iterator/iterator_traits.h" } + module mergeable { private header "__iterator/mergeable.h" } + module move_iterator { private header "__iterator/move_iterator.h" } + module move_sentinel { private header "__iterator/move_sentinel.h" } + module next { private header "__iterator/next.h" } + module ostream_iterator { private header "__iterator/ostream_iterator.h" } + module ostreambuf_iterator { + private header "__iterator/ostreambuf_iterator.h" + export iosfwd + } + module permutable { private header "__iterator/permutable.h" } + module prev { private header "__iterator/prev.h" } + module projected { private header "__iterator/projected.h" } + module readable_traits { private header "__iterator/readable_traits.h" } + module reverse_access { private header "__iterator/reverse_access.h" } + module reverse_iterator { private header "__iterator/reverse_iterator.h" } + module size { private header "__iterator/size.h" } + module sortable { private header "__iterator/sortable.h" } + module unreachable_sentinel { private header "__iterator/unreachable_sentinel.h" } + module wrap_iter { private header "__iterator/wrap_iter.h" } + } + } + module latch { + + header "latch" + export * + } + module limits { + header "limits" + export * + } + module list { + header "list" + export initializer_list + export * + } + module locale { + + header "locale" + export * + } + module map { + header "map" + export initializer_list + export * + } + module memory { + header "memory" + export * + + module __memory { + module addressof { private header "__memory/addressof.h" } + module allocate_at_least { private header "__memory/allocate_at_least.h" } + module allocation_guard { private header "__memory/allocation_guard.h" } + module allocator { private header "__memory/allocator.h" } + module allocator_arg_t { private header "__memory/allocator_arg_t.h" } + module allocator_traits { private header "__memory/allocator_traits.h" } + module assume_aligned { private header "__memory/assume_aligned.h" } + module auto_ptr { private header "__memory/auto_ptr.h" } + module compressed_pair { private header "__memory/compressed_pair.h" } + module concepts { private header "__memory/concepts.h" } + module construct_at { private header "__memory/construct_at.h" } + module pointer_traits { private header "__memory/pointer_traits.h" } + module ranges_construct_at { private header "__memory/ranges_construct_at.h" } + module ranges_uninitialized_algorithms { private header "__memory/ranges_uninitialized_algorithms.h" } + module raw_storage_iterator { private header "__memory/raw_storage_iterator.h" } + module shared_ptr { private header "__memory/shared_ptr.h" } + module temporary_buffer { private header "__memory/temporary_buffer.h" } + module uninitialized_algorithms { private header "__memory/uninitialized_algorithms.h" } + module unique_ptr { private header "__memory/unique_ptr.h" } + module uses_allocator { private header "__memory/uses_allocator.h" } + module voidify { private header "__memory/voidify.h" } + } + } + module mutex { + + header "mutex" + export * + } + module new { + header "new" + export * + } + module numbers { + header "numbers" + export * + } + module numeric { + header "numeric" + export * + + module __numeric { + module accumulate { private header "__numeric/accumulate.h" } + module adjacent_difference { private header "__numeric/adjacent_difference.h" } + module exclusive_scan { private header "__numeric/exclusive_scan.h" } + module gcd_lcm { private header "__numeric/gcd_lcm.h" } + module inclusive_scan { private header "__numeric/inclusive_scan.h" } + module inner_product { private header "__numeric/inner_product.h" } + module iota { private header "__numeric/iota.h" } + module midpoint { private header "__numeric/midpoint.h" } + module partial_sum { private header "__numeric/partial_sum.h" } + module reduce { private header "__numeric/reduce.h" } + module transform_exclusive_scan { private header "__numeric/transform_exclusive_scan.h" } + module transform_inclusive_scan { private header "__numeric/transform_inclusive_scan.h" } + module transform_reduce { private header "__numeric/transform_reduce.h" } + } + } + module optional { + header "optional" + export * + } + module ostream { + + header "ostream" + // FIXME: should re-export ios, streambuf? + export * + } + module queue { + header "queue" + export initializer_list + export * + } + module random { + header "random" + export initializer_list + export * + + module __random { + module bernoulli_distribution { private header "__random/bernoulli_distribution.h" } + module binomial_distribution { private header "__random/binomial_distribution.h" } + module cauchy_distribution { private header "__random/cauchy_distribution.h" } + module chi_squared_distribution { private header "__random/chi_squared_distribution.h" } + module clamp_to_integral { private header "__random/clamp_to_integral.h" } + module default_random_engine { private header "__random/default_random_engine.h" } + module discard_block_engine { private header "__random/discard_block_engine.h" } + module discrete_distribution { private header "__random/discrete_distribution.h" } + module exponential_distribution { private header "__random/exponential_distribution.h" } + module extreme_value_distribution { private header "__random/extreme_value_distribution.h" } + module fisher_f_distribution { private header "__random/fisher_f_distribution.h" } + module gamma_distribution { private header "__random/gamma_distribution.h" } + module generate_canonical { private header "__random/generate_canonical.h" } + module geometric_distribution { private header "__random/geometric_distribution.h" } + module independent_bits_engine { private header "__random/independent_bits_engine.h" } + module is_seed_sequence { private header "__random/is_seed_sequence.h" } + module is_valid { private header "__random/is_valid.h" } + module knuth_b { private header "__random/knuth_b.h" } + module linear_congruential_engine { private header "__random/linear_congruential_engine.h" } + module log2 { private header "__random/log2.h" } + module lognormal_distribution { private header "__random/lognormal_distribution.h" } + module mersenne_twister_engine { private header "__random/mersenne_twister_engine.h" } + module negative_binomial_distribution { private header "__random/negative_binomial_distribution.h" } + module normal_distribution { private header "__random/normal_distribution.h" } + module piecewise_constant_distribution { private header "__random/piecewise_constant_distribution.h" } + module piecewise_linear_distribution { private header "__random/piecewise_linear_distribution.h" } + module poisson_distribution { private header "__random/poisson_distribution.h" } + module random_device { private header "__random/random_device.h" } + module ranlux { private header "__random/ranlux.h" } + module seed_seq { private header "__random/seed_seq.h" } + module shuffle_order_engine { private header "__random/shuffle_order_engine.h" } + module student_t_distribution { private header "__random/student_t_distribution.h" } + module subtract_with_carry_engine { private header "__random/subtract_with_carry_engine.h" } + module uniform_int_distribution { private header "__random/uniform_int_distribution.h" } + module uniform_random_bit_generator { private header "__random/uniform_random_bit_generator.h" } + module uniform_real_distribution { private header "__random/uniform_real_distribution.h" } + module weibull_distribution { private header "__random/weibull_distribution.h" } + } + } + module ranges { + header "ranges" + export compare + export initializer_list + export iterator + export * + + module __ranges { + module access { private header "__ranges/access.h" } + module all { + private header "__ranges/all.h" + export functional.__functional.compose + export functional.__functional.perfect_forward + } + module common_view { private header "__ranges/common_view.h" } + module concepts { private header "__ranges/concepts.h" } + module copyable_box { private header "__ranges/copyable_box.h" } + module counted { + private header "__ranges/counted.h" + export span + } + module dangling { private header "__ranges/dangling.h" } + module data { private header "__ranges/data.h" } + module drop_view { private header "__ranges/drop_view.h" } + module empty { private header "__ranges/empty.h" } + module empty_view { private header "__ranges/empty_view.h" } + module enable_borrowed_range { private header "__ranges/enable_borrowed_range.h" } + module enable_view { private header "__ranges/enable_view.h" } + module filter_view { private header "__ranges/filter_view.h" } + module iota_view { private header "__ranges/iota_view.h" } + module join_view { private header "__ranges/join_view.h" } + module lazy_split_view { private header "__ranges/lazy_split_view.h" } + module non_propagating_cache { private header "__ranges/non_propagating_cache.h" } + module owning_view { private header "__ranges/owning_view.h" } + module range_adaptor { private header "__ranges/range_adaptor.h" } + module rbegin { private header "__ranges/rbegin.h" } + module ref_view { private header "__ranges/ref_view.h" } + module rend { private header "__ranges/rend.h" } + module reverse_view { private header "__ranges/reverse_view.h" } + module single_view { private header "__ranges/single_view.h" } + module size { private header "__ranges/size.h" } + module subrange { private header "__ranges/subrange.h" } + module take_view { private header "__ranges/take_view.h" } + module transform_view { + private header "__ranges/transform_view.h" + export functional.__functional.bind_back + export functional.__functional.perfect_forward + } + module view_interface { private header "__ranges/view_interface.h" } + module views { private header "__ranges/views.h" } + module zip_view { private header "__ranges/zip_view.h" } + } + } + module ratio { + header "ratio" + export * + } + module regex { + + header "regex" + export initializer_list + export * + } + module scoped_allocator { + header "scoped_allocator" + export * + } + module semaphore { + + header "semaphore" + export * + } + module set { + header "set" + export initializer_list + export * + } + module shared_mutex { + + header "shared_mutex" + export version + } + module span { + header "span" + export ranges.__ranges.enable_borrowed_range + export version + module span_fwd { private header "__fwd/span.h" } + } + module sstream { + + header "sstream" + // FIXME: should re-export istream, ostream, ios, streambuf, string? + export * + } + module stack { + header "stack" + export initializer_list + export * + } + module stdexcept { + header "stdexcept" + export * + } + module streambuf { + + header "streambuf" + export * + } + module string { + header "string" + export initializer_list + export string_view + module __string { + module char_traits { private header "__string/char_traits.h" } + module extern_template_lists { private header "__string/extern_template_lists.h" } + } + export * + } + module string_view { + header "string_view" + export initializer_list + export * + module string_view_fwd { private header "__fwd/string_view.h" } + } + module strstream { + + header "strstream" + export * + } + module system_error { + header "system_error" + export * + } + module thread { + + header "thread" + export * + + module __thread { + module poll_with_backoff { private header "__thread/poll_with_backoff.h" } + module timed_backoff_policy { private header "__thread/timed_backoff_policy.h" } + } + } + module tuple { + header "tuple" + export * + } + module type_traits { + header "type_traits" + export functional.__functional.unwrap_ref + export * + + module add_const { private header "__type_traits/add_const.h" } + module add_cv { private header "__type_traits/add_cv.h" } + module add_lvalue_reference { private header "__type_traits/add_lvalue_reference.h" } + module add_pointer { private header "__type_traits/add_pointer.h" } + module add_rvalue_reference { private header "__type_traits/add_rvalue_reference.h" } + module add_volatile { private header "__type_traits/add_volatile.h" } + module alignment_of { private header "__type_traits/alignment_of.h" } + module apply_cv { private header "__type_traits/apply_cv.h" } + module conditional { private header "__type_traits/conditional.h" } + module conjunction { private header "__type_traits/conjunction.h" } + module decay { private header "__type_traits/decay.h" } + module disjunction { private header "__type_traits/disjunction.h" } + module enable_if { private header "__type_traits/enable_if.h" } + module extent { private header "__type_traits/extent.h" } + module has_unique_object_representation { private header "__type_traits/has_unique_object_representation.h" } + module has_virtual_destructor { private header "__type_traits/has_virtual_destructor.h" } + module integral_constant { private header "__type_traits/integral_constant.h" } + module is_abstract { private header "__type_traits/is_abstract.h" } + module is_aggregate { private header "__type_traits/is_aggregate.h" } + module is_arithmetic { private header "__type_traits/is_arithmetic.h" } + module is_array { private header "__type_traits/is_array.h" } + module is_assignable { private header "__type_traits/is_assignable.h" } + module is_base_of { private header "__type_traits/is_base_of.h" } + module is_bounded_array { private header "__type_traits/is_bounded_array.h" } + module is_callable { private header "__type_traits/is_callable.h" } + module is_class { private header "__type_traits/is_class.h" } + module is_compound { private header "__type_traits/is_compound.h" } + module is_const { private header "__type_traits/is_const.h" } + module is_constant_evaluated { private header "__type_traits/is_constant_evaluated.h" } + module is_constructible { private header "__type_traits/is_constructible.h" } + module is_convertible { private header "__type_traits/is_convertible.h" } + module is_copy_assignable { private header "__type_traits/is_copy_assignable.h" } + module is_copy_constructible { private header "__type_traits/is_copy_constructible.h" } + module is_core_convertible { private header "__type_traits/is_core_convertible.h" } + module is_default_constructible { private header "__type_traits/is_default_constructible.h" } + module is_destructible { private header "__type_traits/is_destructible.h" } + module is_empty { private header "__type_traits/is_empty.h" } + module is_enum { private header "__type_traits/is_enum.h" } + module is_final { private header "__type_traits/is_final.h" } + module is_floating_point { private header "__type_traits/is_floating_point.h" } + module is_function { private header "__type_traits/is_function.h" } + module is_fundamental { private header "__type_traits/is_fundamental.h" } + module is_integral { private header "__type_traits/is_integral.h" } + module is_literal_type { private header "__type_traits/is_literal_type.h" } + module is_member_function_pointer { private header "__type_traits/is_member_function_pointer.h" } + module is_member_object_pointer { private header "__type_traits/is_member_object_pointer.h" } + module is_member_pointer { private header "__type_traits/is_member_pointer.h" } + module is_move_assignable { private header "__type_traits/is_move_assignable.h" } + module is_move_constructible { private header "__type_traits/is_move_constructible.h" } + module is_nothrow_assignable { private header "__type_traits/is_nothrow_assignable.h" } + module is_nothrow_constructible { private header "__type_traits/is_nothrow_constructible.h" } + module is_nothrow_copy_assignable { private header "__type_traits/is_nothrow_copy_assignable.h" } + module is_nothrow_copy_constructible { private header "__type_traits/is_nothrow_copy_constructible.h" } + module is_nothrow_default_constructible { private header "__type_traits/is_nothrow_default_constructible.h" } + module is_nothrow_destructible { private header "__type_traits/is_nothrow_destructible.h" } + module is_nothrow_move_assignable { private header "__type_traits/is_nothrow_move_assignable.h" } + module is_nothrow_move_constructible { private header "__type_traits/is_nothrow_move_constructible.h" } + module is_null_pointer { private header "__type_traits/is_null_pointer.h" } + module is_object { private header "__type_traits/is_object.h" } + module is_pod { private header "__type_traits/is_pod.h" } + module is_pointer { private header "__type_traits/is_pointer.h" } + module is_polymorphic { private header "__type_traits/is_polymorphic.h" } + module is_reference { private header "__type_traits/is_reference.h" } + module is_reference_wrapper { private header "__type_traits/is_reference_wrapper.h" } + module is_referenceable { private header "__type_traits/is_referenceable.h" } + module is_same { private header "__type_traits/is_same.h" } + module is_scalar { private header "__type_traits/is_scalar.h" } + module is_scoped_enum { private header "__type_traits/is_scoped_enum.h" } + module is_signed { private header "__type_traits/is_signed.h" } + module is_standard_layout { private header "__type_traits/is_standard_layout.h" } + module is_trivial { private header "__type_traits/is_trivial.h" } + module is_trivially_assignable { private header "__type_traits/is_trivially_assignable.h" } + module is_trivially_constructible { private header "__type_traits/is_trivially_constructible.h" } + module is_trivially_copy_assignable { private header "__type_traits/is_trivially_copy_assignable.h" } + module is_trivially_copy_constructible { private header "__type_traits/is_trivially_copy_constructible.h" } + module is_trivially_copyable { private header "__type_traits/is_trivially_copyable.h" } + module is_trivially_default_constructible { private header "__type_traits/is_trivially_default_constructible.h" } + module is_trivially_destructible { private header "__type_traits/is_trivially_destructible.h" } + module is_trivially_move_assignable { private header "__type_traits/is_trivially_move_assignable.h" } + module is_trivially_move_constructible { private header "__type_traits/is_trivially_move_constructible.h" } + module is_unbounded_array { private header "__type_traits/is_unbounded_array.h" } + module is_union { private header "__type_traits/is_union.h" } + module is_unsigned { private header "__type_traits/is_unsigned.h" } + module is_void { private header "__type_traits/is_void.h" } + module is_volatile { private header "__type_traits/is_volatile.h" } + module negation { private header "__type_traits/negation.h" } + module rank { private header "__type_traits/rank.h" } + module remove_all_extents { private header "__type_traits/remove_all_extents.h" } + module remove_const { private header "__type_traits/remove_const.h" } + module remove_cv { private header "__type_traits/remove_cv.h" } + module remove_extent { private header "__type_traits/remove_extent.h" } + module remove_pointer { private header "__type_traits/remove_pointer.h" } + module remove_reference { private header "__type_traits/remove_reference.h" } + module remove_volatile { private header "__type_traits/remove_volatile.h" } + module type_identity { private header "__type_traits/type_identity.h" } + module underlying_type { private header "__type_traits/underlying_type.h" } + module void_t { private header "__type_traits/void_t.h" } + } + module typeindex { + header "typeindex" + export * + } + module typeinfo { + header "typeinfo" + export * + } + module unordered_map { + header "unordered_map" + export initializer_list + export * + } + module unordered_set { + header "unordered_set" + export initializer_list + export * + } + module utility { + header "utility" + export initializer_list + export * + + module __utility { + module as_const { private header "__utility/as_const.h" } + module auto_cast { private header "__utility/auto_cast.h" } + module cmp { private header "__utility/cmp.h" } + module declval { private header "__utility/declval.h" } + module exchange { private header "__utility/exchange.h" } + module forward { private header "__utility/forward.h" } + module in_place { private header "__utility/in_place.h" } + module integer_sequence { private header "__utility/integer_sequence.h" } + module move { private header "__utility/move.h" } + module pair { private header "__utility/pair.h" } + module piecewise_construct { private header "__utility/piecewise_construct.h" } + module priority_tag { private header "__utility/priority_tag.h" } + module rel_ops { private header "__utility/rel_ops.h" } + module swap { private header "__utility/swap.h" } + module to_underlying { private header "__utility/to_underlying.h" } + module transaction { private header "__utility/transaction.h" } + module unreachable { private header "__utility/unreachable.h" } + } + } + module valarray { + header "valarray" + export initializer_list + export * + } + module variant { + header "variant" + export * + + module __variant { + module monostate { private header "__variant/monostate.h" } + } + } + module vector { + header "vector" + export initializer_list + export * + } + module version { + header "version" + export * + } + + // FIXME: These should be private. + module __assert { header "__assert" export * } + module __availability { private header "__availability" export * } + module __bit_reference { private header "__bit_reference" export * } + module __bits { private header "__bits" export * } + module __debug { header "__debug" export * } + module __errc { private header "__errc" export * } + module __hash_table { header "__hash_table" export * } + module __locale { + + private header "__locale" export * + } + module __mbstate_t { private header "__mbstate_t.h" export * } + module __mutex_base { private header "__mutex_base" export * } + module __node_handle { private header "__node_handle" export * } + module __split_buffer { private header "__split_buffer" export * } + module __std_stream { + + private header "__std_stream" export * + } + module __threading_support { header "__threading_support" export * } + module __tree { header "__tree" export * } + module __tuple { private header "__tuple" export * } + module __undef_macros { header "__undef_macros" export * } + + module experimental { + requires cplusplus11 + + module algorithm { + header "experimental/algorithm" + export * + } + module coroutine { + requires coroutines + header "experimental/coroutine" + export * + } + module deque { + header "experimental/deque" + export * + } + module forward_list { + header "experimental/forward_list" + export * + } + module functional { + header "experimental/functional" + export * + } + module iterator { + header "experimental/iterator" + export * + } + module list { + header "experimental/list" + export * + } + module map { + header "experimental/map" + export * + } + module memory_resource { + header "experimental/memory_resource" + export * + } + module propagate_const { + header "experimental/propagate_const" + export * + } + module regex { + + header "experimental/regex" + export * + } + module simd { + header "experimental/simd" + export * + } + module set { + header "experimental/set" + export * + } + module span { + header "span" + export * + } + module string { + header "experimental/string" + export * + } + module type_traits { + header "experimental/type_traits" + export * + } + module unordered_map { + header "experimental/unordered_map" + export * + } + module unordered_set { + header "experimental/unordered_set" + export * + } + module utility { + header "experimental/utility" + export * + } + module vector { + header "experimental/vector" + export * + } + // FIXME these should be private + module __memory { + header "experimental/__memory" + export * + } + } // end experimental +} |