// 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 *
+ }
+ // <fenv.h> provided by C library.
+ // <float.h> provided by compiler or C library.
+ module inttypes_h {
+ header "inttypes.h"
+ export stdint_h
+/*
+ export_macros
+ PRId8, PRId16, PRId32, PRId64, PRIdFAST8, PRIdFAST16, PRIdFAST32, PRIdFAST64, PRIdLEAST8, PRIdLEAST16, PRIdLEAST32, PRIdLEAST64, PRIdMAX, PRIdPTR,
+ PRIi8, PRIi16, PRIi32, PRIi64, PRIiFAST8, PRIiFAST16, PRIiFAST32, PRIiFAST64, PRIiLEAST8, PRIiLEAST16, PRIiLEAST32, PRIiLEAST64, PRIiMAX, PRIiPTR,
+ PRIo8, PRIo16, PRIo32, PRIo64, PRIoFAST8, PRIoFAST16, PRIoFAST32, PRIoFAST64, PRIoLEAST8, PRIoLEAST16, PRIoLEAST32, PRIoLEAST64, PRIoMAX, PRIoPTR,
+ PRIu8, PRIu16, PRIu32, PRIu64, PRIuFAST8, PRIuFAST16, PRIuFAST32, PRIuFAST64, PRIuLEAST8, PRIuLEAST16, PRIuLEAST32, PRIuLEAST64, PRIuMAX, PRIuPTR,
+ PRIx8, PRIx16, PRIx32, PRIx64, PRIxFAST8, PRIxFAST16, PRIxFAST32, PRIxFAST64, PRIxLEAST8, PRIxLEAST16, PRIxLEAST32, PRIxLEAST64, PRIxMAX, PRIxPTR,
+ PRIX8, PRIX16, PRIX32, PRIX64, PRIXFAST8, PRIXFAST16, PRIXFAST32, PRIXFAST64, PRIXLEAST8, PRIXLEAST16, PRIXLEAST32, PRIXLEAST64, PRIXMAX, PRIXPTR,
+ SCNd8, SCNd16, SCNd32, SCNd64, SCNdFAST8, SCNdFAST16, SCNdFAST32, SCNdFAST64, SCNdLEAST8, SCNdLEAST16, SCNdLEAST32, SCNdLEAST64, SCNdMAX, SCNdPTR,
+ SCNi8, SCNi16, SCNi32, SCNi64, SCNiFAST8, SCNiFAST16, SCNiFAST32, SCNiFAST64, SCNiLEAST8, SCNiLEAST16, SCNiLEAST32, SCNiLEAST64, SCNiMAX, SCNiPTR,
+ SCNo8, SCNo16, SCNo32, SCNo64, SCNoFAST8, SCNoFAST16, SCNoFAST32, SCNoFAST64, SCNoLEAST8, SCNoLEAST16, SCNoLEAST32, SCNoLEAST64, SCNoMAX, SCNoPTR,
+ SCNu8, SCNu16, SCNu32, SCNu64, SCNuFAST8, SCNuFAST16, SCNuFAST32, SCNuFAST64, SCNuLEAST8, SCNuLEAST16, SCNuLEAST32, SCNuLEAST64, SCNuMAX, SCNuPTR,
+ SCNx8, SCNx16, SCNx32, SCNx64, SCNxFAST8, SCNxFAST16, SCNxFAST32, SCNxFAST64, SCNxLEAST8, SCNxLEAST16, SCNxLEAST32, SCNxLEAST64, SCNxMAX, SCNxPTR,
+ SCNX8, SCNX16, SCNX32, SCNX64, SCNXFAST8, SCNXFAST16, SCNXFAST32, SCNXFAST64, SCNXLEAST8, SCNXLEAST16, SCNXLEAST32, SCNXLEAST64, SCNXMAX, SCNXPTR
+*/
+ export *
+ }
+ // <iso646.h> provided by compiler.
+ // <limits.h> provided by compiler or C library.
+ // <locale.h> provided by C library.
+ module math_h {
+ header "math.h"
+/*
+ export_macros FP_FAST_FMA, FP_FAST_FMAF, FP_FAST_FMAL, FP_ILOGBO, FP_ILOGBNAN,
+ FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, FP_ZERO,
+ HUGE_VAL, HUGE_VALF, HUGE_VALL, INFINITY, NAN,
+ MATH_ERRNO, MATH_ERREXCEPT, math_errhandling
+*/
+ export *
+ }
+ module setjmp_h {
+ header "setjmp.h"
+/*
+ export_macros setjmp
+*/
+ 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"
+ }
+ // <stdint.h> provided by compiler or C library.
+ module stdio_h {
+ // <stdio.h>'s __need_* macros require textual inclusion.
+ textual header "stdio.h"
+/*
+ export_macros BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_tmpnam, NULL,
+ SEEK_CUR, SEEK_END, SEEK_SET, TMP_MAX, _IOFBF, _IOLBF,
+ stdin, stdout, stderr
+*/
+ export *
+ }
+ module stdlib_h {
+ // <stdlib.h>'s __need_* macros require textual inclusion.
+ textual header "stdlib.h"
+/*
+ export_macros RAND_MAX
+*/
+ export *
+ }
+ module string_h {
+ header "string.h"
+/*
+ export_macros NULL
+*/
+ 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_macros NULL, WCHAR_MAX, WCHAR_MIN, WEOF
+*/
+ export *
+ }
+ module wctype_h {
+ header "wctype.h"
+/*
+ export_macros WEOF
+*/
+ 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_macros ECONNREFUSED, EIO, ENODEV, ENOTEMPTY, ERANGE,
+ E2BIG, ECONNRESET, EISCONN, ENOENT, ENOTRECOVERABLE, EROFS,
+ EACCES, EDEADLK, EISDIR, ENOEXEC, ENOTSOCK, ESPIPE,
+ EADDRINUSE, EDESTADDRREQ, ELOOP, ENOLCK, ENOTSUP, ESRCH,
+ EADDRNOTAVAIL, EDOM, EMFILE, ENOLINK, ENOTTY, ETIME,
+ EAFNOSUPPORT, EEXIST, EMLINK, ENOMEM, ENXIO, ETIMEDOUT,
+ EAGAIN, EFAULT, EMSGSIZE, ENOMSG, EOPNOTSUPP, ETXTBSY,
+ EALREADY, EFBIG, ENAMETOOLONG, ENOPROTOOPT, EOVERFLOW, EWOULDBLOCK,
+ EBADF, EHOSTUNREACH, ENETDOWN, ENOSPC, EOWNERDEAD, EXDEV,
+ EBADMSG, EIDRM, ENETRESET, ENOSR, EPERM, errno,
+ EBUSY, EILSEQ, ENETUNREACH, ENOSTR, EPIPE,
+ ECANCELED, EINPROGRESS, ENFILE, ENOSYS, EPROTO,
+ ECHILD, EINTR, ENOBUFS, ENOTCONN, EPROTONOSUPPORT,
+ ECONNABORTED, EINVAL, ENODATA, ENOTDIR, EPROTOTYPE
+*/
+ export *
+ }
+ module cfenv {
+ header "cfenv"
+/*
+ export_macros FE_ALL_EXCEPT, FE_DIVBYZERO, FE_INEXACT, FE_INVALID, FE_OVERFLOW,
+ FE_UNDERFLOW, FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD,
+ FE_DFL_ENV
+*/
+ export *
+ }
+ module cfloat {
+ header "cfloat"
+/*
+ export_macros FLT_EVAL_METHOD, FLT_RADIX, FLT_ROUNDS,
+ FLT_DIG, FLT_EPSILON, FLT_MANT_DIG,
+ FLT_MAX, FLT_MAX_10_EXP, FLT_MAX_EXP,
+ FLT_MIN, FLT_MIN_10_EXP, FLT_MIN_EXP,
+ DBL_DIG, DBL_EPSILON, DBL_MANT_DIG,
+ DBL_MAX, DBL_MAX_10_EXP, DBL_MAX_EXP,
+ DBL_MIN, DBL_MIN_10_EXP, DBL_MIN_EXP,
+ LDBL_DIG, LDBL_EPSILON, LDBL_MANT_DIG,
+ LDBL_MAX, LDBL_MAX_10_EXP, LDBL_MAX_EXP,
+ LDBL_MIN, LDBL_MIN_10_EXP, LDBL_MIN_EXP
+*/
+ export *
+ }
+ module cinttypes {
+ header "cinttypes"
+ export cstdint
+/*
+ export_macros
+ PRId8, PRId16, PRId32, PRId64, PRIdFAST8, PRIdFAST16, PRIdFAST32, PRIdFAST64, PRIdLEAST8, PRIdLEAST16, PRIdLEAST32, PRIdLEAST64, PRIdMAX, PRIdPTR,
+ PRIi8, PRIi16, PRIi32, PRIi64, PRIiFAST8, PRIiFAST16, PRIiFAST32, PRIiFAST64, PRIiLEAST8, PRIiLEAST16, PRIiLEAST32, PRIiLEAST64, PRIiMAX, PRIiPTR,
+ PRIo8, PRIo16, PRIo32, PRIo64, PRIoFAST8, PRIoFAST16, PRIoFAST32, PRIoFAST64, PRIoLEAST8, PRIoLEAST16, PRIoLEAST32, PRIoLEAST64, PRIoMAX, PRIoPTR,
+ PRIu8, PRIu16, PRIu32, PRIu64, PRIuFAST8, PRIuFAST16, PRIuFAST32, PRIuFAST64, PRIuLEAST8, PRIuLEAST16, PRIuLEAST32, PRIuLEAST64, PRIuMAX, PRIuPTR,
+ PRIx8, PRIx16, PRIx32, PRIx64, PRIxFAST8, PRIxFAST16, PRIxFAST32, PRIxFAST64, PRIxLEAST8, PRIxLEAST16, PRIxLEAST32, PRIxLEAST64, PRIxMAX, PRIxPTR,
+ PRIX8, PRIX16, PRIX32, PRIX64, PRIXFAST8, PRIXFAST16, PRIXFAST32, PRIXFAST64, PRIXLEAST8, PRIXLEAST16, PRIXLEAST32, PRIXLEAST64, PRIXMAX, PRIXPTR,
+ SCNd8, SCNd16, SCNd32, SCNd64, SCNdFAST8, SCNdFAST16, SCNdFAST32, SCNdFAST64, SCNdLEAST8, SCNdLEAST16, SCNdLEAST32, SCNdLEAST64, SCNdMAX, SCNdPTR,
+ SCNi8, SCNi16, SCNi32, SCNi64, SCNiFAST8, SCNiFAST16, SCNiFAST32, SCNiFAST64, SCNiLEAST8, SCNiLEAST16, SCNiLEAST32, SCNiLEAST64, SCNiMAX, SCNiPTR,
+ SCNo8, SCNo16, SCNo32, SCNo64, SCNoFAST8, SCNoFAST16, SCNoFAST32, SCNoFAST64, SCNoLEAST8, SCNoLEAST16, SCNoLEAST32, SCNoLEAST64, SCNoMAX, SCNoPTR,
+ SCNu8, SCNu16, SCNu32, SCNu64, SCNuFAST8, SCNuFAST16, SCNuFAST32, SCNuFAST64, SCNuLEAST8, SCNuLEAST16, SCNuLEAST32, SCNuLEAST64, SCNuMAX, SCNuPTR,
+ SCNx8, SCNx16, SCNx32, SCNx64, SCNxFAST8, SCNxFAST16, SCNxFAST32, SCNxFAST64, SCNxLEAST8, SCNxLEAST16, SCNxLEAST32, SCNxLEAST64, SCNxMAX, SCNxPTR,
+ SCNX8, SCNX16, SCNX32, SCNX64, SCNXFAST8, SCNXFAST16, SCNXFAST32, SCNXFAST64, SCNXLEAST8, SCNXLEAST16, SCNXLEAST32, SCNXLEAST64, SCNXMAX, SCNXPTR
+*/
+ export *
+ }
+ module ciso646 {
+ header "ciso646"
+ export *
+ }
+ module climits {
+ header "climits"
+/*
+ export_macros CHAR_BIT, CHAR_MIN, CHAR_MAX,
+ SCHAR_MIN, SCHAR_MAX, UCHAR_MAX,
+ SHRT_MIN, SHRT_MAX, USHRT_MAX,
+ INT_MIN, INT_MAX, UINT_MAX,
+ LONG_MIN, LONG_MAX, ULONG_MAX,
+ LLONG_MIN, LLONG_MAX, ULLONG_MAX,
+ MB_LEN_MAX
+*/
+ export *
+ }
+ module clocale {
+ header "clocale"
+/*
+ export_macros LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, NULL
+*/
+ export *
+ }
+ module cmath {
+ header "cmath"
+/*
+ export_macros FP_FAST_FMA, FP_FAST_FMAF, FP_FAST_FMAL, FP_ILOGBO, FP_ILOGBNAN,
+ FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, FP_ZERO,
+ HUGE_VAL, HUGE_VALF, HUGE_VALL, INFINITY, NAN,
+ MATH_ERRNO, MATH_ERREXCEPT, math_errhandling
+*/
+ export *
+ }
+ module csetjmp {
+ header "csetjmp"
+/*
+ export_macros setjmp
+*/
+ export *
+ }
+ module csignal {
+ header "csignal"
+/*
+ export_macros SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM,
+ SIG_DFL, SIG_IGN, SIG_ERR
+*/
+ export *
+ }
+ // FIXME: <cstdalign> is missing.
+ module cstdarg {
+ header "cstdarg"
+/*
+ export_macros va_arg, va_start, va_end, va_copy
+*/
+ export *
+ }
+ module cstdbool {
+ header "cstdbool"
+/*
+ export_macros __bool_true_false_are_defined
+*/
+ export *
+ }
+ module cstddef {
+ header "cstddef"
+/*
+ export_macros NULL, offsetof
+*/
+ export *
+ }
+ module cstdint {
+ header "cstdint"
+/*
+ export_macros
+ INT_8_MIN, INT_8_MAX, UINT_8_MAX, INT_16_MIN, INT_16_MAX, UINT_16_MAX,
+ INT_32_MIN, INT_32_MAX, UINT_32_MAX, INT_64_MIN, INT_64_MAX, UINT_64_MAX,
+ INT_FAST8_MIN, INT_FAST8_MAX, UINT_FAST8_MAX, INT_FAST16_MIN, INT_FAST16_MAX, UINT_FAST16_MAX,
+ INT_FAST32_MIN, INT_FAST32_MAX, UINT_FAST32_MAX, INT_FAST64_MIN, INT_FAST64_MAX, UINT_FAST64_MAX,
+ INT_LEAST8_MIN, INT_LEAST8_MAX, UINT_LEAST8_MAX, INT_LEAST16_MIN, INT_LEAST16_MAX, UINT_LEAST16_MAX,
+ INT_LEAST32_MIN, INT_LEAST32_MAX, UINT_LEAST32_MAX, INT_LEAST64_MIN, INT_LEAST64_MAX, UINT_LEAST64_MAX,
+ INT_MAX_MIN, INT_MAX_MAX, UINT_MAX_MAX, INT_PTR_MIN, INT_PTR_MAX, UINT_PTR_MAX,
+ PTRDIFF_MIN, PTRDIFF_MAX, SIG_ATOMIC_MIN, SIG_ATOMIC_MAX, WCHAR_MIN, WCHAR_MAX, WINT_MIN, WINT_MAX,
+ SIZE_MAX
+*/
+ export *
+ }
+ module cstdio {
+ header "cstdio"
+/*
+ export_macros BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_tmpnam, NULL,
+ SEEK_CUR, SEEK_END, SEEK_SET, TMP_MAX, _IOFBF, _IOLBF,
+ stdin, stdout, stderr
+*/
+ export *
+ }
+ module cstdlib {
+ header "cstdlib"
+/*
+ export_macros RAND_MAX
+*/
+ export *
+ }
+ module cstring {
+ header "cstring"
+/*
+ export_macros NULL
+*/
+ export *
+ }
+ module ctgmath {
+ header "ctgmath"
+ export ccomplex
+ export cmath
+ export *
+ }
+ module ctime {
+ header "ctime"
+/*
+ export_macros NULL, CLOCKS_PER_SEC
+*/
+ export *
+ }
+ // FIXME: <cuchar> is missing.
+ module cwchar {
+ header "cwchar"
+/*
+ export_macros NULL, WCHAR_MAX, WCHAR_MIN, WEOF
+*/
+ export *
+ }
+ module cwctype {
+ header "cwctype"
+/*
+ export_macros WEOF
+*/
+ export *
+ }
+ }
+
module algorithm {
header "algorithm"
export initializer_list