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