Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
// -*- C++ -*-
|
2024-05-27 09:12:27 +00:00
|
|
|
//===----------------------------------------------------------------------===//
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
//
|
|
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#ifndef _LIBCPP___ERRC
|
|
|
|
#define _LIBCPP___ERRC
|
|
|
|
|
|
|
|
/*
|
|
|
|
system_error synopsis
|
|
|
|
|
|
|
|
namespace std
|
|
|
|
{
|
|
|
|
|
|
|
|
enum class errc
|
|
|
|
{
|
|
|
|
address_family_not_supported, // EAFNOSUPPORT
|
|
|
|
address_in_use, // EADDRINUSE
|
|
|
|
address_not_available, // EADDRNOTAVAIL
|
|
|
|
already_connected, // EISCONN
|
|
|
|
argument_list_too_long, // E2BIG
|
|
|
|
argument_out_of_domain, // EDOM
|
|
|
|
bad_address, // EFAULT
|
|
|
|
bad_file_descriptor, // EBADF
|
|
|
|
bad_message, // EBADMSG
|
|
|
|
broken_pipe, // EPIPE
|
|
|
|
connection_aborted, // ECONNABORTED
|
|
|
|
connection_already_in_progress, // EALREADY
|
|
|
|
connection_refused, // ECONNREFUSED
|
|
|
|
connection_reset, // ECONNRESET
|
|
|
|
cross_device_link, // EXDEV
|
|
|
|
destination_address_required, // EDESTADDRREQ
|
|
|
|
device_or_resource_busy, // EBUSY
|
|
|
|
directory_not_empty, // ENOTEMPTY
|
|
|
|
executable_format_error, // ENOEXEC
|
|
|
|
file_exists, // EEXIST
|
|
|
|
file_too_large, // EFBIG
|
|
|
|
filename_too_long, // ENAMETOOLONG
|
|
|
|
function_not_supported, // ENOSYS
|
|
|
|
host_unreachable, // EHOSTUNREACH
|
|
|
|
identifier_removed, // EIDRM
|
|
|
|
illegal_byte_sequence, // EILSEQ
|
|
|
|
inappropriate_io_control_operation, // ENOTTY
|
|
|
|
interrupted, // EINTR
|
|
|
|
invalid_argument, // EINVAL
|
|
|
|
invalid_seek, // ESPIPE
|
|
|
|
io_error, // EIO
|
|
|
|
is_a_directory, // EISDIR
|
|
|
|
message_size, // EMSGSIZE
|
|
|
|
network_down, // ENETDOWN
|
|
|
|
network_reset, // ENETRESET
|
|
|
|
network_unreachable, // ENETUNREACH
|
|
|
|
no_buffer_space, // ENOBUFS
|
|
|
|
no_child_process, // ECHILD
|
|
|
|
no_link, // ENOLINK
|
|
|
|
no_lock_available, // ENOLCK
|
2024-07-23 10:16:17 +00:00
|
|
|
no_message_available, // ENODATA // deprecated
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
no_message, // ENOMSG
|
|
|
|
no_protocol_option, // ENOPROTOOPT
|
|
|
|
no_space_on_device, // ENOSPC
|
2024-07-23 10:16:17 +00:00
|
|
|
no_stream_resources, // ENOSR // deprecated
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
no_such_device_or_address, // ENXIO
|
|
|
|
no_such_device, // ENODEV
|
|
|
|
no_such_file_or_directory, // ENOENT
|
|
|
|
no_such_process, // ESRCH
|
|
|
|
not_a_directory, // ENOTDIR
|
|
|
|
not_a_socket, // ENOTSOCK
|
2024-07-23 10:16:17 +00:00
|
|
|
not_a_stream, // ENOSTR // deprecated
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
not_connected, // ENOTCONN
|
|
|
|
not_enough_memory, // ENOMEM
|
|
|
|
not_supported, // ENOTSUP
|
|
|
|
operation_canceled, // ECANCELED
|
|
|
|
operation_in_progress, // EINPROGRESS
|
|
|
|
operation_not_permitted, // EPERM
|
|
|
|
operation_not_supported, // EOPNOTSUPP
|
|
|
|
operation_would_block, // EWOULDBLOCK
|
|
|
|
owner_dead, // EOWNERDEAD
|
|
|
|
permission_denied, // EACCES
|
|
|
|
protocol_error, // EPROTO
|
|
|
|
protocol_not_supported, // EPROTONOSUPPORT
|
|
|
|
read_only_file_system, // EROFS
|
|
|
|
resource_deadlock_would_occur, // EDEADLK
|
|
|
|
resource_unavailable_try_again, // EAGAIN
|
|
|
|
result_out_of_range, // ERANGE
|
|
|
|
state_not_recoverable, // ENOTRECOVERABLE
|
2024-07-23 10:16:17 +00:00
|
|
|
stream_timeout, // ETIME // deprecated
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
text_file_busy, // ETXTBSY
|
|
|
|
timed_out, // ETIMEDOUT
|
|
|
|
too_many_files_open_in_system, // ENFILE
|
|
|
|
too_many_files_open, // EMFILE
|
|
|
|
too_many_links, // EMLINK
|
|
|
|
too_many_symbolic_link_levels, // ELOOP
|
|
|
|
value_too_large, // EOVERFLOW
|
|
|
|
wrong_protocol_type // EPROTOTYPE
|
|
|
|
};
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
2024-05-27 09:12:27 +00:00
|
|
|
#include <__config>
|
|
|
|
#include <cerrno>
|
|
|
|
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
2024-05-27 09:12:27 +00:00
|
|
|
# pragma GCC system_header
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
#endif
|
|
|
|
|
2024-07-23 10:16:17 +00:00
|
|
|
// The method of pushing and popping the diagnostics fails for GCC. GCC does
|
|
|
|
// not recognize the pragma's used to generate deprecated diagnostics for
|
|
|
|
// macros. So GCC does not need the pushing and popping.
|
|
|
|
//
|
|
|
|
// TODO Remove this when the deprecated constants are removed.
|
|
|
|
//
|
|
|
|
// Note based on the post-review comments in
|
|
|
|
// https://github.com/llvm/llvm-project/pull/80542 libc++ no longer deprecates
|
|
|
|
// the macros. Since C libraries may start to deprecate these POSIX macros the
|
|
|
|
// deprecation warning avoidance is kept.
|
|
|
|
#if defined(_LIBCPP_COMPILER_CLANG_BASED)
|
|
|
|
# define _LIBCPP_SUPPRESS_DEPRECATED_ERRC_PUSH _LIBCPP_SUPPRESS_DEPRECATED_PUSH
|
|
|
|
# define _LIBCPP_SUPPRESS_DEPRECATED_ERRC_POP _LIBCPP_SUPPRESS_DEPRECATED_POP
|
|
|
|
#else
|
|
|
|
# define _LIBCPP_SUPPRESS_DEPRECATED_ERRC_PUSH
|
|
|
|
# define _LIBCPP_SUPPRESS_DEPRECATED_ERRC_POP
|
|
|
|
#endif
|
|
|
|
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
|
|
|
|
|
|
// Some error codes are not present on all platforms, so we provide equivalents
|
|
|
|
// for them:
|
|
|
|
|
2024-07-23 10:16:17 +00:00
|
|
|
// enum class errc
|
|
|
|
//
|
|
|
|
// LWG3869 deprecates the UNIX STREAMS macros and enum values.
|
|
|
|
// This makes the code clumbersome:
|
|
|
|
// - the enum value is deprecated and should show a diagnostic,
|
|
|
|
// - the macro is deprecated and should _not_ show a diagnostic in this
|
|
|
|
// context, and
|
|
|
|
// - the macro is not always available.
|
|
|
|
// This leads to the odd pushing and popping of the deprecated
|
|
|
|
// diagnostic.
|
|
|
|
_LIBCPP_DECLARE_STRONG_ENUM(errc){
|
2024-07-29 00:25:20 +00:00
|
|
|
success = 0,
|
2024-07-25 08:05:39 +00:00
|
|
|
address_family_not_supported = 65536, // = EAFNOSUPPORT,
|
2024-07-23 10:16:17 +00:00
|
|
|
address_in_use, // = EADDRINUSE,
|
|
|
|
address_not_available, // = EADDRNOTAVAIL,
|
|
|
|
already_connected, // = EISCONN,
|
|
|
|
argument_list_too_long, // = E2BIG,
|
|
|
|
argument_out_of_domain, // = EDOM,
|
|
|
|
bad_address, // = EFAULT,
|
|
|
|
bad_file_descriptor, // = EBADF,
|
|
|
|
bad_message, // = EBADMSG,
|
|
|
|
broken_pipe, // = EPIPE,
|
|
|
|
connection_aborted, // = ECONNABORTED,
|
|
|
|
connection_already_in_progress, // = EALREADY,
|
|
|
|
connection_refused, // = ECONNREFUSED,
|
|
|
|
connection_reset, // = ECONNRESET,
|
|
|
|
cross_device_link, // = EXDEV,
|
|
|
|
destination_address_required, // = EDESTADDRREQ,
|
|
|
|
device_or_resource_busy, // = EBUSY,
|
|
|
|
directory_not_empty, // = ENOTEMPTY,
|
|
|
|
executable_format_error, // = ENOEXEC,
|
|
|
|
file_exists, // = EEXIST,
|
|
|
|
file_too_large, // = EFBIG,
|
|
|
|
filename_too_long, // = ENAMETOOLONG,
|
|
|
|
function_not_supported, // = ENOSYS,
|
|
|
|
host_unreachable, // = EHOSTUNREACH,
|
|
|
|
identifier_removed, // = EIDRM,
|
|
|
|
illegal_byte_sequence, // = EILSEQ,
|
|
|
|
inappropriate_io_control_operation, // = ENOTTY,
|
|
|
|
interrupted, // = EINTR,
|
|
|
|
invalid_argument, // = EINVAL,
|
|
|
|
invalid_seek, // = ESPIPE,
|
|
|
|
io_error, // = EIO,
|
|
|
|
is_a_directory, // = EISDIR,
|
|
|
|
message_size, // = EMSGSIZE,
|
|
|
|
network_down, // = ENETDOWN,
|
|
|
|
network_reset, // = ENETRESET,
|
|
|
|
network_unreachable, // = ENETUNREACH,
|
|
|
|
no_buffer_space, // = ENOBUFS,
|
|
|
|
no_child_process, // = ECHILD,
|
|
|
|
no_link, // = ENOLINK,
|
|
|
|
no_lock_available, // = ENOLCK,
|
|
|
|
no_message_available,
|
|
|
|
no_message, // = ENOMSG,
|
|
|
|
no_protocol_option, // = ENOPROTOOPT,
|
|
|
|
no_space_on_device, // = ENOSPC,
|
|
|
|
no_stream_resources,
|
|
|
|
no_such_device_or_address, // = ENXIO,
|
|
|
|
no_such_device, // = ENODEV,
|
|
|
|
no_such_file_or_directory, // = ENOENT,
|
|
|
|
no_such_process, // = ESRCH,
|
|
|
|
not_a_directory, // = ENOTDIR,
|
|
|
|
not_a_socket, // = ENOTSOCK,
|
|
|
|
not_a_stream,
|
|
|
|
not_connected, // = ENOTCONN,
|
|
|
|
not_enough_memory, // = ENOMEM,
|
|
|
|
not_supported, // = ENOTSUP,
|
|
|
|
operation_canceled, // = ECANCELED,
|
|
|
|
operation_in_progress, // = EINPROGRESS,
|
|
|
|
operation_not_permitted, // = EPERM,
|
|
|
|
operation_not_supported, // = EOPNOTSUPP,
|
|
|
|
operation_would_block, // = EWOULDBLOCK,
|
|
|
|
owner_dead, // = EOWNERDEAD,
|
|
|
|
permission_denied, // = EACCES,
|
|
|
|
protocol_error, // = EPROTO,
|
|
|
|
protocol_not_supported, // = EPROTONOSUPPORT,
|
|
|
|
read_only_file_system, // = EROFS,
|
|
|
|
resource_deadlock_would_occur, // = EDEADLK,
|
|
|
|
resource_unavailable_try_again, // = EAGAIN,
|
|
|
|
result_out_of_range, // = ERANGE,
|
|
|
|
state_not_recoverable, // = ENOTRECOVERABLE,
|
|
|
|
stream_timeout,
|
|
|
|
text_file_busy, // = ETXTBSY,
|
|
|
|
timed_out, // = ETIMEDOUT,
|
|
|
|
too_many_files_open_in_system, // = ENFILE,
|
|
|
|
too_many_files_open, // = EMFILE,
|
|
|
|
too_many_links, // = EMLINK,
|
|
|
|
too_many_symbolic_link_levels, // = ELOOP,
|
|
|
|
value_too_large, // = EOVERFLOW,
|
|
|
|
wrong_protocol_type};
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(errc)
|
|
|
|
|
2024-07-29 00:25:20 +00:00
|
|
|
errc __err_to_errc(int) noexcept;
|
|
|
|
int __errc_to_err(errc) noexcept;
|
|
|
|
|
Import C++ Standard Template Library
You can now use the hardest fastest and most dangerous language there is
with Cosmopolitan. So far about 75% of LLVM libcxx has been added. A few
breaking changes needed to be made to help this go smoothly.
- Rename nothrow to dontthrow
- Rename nodiscard to dontdiscard
- Add some libm functions, e.g. lgamma, nan, etc.
- Change intmax_t from int128 to int64 like everything else
- Introduce %jjd formatting directive for int128_t
- Introduce strtoi128(), strtou128(), etc.
- Rename bsrmax() to bsr128()
Some of the templates that should be working currently are std::vector,
std::string, std::map, std::set, std::deque, etc.
2022-03-22 12:51:41 +00:00
|
|
|
_LIBCPP_END_NAMESPACE_STD
|
|
|
|
|
2024-05-27 09:12:27 +00:00
|
|
|
#endif // _LIBCPP___ERRC
|