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