module.modulemap revision 355940
1// define the module for __config outside of the top level 'std' module 2// since __config may be included from C headers which may create an 3// include cycle. 4module std_config [system] [extern_c] { 5 header "__config" 6} 7 8module std [system] { 9 export std_config 10 // FIXME: The standard does not require that each of these submodules 11 // re-exports its imported modules. We should provide an alternative form of 12 // export that issues a warning if a name from the submodule is used, and 13 // use that to provide a 'strict mode' for libc++. 14 15 // Deprecated C-compatibility headers. These can all be included from within 16 // an 'extern "C"' context. 17 module depr [extern_c] { 18 // <assert.h> provided by C library. 19 module ctype_h { 20 header "ctype.h" 21 export * 22 } 23 module errno_h { 24 header "errno.h" 25 export * 26 } 27 module fenv_h { 28 header "fenv.h" 29 export * 30 } 31 // <float.h> provided by compiler or C library. 32 module inttypes_h { 33 header "inttypes.h" 34 export stdint_h 35 export * 36 } 37 // <iso646.h> provided by compiler. 38 // <limits.h> provided by compiler or C library. 39 module locale_h { 40 header "locale.h" 41 export * 42 } 43 module math_h { 44 header "math.h" 45 export * 46 } 47 module setjmp_h { 48 header "setjmp.h" 49 export * 50 } 51 // FIXME: <stdalign.h> is missing. 52 // <signal.h> provided by C library. 53 // <stdarg.h> provided by compiler. 54 // <stdbool.h> provided by compiler. 55 module stddef_h { 56 // <stddef.h>'s __need_* macros require textual inclusion. 57 textual header "stddef.h" 58 } 59 module stdint_h { 60 header "stdint.h" 61 export * 62 // FIXME: This module only exists on OS X and for some reason the 63 // wildcard above doesn't export it. 64 export Darwin.C.stdint 65 } 66 module stdio_h { 67 // <stdio.h>'s __need_* macros require textual inclusion. 68 textual header "stdio.h" 69 export * 70 export Darwin.C.stdio 71 } 72 module stdlib_h { 73 // <stdlib.h>'s __need_* macros require textual inclusion. 74 textual header "stdlib.h" 75 export * 76 } 77 module string_h { 78 header "string.h" 79 export * 80 } 81 // FIXME: <uchar.h> is missing. 82 // <time.h> provided by C library. 83 module wchar_h { 84 // <wchar.h>'s __need_* macros require textual inclusion. 85 textual header "wchar.h" 86 export * 87 } 88 module wctype_h { 89 header "wctype.h" 90 export * 91 } 92 } 93 94 // <complex.h> and <tgmath.h> are not C headers in any real sense, do not 95 // allow their use in extern "C" contexts. 96 module complex_h { 97 header "complex.h" 98 export ccomplex 99 export * 100 } 101 module tgmath_h { 102 header "tgmath.h" 103 export ccomplex 104 export cmath 105 export * 106 } 107 108 // C compatibility headers. 109 module compat { 110 module cassert { 111 // <cassert>'s use of NDEBUG requires textual inclusion. 112 textual header "cassert" 113 } 114 module ccomplex { 115 header "ccomplex" 116 export complex 117 export * 118 } 119 module cctype { 120 header "cctype" 121 export * 122 } 123 module cerrno { 124 header "cerrno" 125 export * 126 } 127 module cfenv { 128 header "cfenv" 129 export * 130 } 131 module cfloat { 132 header "cfloat" 133 export * 134 } 135 module cinttypes { 136 header "cinttypes" 137 export cstdint 138 export * 139 } 140 module ciso646 { 141 header "ciso646" 142 export * 143 } 144 module climits { 145 header "climits" 146 export * 147 } 148 module clocale { 149 header "clocale" 150 export * 151 } 152 module cmath { 153 header "cmath" 154 export * 155 } 156 module csetjmp { 157 header "csetjmp" 158 export * 159 } 160 module csignal { 161 header "csignal" 162 export * 163 } 164 // FIXME: <cstdalign> is missing. 165 module cstdarg { 166 header "cstdarg" 167 export * 168 } 169 module cstdbool { 170 header "cstdbool" 171 export * 172 } 173 module cstddef { 174 header "cstddef" 175 export * 176 } 177 module cstdint { 178 header "cstdint" 179 export depr.stdint_h 180 export * 181 } 182 module cstdio { 183 header "cstdio" 184 export * 185 } 186 module cstdlib { 187 header "cstdlib" 188 export * 189 } 190 module cstring { 191 header "cstring" 192 export * 193 } 194 module ctgmath { 195 header "ctgmath" 196 export ccomplex 197 export cmath 198 export * 199 } 200 module ctime { 201 header "ctime" 202 export * 203 } 204 // FIXME: <cuchar> is missing. 205 module cwchar { 206 header "cwchar" 207 export depr.stdio_h 208 export * 209 } 210 module cwctype { 211 header "cwctype" 212 export * 213 } 214 } 215 216 module algorithm { 217 header "algorithm" 218 export initializer_list 219 export * 220 } 221 module any { 222 header "any" 223 export * 224 } 225 module array { 226 header "array" 227 export initializer_list 228 export * 229 } 230 module atomic { 231 header "atomic" 232 export * 233 } 234 module bit { 235 header "bit" 236 export * 237 } 238 module bitset { 239 header "bitset" 240 export string 241 export iosfwd 242 export * 243 } 244 // No submodule for cassert. It fundamentally needs repeated, textual inclusion. 245 module charconv { 246 header "charconv" 247 export * 248 } 249 module chrono { 250 header "chrono" 251 export * 252 } 253 module codecvt { 254 header "codecvt" 255 export * 256 } 257 module compare { 258 header "compare" 259 export * 260 } 261 module complex { 262 header "complex" 263 export * 264 } 265 module condition_variable { 266 header "condition_variable" 267 export * 268 } 269 module deque { 270 header "deque" 271 export initializer_list 272 export * 273 } 274 module exception { 275 header "exception" 276 export * 277 } 278 module filesystem { 279 header "filesystem" 280 export * 281 } 282 module forward_list { 283 header "forward_list" 284 export initializer_list 285 export * 286 } 287 module fstream { 288 header "fstream" 289 export * 290 } 291 module functional { 292 header "functional" 293 export * 294 } 295 module future { 296 header "future" 297 export * 298 } 299 module initializer_list { 300 header "initializer_list" 301 export * 302 } 303 module iomanip { 304 header "iomanip" 305 export * 306 } 307 module ios { 308 header "ios" 309 export iosfwd 310 export * 311 } 312 module iosfwd { 313 header "iosfwd" 314 export * 315 } 316 module iostream { 317 header "iostream" 318 export ios 319 export streambuf 320 export istream 321 export ostream 322 export * 323 } 324 module istream { 325 header "istream" 326 // FIXME: should re-export ios, streambuf? 327 export * 328 } 329 module iterator { 330 header "iterator" 331 export * 332 } 333 module limits { 334 header "limits" 335 export * 336 } 337 module list { 338 header "list" 339 export initializer_list 340 export * 341 } 342 module locale { 343 header "locale" 344 export * 345 } 346 module map { 347 header "map" 348 export initializer_list 349 export * 350 } 351 module memory { 352 header "memory" 353 export * 354 } 355 module mutex { 356 header "mutex" 357 export * 358 } 359 module new { 360 header "new" 361 export * 362 } 363 module numeric { 364 header "numeric" 365 export * 366 } 367 module optional { 368 header "optional" 369 export * 370 } 371 module ostream { 372 header "ostream" 373 // FIXME: should re-export ios, streambuf? 374 export * 375 } 376 module queue { 377 header "queue" 378 export initializer_list 379 export * 380 } 381 module random { 382 header "random" 383 export initializer_list 384 export * 385 } 386 module ratio { 387 header "ratio" 388 export * 389 } 390 module regex { 391 header "regex" 392 export initializer_list 393 export * 394 } 395 module scoped_allocator { 396 header "scoped_allocator" 397 export * 398 } 399 module set { 400 header "set" 401 export initializer_list 402 export * 403 } 404 module sstream { 405 header "sstream" 406 // FIXME: should re-export istream, ostream, ios, streambuf, string? 407 export * 408 } 409 module stack { 410 header "stack" 411 export initializer_list 412 export * 413 } 414 module stdexcept { 415 header "stdexcept" 416 export * 417 } 418 module streambuf { 419 header "streambuf" 420 export * 421 } 422 module string { 423 header "string" 424 export initializer_list 425 export string_view 426 export __string 427 export * 428 } 429 module string_view { 430 header "string_view" 431 export initializer_list 432 export __string 433 export * 434 } 435 module strstream { 436 header "strstream" 437 export * 438 } 439 module system_error { 440 header "system_error" 441 export * 442 } 443 module thread { 444 header "thread" 445 export * 446 } 447 module tuple { 448 header "tuple" 449 export * 450 } 451 module type_traits { 452 header "type_traits" 453 export * 454 } 455 module typeindex { 456 header "typeindex" 457 export * 458 } 459 module typeinfo { 460 header "typeinfo" 461 export * 462 } 463 module unordered_map { 464 header "unordered_map" 465 export initializer_list 466 export * 467 } 468 module unordered_set { 469 header "unordered_set" 470 export initializer_list 471 export * 472 } 473 module utility { 474 header "utility" 475 export initializer_list 476 export * 477 } 478 module valarray { 479 header "valarray" 480 export initializer_list 481 export * 482 } 483 module variant { 484 header "variant" 485 export * 486 } 487 module vector { 488 header "vector" 489 export initializer_list 490 export * 491 } 492 module version { 493 header "version" 494 export * 495 } 496 497 // FIXME: These should be private. 498 module __bit_reference { header "__bit_reference" export * } 499 module __debug { header "__debug" export * } 500 module __errc { header "__errc" export * } 501 module __functional_base { header "__functional_base" export * } 502 module __hash_table { header "__hash_table" export * } 503 module __locale { header "__locale" export * } 504 module __mutex_base { header "__mutex_base" export * } 505 module __split_buffer { header "__split_buffer" export * } 506 module __sso_allocator { header "__sso_allocator" export * } 507 module __std_stream { header "__std_stream" export * } 508 module __string { header "__string" export * } 509 module __tree { header "__tree" export * } 510 module __tuple { header "__tuple" export * } 511 module __undef_macros { header "__undef_macros" export * } 512 module __node_handle { header "__node_handle" export * } 513 514 module experimental { 515 requires cplusplus11 516 517 module algorithm { 518 header "experimental/algorithm" 519 export * 520 } 521 module coroutine { 522 requires coroutines 523 header "experimental/coroutine" 524 export * 525 } 526 module deque { 527 header "experimental/deque" 528 export * 529 } 530 module filesystem { 531 header "experimental/filesystem" 532 export * 533 } 534 module forward_list { 535 header "experimental/forward_list" 536 export * 537 } 538 module functional { 539 header "experimental/functional" 540 export * 541 } 542 module iterator { 543 header "experimental/iterator" 544 export * 545 } 546 module list { 547 header "experimental/list" 548 export * 549 } 550 module map { 551 header "experimental/map" 552 export * 553 } 554 module memory_resource { 555 header "experimental/memory_resource" 556 export * 557 } 558 module propagate_const { 559 header "experimental/propagate_const" 560 export * 561 } 562 module regex { 563 header "experimental/regex" 564 export * 565 } 566 module simd { 567 header "experimental/simd" 568 export * 569 } 570 module set { 571 header "experimental/set" 572 export * 573 } 574 module span { 575 header "span" 576 export * 577 } 578 module string { 579 header "experimental/string" 580 export * 581 } 582 module type_traits { 583 header "experimental/type_traits" 584 export * 585 } 586 module unordered_map { 587 header "experimental/unordered_map" 588 export * 589 } 590 module unordered_set { 591 header "experimental/unordered_set" 592 export * 593 } 594 module utility { 595 header "experimental/utility" 596 export * 597 } 598 module vector { 599 header "experimental/vector" 600 export * 601 } 602 // FIXME these should be private 603 module __memory { 604 header "experimental/__memory" 605 export * 606 } 607 } // end experimental 608} 609