llvm-project/libcxx/include/module.modulemap
Christopher Di Bella 6cb05ca392 [libcxx][modularisation] adds several headers to the module map
* <__algorithm/iter_swap.h>
* <__algorithm/swap_ranges.h>
* <__functional/is_transparent.h>
* <__memory/uses_allocator.h>
* <__ranges/drop_view.h>
* <__ranges/transform_view.h>
* <shared_mutex>
* <span>

Also updates header inclusions that were affected.

**NOTE:** This is a proper subset of D105932. Since the content has
already been LGTM'd, I intend to merge this patch without review,
pending green CI. I decided it would be better to move these changes
into their own commit since the former patch has undergone further
changes and will need yet another light review. In the event any of
that gets rolled back (for whatever reason), the changes in this patch
won't be affected.

Differential Revision: https://reviews.llvm.org/D106040
2021-07-16 16:06:54 +00:00

884 lines
28 KiB
Plaintext

// 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"
}
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 *
}
// 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 *
}
// FIXME: <uchar.h> is missing.
// <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 *
}
// FIXME: <cuchar> is missing.
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 { header "__algorithm/adjacent_find.h" }
module all_of { header "__algorithm/all_of.h" }
module any_of { header "__algorithm/any_of.h" }
module binary_search { header "__algorithm/binary_search.h" }
module clamp { header "__algorithm/clamp.h" }
module comp { header "__algorithm/comp.h" }
module comp_ref_type { header "__algorithm/comp_ref_type.h" }
module copy { header "__algorithm/copy.h" }
module copy_backward { header "__algorithm/copy_backward.h" }
module copy_if { header "__algorithm/copy_if.h" }
module copy_n { header "__algorithm/copy_n.h" }
module count { header "__algorithm/count.h" }
module count_if { header "__algorithm/count_if.h" }
module equal { header "__algorithm/equal.h" }
module equal_range { header "__algorithm/equal_range.h" }
module fill { header "__algorithm/fill.h" }
module fill_n { header "__algorithm/fill_n.h" }
module find { header "__algorithm/find.h" }
module find_end { header "__algorithm/find_end.h" }
module find_first_of { header "__algorithm/find_first_of.h" }
module find_if { header "__algorithm/find_if.h" }
module find_if_not { header "__algorithm/find_if_not.h" }
module for_each { header "__algorithm/for_each.h" }
module for_each_n { header "__algorithm/for_each_n.h" }
module generate { header "__algorithm/generate.h" }
module generate_n { header "__algorithm/generate_n.h" }
module half_positive { header "__algorithm/half_positive.h" }
module includes { header "__algorithm/includes.h" }
module inplace_merge { header "__algorithm/inplace_merge.h" }
module is_heap { header "__algorithm/is_heap.h" }
module is_heap_until { header "__algorithm/is_heap_until.h" }
module is_partitioned { header "__algorithm/is_partitioned.h" }
module is_permutation { header "__algorithm/is_permutation.h" }
module is_sorted { header "__algorithm/is_sorted.h" }
module is_sorted_until { header "__algorithm/is_sorted_until.h" }
module iter_swap { header "__algorithm/iter_swap.h" }
module lexicographical_compare { header "__algorithm/lexicographical_compare.h" }
module lower_bound { header "__algorithm/lower_bound.h" }
module make_heap { header "__algorithm/make_heap.h" }
module max { header "__algorithm/max.h" }
module max_element { header "__algorithm/max_element.h" }
module merge { header "__algorithm/merge.h" }
module min { header "__algorithm/min.h" }
module min_element { header "__algorithm/min_element.h" }
module minmax { header "__algorithm/minmax.h" }
module minmax_element { header "__algorithm/minmax_element.h" }
module mismatch { header "__algorithm/mismatch.h" }
module move { header "__algorithm/move.h" }
module move_backward { header "__algorithm/move_backward.h" }
module next_permutation { header "__algorithm/next_permutation.h" }
module none_of { header "__algorithm/none_of.h" }
module nth_element { header "__algorithm/nth_element.h" }
module partial_sort { header "__algorithm/partial_sort.h" }
module partial_sort_copy { header "__algorithm/partial_sort_copy.h" }
module partition { header "__algorithm/partition.h" }
module partition_copy { header "__algorithm/partition_copy.h" }
module partition_point { header "__algorithm/partition_point.h" }
module pop_heap { header "__algorithm/pop_heap.h" }
module prev_permutation { header "__algorithm/prev_permutation.h" }
module push_heap { header "__algorithm/push_heap.h" }
module remove { header "__algorithm/remove.h" }
module remove_copy { header "__algorithm/remove_copy.h" }
module remove_copy_if { header "__algorithm/remove_copy_if.h" }
module remove_if { header "__algorithm/remove_if.h" }
module replace { header "__algorithm/replace.h" }
module replace_copy { header "__algorithm/replace_copy.h" }
module replace_copy_if { header "__algorithm/replace_copy_if.h" }
module replace_if { header "__algorithm/replace_if.h" }
module reverse { header "__algorithm/reverse.h" }
module reverse_copy { header "__algorithm/reverse_copy.h" }
module rotate { header "__algorithm/rotate.h" }
module rotate_copy { header "__algorithm/rotate_copy.h" }
module sample { header "__algorithm/sample.h" }
module search { header "__algorithm/search.h" }
module search_n { header "__algorithm/search_n.h" }
module set_difference { header "__algorithm/set_difference.h" }
module set_intersection { header "__algorithm/set_intersection.h" }
module set_symmetric_difference { header "__algorithm/set_symmetric_difference.h" }
module set_union { header "__algorithm/set_union.h" }
module shift_left { header "__algorithm/shift_left.h" }
module shift_right { header "__algorithm/shift_right.h" }
module shuffle { header "__algorithm/shuffle.h" }
module sift_down { header "__algorithm/sift_down.h" }
module sort { header "__algorithm/sort.h" }
module sort_heap { header "__algorithm/sort_heap.h" }
module stable_partition { header "__algorithm/stable_partition.h" }
module stable_sort { header "__algorithm/stable_sort.h" }
module swap_ranges { header "__algorithm/swap_ranges.h" }
module transform { header "__algorithm/transform.h" }
module unique { header "__algorithm/unique.h" }
module unique_copy { header "__algorithm/unique_copy.h" }
module unwrap_iter { header "__algorithm/unwrap_iter.h" }
module upper_bound { 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 {
requires cplusplus14
header "barrier"
export *
}
module bit {
header "bit"
export *
}
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 chrono {
header "chrono"
export *
}
module codecvt {
header "codecvt"
export *
}
module compare {
header "compare"
export *
}
module complex {
header "complex"
export *
}
module concepts {
header "concepts"
export *
}
module condition_variable {
header "condition_variable"
export *
}
module deque {
header "deque"
export initializer_list
export *
}
module exception {
header "exception"
export *
}
module execution {
header "execution"
export *
}
module filesystem {
header "filesystem"
export *
}
module format {
header "format"
export *
module __format {
module format_error { header "__format/format_error.h" }
module format_parse_context { header "__format/format_parse_context.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 { header "__functional/binary_function.h" }
module binary_negate { header "__functional/binary_negate.h" }
module bind { header "__functional/bind.h" }
module bind_front { header "__functional/bind_front.h" }
module binder1st { header "__functional/binder1st.h" }
module binder2nd { header "__functional/binder2nd.h" }
module default_searcher { header "__functional/default_searcher.h" }
module function { header "__functional/function.h" }
module hash { header "__functional/hash.h" }
module identity { header "__functional/identity.h" }
module is_transparent { header "__functional/is_transparent.h" }
module invoke { header "__functional/invoke.h" }
module mem_fn { header "__functional/mem_fn.h" }
module mem_fun_ref { header "__functional/mem_fun_ref.h" }
module not_fn { header "__functional/not_fn.h" }
module operations { header "__functional/operations.h" }
module perfect_forward { header "__functional/perfect_forward.h" }
module pointer_to_binary_function { header "__functional/pointer_to_binary_function.h" }
module pointer_to_unary_function { header "__functional/pointer_to_unary_function.h" }
module ranges_operations { header "__functional/ranges_operations.h" }
module reference_wrapper { header "__functional/reference_wrapper.h" }
module unary_function { header "__functional/unary_function.h" }
module unary_negate { header "__functional/unary_negate.h" }
module unwrap_ref { header "__functional/unwrap_ref.h" }
module weak_result_type { 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 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 { header "__iterator/access.h" }
module advance { header "__iterator/advance.h" }
module back_insert_iterator { header "__iterator/back_insert_iterator.h" }
module concepts { header "__iterator/concepts.h" }
module data { header "__iterator/data.h" }
module default_sentinel { header "__iterator/default_sentinel.h" }
module distance { header "__iterator/distance.h" }
module empty { header "__iterator/empty.h" }
module erase_if_container { header "__iterator/erase_if_container.h" }
module front_insert_iterator { header "__iterator/front_insert_iterator.h" }
module incrementable_traits { header "__iterator/incrementable_traits.h" }
module insert_iterator { header "__iterator/insert_iterator.h" }
module istream_iterator { header "__iterator/istream_iterator.h" }
module istreambuf_iterator { header "__iterator/istreambuf_iterator.h" }
module iter_move { header "__iterator/iter_move.h" }
module iter_swap { header "__iterator/iter_swap.h" }
module iterator { header "__iterator/iterator.h" }
module iterator_traits { header "__iterator/iterator_traits.h" }
module move_iterator { header "__iterator/move_iterator.h" }
module next { header "__iterator/next.h" }
module ostream_iterator { header "__iterator/ostream_iterator.h" }
module ostreambuf_iterator { header "__iterator/ostreambuf_iterator.h" }
module prev { header "__iterator/prev.h" }
module projected { header "__iterator/projected.h" }
module readable_traits { header "__iterator/readable_traits.h" }
module reverse_access { header "__iterator/reverse_access.h" }
module reverse_iterator { header "__iterator/reverse_iterator.h" }
module size { header "__iterator/size.h" }
module wrap_iter { header "__iterator/wrap_iter.h" }
}
}
module latch {
requires cplusplus14
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 { header "__memory/addressof.h" }
module allocation_guard { header "__memory/allocation_guard.h" }
module allocator { header "__memory/allocator.h" }
module allocator_arg_t { header "__memory/allocator_arg_t.h" }
module allocator_traits { header "__memory/allocator_traits.h" }
module auto_ptr { header "__memory/auto_ptr.h" }
module compressed_pair { header "__memory/compressed_pair.h" }
module construct_at { header "__memory/construct_at.h" }
module pointer_safety { header "__memory/pointer_safety.h" }
module pointer_traits { header "__memory/pointer_traits.h" }
module raw_storage_iterator { header "__memory/raw_storage_iterator.h" }
module shared_ptr { header "__memory/shared_ptr.h" }
module temporary_buffer { header "__memory/temporary_buffer.h" }
module uninitialized_algorithms { header "__memory/uninitialized_algorithms.h" }
module unique_ptr { header "__memory/unique_ptr.h" }
module uses_allocator { header "__memory/uses_allocator.h" }
}
}
module mutex {
header "mutex"
export *
}
module new {
header "new"
export *
}
module numbers {
header "numbers"
export *
}
module numeric {
header "numeric"
export *
}
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 uniform_int_distribution { header "__random/uniform_int_distribution.h" }
}
}
module ranges {
header "ranges"
export compare
export initializer_list
export iterator
export *
module __ranges {
module access { header "__ranges/access.h" }
module all { header "__ranges/all.h" }
module concepts { header "__ranges/concepts.h" }
module copyable_box { header "__ranges/copyable_box.h" }
module data { header "__ranges/data.h" }
module drop_view { header "__ranges/drop_view.h" }
module empty { header "__ranges/empty.h" }
module empty_view { header "__ranges/empty_view.h" }
module enable_borrowed_range { header "__ranges/enable_borrowed_range.h" }
module enable_view { header "__ranges/enable_view.h" }
module ref_view { header "__ranges/ref_view.h" }
module size { header "__ranges/size.h" }
module subrange { header "__ranges/subrange.h" }
module transform_view { header "__ranges/transform_view.h" }
module view_interface { header "__ranges/view_interface.h" }
}
}
module ratio {
header "ratio"
export *
}
module regex {
header "regex"
export initializer_list
export *
}
module scoped_allocator {
header "scoped_allocator"
export *
}
module semaphore {
requires cplusplus14
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 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
export __string
export *
}
module string_view {
header "string_view"
export initializer_list
export __string
export *
}
module strstream {
header "strstream"
export *
}
module system_error {
header "system_error"
export *
}
module thread {
header "thread"
export *
}
module tuple {
header "tuple"
export *
}
module type_traits {
header "type_traits"
export functional.__functional.unwrap_ref
export *
}
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 __decay_copy { header "__utility/__decay_copy.h" }
module as_const { header "__utility/as_const.h" }
module cmp { header "__utility/cmp.h" }
module declval { header "__utility/declval.h" }
module exchange { header "__utility/exchange.h" }
module forward { header "__utility/forward.h" }
module in_place { header "__utility/in_place.h" }
module integer_sequence { header "__utility/integer_sequence.h" }
module move { header "__utility/move.h" }
module pair { header "__utility/pair.h" }
module piecewise_construct { header "__utility/piecewise_construct.h" }
module rel_ops { header "__utility/rel_ops.h" }
module swap { header "__utility/swap.h" }
module to_underlying { header "__utility/to_underlying.h" }
}
}
module valarray {
header "valarray"
export initializer_list
export *
}
module variant {
header "variant"
export *
module __variant {
module monostate { header "__variant/monostate.h" }
}
}
module vector {
header "vector"
export initializer_list
export *
}
module version {
header "version"
export *
}
// __config not modularised due to a bug in Clang
// FIXME: These should be private.
module __availability { header "__availability" export * }
module __bit_reference { header "__bit_reference" export * }
module __bits { header "__bits" export * }
module __debug { header "__debug" export * }
module __errc { header "__errc" export * }
module __function_like { header "__function_like.h" export * }
module __hash_table { header "__hash_table" export * }
module __locale { header "__locale" export * }
module __mutex_base { header "__mutex_base" export * }
module __node_handle { header "__node_handle" export * }
module __nullptr { header "__nullptr" export * }
module __split_buffer { header "__split_buffer" export * }
module __std_stream { header "__std_stream" export * }
module __string { header "__string" export * }
module __threading_support { header "__threading_support" export * }
module __tree { header "__tree" export * }
module __tuple { 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 filesystem {
header "experimental/filesystem"
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
}