xref: /freebsd/contrib/llvm-project/libcxx/include/module.modulemap (revision ec0ea6efa1ad229d75c394c1a9b9cac33af2b1d3)
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 __algorithm {
222      module adjacent_find            { private header "__algorithm/adjacent_find.h" }
223      module all_of                   { private header "__algorithm/all_of.h" }
224      module any_of                   { private header "__algorithm/any_of.h" }
225      module binary_search            { private header "__algorithm/binary_search.h" }
226      module clamp                    { private header "__algorithm/clamp.h" }
227      module comp                     { private header "__algorithm/comp.h" }
228      module comp_ref_type            { private header "__algorithm/comp_ref_type.h" }
229      module copy                     { private header "__algorithm/copy.h" }
230      module copy_backward            { private header "__algorithm/copy_backward.h" }
231      module copy_if                  { private header "__algorithm/copy_if.h" }
232      module copy_n                   { private header "__algorithm/copy_n.h" }
233      module count                    { private header "__algorithm/count.h" }
234      module count_if                 { private header "__algorithm/count_if.h" }
235      module equal                    { private header "__algorithm/equal.h" }
236      module equal_range              { private header "__algorithm/equal_range.h" }
237      module fill                     { private header "__algorithm/fill.h" }
238      module fill_n                   { private header "__algorithm/fill_n.h" }
239      module find                     { private header "__algorithm/find.h" }
240      module find_end                 { private header "__algorithm/find_end.h" }
241      module find_first_of            { private header "__algorithm/find_first_of.h" }
242      module find_if                  { private header "__algorithm/find_if.h" }
243      module find_if_not              { private header "__algorithm/find_if_not.h" }
244      module for_each                 { private header "__algorithm/for_each.h" }
245      module for_each_n               { private header "__algorithm/for_each_n.h" }
246      module generate                 { private header "__algorithm/generate.h" }
247      module generate_n               { private header "__algorithm/generate_n.h" }
248      module half_positive            { private header "__algorithm/half_positive.h" }
249      module includes                 { private header "__algorithm/includes.h" }
250      module inplace_merge            { private header "__algorithm/inplace_merge.h" }
251      module is_heap                  { private header "__algorithm/is_heap.h" }
252      module is_heap_until            { private header "__algorithm/is_heap_until.h" }
253      module is_partitioned           { private header "__algorithm/is_partitioned.h" }
254      module is_permutation           { private header "__algorithm/is_permutation.h" }
255      module is_sorted                { private header "__algorithm/is_sorted.h" }
256      module is_sorted_until          { private header "__algorithm/is_sorted_until.h" }
257      module iter_swap                { private header "__algorithm/iter_swap.h" }
258      module lexicographical_compare  { private header "__algorithm/lexicographical_compare.h" }
259      module lower_bound              { private header "__algorithm/lower_bound.h" }
260      module make_heap                { private header "__algorithm/make_heap.h" }
261      module max                      { private header "__algorithm/max.h" }
262      module max_element              { private header "__algorithm/max_element.h" }
263      module merge                    { private header "__algorithm/merge.h" }
264      module min                      { private header "__algorithm/min.h" }
265      module min_element              { private header "__algorithm/min_element.h" }
266      module minmax                   { private header "__algorithm/minmax.h" }
267      module minmax_element           { private header "__algorithm/minmax_element.h" }
268      module mismatch                 { private header "__algorithm/mismatch.h" }
269      module move                     { private header "__algorithm/move.h" }
270      module move_backward            { private header "__algorithm/move_backward.h" }
271      module next_permutation         { private header "__algorithm/next_permutation.h" }
272      module none_of                  { private header "__algorithm/none_of.h" }
273      module nth_element              { private header "__algorithm/nth_element.h" }
274      module partial_sort             { private header "__algorithm/partial_sort.h" }
275      module partial_sort_copy        { private header "__algorithm/partial_sort_copy.h" }
276      module partition                { private header "__algorithm/partition.h" }
277      module partition_copy           { private header "__algorithm/partition_copy.h" }
278      module partition_point          { private header "__algorithm/partition_point.h" }
279      module pop_heap                 { private header "__algorithm/pop_heap.h" }
280      module prev_permutation         { private header "__algorithm/prev_permutation.h" }
281      module push_heap                { private header "__algorithm/push_heap.h" }
282      module remove                   { private header "__algorithm/remove.h" }
283      module remove_copy              { private header "__algorithm/remove_copy.h" }
284      module remove_copy_if           { private header "__algorithm/remove_copy_if.h" }
285      module remove_if                { private header "__algorithm/remove_if.h" }
286      module replace                  { private header "__algorithm/replace.h" }
287      module replace_copy             { private header "__algorithm/replace_copy.h" }
288      module replace_copy_if          { private header "__algorithm/replace_copy_if.h" }
289      module replace_if               { private header "__algorithm/replace_if.h" }
290      module reverse                  { private header "__algorithm/reverse.h" }
291      module reverse_copy             { private header "__algorithm/reverse_copy.h" }
292      module rotate                   { private header "__algorithm/rotate.h" }
293      module rotate_copy              { private header "__algorithm/rotate_copy.h" }
294      module sample                   { private header "__algorithm/sample.h" }
295      module search                   { private header "__algorithm/search.h" }
296      module search_n                 { private header "__algorithm/search_n.h" }
297      module set_difference           { private header "__algorithm/set_difference.h" }
298      module set_intersection         { private header "__algorithm/set_intersection.h" }
299      module set_symmetric_difference { private header "__algorithm/set_symmetric_difference.h" }
300      module set_union                { private header "__algorithm/set_union.h" }
301      module shift_left               { private header "__algorithm/shift_left.h" }
302      module shift_right              { private header "__algorithm/shift_right.h" }
303      module shuffle                  { private header "__algorithm/shuffle.h" }
304      module sift_down                { private header "__algorithm/sift_down.h" }
305      module sort                     { private header "__algorithm/sort.h" }
306      module sort_heap                { private header "__algorithm/sort_heap.h" }
307      module stable_partition         { private header "__algorithm/stable_partition.h" }
308      module stable_sort              { private header "__algorithm/stable_sort.h" }
309      module swap_ranges              { private header "__algorithm/swap_ranges.h" }
310      module transform                { private header "__algorithm/transform.h" }
311      module unique                   { private header "__algorithm/unique.h" }
312      module unique_copy              { private header "__algorithm/unique_copy.h" }
313      module unwrap_iter              { private header "__algorithm/unwrap_iter.h" }
314      module upper_bound              { private header "__algorithm/upper_bound.h" }
315    }
316  }
317  module any {
318    header "any"
319    export *
320  }
321  module array {
322    header "array"
323    export initializer_list
324    export *
325  }
326  module atomic {
327    header "atomic"
328    export *
329  }
330  module barrier {
331    requires cplusplus14
332    header "barrier"
333    export *
334  }
335  module bit {
336    header "bit"
337    export *
338  }
339  module bitset {
340    header "bitset"
341    export string
342    export iosfwd
343    export *
344  }
345  // No submodule for cassert. It fundamentally needs repeated, textual inclusion.
346  module charconv {
347    header "charconv"
348    export *
349  }
350  module chrono {
351    header "chrono"
352    export *
353  }
354  module codecvt {
355    header "codecvt"
356    export *
357  }
358  module compare {
359    header "compare"
360    export *
361  }
362  module complex {
363    header "complex"
364    export *
365  }
366  module concepts {
367    header "concepts"
368    export *
369  }
370  module condition_variable {
371    header "condition_variable"
372    export *
373  }
374  module deque {
375    header "deque"
376    export initializer_list
377    export *
378  }
379  module exception {
380    header "exception"
381    export *
382  }
383  module execution {
384    header "execution"
385    export *
386  }
387  module filesystem {
388    header "filesystem"
389    export *
390  }
391  module format {
392    header "format"
393    export *
394
395    module __format {
396      module format_error         { private header "__format/format_error.h"         }
397      module format_parse_context { private header "__format/format_parse_context.h" }
398    }
399  }
400  module forward_list {
401    header "forward_list"
402    export initializer_list
403    export *
404  }
405  module fstream {
406    header "fstream"
407    export *
408  }
409  module functional {
410    header "functional"
411    export *
412
413    module __functional {
414      module binary_function            { private header "__functional/binary_function.h" }
415      module binary_negate              { private header "__functional/binary_negate.h" }
416      module bind                       { private header "__functional/bind.h" }
417      module bind_front                 { private header "__functional/bind_front.h" }
418      module binder1st                  { private header "__functional/binder1st.h" }
419      module binder2nd                  { private header "__functional/binder2nd.h" }
420      module default_searcher           { private header "__functional/default_searcher.h" }
421      module function                   { private header "__functional/function.h" }
422      module hash                       { private header "__functional/hash.h" }
423      module identity                   { private header "__functional/identity.h" }
424      module is_transparent             { private header "__functional/is_transparent.h" }
425      module invoke                     { private header "__functional/invoke.h" }
426      module mem_fn                     { private header "__functional/mem_fn.h"  }
427      module mem_fun_ref                { private header "__functional/mem_fun_ref.h"  }
428      module not_fn                     { private header "__functional/not_fn.h" }
429      module operations                 { private header "__functional/operations.h" }
430      module perfect_forward            { private header "__functional/perfect_forward.h" }
431      module pointer_to_binary_function { private header "__functional/pointer_to_binary_function.h" }
432      module pointer_to_unary_function  { private header "__functional/pointer_to_unary_function.h" }
433      module ranges_operations          { private header "__functional/ranges_operations.h" }
434      module reference_wrapper          { private header "__functional/reference_wrapper.h" }
435      module unary_function             { private header "__functional/unary_function.h" }
436      module unary_negate               { private header "__functional/unary_negate.h" }
437      module unwrap_ref                 { private header "__functional/unwrap_ref.h" }
438      module weak_result_type           { private header "__functional/weak_result_type.h" }
439    }
440  }
441  module future {
442    header "future"
443    export *
444  }
445  module initializer_list {
446    header "initializer_list"
447    export *
448  }
449  module iomanip {
450    header "iomanip"
451    export *
452  }
453  module ios {
454    header "ios"
455    export iosfwd
456    export *
457  }
458  module iosfwd {
459    header "iosfwd"
460    export *
461  }
462  module iostream {
463    header "iostream"
464    export ios
465    export streambuf
466    export istream
467    export ostream
468    export *
469  }
470  module istream {
471    header "istream"
472    // FIXME: should re-export ios, streambuf?
473    export *
474  }
475  module iterator {
476    header "iterator"
477    export *
478
479    module __iterator {
480      module access                { private header "__iterator/access.h" }
481      module advance               {
482        private header "__iterator/advance.h"
483        export __function_like
484      }
485      module back_insert_iterator  { private header "__iterator/back_insert_iterator.h" }
486      module common_iterator       { private header "__iterator/common_iterator.h" }
487      module concepts              { private header "__iterator/concepts.h" }
488      module counted_iterator      { private header "__iterator/counted_iterator.h" }
489      module data                  { private header "__iterator/data.h" }
490      module default_sentinel      { private header "__iterator/default_sentinel.h" }
491      module distance              { private header "__iterator/distance.h" }
492      module empty                 { private header "__iterator/empty.h" }
493      module erase_if_container    { private header "__iterator/erase_if_container.h" }
494      module front_insert_iterator { private header "__iterator/front_insert_iterator.h" }
495      module incrementable_traits  { private header "__iterator/incrementable_traits.h" }
496      module insert_iterator       { private header "__iterator/insert_iterator.h" }
497      module istream_iterator      { private header "__iterator/istream_iterator.h" }
498      module istreambuf_iterator   { private header "__iterator/istreambuf_iterator.h" }
499      module iter_move             { private header "__iterator/iter_move.h" }
500      module iter_swap             { private header "__iterator/iter_swap.h" }
501      module iterator              { private header "__iterator/iterator.h" }
502      module iterator_traits       { private header "__iterator/iterator_traits.h" }
503      module move_iterator         { private header "__iterator/move_iterator.h" }
504      module next                  {
505        private header "__iterator/next.h"
506        export __function_like
507      }
508      module ostream_iterator      { private header "__iterator/ostream_iterator.h" }
509      module ostreambuf_iterator   { private header "__iterator/ostreambuf_iterator.h" }
510      module prev                  {
511        private header "__iterator/prev.h"
512        export __function_like
513      }
514      module projected             { private header "__iterator/projected.h" }
515      module readable_traits       { private header "__iterator/readable_traits.h" }
516      module reverse_access        { private header "__iterator/reverse_access.h" }
517      module reverse_iterator      { private header "__iterator/reverse_iterator.h" }
518      module size                  { private header "__iterator/size.h" }
519      module wrap_iter             { private header "__iterator/wrap_iter.h" }
520    }
521  }
522  module latch {
523    requires cplusplus14
524    header "latch"
525    export *
526  }
527  module limits {
528    header "limits"
529    export *
530  }
531  module list {
532    header "list"
533    export initializer_list
534    export *
535  }
536  module locale {
537    header "locale"
538    export *
539  }
540  module map {
541    header "map"
542    export initializer_list
543    export *
544  }
545  module memory {
546    header "memory"
547    export *
548
549    module __memory {
550      module addressof                { private header "__memory/addressof.h"                }
551      module allocation_guard         { private header "__memory/allocation_guard.h"         }
552      module allocator                { private header "__memory/allocator.h"                }
553      module allocator_arg_t          { private header "__memory/allocator_arg_t.h"          }
554      module allocator_traits         { private header "__memory/allocator_traits.h"         }
555      module auto_ptr                 { private header "__memory/auto_ptr.h"                 }
556      module compressed_pair          { private header "__memory/compressed_pair.h"          }
557      module construct_at             { private header "__memory/construct_at.h"             }
558      module pointer_safety           { private header "__memory/pointer_safety.h"           }
559      module pointer_traits           { private header "__memory/pointer_traits.h"           }
560      module raw_storage_iterator     { private header "__memory/raw_storage_iterator.h"     }
561      module shared_ptr               { private header "__memory/shared_ptr.h"               }
562      module temporary_buffer         { private header "__memory/temporary_buffer.h"         }
563      module uninitialized_algorithms { private header "__memory/uninitialized_algorithms.h" }
564      module unique_ptr               { private header "__memory/unique_ptr.h"               }
565      module uses_allocator           { private header "__memory/uses_allocator.h"           }
566    }
567  }
568  module mutex {
569    header "mutex"
570    export *
571  }
572  module new {
573    header "new"
574    export *
575  }
576  module numbers {
577    header "numbers"
578    export *
579  }
580  module numeric {
581    header "numeric"
582    export *
583  }
584  module optional {
585    header "optional"
586    export *
587  }
588  module ostream {
589    header "ostream"
590    // FIXME: should re-export ios, streambuf?
591    export *
592  }
593  module queue {
594    header "queue"
595    export initializer_list
596    export *
597  }
598  module random {
599    header "random"
600    export initializer_list
601    export *
602
603    module __random {
604      module uniform_int_distribution { private header "__random/uniform_int_distribution.h" }
605    }
606  }
607  module ranges {
608    header "ranges"
609    export compare
610    export initializer_list
611    export iterator
612    export *
613
614    module __ranges {
615      module access                 { private header "__ranges/access.h"                }
616      module all                    { private header "__ranges/all.h"                   }
617      module common_view            { private header "__ranges/common_view.h"           }
618      module concepts               { private header "__ranges/concepts.h"              }
619      module copyable_box           { private header "__ranges/copyable_box.h"          }
620      module dangling               { private header "__ranges/dangling.h"              }
621      module data                   { private header "__ranges/data.h"                  }
622      module drop_view              { private header "__ranges/drop_view.h"             }
623      module empty                  { private header "__ranges/empty.h"                 }
624      module empty_view             { private header "__ranges/empty_view.h"            }
625      module enable_borrowed_range  { private header "__ranges/enable_borrowed_range.h" }
626      module enable_view            { private header "__ranges/enable_view.h"           }
627      module non_propagating_cache  { private header "__ranges/non_propagating_cache.h" }
628      module ref_view               { private header "__ranges/ref_view.h"              }
629      module size                   { private header "__ranges/size.h"                  }
630      module subrange               { private header "__ranges/subrange.h"              }
631      module transform_view         { private header "__ranges/transform_view.h"        }
632      module view_interface         { private header "__ranges/view_interface.h"        }
633    }
634  }
635  module ratio {
636    header "ratio"
637    export *
638  }
639  module regex {
640    header "regex"
641    export initializer_list
642    export *
643  }
644  module scoped_allocator {
645    header "scoped_allocator"
646    export *
647  }
648  module semaphore {
649    requires cplusplus14
650    header "semaphore"
651    export *
652  }
653  module set {
654    header "set"
655    export initializer_list
656    export *
657  }
658  module shared_mutex {
659    header "shared_mutex"
660    export version
661  }
662  module span {
663    header "span"
664    export ranges.__ranges.enable_borrowed_range
665    export version
666  }
667  module sstream {
668    header "sstream"
669    // FIXME: should re-export istream, ostream, ios, streambuf, string?
670    export *
671  }
672  module stack {
673    header "stack"
674    export initializer_list
675    export *
676  }
677  module stdexcept {
678    header "stdexcept"
679    export *
680  }
681  module streambuf {
682    header "streambuf"
683    export *
684  }
685  module string {
686    header "string"
687    export initializer_list
688    export string_view
689    export __string
690    export *
691  }
692  module string_view {
693    header "string_view"
694    export initializer_list
695    export __string
696    export *
697  }
698  module strstream {
699    header "strstream"
700    export *
701  }
702  module system_error {
703    header "system_error"
704    export *
705  }
706  module thread {
707    header "thread"
708    export *
709  }
710  module tuple {
711    header "tuple"
712    export *
713  }
714  module type_traits {
715    header "type_traits"
716    export functional.__functional.unwrap_ref
717    export *
718  }
719  module typeindex {
720    header "typeindex"
721    export *
722  }
723  module typeinfo {
724    header "typeinfo"
725    export *
726  }
727  module unordered_map {
728    header "unordered_map"
729    export initializer_list
730    export *
731  }
732  module unordered_set {
733    header "unordered_set"
734    export initializer_list
735    export *
736  }
737  module utility {
738    header "utility"
739    export initializer_list
740    export *
741
742    module __utility {
743      module __decay_copy        { private header "__utility/__decay_copy.h"        }
744      module as_const            { private header "__utility/as_const.h"            }
745      module cmp                 { private header "__utility/cmp.h"                 }
746      module declval             { private header "__utility/declval.h"             }
747      module exchange            { private header "__utility/exchange.h"            }
748      module forward             { private header "__utility/forward.h"             }
749      module in_place            { private header "__utility/in_place.h"            }
750      module integer_sequence    { private header "__utility/integer_sequence.h"    }
751      module move                { private header "__utility/move.h"                }
752      module pair                { private header "__utility/pair.h"                }
753      module piecewise_construct { private header "__utility/piecewise_construct.h" }
754      module rel_ops             { private header "__utility/rel_ops.h"             }
755      module swap                { private header "__utility/swap.h"                }
756      module to_underlying       { private header "__utility/to_underlying.h"       }
757    }
758  }
759  module valarray {
760    header "valarray"
761    export initializer_list
762    export *
763  }
764  module variant {
765    header "variant"
766    export *
767
768    module __variant {
769      module monostate { private header "__variant/monostate.h" }
770    }
771  }
772  module vector {
773    header "vector"
774    export initializer_list
775    export *
776  }
777  module version {
778    header "version"
779    export *
780  }
781
782  // __config not modularised due to a bug in Clang
783  // FIXME: These should be private.
784  module __availability      { private header "__availability"      export * }
785  module __bit_reference     { private header "__bit_reference"     export * }
786  module __bits              { private header "__bits"              export * }
787  module __debug             { header "__debug"             export * }
788  module __errc              { private header "__errc"              export * }
789  module __function_like     { private header "__function_like.h"   export * }
790  module __hash_table        { header "__hash_table"        export * }
791  module __locale            { private header "__locale"            export * }
792  module __mutex_base        { private header "__mutex_base"        export * }
793  module __node_handle       { private header "__node_handle"       export * }
794  module __nullptr           { header "__nullptr"           export * }
795  module __split_buffer      { private header "__split_buffer"      export * }
796  module __std_stream        { private header "__std_stream"        export * }
797  module __string            { private header "__string"            export * }
798  module __threading_support { header "__threading_support" export * }
799  module __tree              { header "__tree"              export * }
800  module __tuple             { private header "__tuple"             export * }
801  module __undef_macros      { header "__undef_macros"      export * }
802
803  module experimental {
804    requires cplusplus11
805
806    module algorithm {
807      header "experimental/algorithm"
808      export *
809    }
810     module coroutine {
811      requires coroutines
812      header "experimental/coroutine"
813      export *
814    }
815    module deque {
816      header "experimental/deque"
817      export *
818    }
819    module filesystem {
820      header "experimental/filesystem"
821      export *
822    }
823    module forward_list {
824      header "experimental/forward_list"
825      export *
826    }
827    module functional {
828      header "experimental/functional"
829      export *
830    }
831    module iterator {
832      header "experimental/iterator"
833      export *
834    }
835    module list {
836      header "experimental/list"
837      export *
838    }
839    module map {
840      header "experimental/map"
841      export *
842    }
843    module memory_resource {
844      header "experimental/memory_resource"
845      export *
846    }
847    module propagate_const {
848      header "experimental/propagate_const"
849      export *
850    }
851    module regex {
852      header "experimental/regex"
853      export *
854    }
855    module simd {
856      header "experimental/simd"
857      export *
858    }
859    module set {
860      header "experimental/set"
861      export *
862    }
863    module span {
864      header "span"
865      export *
866    }
867    module string {
868      header "experimental/string"
869      export *
870    }
871    module type_traits {
872      header "experimental/type_traits"
873      export *
874    }
875    module unordered_map {
876      header "experimental/unordered_map"
877      export *
878    }
879    module unordered_set {
880      header "experimental/unordered_set"
881      export *
882    }
883    module utility {
884      header "experimental/utility"
885      export *
886    }
887    module vector {
888      header "experimental/vector"
889      export *
890    }
891    // FIXME these should be private
892    module __memory {
893      header "experimental/__memory"
894      export *
895    }
896  } // end experimental
897}
898