xref: /freebsd-src/contrib/llvm-project/libcxx/include/module.modulemap (revision 0eae32dcef82f6f06de6419a0d623d7def0cc8f6)
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 __bit {
340      module bit_cast { private header "__bit/bit_cast.h" }
341      module byteswap { private header "__bit/byteswap.h" }
342    }
343  }
344  module bitset {
345    header "bitset"
346    export string
347    export iosfwd
348    export *
349  }
350  // No submodule for cassert. It fundamentally needs repeated, textual inclusion.
351  module charconv {
352    header "charconv"
353    export *
354
355    module __charconv {
356      module chars_format      { private header "__charconv/chars_format.h" }
357      module from_chars_result { private header "__charconv/from_chars_result.h" }
358      module to_chars_result   { private header "__charconv/to_chars_result.h" }
359    }
360
361  }
362  module chrono {
363    header "chrono"
364    export *
365  }
366  module codecvt {
367    header "codecvt"
368    export *
369  }
370  module compare {
371    header "compare"
372    export *
373
374    module __compare {
375      module common_comparison_category { private header "__compare/common_comparison_category.h" }
376      module compare_three_way          { private header "__compare/compare_three_way.h" }
377      module compare_three_way_result   { private header "__compare/compare_three_way_result.h" }
378      module is_eq                      { private header "__compare/is_eq.h" }
379      module ordering                   { private header "__compare/ordering.h" }
380      module partial_order              { private header "__compare/partial_order.h" }
381      module strong_order               { private header "__compare/strong_order.h" }
382      module synth_three_way            { private header "__compare/synth_three_way.h" }
383      module three_way_comparable       { private header "__compare/three_way_comparable.h" }
384      module weak_order                 { private header "__compare/weak_order.h" }
385    }
386  }
387  module complex {
388    header "complex"
389    export *
390  }
391  module concepts {
392    header "concepts"
393    export *
394
395    module __concepts {
396      module arithmetic                 { private header "__concepts/arithmetic.h" }
397      module assignable                 { private header "__concepts/assignable.h" }
398      module boolean_testable           { private header "__concepts/boolean_testable.h" }
399      module class_or_enum              { private header "__concepts/class_or_enum.h" }
400      module common_reference_with      { private header "__concepts/common_reference_with.h" }
401      module common_with                { private header "__concepts/common_with.h" }
402      module constructible              { private header "__concepts/constructible.h" }
403      module convertible_to             { private header "__concepts/convertible_to.h" }
404      module copyable                   { private header "__concepts/copyable.h" }
405      module derived_from               { private header "__concepts/derived_from.h" }
406      module destructible               { private header "__concepts/destructible.h" }
407      module different_from             { private header "__concepts/different_from.h" }
408      module equality_comparable        { private header "__concepts/equality_comparable.h" }
409      module invocable                  { private header "__concepts/invocable.h" }
410      module movable                    { private header "__concepts/movable.h" }
411      module predicate                  { private header "__concepts/predicate.h" }
412      module regular                    { private header "__concepts/regular.h" }
413      module relation                   { private header "__concepts/relation.h" }
414      module same_as                    { private header "__concepts/same_as.h" }
415      module semiregular                { private header "__concepts/semiregular.h" }
416      module swappable                  { private header "__concepts/swappable.h" }
417      module totally_ordered            { private header "__concepts/totally_ordered.h" }
418    }
419  }
420  module condition_variable {
421    header "condition_variable"
422    export *
423  }
424  module coroutine {
425    requires coroutines
426    header "coroutine"
427    export compare
428    export *
429
430    module __coroutine {
431      module coroutine_handle           { private header "__coroutine/coroutine_handle.h" }
432      module coroutine_traits           { private header "__coroutine/coroutine_traits.h" }
433      module trivial_awaitables         { private header "__coroutine/trivial_awaitables.h" }
434      module noop_coroutine_handle      { private header "__coroutine/noop_coroutine_handle.h" }
435    }
436  }
437  module deque {
438    header "deque"
439    export initializer_list
440    export *
441  }
442  module exception {
443    header "exception"
444    export *
445  }
446  module execution {
447    header "execution"
448    export *
449  }
450  module filesystem {
451    header "filesystem"
452    export *
453
454    module __filesystem {
455      module copy_options                 { private header "__filesystem/copy_options.h" }
456      module directory_entry              { private header "__filesystem/directory_entry.h" }
457      module directory_iterator           { private header "__filesystem/directory_iterator.h" }
458      module directory_options            { private header "__filesystem/directory_options.h" }
459      module file_status                  { private header "__filesystem/file_status.h" }
460      module file_time_type               { private header "__filesystem/file_time_type.h" }
461      module file_type                    { private header "__filesystem/file_type.h" }
462      module filesystem_error             { private header "__filesystem/filesystem_error.h" }
463      module operations                   { private header "__filesystem/operations.h" }
464      module path_iterator                { private header "__filesystem/path_iterator.h" }
465      module path                         { private header "__filesystem/path.h" }
466      module perm_options                 { private header "__filesystem/perm_options.h" }
467      module perms                        { private header "__filesystem/perms.h" }
468      module recursive_directory_iterator { private header "__filesystem/recursive_directory_iterator.h" }
469      module space_info                   { private header "__filesystem/space_info.h" }
470      module u8path                       { private header "__filesystem/u8path.h" }
471    }
472  }
473  module format {
474    header "format"
475    export *
476
477    module __format {
478      module format_arg             { private header "__format/format_arg.h" }
479      module format_args            { private header "__format/format_args.h" }
480      module format_context {
481        private header "__format/format_context.h"
482        export optional
483        export locale
484      }
485      module format_error           { private header "__format/format_error.h" }
486      module format_fwd             { private header "__format/format_fwd.h" }
487      module format_parse_context   { private header "__format/format_parse_context.h" }
488      module format_string          { private header "__format/format_string.h" }
489      module format_to_n_result     { private header "__format/format_to_n_result.h" }
490      module formatter              { private header "__format/formatter.h" }
491      module formatter_bool         { private header "__format/formatter_bool.h" }
492      module formatter_char         { private header "__format/formatter_char.h" }
493      module formatter_integer      { private header "__format/formatter_integer.h" }
494      module formatter_integral     { private header "__format/formatter_integral.h" }
495      module formatter_string       { private header "__format/formatter_string.h" }
496      module parser_std_format_spec { private header "__format/parser_std_format_spec.h" }
497    }
498  }
499  module forward_list {
500    header "forward_list"
501    export initializer_list
502    export *
503  }
504  module fstream {
505    header "fstream"
506    export *
507  }
508  module functional {
509    header "functional"
510    export *
511
512    module __functional {
513      module binary_function            { private header "__functional/binary_function.h" }
514      module binary_negate              { private header "__functional/binary_negate.h" }
515      module bind                       { private header "__functional/bind.h" }
516      module bind_back                  { private header "__functional/bind_back.h" }
517      module bind_front                 { private header "__functional/bind_front.h" }
518      module binder1st                  { private header "__functional/binder1st.h" }
519      module binder2nd                  { private header "__functional/binder2nd.h" }
520      module compose                    { private header "__functional/compose.h" }
521      module default_searcher           { private header "__functional/default_searcher.h" }
522      module function                   { private header "__functional/function.h" }
523      module hash                       { private header "__functional/hash.h" }
524      module identity                   { private header "__functional/identity.h" }
525      module invoke                     { private header "__functional/invoke.h" }
526      module is_transparent             { private header "__functional/is_transparent.h" }
527      module mem_fn                     { private header "__functional/mem_fn.h" }
528      module mem_fun_ref                { private header "__functional/mem_fun_ref.h" }
529      module not_fn                     { private header "__functional/not_fn.h" }
530      module operations                 { private header "__functional/operations.h" }
531      module perfect_forward            { private header "__functional/perfect_forward.h" }
532      module pointer_to_binary_function { private header "__functional/pointer_to_binary_function.h" }
533      module pointer_to_unary_function  { private header "__functional/pointer_to_unary_function.h" }
534      module ranges_operations          { private header "__functional/ranges_operations.h" }
535      module reference_wrapper          { private header "__functional/reference_wrapper.h" }
536      module unary_function             { private header "__functional/unary_function.h" }
537      module unary_negate               { private header "__functional/unary_negate.h" }
538      module unwrap_ref                 { private header "__functional/unwrap_ref.h" }
539      module weak_result_type           { private header "__functional/weak_result_type.h" }
540    }
541  }
542  module future {
543    header "future"
544    export *
545  }
546  module initializer_list {
547    header "initializer_list"
548    export *
549  }
550  module iomanip {
551    header "iomanip"
552    export *
553  }
554  module ios {
555    header "ios"
556    export iosfwd
557    export *
558  }
559  module iosfwd {
560    header "iosfwd"
561    export *
562  }
563  module iostream {
564    header "iostream"
565    export ios
566    export streambuf
567    export istream
568    export ostream
569    export *
570  }
571  module istream {
572    header "istream"
573    // FIXME: should re-export ios, streambuf?
574    export *
575  }
576  module iterator {
577    header "iterator"
578    export *
579
580    module __iterator {
581      module access                { private header "__iterator/access.h" }
582      module advance               {
583        private header "__iterator/advance.h"
584        export __function_like
585      }
586      module back_insert_iterator  { private header "__iterator/back_insert_iterator.h" }
587      module common_iterator       { private header "__iterator/common_iterator.h" }
588      module concepts              { private header "__iterator/concepts.h" }
589      module counted_iterator      { private header "__iterator/counted_iterator.h" }
590      module data                  { private header "__iterator/data.h" }
591      module default_sentinel      { private header "__iterator/default_sentinel.h" }
592      module distance              { private header "__iterator/distance.h" }
593      module empty                 { private header "__iterator/empty.h" }
594      module erase_if_container    { private header "__iterator/erase_if_container.h" }
595      module front_insert_iterator { private header "__iterator/front_insert_iterator.h" }
596      module incrementable_traits  { private header "__iterator/incrementable_traits.h" }
597      module insert_iterator       { private header "__iterator/insert_iterator.h" }
598      module istream_iterator      { private header "__iterator/istream_iterator.h" }
599      module istreambuf_iterator   { private header "__iterator/istreambuf_iterator.h" }
600      module iter_move             { private header "__iterator/iter_move.h" }
601      module iter_swap             { private header "__iterator/iter_swap.h" }
602      module iterator              { private header "__iterator/iterator.h" }
603      module iterator_traits       { private header "__iterator/iterator_traits.h" }
604      module move_iterator         { private header "__iterator/move_iterator.h" }
605      module next                  {
606        private header "__iterator/next.h"
607        export __function_like
608      }
609      module ostream_iterator      { private header "__iterator/ostream_iterator.h" }
610      module ostreambuf_iterator   { private header "__iterator/ostreambuf_iterator.h" }
611      module prev                  {
612        private header "__iterator/prev.h"
613        export __function_like
614      }
615      module projected             { private header "__iterator/projected.h" }
616      module readable_traits       { private header "__iterator/readable_traits.h" }
617      module reverse_access        { private header "__iterator/reverse_access.h" }
618      module reverse_iterator      { private header "__iterator/reverse_iterator.h" }
619      module size                  { private header "__iterator/size.h" }
620      module unreachable_sentinel  { private header "__iterator/unreachable_sentinel.h" }
621      module wrap_iter             { private header "__iterator/wrap_iter.h" }
622    }
623  }
624  module latch {
625    requires cplusplus14
626    header "latch"
627    export *
628  }
629  module limits {
630    header "limits"
631    export *
632  }
633  module list {
634    header "list"
635    export initializer_list
636    export *
637  }
638  module locale {
639    header "locale"
640    export *
641  }
642  module map {
643    header "map"
644    export initializer_list
645    export *
646  }
647  module memory {
648    header "memory"
649    export *
650
651    module __memory {
652      module addressof                       { private header "__memory/addressof.h" }
653      module allocation_guard                { private header "__memory/allocation_guard.h" }
654      module allocator                       { private header "__memory/allocator.h" }
655      module allocator_arg_t                 { private header "__memory/allocator_arg_t.h" }
656      module allocator_traits                { private header "__memory/allocator_traits.h" }
657      module auto_ptr                        { private header "__memory/auto_ptr.h" }
658      module compressed_pair                 { private header "__memory/compressed_pair.h" }
659      module concepts                        { private header "__memory/concepts.h" }
660      module construct_at                    { private header "__memory/construct_at.h" }
661      module pointer_traits                  { private header "__memory/pointer_traits.h" }
662      module ranges_uninitialized_algorithms {
663        private header "__memory/ranges_uninitialized_algorithms.h"
664        export __function_like
665      }
666      module raw_storage_iterator            { private header "__memory/raw_storage_iterator.h" }
667      module shared_ptr                      { private header "__memory/shared_ptr.h" }
668      module temporary_buffer                { private header "__memory/temporary_buffer.h" }
669      module uninitialized_algorithms        { private header "__memory/uninitialized_algorithms.h" }
670      module unique_ptr                      { private header "__memory/unique_ptr.h" }
671      module uses_allocator                  { private header "__memory/uses_allocator.h" }
672      module voidify                         { private header "__memory/voidify.h" }
673    }
674  }
675  module mutex {
676    header "mutex"
677    export *
678  }
679  module new {
680    header "new"
681    export *
682  }
683  module numbers {
684    header "numbers"
685    export *
686  }
687  module numeric {
688    header "numeric"
689    export *
690
691    module __numeric {
692      module accumulate               { private header "__numeric/accumulate.h" }
693      module adjacent_difference      { private header "__numeric/adjacent_difference.h" }
694      module exclusive_scan           { private header "__numeric/exclusive_scan.h" }
695      module gcd_lcm                  { private header "__numeric/gcd_lcm.h" }
696      module inclusive_scan           { private header "__numeric/inclusive_scan.h" }
697      module inner_product            { private header "__numeric/inner_product.h" }
698      module iota                     { private header "__numeric/iota.h" }
699      module midpoint                 { private header "__numeric/midpoint.h" }
700      module partial_sum              { private header "__numeric/partial_sum.h" }
701      module reduce                   { private header "__numeric/reduce.h" }
702      module transform_exclusive_scan { private header "__numeric/transform_exclusive_scan.h" }
703      module transform_inclusive_scan { private header "__numeric/transform_inclusive_scan.h" }
704      module transform_reduce         { private header "__numeric/transform_reduce.h" }
705    }
706  }
707  module optional {
708    header "optional"
709    export *
710  }
711  module ostream {
712    header "ostream"
713    // FIXME: should re-export ios, streambuf?
714    export *
715  }
716  module queue {
717    header "queue"
718    export initializer_list
719    export *
720  }
721  module random {
722    header "random"
723    export initializer_list
724    export *
725
726    module __random {
727      module bernoulli_distribution          { private header "__random/bernoulli_distribution.h" }
728      module binomial_distribution           { private header "__random/binomial_distribution.h" }
729      module cauchy_distribution             { private header "__random/cauchy_distribution.h" }
730      module chi_squared_distribution        { private header "__random/chi_squared_distribution.h" }
731      module clamp_to_integral               { private header "__random/clamp_to_integral.h" }
732      module default_random_engine           { private header "__random/default_random_engine.h" }
733      module discard_block_engine            { private header "__random/discard_block_engine.h" }
734      module discrete_distribution           { private header "__random/discrete_distribution.h" }
735      module exponential_distribution        { private header "__random/exponential_distribution.h" }
736      module extreme_value_distribution      { private header "__random/extreme_value_distribution.h" }
737      module fisher_f_distribution           { private header "__random/fisher_f_distribution.h" }
738      module gamma_distribution              { private header "__random/gamma_distribution.h" }
739      module generate_canonical              { private header "__random/generate_canonical.h" }
740      module geometric_distribution          { private header "__random/geometric_distribution.h" }
741      module independent_bits_engine         { private header "__random/independent_bits_engine.h" }
742      module is_seed_sequence                { private header "__random/is_seed_sequence.h" }
743      module knuth_b                         { private header "__random/knuth_b.h" }
744      module linear_congruential_engine      { private header "__random/linear_congruential_engine.h" }
745      module log2                            { private header "__random/log2.h" }
746      module lognormal_distribution          { private header "__random/lognormal_distribution.h" }
747      module mersenne_twister_engine         { private header "__random/mersenne_twister_engine.h" }
748      module negative_binomial_distribution  { private header "__random/negative_binomial_distribution.h" }
749      module normal_distribution             { private header "__random/normal_distribution.h" }
750      module piecewise_constant_distribution { private header "__random/piecewise_constant_distribution.h" }
751      module piecewise_linear_distribution   { private header "__random/piecewise_linear_distribution.h" }
752      module poisson_distribution            { private header "__random/poisson_distribution.h" }
753      module random_device                   { private header "__random/random_device.h" }
754      module ranlux                          { private header "__random/ranlux.h" }
755      module seed_seq                        { private header "__random/seed_seq.h" }
756      module shuffle_order_engine            { private header "__random/shuffle_order_engine.h" }
757      module student_t_distribution          { private header "__random/student_t_distribution.h" }
758      module subtract_with_carry_engine      { private header "__random/subtract_with_carry_engine.h" }
759      module uniform_int_distribution        { private header "__random/uniform_int_distribution.h" }
760      module uniform_random_bit_generator    { private header "__random/uniform_random_bit_generator.h" }
761      module uniform_real_distribution       { private header "__random/uniform_real_distribution.h" }
762      module weibull_distribution            { private header "__random/weibull_distribution.h" }
763    }
764  }
765  module ranges {
766    header "ranges"
767    export compare
768    export initializer_list
769    export iterator
770    export *
771
772    module __ranges {
773      module access                 { private header "__ranges/access.h" }
774      module all                    {
775        private header "__ranges/all.h"
776        export functional.__functional.compose
777        export functional.__functional.perfect_forward
778      }
779      module common_view            { private header "__ranges/common_view.h" }
780      module concepts               { private header "__ranges/concepts.h" }
781      module copyable_box           { private header "__ranges/copyable_box.h" }
782      module counted                {
783        private header "__ranges/counted.h"
784        export span
785      }
786      module dangling               { private header "__ranges/dangling.h" }
787      module data                   { private header "__ranges/data.h" }
788      module drop_view              { private header "__ranges/drop_view.h" }
789      module empty                  { private header "__ranges/empty.h" }
790      module empty_view             { private header "__ranges/empty_view.h" }
791      module enable_borrowed_range  { private header "__ranges/enable_borrowed_range.h" }
792      module enable_view            { private header "__ranges/enable_view.h" }
793      module iota_view              { private header "__ranges/iota_view.h" }
794      module join_view              { private header "__ranges/join_view.h" }
795      module non_propagating_cache  { private header "__ranges/non_propagating_cache.h" }
796      module range_adaptor          { private header "__ranges/range_adaptor.h" }
797      module ref_view               { private header "__ranges/ref_view.h" }
798      module reverse_view           { private header "__ranges/reverse_view.h" }
799      module size                   { private header "__ranges/size.h" }
800      module single_view            { private header "__ranges/single_view.h" }
801      module subrange               { private header "__ranges/subrange.h" }
802      module take_view              { private header "__ranges/take_view.h" }
803      module transform_view         {
804        private header "__ranges/transform_view.h"
805        export functional.__functional.bind_back
806        export functional.__functional.perfect_forward
807      }
808      module view_interface         { private header "__ranges/view_interface.h" }
809    }
810  }
811  module ratio {
812    header "ratio"
813    export *
814  }
815  module regex {
816    header "regex"
817    export initializer_list
818    export *
819  }
820  module scoped_allocator {
821    header "scoped_allocator"
822    export *
823  }
824  module semaphore {
825    requires cplusplus14
826    header "semaphore"
827    export *
828  }
829  module set {
830    header "set"
831    export initializer_list
832    export *
833  }
834  module shared_mutex {
835    header "shared_mutex"
836    export version
837  }
838  module span {
839    header "span"
840    export ranges.__ranges.enable_borrowed_range
841    export version
842  }
843  module sstream {
844    header "sstream"
845    // FIXME: should re-export istream, ostream, ios, streambuf, string?
846    export *
847  }
848  module stack {
849    header "stack"
850    export initializer_list
851    export *
852  }
853  module stdexcept {
854    header "stdexcept"
855    export *
856  }
857  module streambuf {
858    header "streambuf"
859    export *
860  }
861  module string {
862    header "string"
863    export initializer_list
864    export string_view
865    export __string
866    export *
867  }
868  module string_view {
869    header "string_view"
870    export initializer_list
871    export __string
872    export *
873  }
874  module strstream {
875    header "strstream"
876    export *
877  }
878  module system_error {
879    header "system_error"
880    export *
881  }
882  module thread {
883    header "thread"
884    export *
885
886    module __thread {
887      module poll_with_backoff { private header "__thread/poll_with_backoff.h" }
888    }
889  }
890  module tuple {
891    header "tuple"
892    export *
893  }
894  module type_traits {
895    header "type_traits"
896    export functional.__functional.unwrap_ref
897    export *
898  }
899  module typeindex {
900    header "typeindex"
901    export *
902  }
903  module typeinfo {
904    header "typeinfo"
905    export *
906  }
907  module unordered_map {
908    header "unordered_map"
909    export initializer_list
910    export *
911  }
912  module unordered_set {
913    header "unordered_set"
914    export initializer_list
915    export *
916  }
917  module utility {
918    header "utility"
919    export initializer_list
920    export *
921
922    module __utility {
923      module as_const            { private header "__utility/as_const.h" }
924      module auto_cast           { private header "__utility/auto_cast.h" }
925      module cmp                 { private header "__utility/cmp.h" }
926      module declval             { private header "__utility/declval.h" }
927      module exchange            { private header "__utility/exchange.h" }
928      module forward             { private header "__utility/forward.h" }
929      module in_place            { private header "__utility/in_place.h" }
930      module integer_sequence    { private header "__utility/integer_sequence.h" }
931      module move                { private header "__utility/move.h" }
932      module pair                { private header "__utility/pair.h" }
933      module piecewise_construct { private header "__utility/piecewise_construct.h" }
934      module priority_tag        { private header "__utility/priority_tag.h" }
935      module rel_ops             { private header "__utility/rel_ops.h" }
936      module swap                { private header "__utility/swap.h" }
937      module to_underlying       { private header "__utility/to_underlying.h" }
938      module transaction         { private header "__utility/transaction.h" }
939    }
940  }
941  module valarray {
942    header "valarray"
943    export initializer_list
944    export *
945  }
946  module variant {
947    header "variant"
948    export *
949
950    module __variant {
951      module monostate { private header "__variant/monostate.h" }
952    }
953  }
954  module vector {
955    header "vector"
956    export initializer_list
957    export *
958  }
959  module version {
960    header "version"
961    export *
962  }
963
964  // __config not modularised due to a bug in Clang
965  // FIXME: These should be private.
966  module __availability      { private header "__availability"      export * }
967  module __bit_reference     { private header "__bit_reference"     export * }
968  module __bits              { private header "__bits"              export * }
969  module __debug             {         header "__debug"             export * }
970  module __errc              { private header "__errc"              export * }
971  module __function_like     { private header "__function_like.h"   export * }
972  module __hash_table        {         header "__hash_table"        export * }
973  module __locale            { private header "__locale"            export * }
974  module __mbstate           { private header "__mbstate_t.h"       export * }
975  module __mutex_base        { private header "__mutex_base"        export * }
976  module __node_handle       { private header "__node_handle"       export * }
977  module __nullptr           {         header "__nullptr"           export * }
978  module __split_buffer      { private header "__split_buffer"      export * }
979  module __std_stream        { private header "__std_stream"        export * }
980  module __string            { private header "__string"            export * }
981  module __threading_support {         header "__threading_support" export * }
982  module __tree              {         header "__tree"              export * }
983  module __tuple             { private header "__tuple"             export * }
984  module __undef_macros      {         header "__undef_macros"      export * }
985
986  module experimental {
987    requires cplusplus11
988
989    module algorithm {
990      header "experimental/algorithm"
991      export *
992    }
993     module coroutine {
994      requires coroutines
995      header "experimental/coroutine"
996      export *
997    }
998    module deque {
999      header "experimental/deque"
1000      export *
1001    }
1002    module filesystem {
1003      header "experimental/filesystem"
1004      export *
1005    }
1006    module forward_list {
1007      header "experimental/forward_list"
1008      export *
1009    }
1010    module functional {
1011      header "experimental/functional"
1012      export *
1013    }
1014    module iterator {
1015      header "experimental/iterator"
1016      export *
1017    }
1018    module list {
1019      header "experimental/list"
1020      export *
1021    }
1022    module map {
1023      header "experimental/map"
1024      export *
1025    }
1026    module memory_resource {
1027      header "experimental/memory_resource"
1028      export *
1029    }
1030    module propagate_const {
1031      header "experimental/propagate_const"
1032      export *
1033    }
1034    module regex {
1035      header "experimental/regex"
1036      export *
1037    }
1038    module simd {
1039      header "experimental/simd"
1040      export *
1041    }
1042    module set {
1043      header "experimental/set"
1044      export *
1045    }
1046    module span {
1047      header "span"
1048      export *
1049    }
1050    module string {
1051      header "experimental/string"
1052      export *
1053    }
1054    module type_traits {
1055      header "experimental/type_traits"
1056      export *
1057    }
1058    module unordered_map {
1059      header "experimental/unordered_map"
1060      export *
1061    }
1062    module unordered_set {
1063      header "experimental/unordered_set"
1064      export *
1065    }
1066    module utility {
1067      header "experimental/utility"
1068      export *
1069    }
1070    module vector {
1071      header "experimental/vector"
1072      export *
1073    }
1074    // FIXME these should be private
1075    module __memory {
1076      header "experimental/__memory"
1077      export *
1078    }
1079  } // end experimental
1080}
1081