xref: /freebsd-src/contrib/llvm-project/libcxx/modules/std.cppm.in (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
15f757f3fSDimitry Andric// -*- C++ -*-
25f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
35f757f3fSDimitry Andric//
45f757f3fSDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
55f757f3fSDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
65f757f3fSDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
75f757f3fSDimitry Andric//
85f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
95f757f3fSDimitry Andric
105f757f3fSDimitry Andric// WARNING, this entire header is generated by
115f757f3fSDimitry Andric// utils/generate_libcxx_cppm_in.py
125f757f3fSDimitry Andric// DO NOT MODIFY!
135f757f3fSDimitry Andric
145f757f3fSDimitry Andricmodule;
155f757f3fSDimitry Andric
165f757f3fSDimitry Andric#include <__config>
175f757f3fSDimitry Andric
185f757f3fSDimitry Andric// The headers of Table 24: C++ library headers [tab:headers.cpp]
195f757f3fSDimitry Andric// and the headers of Table 25: C++ headers for C library facilities [tab:headers.cpp.c]
205f757f3fSDimitry Andric#include <algorithm>
215f757f3fSDimitry Andric#include <any>
225f757f3fSDimitry Andric#include <array>
235f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER)
245f757f3fSDimitry Andric#  include <atomic>
255f757f3fSDimitry Andric#endif
265f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_THREADS)
275f757f3fSDimitry Andric#  include <barrier>
285f757f3fSDimitry Andric#endif
295f757f3fSDimitry Andric#include <bit>
305f757f3fSDimitry Andric#include <bitset>
315f757f3fSDimitry Andric#include <cassert>
325f757f3fSDimitry Andric#include <cctype>
335f757f3fSDimitry Andric#include <cerrno>
345f757f3fSDimitry Andric#include <cfenv>
355f757f3fSDimitry Andric#include <cfloat>
365f757f3fSDimitry Andric#include <charconv>
375f757f3fSDimitry Andric#include <chrono>
385f757f3fSDimitry Andric#include <cinttypes>
395f757f3fSDimitry Andric#include <climits>
405f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
415f757f3fSDimitry Andric#  include <clocale>
425f757f3fSDimitry Andric#endif
435f757f3fSDimitry Andric#include <cmath>
445f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
455f757f3fSDimitry Andric#  include <codecvt>
465f757f3fSDimitry Andric#endif
475f757f3fSDimitry Andric#include <compare>
485f757f3fSDimitry Andric#include <complex>
495f757f3fSDimitry Andric#include <concepts>
505f757f3fSDimitry Andric#include <condition_variable>
515f757f3fSDimitry Andric#include <coroutine>
525f757f3fSDimitry Andric#include <csetjmp>
535f757f3fSDimitry Andric#include <csignal>
545f757f3fSDimitry Andric#include <cstdarg>
555f757f3fSDimitry Andric#include <cstddef>
565f757f3fSDimitry Andric#include <cstdint>
575f757f3fSDimitry Andric#include <cstdio>
585f757f3fSDimitry Andric#include <cstdlib>
595f757f3fSDimitry Andric#include <cstring>
605f757f3fSDimitry Andric#include <ctime>
615f757f3fSDimitry Andric#include <cuchar>
625f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
635f757f3fSDimitry Andric#  include <cwchar>
645f757f3fSDimitry Andric#endif
655f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_WIDE_CHARACTERS)
665f757f3fSDimitry Andric#  include <cwctype>
675f757f3fSDimitry Andric#endif
685f757f3fSDimitry Andric#include <deque>
695f757f3fSDimitry Andric#include <exception>
705f757f3fSDimitry Andric#include <execution>
715f757f3fSDimitry Andric#include <expected>
725f757f3fSDimitry Andric#include <filesystem>
735f757f3fSDimitry Andric#include <format>
745f757f3fSDimitry Andric#include <forward_list>
755f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
765f757f3fSDimitry Andric#  include <fstream>
775f757f3fSDimitry Andric#endif
785f757f3fSDimitry Andric#include <functional>
795f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_THREADS)
805f757f3fSDimitry Andric#  include <future>
815f757f3fSDimitry Andric#endif
825f757f3fSDimitry Andric#include <initializer_list>
835f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
845f757f3fSDimitry Andric#  include <iomanip>
855f757f3fSDimitry Andric#endif
865f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
875f757f3fSDimitry Andric#  include <ios>
885f757f3fSDimitry Andric#endif
895f757f3fSDimitry Andric#include <iosfwd>
905f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
915f757f3fSDimitry Andric#  include <iostream>
925f757f3fSDimitry Andric#endif
935f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
945f757f3fSDimitry Andric#  include <istream>
955f757f3fSDimitry Andric#endif
965f757f3fSDimitry Andric#include <iterator>
975f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_THREADS)
985f757f3fSDimitry Andric#  include <latch>
995f757f3fSDimitry Andric#endif
1005f757f3fSDimitry Andric#include <limits>
1015f757f3fSDimitry Andric#include <list>
1025f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
1035f757f3fSDimitry Andric#  include <locale>
1045f757f3fSDimitry Andric#endif
1055f757f3fSDimitry Andric#include <map>
1065f757f3fSDimitry Andric#include <mdspan>
1075f757f3fSDimitry Andric#include <memory>
1085f757f3fSDimitry Andric#include <memory_resource>
1095f757f3fSDimitry Andric#include <mutex>
1105f757f3fSDimitry Andric#include <new>
1115f757f3fSDimitry Andric#include <numbers>
1125f757f3fSDimitry Andric#include <numeric>
1135f757f3fSDimitry Andric#include <optional>
1145f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
1155f757f3fSDimitry Andric#  include <ostream>
1165f757f3fSDimitry Andric#endif
1175f757f3fSDimitry Andric#include <print>
1185f757f3fSDimitry Andric#include <queue>
1195f757f3fSDimitry Andric#include <random>
1205f757f3fSDimitry Andric#include <ranges>
1215f757f3fSDimitry Andric#include <ratio>
1225f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
1235f757f3fSDimitry Andric#  include <regex>
1245f757f3fSDimitry Andric#endif
1255f757f3fSDimitry Andric#include <scoped_allocator>
1265f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_THREADS)
1275f757f3fSDimitry Andric#  include <semaphore>
1285f757f3fSDimitry Andric#endif
1295f757f3fSDimitry Andric#include <set>
1305f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_THREADS)
1315f757f3fSDimitry Andric#  include <shared_mutex>
1325f757f3fSDimitry Andric#endif
1335f757f3fSDimitry Andric#include <source_location>
1345f757f3fSDimitry Andric#include <span>
1355f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
1365f757f3fSDimitry Andric#  include <sstream>
1375f757f3fSDimitry Andric#endif
1385f757f3fSDimitry Andric#include <stack>
1395f757f3fSDimitry Andric#include <stdexcept>
1405f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_THREADS)
1415f757f3fSDimitry Andric#  include <stop_token>
1425f757f3fSDimitry Andric#endif
1435f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
1445f757f3fSDimitry Andric#  include <streambuf>
1455f757f3fSDimitry Andric#endif
1465f757f3fSDimitry Andric#include <string>
1475f757f3fSDimitry Andric#include <string_view>
1485f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
1495f757f3fSDimitry Andric#  include <strstream>
1505f757f3fSDimitry Andric#endif
1515f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
1525f757f3fSDimitry Andric#  include <syncstream>
1535f757f3fSDimitry Andric#endif
1545f757f3fSDimitry Andric#include <system_error>
1555f757f3fSDimitry Andric#if !defined(_LIBCPP_HAS_NO_THREADS)
1565f757f3fSDimitry Andric#  include <thread>
1575f757f3fSDimitry Andric#endif
1585f757f3fSDimitry Andric#include <tuple>
1595f757f3fSDimitry Andric#include <type_traits>
1605f757f3fSDimitry Andric#include <typeindex>
1615f757f3fSDimitry Andric#include <typeinfo>
1625f757f3fSDimitry Andric#include <unordered_map>
1635f757f3fSDimitry Andric#include <unordered_set>
1645f757f3fSDimitry Andric#include <utility>
1655f757f3fSDimitry Andric#include <valarray>
1665f757f3fSDimitry Andric#include <variant>
1675f757f3fSDimitry Andric#include <vector>
1685f757f3fSDimitry Andric#include <version>
1695f757f3fSDimitry Andric
1705f757f3fSDimitry Andric// *** Headers not yet available ***
171*0fca6ea1SDimitry Andric//
172*0fca6ea1SDimitry Andric// This validation is mainly to catch when a new header is added but adding the
173*0fca6ea1SDimitry Andric// corresponding .inc file is forgotten. However, the check based on __has_include
174*0fca6ea1SDimitry Andric// alone doesn't work on Windows because the Windows SDK is on the include path,
175*0fca6ea1SDimitry Andric// and that means the MSVC STL headers can be found as well, tricking __has_include
176*0fca6ea1SDimitry Andric// into thinking that libc++ provides the header.
177*0fca6ea1SDimitry Andric//
178*0fca6ea1SDimitry Andric#ifndef _WIN32
1795f757f3fSDimitry Andric#  if __has_include(<debugging>)
1805f757f3fSDimitry Andric#    error "please update the header information for <debugging> in headers_not_available in utils/libcxx/header_information.py"
1815f757f3fSDimitry Andric#  endif // __has_include(<debugging>)
1825f757f3fSDimitry Andric#  if __has_include(<flat_map>)
1835f757f3fSDimitry Andric#    error "please update the header information for <flat_map> in headers_not_available in utils/libcxx/header_information.py"
1845f757f3fSDimitry Andric#  endif // __has_include(<flat_map>)
1855f757f3fSDimitry Andric#  if __has_include(<flat_set>)
1865f757f3fSDimitry Andric#    error "please update the header information for <flat_set> in headers_not_available in utils/libcxx/header_information.py"
1875f757f3fSDimitry Andric#  endif // __has_include(<flat_set>)
1885f757f3fSDimitry Andric#  if __has_include(<generator>)
1895f757f3fSDimitry Andric#    error "please update the header information for <generator> in headers_not_available in utils/libcxx/header_information.py"
1905f757f3fSDimitry Andric#  endif // __has_include(<generator>)
1915f757f3fSDimitry Andric#  if __has_include(<hazard_pointer>)
1925f757f3fSDimitry Andric#    error "please update the header information for <hazard_pointer> in headers_not_available in utils/libcxx/header_information.py"
1935f757f3fSDimitry Andric#  endif // __has_include(<hazard_pointer>)
194*0fca6ea1SDimitry Andric#  if __has_include(<inplace_vector>)
195*0fca6ea1SDimitry Andric#    error "please update the header information for <inplace_vector> in headers_not_available in utils/libcxx/header_information.py"
196*0fca6ea1SDimitry Andric#  endif // __has_include(<inplace_vector>)
1975f757f3fSDimitry Andric#  if __has_include(<linalg>)
1985f757f3fSDimitry Andric#    error "please update the header information for <linalg> in headers_not_available in utils/libcxx/header_information.py"
1995f757f3fSDimitry Andric#  endif // __has_include(<linalg>)
2005f757f3fSDimitry Andric#  if __has_include(<rcu>)
2015f757f3fSDimitry Andric#    error "please update the header information for <rcu> in headers_not_available in utils/libcxx/header_information.py"
2025f757f3fSDimitry Andric#  endif // __has_include(<rcu>)
2035f757f3fSDimitry Andric#  if __has_include(<spanstream>)
2045f757f3fSDimitry Andric#    error "please update the header information for <spanstream> in headers_not_available in utils/libcxx/header_information.py"
2055f757f3fSDimitry Andric#  endif // __has_include(<spanstream>)
2065f757f3fSDimitry Andric#  if __has_include(<stacktrace>)
2075f757f3fSDimitry Andric#    error "please update the header information for <stacktrace> in headers_not_available in utils/libcxx/header_information.py"
2085f757f3fSDimitry Andric#  endif // __has_include(<stacktrace>)
2095f757f3fSDimitry Andric#  if __has_include(<stdfloat>)
2105f757f3fSDimitry Andric#    error "please update the header information for <stdfloat> in headers_not_available in utils/libcxx/header_information.py"
2115f757f3fSDimitry Andric#  endif // __has_include(<stdfloat>)
2125f757f3fSDimitry Andric#  if __has_include(<text_encoding>)
2135f757f3fSDimitry Andric#    error "please update the header information for <text_encoding> in headers_not_available in utils/libcxx/header_information.py"
2145f757f3fSDimitry Andric#  endif // __has_include(<text_encoding>)
215*0fca6ea1SDimitry Andric#endif // _WIN32
2165f757f3fSDimitry Andric
2175f757f3fSDimitry Andricexport module std;
2185f757f3fSDimitry Andric
2197a6dacacSDimitry Andric
2205f757f3fSDimitry Andric@LIBCXX_MODULE_STD_INCLUDE_SOURCES@
221