view libcxx/include/module.modulemap @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 0572611fdcc8
children 5f17cb93ff66
line wrap: on
line source

// 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 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 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 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 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 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 partition { header "__algorithm/partition.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 replace { header "__algorithm/replace.h" }
      module reverse { header "__algorithm/reverse.h" }
      module rotate { header "__algorithm/rotate.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 { header "__algorithm/shift.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 transform { header "__algorithm/transform.h" }
      module uniform_int_distribution { header "__algorithm/uniform_int_distribution.h" }
      module unique { header "__algorithm/unique.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 {
    requires cplusplus20
    header "compare"
    export *
  }
  module complex {
    header "complex"
    export *
  }
  module concepts {
    requires cplusplus20
    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 {
    requires cplusplus20
    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 search { header "__functional/search.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 advance              { header "__iterator/advance.h"              }
      module concepts             { header "__iterator/concepts.h"             }
      module default_sentinel     { header "__iterator/default_sentinel.h"     }
      module incrementable_traits { header "__iterator/incrementable_traits.h" }
      module indirect_concepts    { header "__iterator/indirect_concepts.h"    }
      module iter_move            { header "__iterator/iter_move.h"            }
      module iterator_traits      { header "__iterator/iterator_traits.h"      }
      module next                 { header "__iterator/next.h"                 }
      module prev                 { header "__iterator/prev.h"                 }
      module projected            { header "__iterator/projected.h"            }
      module readable_traits      { header "__iterator/readable_traits.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_traits         { header "__memory/allocator_traits.h"         }
      module allocator                { header "__memory/allocator.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 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 ranges {
    requires cplusplus20
    header "ranges"
    export compare
    export initializer_list
    export iterator
    export *

    module __ranges {
      module access                 { header "__ranges/access.h"                 }
      module concepts               { header "__ranges/concepts.h"               }
      module data                   { header "__ranges/data.h"                   }
      module empty                  { header "__ranges/empty.h"                  }
      module enabled_borrowed_range { header "__ranges/enabled_borrowed_range.h" }
      module size                   { header "__ranges/size.h"                   }
      module view_interface         { header "__ranges/view_interface.h"         }
      module view                   { header "__ranges/view.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 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 *
  }
  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 to_underlying {
        header "__utility/to_underlying.h"
      }
    }
  }
  module valarray {
    header "valarray"
    export initializer_list
    export *
  }
  module variant {
    header "variant"
    export *
  }
  module vector {
    header "vector"
    export initializer_list
    export *
  }
  module version {
    header "version"
    export *
  }

  // FIXME: These should be private.
  module __availability       { header "__availability"       export * }
  module __bit_reference      { header "__bit_reference"      export * }
  module __bits               { header "__bits"               export * }
  module __config             { header "__config"             export * }
  module __debug              { header "__debug"              export * }
  module __errc               { header "__errc"               export * }
  module __function_like      { header "__function_like.h"    export * }
  module __functional_base    { header "__functional_base" export * }
  // TODO: modularise __functional_(base_)?03
  module __hash_table         { header "__hash_table"         export * }
  // libcpp_version not modularised since it's just a version number
  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
}