1module std [system] { 2 // FIXME: The standard does not require that each of these submodules 3 // re-exports its imported modules. We should provide an alternative form of 4 // export that issues a warning if a name from the submodule is used, and 5 // use that to provide a 'strict mode' for libc++. 6 module algorithm { 7 header "algorithm" 8 export initializer_list 9 export * 10 } 11 module array { 12 header "array" 13 export initializer_list 14 export * 15 } 16 module atomic { 17 header "atomic" 18 export * 19 requires cplusplus11 20 } 21 module bitset { 22 header "bitset" 23 export string 24 export iosfwd 25 export * 26 } 27 // No submodule for cassert. It fundamentally needs repeated, textual inclusion. 28 module ccomplex { 29 header "ccomplex" 30 export complex 31 export * 32 } 33 module cctype { 34 header "cctype" 35 export * 36 } 37 module cerrno { 38 header "cerrno" 39/* 40 export_macros ECONNREFUSED, EIO, ENODEV, ENOTEMPTY, ERANGE, 41 E2BIG, ECONNRESET, EISCONN, ENOENT, ENOTRECOVERABLE, EROFS, 42 EACCES, EDEADLK, EISDIR, ENOEXEC, ENOTSOCK, ESPIPE, 43 EADDRINUSE, EDESTADDRREQ, ELOOP, ENOLCK, ENOTSUP, ESRCH, 44 EADDRNOTAVAIL, EDOM, EMFILE, ENOLINK, ENOTTY, ETIME, 45 EAFNOSUPPORT, EEXIST, EMLINK, ENOMEM, ENXIO, ETIMEDOUT, 46 EAGAIN, EFAULT, EMSGSIZE, ENOMSG, EOPNOTSUPP, ETXTBSY, 47 EALREADY, EFBIG, ENAMETOOLONG, ENOPROTOOPT, EOVERFLOW, EWOULDBLOCK, 48 EBADF, EHOSTUNREACH, ENETDOWN, ENOSPC, EOWNERDEAD, EXDEV, 49 EBADMSG, EIDRM, ENETRESET, ENOSR, EPERM, errno, 50 EBUSY, EILSEQ, ENETUNREACH, ENOSTR, EPIPE, 51 ECANCELED, EINPROGRESS, ENFILE, ENOSYS, EPROTO, 52 ECHILD, EINTR, ENOBUFS, ENOTCONN, EPROTONOSUPPORT, 53 ECONNABORTED, EINVAL, ENODATA, ENOTDIR, EPROTOTYPE 54*/ 55 export * 56 } 57 module cfenv { 58 header "cfenv" 59/* 60 export_macros FE_ALL_EXCEPT, FE_DIVBYZERO, FE_INEXACT, FE_INVALID, FE_OVERFLOW, 61 FE_UNDERFLOW, FE_DOWNWARD, FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD, 62 FE_DFL_ENV 63*/ 64 export * 65 } 66 module cfloat { 67 header "cfloat" 68/* 69 export_macros FLT_EVAL_METHOD, FLT_RADIX, FLT_ROUNDS, 70 FLT_DIG, FLT_EPSILON, FLT_MANT_DIG, 71 FLT_MAX, FLT_MAX_10_EXP, FLT_MAX_EXP, 72 FLT_MIN, FLT_MIN_10_EXP, FLT_MIN_EXP, 73 DBL_DIG, DBL_EPSILON, DBL_MANT_DIG, 74 DBL_MAX, DBL_MAX_10_EXP, DBL_MAX_EXP, 75 DBL_MIN, DBL_MIN_10_EXP, DBL_MIN_EXP, 76 LDBL_DIG, LDBL_EPSILON, LDBL_MANT_DIG, 77 LDBL_MAX, LDBL_MAX_10_EXP, LDBL_MAX_EXP, 78 LDBL_MIN, LDBL_MIN_10_EXP, LDBL_MIN_EXP 79*/ 80 export * 81 } 82 module chrono { 83 header "chrono" 84 export * 85 } 86 module cinttypes { 87 header "cinttypes" 88 export cstdint 89/* 90 export_macros 91 PRId8, PRId16, PRId32, PRId64, PRIdFAST8, PRIdFAST16, PRIdFAST32, PRIdFAST64, PRIdLEAST8, PRIdLEAST16, PRIdLEAST32, PRIdLEAST64, PRIdMAX, PRIdPTR, 92 PRIi8, PRIi16, PRIi32, PRIi64, PRIiFAST8, PRIiFAST16, PRIiFAST32, PRIiFAST64, PRIiLEAST8, PRIiLEAST16, PRIiLEAST32, PRIiLEAST64, PRIiMAX, PRIiPTR, 93 PRIo8, PRIo16, PRIo32, PRIo64, PRIoFAST8, PRIoFAST16, PRIoFAST32, PRIoFAST64, PRIoLEAST8, PRIoLEAST16, PRIoLEAST32, PRIoLEAST64, PRIoMAX, PRIoPTR, 94 PRIu8, PRIu16, PRIu32, PRIu64, PRIuFAST8, PRIuFAST16, PRIuFAST32, PRIuFAST64, PRIuLEAST8, PRIuLEAST16, PRIuLEAST32, PRIuLEAST64, PRIuMAX, PRIuPTR, 95 PRIx8, PRIx16, PRIx32, PRIx64, PRIxFAST8, PRIxFAST16, PRIxFAST32, PRIxFAST64, PRIxLEAST8, PRIxLEAST16, PRIxLEAST32, PRIxLEAST64, PRIxMAX, PRIxPTR, 96 PRIX8, PRIX16, PRIX32, PRIX64, PRIXFAST8, PRIXFAST16, PRIXFAST32, PRIXFAST64, PRIXLEAST8, PRIXLEAST16, PRIXLEAST32, PRIXLEAST64, PRIXMAX, PRIXPTR, 97 SCNd8, SCNd16, SCNd32, SCNd64, SCNdFAST8, SCNdFAST16, SCNdFAST32, SCNdFAST64, SCNdLEAST8, SCNdLEAST16, SCNdLEAST32, SCNdLEAST64, SCNdMAX, SCNdPTR, 98 SCNi8, SCNi16, SCNi32, SCNi64, SCNiFAST8, SCNiFAST16, SCNiFAST32, SCNiFAST64, SCNiLEAST8, SCNiLEAST16, SCNiLEAST32, SCNiLEAST64, SCNiMAX, SCNiPTR, 99 SCNo8, SCNo16, SCNo32, SCNo64, SCNoFAST8, SCNoFAST16, SCNoFAST32, SCNoFAST64, SCNoLEAST8, SCNoLEAST16, SCNoLEAST32, SCNoLEAST64, SCNoMAX, SCNoPTR, 100 SCNu8, SCNu16, SCNu32, SCNu64, SCNuFAST8, SCNuFAST16, SCNuFAST32, SCNuFAST64, SCNuLEAST8, SCNuLEAST16, SCNuLEAST32, SCNuLEAST64, SCNuMAX, SCNuPTR, 101 SCNx8, SCNx16, SCNx32, SCNx64, SCNxFAST8, SCNxFAST16, SCNxFAST32, SCNxFAST64, SCNxLEAST8, SCNxLEAST16, SCNxLEAST32, SCNxLEAST64, SCNxMAX, SCNxPTR, 102 SCNX8, SCNX16, SCNX32, SCNX64, SCNXFAST8, SCNXFAST16, SCNXFAST32, SCNXFAST64, SCNXLEAST8, SCNXLEAST16, SCNXLEAST32, SCNXLEAST64, SCNXMAX, SCNXPTR 103*/ 104 export * 105 } 106 module ciso646 { 107 header "ciso646" 108 export * 109 } 110 module climits { 111 header "climits" 112/* 113 export_macros CHAR_BIT, CHAR_MIN, CHAR_MAX, 114 SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, 115 SHRT_MIN, SHRT_MAX, USHRT_MAX, 116 INT_MIN, INT_MAX, UINT_MAX, 117 LONG_MIN, LONG_MAX, ULONG_MAX, 118 LLONG_MIN, LLONG_MAX, ULLONG_MAX, 119 MB_LEN_MAX 120*/ 121 export * 122 } 123 module clocale { 124 header "clocale" 125/* 126 export_macros LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, NULL 127*/ 128 export * 129 } 130 module cmath { 131 header "cmath" 132/* 133 export_macros FP_FAST_FMA, FP_FAST_FMAF, FP_FAST_FMAL, FP_ILOGBO, FP_ILOGBNAN, 134 FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, 135 HUGE_VAL, HUGE_VALF, HUGE_VALL, INFINITY, NAN, 136 MATH_ERRNO, MATH_ERREXCEPT, math_errhandling 137*/ 138 export * 139 } 140 module codecvt { 141 header "codecvt" 142 export * 143 } 144 module complex { 145 header "complex" 146 export * 147 } 148 module condition_variable { 149 header "condition_variable" 150 export * 151 } 152 module csetjmp { 153 header "csetjmp" 154/* 155 export_macros setjmp 156*/ 157 export * 158 } 159 module csignal { 160 header "csignal" 161/* 162 export_macros SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM, 163 SIG_DFL, SIG_IGN, SIG_ERR 164*/ 165 export * 166 } 167 module cstdarg { 168 header "cstdarg" 169/* 170 export_macros va_arg, va_start, va_end, va_copy 171*/ 172 export * 173 } 174 module cstdbool { 175 header "cstdbool" 176/* 177 export_macros __bool_true_false_are_defined 178*/ 179 export * 180 } 181 module cstddef { 182 header "cstddef" 183/* 184 export_macros NULL, offsetof 185*/ 186 export * 187 } 188 module cstdint { 189 header "cstdint" 190/* 191 export_macros 192 INT_8_MIN, INT_8_MAX, UINT_8_MAX, INT_16_MIN, INT_16_MAX, UINT_16_MAX, 193 INT_32_MIN, INT_32_MAX, UINT_32_MAX, INT_64_MIN, INT_64_MAX, UINT_64_MAX, 194 INT_FAST8_MIN, INT_FAST8_MAX, UINT_FAST8_MAX, INT_FAST16_MIN, INT_FAST16_MAX, UINT_FAST16_MAX, 195 INT_FAST32_MIN, INT_FAST32_MAX, UINT_FAST32_MAX, INT_FAST64_MIN, INT_FAST64_MAX, UINT_FAST64_MAX, 196 INT_LEAST8_MIN, INT_LEAST8_MAX, UINT_LEAST8_MAX, INT_LEAST16_MIN, INT_LEAST16_MAX, UINT_LEAST16_MAX, 197 INT_LEAST32_MIN, INT_LEAST32_MAX, UINT_LEAST32_MAX, INT_LEAST64_MIN, INT_LEAST64_MAX, UINT_LEAST64_MAX, 198 INT_MAX_MIN, INT_MAX_MAX, UINT_MAX_MAX, INT_PTR_MIN, INT_PTR_MAX, UINT_PTR_MAX, 199 PTRDIFF_MIN, PTRDIFF_MAX, SIG_ATOMIC_MIN, SIG_ATOMIC_MAX, WCHAR_MIN, WCHAR_MAX, WINT_MIN, WINT_MAX, 200 SIZE_MAX 201*/ 202 export * 203 } 204 module cstdio { 205 header "cstdio" 206/* 207 export_macros BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_tmpnam, NULL, 208 SEEK_CUR, SEEK_END, SEEK_SET, TMP_MAX, _IOFBF, _IOLBF, 209 stdin, stdout, stderr 210*/ 211 export * 212 } 213 module cstdlib { 214 header "cstdlib" 215/* 216 export_macros RAND_MAX 217*/ 218 export * 219 } 220 module cstring { 221 header "cstring" 222/* 223 export_macros NULL 224*/ 225 export * 226 } 227 module ctgmath { 228 header "ctgmath" 229 export ccomplex 230 export cmath 231 export * 232 } 233 module ctime { 234 header "ctime" 235/* 236 export_macros NULL, CLOCKS_PER_SEC 237*/ 238 export * 239 } 240 module cwchar { 241 header "cwchar" 242/* 243 export_macros NULL, WCHAR_MAX, WCHAR_MIN, WEOF 244*/ 245 export * 246 } 247 module cwctype { 248 header "cwctype" 249/* 250 export_macros WEOF 251*/ 252 export * 253 } 254 module deque { 255 header "deque" 256 export initializer_list 257 export * 258 } 259 module exception { 260 header "exception" 261 export * 262 } 263 module forward_list { 264 header "forward_list" 265 export initializer_list 266 export * 267 } 268 module fstream { 269 header "fstream" 270 export * 271 } 272 module functional { 273 header "functional" 274 export * 275 } 276 module future { 277 header "future" 278 export * 279 } 280 module initializer_list { 281 header "initializer_list" 282 export * 283 } 284 module iomanip { 285 header "iomanip" 286 export * 287 } 288 module ios { 289 header "ios" 290 export iosfwd 291 export * 292 } 293 module iosfwd { 294 header "iosfwd" 295 export * 296 } 297 module iostream { 298 header "iostream" 299 export ios 300 export streambuf 301 export istream 302 export ostream 303 export * 304 } 305 module istream { 306 header "istream" 307 // FIXME: should re-export ios, streambuf? 308 export * 309 } 310 module iterator { 311 header "iterator" 312 export * 313 } 314 module limits { 315 header "limits" 316 export * 317 } 318 module list { 319 header "list" 320 export initializer_list 321 export * 322 } 323 module locale { 324 header "locale" 325 export * 326 } 327 module map { 328 header "map" 329 export initializer_list 330 export * 331 } 332 module memory { 333 header "memory" 334 export * 335 } 336 module mutex { 337 header "mutex" 338 export * 339 } 340 module new { 341 header "new" 342 export * 343 } 344 module numeric { 345 header "numeric" 346 export * 347 } 348 module ostream { 349 header "ostream" 350 // FIXME: should re-export ios, streambuf? 351 export * 352 } 353 module queue { 354 header "queue" 355 export initializer_list 356 export * 357 } 358 module random { 359 header "random" 360 export initializer_list 361 export * 362 } 363 module ratio { 364 header "ratio" 365 export * 366 } 367 module regex { 368 header "regex" 369 export initializer_list 370 export * 371 } 372 module scoped_allocator { 373 header "scoped_allocator" 374 export * 375 } 376 module set { 377 header "set" 378 export initializer_list 379 export * 380 } 381 module sstream { 382 header "sstream" 383 // FIXME: should re-export istream, ostream, ios, streambuf, string? 384 export * 385 } 386 module stack { 387 header "stack" 388 export initializer_list 389 export * 390 } 391 module stdexcept { 392 header "stdexcept" 393 export * 394 } 395 module streambuf { 396 header "streambuf" 397 export * 398 } 399 module string { 400 header "string" 401 export initializer_list 402 export * 403 } 404 module strstream { 405 header "strstream" 406 requires !cplusplus11 407 } 408 module system_error { 409 header "system_error" 410 export * 411 } 412 module thread { 413 header "thread" 414 export * 415 } 416 module tuple { 417 header "tuple" 418 export * 419 } 420 module type_traits { 421 header "type_traits" 422 export * 423 } 424 module typeindex { 425 header "typeindex" 426 export * 427 } 428 module typeinfo { 429 header "typeinfo" 430 export * 431 } 432 module unordered_map { 433 header "unordered_map" 434 export initializer_list 435 export * 436 } 437 module unordered_set { 438 header "unordered_set" 439 export initializer_list 440 export * 441 } 442 module utility { 443 header "utility" 444 export initializer_list 445 export * 446 } 447 module valarray { 448 header "valarray" 449 export initializer_list 450 export * 451 } 452 module vector { 453 header "vector" 454 export initializer_list 455 export * 456 } 457 458 // FIXME: We don't have modules for the <foo.h> headers, because they might 459 // be included from the C library's headers, and that would create a #include 460 // cycle. For the same reason, we don't have a module for __config. 461 //module __config { header "__config" export * } 462 463 // FIXME: These should be private. 464 module __bit_reference { header "__bit_reference" export * } 465 module __debug { header "__debug" export * } 466 module __functional_base { header "__functional_base" export * } 467 module __hash_table { header "__hash_table" export * } 468 module __locale { header "__locale" export * } 469 module __mutex_base { header "__mutex_base" export * } 470 module __split_buffer { header "__split_buffer" export * } 471 module __sso_allocator { header "__sso_allocator" export * } 472 module __std_stream { header "__std_stream" export * } 473 module __tree { header "__tree" export * } 474 module __tuple { header "__tuple" export * } 475 module __undef_min_max { header "__undef_min_max" export * } 476 module __undef___deallocate { header "__undef___deallocate" export * } 477} 478