diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-10-16 02:39:56 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-10-16 02:39:56 +0800 |
| commit | 8cace3f05003c6cb4d38c36890055f03151c2ad4 (patch) | |
| tree | aa739deaac0266f17c4e91b333957501cb1ea2e9 /third_party/libcxx/include/c++/v1/__filesystem | |
| parent | 3ad39e9878310e5317ee73c9b353c1e2c1c5c4ee (diff) | |
| download | lume-8cace3f05003c6cb4d38c36890055f03151c2ad4.tar.gz lume-8cace3f05003c6cb4d38c36890055f03151c2ad4.tar.xz | |
Remove old code
Signed-off-by: Richard Qin <richard.qin.x@gmail.com>
Diffstat (limited to 'third_party/libcxx/include/c++/v1/__filesystem')
16 files changed, 0 insertions, 2774 deletions
diff --git a/third_party/libcxx/include/c++/v1/__filesystem/copy_options.h b/third_party/libcxx/include/c++/v1/__filesystem/copy_options.h deleted file mode 100644 index d9039a6..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/copy_options.h +++ /dev/null @@ -1,69 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_COPY_OPTIONS_H -#define _LIBCPP___FILESYSTEM_COPY_OPTIONS_H - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -enum class copy_options : unsigned short { - none = 0, - skip_existing = 1, - overwrite_existing = 2, - update_existing = 4, - recursive = 8, - copy_symlinks = 16, - skip_symlinks = 32, - directories_only = 64, - create_symlinks = 128, - create_hard_links = 256, - __in_recursive_copy = 512, -}; - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator&(copy_options __lhs, copy_options __rhs) { - return static_cast<copy_options>(static_cast<unsigned short>(__lhs) & static_cast<unsigned short>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator|(copy_options __lhs, copy_options __rhs) { - return static_cast<copy_options>(static_cast<unsigned short>(__lhs) | static_cast<unsigned short>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator^(copy_options __lhs, copy_options __rhs) { - return static_cast<copy_options>(static_cast<unsigned short>(__lhs) ^ static_cast<unsigned short>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator~(copy_options __lhs) { - return static_cast<copy_options>(~static_cast<unsigned short>(__lhs)); -} - -_LIBCPP_HIDE_FROM_ABI inline copy_options& operator&=(copy_options& __lhs, copy_options __rhs) { - return __lhs = __lhs & __rhs; -} - -_LIBCPP_HIDE_FROM_ABI inline copy_options& operator|=(copy_options& __lhs, copy_options __rhs) { - return __lhs = __lhs | __rhs; -} - -_LIBCPP_HIDE_FROM_ABI inline copy_options& operator^=(copy_options& __lhs, copy_options __rhs) { - return __lhs = __lhs ^ __rhs; -} - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_COPY_OPTIONS_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/directory_entry.h b/third_party/libcxx/include/c++/v1/__filesystem/directory_entry.h deleted file mode 100644 index fab400b..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/directory_entry.h +++ /dev/null @@ -1,474 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_DIRECTORY_ENTRY_H -#define _LIBCPP___FILESYSTEM_DIRECTORY_ENTRY_H - -#include <__chrono/time_point.h> -#include <__compare/ordering.h> -#include <__config> -#include <__filesystem/file_status.h> -#include <__filesystem/file_time_type.h> -#include <__filesystem/file_type.h> -#include <__filesystem/filesystem_error.h> -#include <__filesystem/operations.h> -#include <__filesystem/path.h> -#include <__filesystem/perms.h> -#include <__fwd/ostream.h> -#include <__system_error/errc.h> -#include <__system_error/error_category.h> -#include <__system_error/error_code.h> -#include <__system_error/error_condition.h> -#include <__utility/move.h> -#include <__utility/unreachable.h> -#include <cstdint> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_PUSH_MACROS -#include <__undef_macros> - -#if _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -class directory_entry { - typedef filesystem::path _Path; - -public: - // constructors and destructors - _LIBCPP_HIDE_FROM_ABI directory_entry() noexcept = default; - _LIBCPP_HIDE_FROM_ABI directory_entry(directory_entry const&) = default; - _LIBCPP_HIDE_FROM_ABI directory_entry(directory_entry&&) noexcept = default; - - _LIBCPP_HIDE_FROM_ABI explicit directory_entry(_Path const& __p) : __p_(__p) { - error_code __ec; - __refresh(&__ec); - } - - _LIBCPP_HIDE_FROM_ABI directory_entry(_Path const& __p, error_code& __ec) : __p_(__p) { __refresh(&__ec); } - - _LIBCPP_HIDE_FROM_ABI ~directory_entry() {} - - _LIBCPP_HIDE_FROM_ABI directory_entry& operator=(directory_entry const&) = default; - _LIBCPP_HIDE_FROM_ABI directory_entry& operator=(directory_entry&&) noexcept = default; - - _LIBCPP_HIDE_FROM_ABI void assign(_Path const& __p) { - __p_ = __p; - error_code __ec; - __refresh(&__ec); - } - - _LIBCPP_HIDE_FROM_ABI void assign(_Path const& __p, error_code& __ec) { - __p_ = __p; - __refresh(&__ec); - } - - _LIBCPP_HIDE_FROM_ABI void replace_filename(_Path const& __p) { - __p_.replace_filename(__p); - error_code __ec; - __refresh(&__ec); - } - - _LIBCPP_HIDE_FROM_ABI void replace_filename(_Path const& __p, error_code& __ec) { - __p_ = __p_.parent_path() / __p; - __refresh(&__ec); - } - - _LIBCPP_HIDE_FROM_ABI void refresh() { __refresh(); } - - _LIBCPP_HIDE_FROM_ABI void refresh(error_code& __ec) noexcept { __refresh(&__ec); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _Path const& path() const noexcept { return __p_; } - - _LIBCPP_HIDE_FROM_ABI operator const _Path&() const noexcept { return __p_; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool exists() const { return filesystem::exists(file_status{__get_ft()}); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool exists(error_code& __ec) const noexcept { - return filesystem::exists(file_status{__get_ft(&__ec)}); - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_block_file() const { return __get_ft() == file_type::block; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_block_file(error_code& __ec) const noexcept { - return __get_ft(&__ec) == file_type::block; - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_character_file() const { return __get_ft() == file_type::character; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_character_file(error_code& __ec) const noexcept { - return __get_ft(&__ec) == file_type::character; - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_directory() const { return __get_ft() == file_type::directory; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_directory(error_code& __ec) const noexcept { - return __get_ft(&__ec) == file_type::directory; - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_fifo() const { return __get_ft() == file_type::fifo; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_fifo(error_code& __ec) const noexcept { - return __get_ft(&__ec) == file_type::fifo; - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_other() const { return filesystem::is_other(file_status{__get_ft()}); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_other(error_code& __ec) const noexcept { - return filesystem::is_other(file_status{__get_ft(&__ec)}); - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_regular_file() const { return __get_ft() == file_type::regular; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_regular_file(error_code& __ec) const noexcept { - return __get_ft(&__ec) == file_type::regular; - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_socket() const { return __get_ft() == file_type::socket; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_socket(error_code& __ec) const noexcept { - return __get_ft(&__ec) == file_type::socket; - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_symlink() const { return __get_sym_ft() == file_type::symlink; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_symlink(error_code& __ec) const noexcept { - return __get_sym_ft(&__ec) == file_type::symlink; - } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI uintmax_t file_size() const { return __get_size(); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(error_code& __ec) const noexcept { return __get_size(&__ec); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count() const { return __get_nlink(); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(error_code& __ec) const noexcept { - return __get_nlink(&__ec); - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time() const { return __get_write_time(); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(error_code& __ec) const noexcept { - return __get_write_time(&__ec); - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_status status() const { return __get_status(); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_status status(error_code& __ec) const noexcept { - return __get_status(&__ec); - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_status symlink_status() const { return __get_symlink_status(); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_status symlink_status(error_code& __ec) const noexcept { - return __get_symlink_status(&__ec); - } - - _LIBCPP_HIDE_FROM_ABI bool operator==(directory_entry const& __rhs) const noexcept { return __p_ == __rhs.__p_; } - -# if _LIBCPP_STD_VER <= 17 - _LIBCPP_HIDE_FROM_ABI bool operator!=(directory_entry const& __rhs) const noexcept { return __p_ != __rhs.__p_; } - - _LIBCPP_HIDE_FROM_ABI bool operator<(directory_entry const& __rhs) const noexcept { return __p_ < __rhs.__p_; } - - _LIBCPP_HIDE_FROM_ABI bool operator<=(directory_entry const& __rhs) const noexcept { return __p_ <= __rhs.__p_; } - - _LIBCPP_HIDE_FROM_ABI bool operator>(directory_entry const& __rhs) const noexcept { return __p_ > __rhs.__p_; } - - _LIBCPP_HIDE_FROM_ABI bool operator>=(directory_entry const& __rhs) const noexcept { return __p_ >= __rhs.__p_; } - -# else // _LIBCPP_STD_VER <= 17 - - _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(const directory_entry& __rhs) const noexcept { - return __p_ <=> __rhs.__p_; - } - -# endif // _LIBCPP_STD_VER <= 17 - - template <class _CharT, class _Traits> - _LIBCPP_HIDE_FROM_ABI friend basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const directory_entry& __d) { - return __os << __d.path(); - } - -private: - friend class directory_iterator; - friend class recursive_directory_iterator; - friend class _LIBCPP_HIDDEN __dir_stream; - - enum _CacheType : unsigned char { - _Empty, - _IterSymlink, - _IterNonSymlink, - _RefreshSymlink, - _RefreshSymlinkUnresolved, - _RefreshNonSymlink, - _IterCachedSymlink, - _IterCachedNonSymlink - }; - - struct __cached_data { - uintmax_t __size_; - uintmax_t __nlink_; - file_time_type __write_time_; - perms __sym_perms_; - perms __non_sym_perms_; - file_type __type_; - _CacheType __cache_type_; - - _LIBCPP_HIDE_FROM_ABI __cached_data() noexcept { __reset(); } - - _LIBCPP_HIDE_FROM_ABI void __reset() { - __cache_type_ = _Empty; - __type_ = file_type::none; - __sym_perms_ = __non_sym_perms_ = perms::unknown; - __size_ = __nlink_ = uintmax_t(-1); - __write_time_ = file_time_type::min(); - } - }; - - _LIBCPP_HIDE_FROM_ABI static __cached_data __create_iter_result(file_type __ft) { - __cached_data __data; - __data.__type_ = __ft; - __data.__cache_type_ = [&]() { - switch (__ft) { - case file_type::none: - return _Empty; - case file_type::symlink: - return _IterSymlink; - default: - return _IterNonSymlink; - } - }(); - return __data; - } - - _LIBCPP_HIDE_FROM_ABI static __cached_data - __create_iter_cached_result(file_type __ft, uintmax_t __size, perms __perm, file_time_type __write_time) { - __cached_data __data; - __data.__type_ = __ft; - __data.__size_ = __size; - __data.__write_time_ = __write_time; - if (__ft == file_type::symlink) - __data.__sym_perms_ = __perm; - else - __data.__non_sym_perms_ = __perm; - __data.__cache_type_ = [&]() { - switch (__ft) { - case file_type::none: - return _Empty; - case file_type::symlink: - return _IterCachedSymlink; - default: - return _IterCachedNonSymlink; - } - }(); - return __data; - } - - _LIBCPP_HIDE_FROM_ABI void __assign_iter_entry(_Path&& __p, __cached_data __dt) { - __p_ = std::move(__p); - __data_ = __dt; - } - - _LIBCPP_EXPORTED_FROM_ABI error_code __do_refresh() noexcept; - - _LIBCPP_HIDE_FROM_ABI static bool __is_dne_error(error_code const& __ec) { - return !__ec || __ec == errc::no_such_file_or_directory || __ec == errc::not_a_directory; - } - - _LIBCPP_HIDE_FROM_ABI void - __handle_error(const char* __msg, error_code* __dest_ec, error_code const& __ec, bool __allow_dne = false) const { - if (__dest_ec) { - *__dest_ec = __ec; - return; - } - if (__ec && (!__allow_dne || !__is_dne_error(__ec))) - filesystem::__throw_filesystem_error(__msg, __p_, __ec); - } - - _LIBCPP_HIDE_FROM_ABI void __refresh(error_code* __ec = nullptr) { - __handle_error("in directory_entry::refresh", - __ec, - __do_refresh(), - /*allow_dne*/ true); - } - - _LIBCPP_HIDE_FROM_ABI file_type __get_sym_ft(error_code* __ec = nullptr) const { - switch (__data_.__cache_type_) { - case _Empty: - return __symlink_status(__p_, __ec).type(); - case _IterSymlink: - case _IterCachedSymlink: - case _RefreshSymlink: - case _RefreshSymlinkUnresolved: - if (__ec) - __ec->clear(); - return file_type::symlink; - case _IterCachedNonSymlink: - case _IterNonSymlink: - case _RefreshNonSymlink: { - file_status __st(__data_.__type_); - if (__ec && !filesystem::exists(__st)) - *__ec = make_error_code(errc::no_such_file_or_directory); - else if (__ec) - __ec->clear(); - return __data_.__type_; - } - } - __libcpp_unreachable(); - } - - _LIBCPP_HIDE_FROM_ABI file_type __get_ft(error_code* __ec = nullptr) const { - switch (__data_.__cache_type_) { - case _Empty: - case _IterSymlink: - case _IterCachedSymlink: - case _RefreshSymlinkUnresolved: - return __status(__p_, __ec).type(); - case _IterCachedNonSymlink: - case _IterNonSymlink: - case _RefreshNonSymlink: - case _RefreshSymlink: { - file_status __st(__data_.__type_); - if (__ec && !filesystem::exists(__st)) - *__ec = make_error_code(errc::no_such_file_or_directory); - else if (__ec) - __ec->clear(); - return __data_.__type_; - } - } - __libcpp_unreachable(); - } - - _LIBCPP_HIDE_FROM_ABI file_status __get_status(error_code* __ec = nullptr) const { - switch (__data_.__cache_type_) { - case _Empty: - case _IterNonSymlink: - case _IterSymlink: - case _IterCachedSymlink: - case _RefreshSymlinkUnresolved: - return __status(__p_, __ec); - case _IterCachedNonSymlink: - case _RefreshNonSymlink: - case _RefreshSymlink: - return file_status(__get_ft(__ec), __data_.__non_sym_perms_); - } - __libcpp_unreachable(); - } - - _LIBCPP_HIDE_FROM_ABI file_status __get_symlink_status(error_code* __ec = nullptr) const { - switch (__data_.__cache_type_) { - case _Empty: - case _IterNonSymlink: - case _IterSymlink: - return __symlink_status(__p_, __ec); - case _IterCachedNonSymlink: - case _RefreshNonSymlink: - return file_status(__get_sym_ft(__ec), __data_.__non_sym_perms_); - case _IterCachedSymlink: - case _RefreshSymlink: - case _RefreshSymlinkUnresolved: - return file_status(__get_sym_ft(__ec), __data_.__sym_perms_); - } - __libcpp_unreachable(); - } - - _LIBCPP_HIDE_FROM_ABI uintmax_t __get_size(error_code* __ec = nullptr) const { - switch (__data_.__cache_type_) { - case _Empty: - case _IterNonSymlink: - case _IterSymlink: - case _IterCachedSymlink: - case _RefreshSymlinkUnresolved: - return filesystem::__file_size(__p_, __ec); - case _IterCachedNonSymlink: - case _RefreshSymlink: - case _RefreshNonSymlink: { - error_code __m_ec; - file_status __st(__get_ft(&__m_ec)); - __handle_error("in directory_entry::file_size", __ec, __m_ec); - if (filesystem::exists(__st) && !filesystem::is_regular_file(__st)) { - errc __err_kind = filesystem::is_directory(__st) ? errc::is_a_directory : errc::not_supported; - __handle_error("in directory_entry::file_size", __ec, make_error_code(__err_kind)); - } - return __data_.__size_; - } - } - __libcpp_unreachable(); - } - - _LIBCPP_HIDE_FROM_ABI uintmax_t __get_nlink(error_code* __ec = nullptr) const { - switch (__data_.__cache_type_) { - case _Empty: - case _IterNonSymlink: - case _IterSymlink: - case _IterCachedNonSymlink: - case _IterCachedSymlink: - case _RefreshSymlinkUnresolved: - return filesystem::__hard_link_count(__p_, __ec); - case _RefreshSymlink: - case _RefreshNonSymlink: { - error_code __m_ec; - (void)__get_ft(&__m_ec); - __handle_error("in directory_entry::hard_link_count", __ec, __m_ec); - return __data_.__nlink_; - } - } - __libcpp_unreachable(); - } - - _LIBCPP_HIDE_FROM_ABI file_time_type __get_write_time(error_code* __ec = nullptr) const { - switch (__data_.__cache_type_) { - case _Empty: - case _IterNonSymlink: - case _IterSymlink: - case _IterCachedSymlink: - case _RefreshSymlinkUnresolved: - return filesystem::__last_write_time(__p_, __ec); - case _IterCachedNonSymlink: - case _RefreshSymlink: - case _RefreshNonSymlink: { - error_code __m_ec; - file_status __st(__get_ft(&__m_ec)); - __handle_error("in directory_entry::last_write_time", __ec, __m_ec); - if (filesystem::exists(__st) && __data_.__write_time_ == file_time_type::min()) - __handle_error("in directory_entry::last_write_time", __ec, make_error_code(errc::value_too_large)); - return __data_.__write_time_; - } - } - __libcpp_unreachable(); - } - -private: - _Path __p_; - __cached_data __data_; -}; - -class __dir_element_proxy { -public: - inline _LIBCPP_HIDE_FROM_ABI directory_entry operator*() { return std::move(__elem_); } - -private: - friend class directory_iterator; - friend class recursive_directory_iterator; - _LIBCPP_HIDE_FROM_ABI explicit __dir_element_proxy(directory_entry const& __e) : __elem_(__e) {} - _LIBCPP_HIDE_FROM_ABI __dir_element_proxy(__dir_element_proxy&& __o) : __elem_(std::move(__o.__elem_)) {} - directory_entry __elem_; -}; - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM - -_LIBCPP_POP_MACROS - -#endif // _LIBCPP___FILESYSTEM_DIRECTORY_ENTRY_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/directory_iterator.h b/third_party/libcxx/include/c++/v1/__filesystem/directory_iterator.h deleted file mode 100644 index b621298..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/directory_iterator.h +++ /dev/null @@ -1,148 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_DIRECTORY_ITERATOR_H -#define _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H - -#include <__assert> -#include <__config> -#include <__filesystem/directory_entry.h> -#include <__filesystem/directory_options.h> -#include <__filesystem/path.h> -#include <__iterator/default_sentinel.h> -#include <__iterator/iterator_traits.h> -#include <__memory/shared_ptr.h> -#include <__ranges/enable_borrowed_range.h> -#include <__ranges/enable_view.h> -#include <__system_error/error_code.h> -#include <__utility/move.h> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_PUSH_MACROS -#include <__undef_macros> - -#if _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -class _LIBCPP_HIDDEN __dir_stream; -class directory_iterator { -public: - typedef directory_entry value_type; - typedef ptrdiff_t difference_type; - typedef value_type const* pointer; - typedef value_type const& reference; - typedef input_iterator_tag iterator_category; - -public: - // ctor & dtor - _LIBCPP_HIDE_FROM_ABI directory_iterator() noexcept {} - - _LIBCPP_HIDE_FROM_ABI explicit directory_iterator(const path& __p) : directory_iterator(__p, nullptr) {} - - _LIBCPP_HIDE_FROM_ABI directory_iterator(const path& __p, directory_options __opts) - : directory_iterator(__p, nullptr, __opts) {} - - _LIBCPP_HIDE_FROM_ABI directory_iterator(const path& __p, error_code& __ec) : directory_iterator(__p, &__ec) {} - - _LIBCPP_HIDE_FROM_ABI directory_iterator(const path& __p, directory_options __opts, error_code& __ec) - : directory_iterator(__p, &__ec, __opts) {} - - _LIBCPP_HIDE_FROM_ABI directory_iterator(const directory_iterator&) = default; - _LIBCPP_HIDE_FROM_ABI directory_iterator(directory_iterator&&) = default; - _LIBCPP_HIDE_FROM_ABI directory_iterator& operator=(const directory_iterator&) = default; - - _LIBCPP_HIDE_FROM_ABI directory_iterator& operator=(directory_iterator&& __o) noexcept { - // non-default implementation provided to support self-move assign. - if (this != &__o) { - __imp_ = std::move(__o.__imp_); - } - return *this; - } - - _LIBCPP_HIDE_FROM_ABI ~directory_iterator() = default; - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const directory_entry& operator*() const { - // Note: this check duplicates a check in `__dereference()`. - _LIBCPP_ASSERT_NON_NULL(__imp_, "The end iterator cannot be dereferenced"); - return __dereference(); - } - - _LIBCPP_HIDE_FROM_ABI const directory_entry* operator->() const { return &**this; } - - _LIBCPP_HIDE_FROM_ABI directory_iterator& operator++() { return __increment(); } - - _LIBCPP_HIDE_FROM_ABI __dir_element_proxy operator++(int) { - __dir_element_proxy __p(**this); - __increment(); - return __p; - } - - _LIBCPP_HIDE_FROM_ABI directory_iterator& increment(error_code& __ec) { return __increment(&__ec); } - -# if _LIBCPP_STD_VER >= 20 - - _LIBCPP_HIDE_FROM_ABI bool operator==(default_sentinel_t) const noexcept { return *this == directory_iterator(); } - -# endif - -private: - inline _LIBCPP_HIDE_FROM_ABI friend bool - operator==(const directory_iterator& __lhs, const directory_iterator& __rhs) noexcept; - - // construct the dir_stream - _LIBCPP_EXPORTED_FROM_ABI directory_iterator(const path&, error_code*, directory_options = directory_options::none); - - _LIBCPP_EXPORTED_FROM_ABI directory_iterator& __increment(error_code* __ec = nullptr); - - _LIBCPP_EXPORTED_FROM_ABI const directory_entry& __dereference() const; - -private: - shared_ptr<__dir_stream> __imp_; -}; - -inline _LIBCPP_HIDE_FROM_ABI bool -operator==(const directory_iterator& __lhs, const directory_iterator& __rhs) noexcept { - return __lhs.__imp_ == __rhs.__imp_; -} - -inline _LIBCPP_HIDE_FROM_ABI bool -operator!=(const directory_iterator& __lhs, const directory_iterator& __rhs) noexcept { - return !(__lhs == __rhs); -} - -// enable directory_iterator range-based for statements -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI directory_iterator begin(directory_iterator __iter) noexcept { - return __iter; -} - -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI directory_iterator end(directory_iterator) noexcept { - return directory_iterator(); -} - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -# if _LIBCPP_STD_VER >= 20 - -template <> -inline constexpr bool std::ranges::enable_borrowed_range<std::filesystem::directory_iterator> = true; - -template <> -inline constexpr bool std::ranges::enable_view<std::filesystem::directory_iterator> = true; - -# endif // _LIBCPP_STD_VER >= 20 - -#endif // _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM - -_LIBCPP_POP_MACROS - -#endif // _LIBCPP___FILESYSTEM_DIRECTORY_ITERATOR_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/directory_options.h b/third_party/libcxx/include/c++/v1/__filesystem/directory_options.h deleted file mode 100644 index 11c7d20..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/directory_options.h +++ /dev/null @@ -1,60 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_DIRECTORY_OPTIONS_H -#define _LIBCPP___FILESYSTEM_DIRECTORY_OPTIONS_H - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -enum class directory_options : unsigned char { none = 0, follow_directory_symlink = 1, skip_permission_denied = 2 }; - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr directory_options -operator&(directory_options __lhs, directory_options __rhs) { - return static_cast<directory_options>(static_cast<unsigned char>(__lhs) & static_cast<unsigned char>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr directory_options -operator|(directory_options __lhs, directory_options __rhs) { - return static_cast<directory_options>(static_cast<unsigned char>(__lhs) | static_cast<unsigned char>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr directory_options -operator^(directory_options __lhs, directory_options __rhs) { - return static_cast<directory_options>(static_cast<unsigned char>(__lhs) ^ static_cast<unsigned char>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator~(directory_options __lhs) { - return static_cast<directory_options>(~static_cast<unsigned char>(__lhs)); -} - -_LIBCPP_HIDE_FROM_ABI inline directory_options& operator&=(directory_options& __lhs, directory_options __rhs) { - return __lhs = __lhs & __rhs; -} - -_LIBCPP_HIDE_FROM_ABI inline directory_options& operator|=(directory_options& __lhs, directory_options __rhs) { - return __lhs = __lhs | __rhs; -} - -_LIBCPP_HIDE_FROM_ABI inline directory_options& operator^=(directory_options& __lhs, directory_options __rhs) { - return __lhs = __lhs ^ __rhs; -} - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_DIRECTORY_OPTIONS_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/file_status.h b/third_party/libcxx/include/c++/v1/__filesystem/file_status.h deleted file mode 100644 index 746cd0f..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/file_status.h +++ /dev/null @@ -1,67 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_FILE_STATUS_H -#define _LIBCPP___FILESYSTEM_FILE_STATUS_H - -#include <__config> -#include <__filesystem/file_type.h> -#include <__filesystem/perms.h> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -class file_status { -public: - // constructors - _LIBCPP_HIDE_FROM_ABI file_status() noexcept : file_status(file_type::none) {} - _LIBCPP_HIDE_FROM_ABI explicit file_status(file_type __ft, perms __prms = perms::unknown) noexcept - : __ft_(__ft), __prms_(__prms) {} - - _LIBCPP_HIDE_FROM_ABI file_status(const file_status&) noexcept = default; - _LIBCPP_HIDE_FROM_ABI file_status(file_status&&) noexcept = default; - - _LIBCPP_HIDE_FROM_ABI ~file_status() {} - - _LIBCPP_HIDE_FROM_ABI file_status& operator=(const file_status&) noexcept = default; - _LIBCPP_HIDE_FROM_ABI file_status& operator=(file_status&&) noexcept = default; - - // observers - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_type type() const noexcept { return __ft_; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI perms permissions() const noexcept { return __prms_; } - - // modifiers - _LIBCPP_HIDE_FROM_ABI void type(file_type __ft) noexcept { __ft_ = __ft; } - - _LIBCPP_HIDE_FROM_ABI void permissions(perms __p) noexcept { __prms_ = __p; } - -# if _LIBCPP_STD_VER >= 20 - - _LIBCPP_HIDE_FROM_ABI friend bool operator==(const file_status& __lhs, const file_status& __rhs) noexcept { - return __lhs.type() == __rhs.type() && __lhs.permissions() == __rhs.permissions(); - } - -# endif - -private: - file_type __ft_; - perms __prms_; -}; - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_FILE_STATUS_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/file_time_type.h b/third_party/libcxx/include/c++/v1/__filesystem/file_time_type.h deleted file mode 100644 index 63e4ae1..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/file_time_type.h +++ /dev/null @@ -1,31 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_FILE_TIME_TYPE_H -#define _LIBCPP___FILESYSTEM_FILE_TIME_TYPE_H - -#include <__chrono/file_clock.h> -#include <__chrono/time_point.h> -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -typedef chrono::time_point<_FilesystemClock> file_time_type; - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_FILE_TIME_TYPE_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/file_type.h b/third_party/libcxx/include/c++/v1/__filesystem/file_type.h deleted file mode 100644 index e4ac1df..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/file_type.h +++ /dev/null @@ -1,42 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_FILE_TYPE_H -#define _LIBCPP___FILESYSTEM_FILE_TYPE_H - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -// On Windows, the library never identifies files as block, character, fifo -// or socket. -enum class file_type : signed char { - none = 0, - not_found = -1, - regular = 1, - directory = 2, - symlink = 3, - block = 4, - character = 5, - fifo = 6, - socket = 7, - unknown = 8 -}; - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_FILE_TYPE_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/filesystem_error.h b/third_party/libcxx/include/c++/v1/__filesystem/filesystem_error.h deleted file mode 100644 index 6f1daf8..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/filesystem_error.h +++ /dev/null @@ -1,87 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_FILESYSTEM_ERROR_H -#define _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H - -#include <__config> -#include <__filesystem/path.h> -#include <__memory/shared_ptr.h> -#include <__system_error/error_code.h> -#include <__system_error/system_error.h> -#include <__utility/forward.h> -#include <__verbose_abort> -#include <string> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -class _LIBCPP_EXPORTED_FROM_ABI filesystem_error : public system_error { -public: - _LIBCPP_HIDE_FROM_ABI filesystem_error(const string& __what, error_code __ec) - : system_error(__ec, __what), __storage_(make_shared<_Storage>(path(), path())) { - __create_what(0); - } - - _LIBCPP_HIDE_FROM_ABI filesystem_error(const string& __what, const path& __p1, error_code __ec) - : system_error(__ec, __what), __storage_(make_shared<_Storage>(__p1, path())) { - __create_what(1); - } - - _LIBCPP_HIDE_FROM_ABI filesystem_error(const string& __what, const path& __p1, const path& __p2, error_code __ec) - : system_error(__ec, __what), __storage_(make_shared<_Storage>(__p1, __p2)) { - __create_what(2); - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const path& path1() const noexcept { return __storage_->__p1_; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const path& path2() const noexcept { return __storage_->__p2_; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI filesystem_error(const filesystem_error&) = default; - ~filesystem_error() override; // key function - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI_VIRTUAL const char* what() const noexcept override { - return __storage_->__what_.c_str(); - } - - void __create_what(int __num_paths); - -private: - struct _LIBCPP_HIDDEN _Storage { - _LIBCPP_HIDE_FROM_ABI _Storage(const path& __p1, const path& __p2) : __p1_(__p1), __p2_(__p2) {} - - path __p1_; - path __p2_; - string __what_; - }; - shared_ptr<_Storage> __storage_; -}; - -# if _LIBCPP_HAS_EXCEPTIONS -template <class... _Args> -[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_filesystem_error(_Args&&... __args) { - throw filesystem_error(std::forward<_Args>(__args)...); -} -# else -template <class... _Args> -[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_filesystem_error(_Args&&...) { - _LIBCPP_VERBOSE_ABORT("filesystem_error was thrown in -fno-exceptions mode"); -} -# endif - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_FILESYSTEM_ERROR_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/operations.h b/third_party/libcxx/include/c++/v1/__filesystem/operations.h deleted file mode 100644 index f536a1a..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/operations.h +++ /dev/null @@ -1,341 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_OPERATIONS_H -#define _LIBCPP___FILESYSTEM_OPERATIONS_H - -#include <__chrono/time_point.h> -#include <__config> -#include <__filesystem/copy_options.h> -#include <__filesystem/file_status.h> -#include <__filesystem/file_time_type.h> -#include <__filesystem/file_type.h> -#include <__filesystem/path.h> -#include <__filesystem/perm_options.h> -#include <__filesystem/perms.h> -#include <__filesystem/space_info.h> -#include <__system_error/error_code.h> -#include <cstdint> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -_LIBCPP_EXPORTED_FROM_ABI path __absolute(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI path __canonical(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI bool -__copy_file(const path& __from, const path& __to, copy_options __opt, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void -__copy_symlink(const path& __existing_symlink, const path& __new_symlink, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void -__copy(const path& __from, const path& __to, copy_options __opt, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI bool __create_directories(const path&, error_code* = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void -__create_directory_symlink(const path& __to, const path& __new_symlink, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI bool __create_directory(const path&, error_code* = nullptr); -_LIBCPP_EXPORTED_FROM_ABI bool __create_directory(const path&, const path& __attributes, error_code* = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void -__create_hard_link(const path& __to, const path& __new_hard_link, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void -__create_symlink(const path& __to, const path& __new_symlink, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI path __current_path(error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void __current_path(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI bool __equivalent(const path&, const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI file_status __status(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI uintmax_t __file_size(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI uintmax_t __hard_link_count(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI file_status __symlink_status(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI file_time_type __last_write_time(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void __last_write_time(const path&, file_time_type __new_time, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI path __weakly_canonical(path const& __p, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI path __read_symlink(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI uintmax_t __remove_all(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI bool __remove(const path&, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void __rename(const path& __from, const path& __to, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void __resize_file(const path&, uintmax_t __size, error_code* = nullptr); -_LIBCPP_EXPORTED_FROM_ABI path __temp_directory_path(error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI bool __fs_is_empty(const path& __p, error_code* __ec = nullptr); -_LIBCPP_EXPORTED_FROM_ABI void __permissions(const path&, perms, perm_options, error_code* = nullptr); -_LIBCPP_EXPORTED_FROM_ABI space_info __space(const path&, error_code* __ec = nullptr); - -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path absolute(const path& __p) { return __absolute(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path absolute(const path& __p, error_code& __ec) { - return __absolute(__p, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path canonical(const path& __p) { return __canonical(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path canonical(const path& __p, error_code& __ec) { - return __canonical(__p, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to) { - return __copy_file(__from, __to, copy_options::none); -} -inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, error_code& __ec) { - return __copy_file(__from, __to, copy_options::none, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI bool copy_file(const path& __from, const path& __to, copy_options __opt) { - return __copy_file(__from, __to, __opt); -} -inline _LIBCPP_HIDE_FROM_ABI bool -copy_file(const path& __from, const path& __to, copy_options __opt, error_code& __ec) { - return __copy_file(__from, __to, __opt, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void copy_symlink(const path& __from, const path& __to) { __copy_symlink(__from, __to); } -inline _LIBCPP_HIDE_FROM_ABI void copy_symlink(const path& __from, const path& __to, error_code& __ec) noexcept { - __copy_symlink(__from, __to, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to) { - __copy(__from, __to, copy_options::none); -} -inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, error_code& __ec) { - __copy(__from, __to, copy_options::none, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, copy_options __opt) { - __copy(__from, __to, __opt); -} -inline _LIBCPP_HIDE_FROM_ABI void copy(const path& __from, const path& __to, copy_options __opt, error_code& __ec) { - __copy(__from, __to, __opt, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI bool create_directories(const path& __p) { return __create_directories(__p); } -inline _LIBCPP_HIDE_FROM_ABI bool create_directories(const path& __p, error_code& __ec) { - return __create_directories(__p, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void create_directory_symlink(const path& __target, const path& __link) { - __create_directory_symlink(__target, __link); -} -inline _LIBCPP_HIDE_FROM_ABI void -create_directory_symlink(const path& __target, const path& __link, error_code& __ec) noexcept { - __create_directory_symlink(__target, __link, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p) { return __create_directory(__p); } -inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, error_code& __ec) noexcept { - return __create_directory(__p, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, const path& __attrs) { - return __create_directory(__p, __attrs); -} -inline _LIBCPP_HIDE_FROM_ABI bool create_directory(const path& __p, const path& __attrs, error_code& __ec) noexcept { - return __create_directory(__p, __attrs, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void create_hard_link(const path& __target, const path& __link) { - __create_hard_link(__target, __link); -} -inline _LIBCPP_HIDE_FROM_ABI void -create_hard_link(const path& __target, const path& __link, error_code& __ec) noexcept { - __create_hard_link(__target, __link, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void create_symlink(const path& __target, const path& __link) { - __create_symlink(__target, __link); -} -inline _LIBCPP_HIDE_FROM_ABI void create_symlink(const path& __target, const path& __link, error_code& __ec) noexcept { - return __create_symlink(__target, __link, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path current_path() { return __current_path(); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path current_path(error_code& __ec) { return __current_path(&__ec); } -inline _LIBCPP_HIDE_FROM_ABI void current_path(const path& __p) { __current_path(__p); } -inline _LIBCPP_HIDE_FROM_ABI void current_path(const path& __p, error_code& __ec) noexcept { - __current_path(__p, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool equivalent(const path& __p1, const path& __p2) { - return __equivalent(__p1, __p2); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool -equivalent(const path& __p1, const path& __p2, error_code& __ec) noexcept { - return __equivalent(__p1, __p2, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool status_known(file_status __s) noexcept { - return __s.type() != file_type::none; -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool exists(file_status __s) noexcept { - return status_known(__s) && __s.type() != file_type::not_found; -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool exists(const path& __p) { return exists(__status(__p)); } - -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool exists(const path& __p, error_code& __ec) noexcept { - auto __s = __status(__p, &__ec); - if (status_known(__s)) - __ec.clear(); - return exists(__s); -} - -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(const path& __p) { return __file_size(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(const path& __p, error_code& __ec) noexcept { - return __file_size(__p, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(const path& __p) { return __hard_link_count(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(const path& __p, error_code& __ec) noexcept { - return __hard_link_count(__p, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(file_status __s) noexcept { - return __s.type() == file_type::block; -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(const path& __p) { return is_block_file(__status(__p)); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_block_file(const path& __p, error_code& __ec) noexcept { - return is_block_file(__status(__p, &__ec)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(file_status __s) noexcept { - return __s.type() == file_type::character; -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(const path& __p) { - return is_character_file(__status(__p)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_character_file(const path& __p, error_code& __ec) noexcept { - return is_character_file(__status(__p, &__ec)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_directory(file_status __s) noexcept { - return __s.type() == file_type::directory; -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_directory(const path& __p) { return is_directory(__status(__p)); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_directory(const path& __p, error_code& __ec) noexcept { - return is_directory(__status(__p, &__ec)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_empty(const path& __p) { return __fs_is_empty(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_empty(const path& __p, error_code& __ec) { - return __fs_is_empty(__p, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(file_status __s) noexcept { - return __s.type() == file_type::fifo; -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(const path& __p) { return is_fifo(__status(__p)); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_fifo(const path& __p, error_code& __ec) noexcept { - return is_fifo(__status(__p, &__ec)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(file_status __s) noexcept { - return __s.type() == file_type::regular; -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(const path& __p) { - return is_regular_file(__status(__p)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_regular_file(const path& __p, error_code& __ec) noexcept { - return is_regular_file(__status(__p, &__ec)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(file_status __s) noexcept { - return __s.type() == file_type::symlink; -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(const path& __p) { - return is_symlink(__symlink_status(__p)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_symlink(const path& __p, error_code& __ec) noexcept { - return is_symlink(__symlink_status(__p, &__ec)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_other(file_status __s) noexcept { - return exists(__s) && !is_regular_file(__s) && !is_directory(__s) && !is_symlink(__s); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_other(const path& __p) { return is_other(__status(__p)); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_other(const path& __p, error_code& __ec) noexcept { - return is_other(__status(__p, &__ec)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_socket(file_status __s) noexcept { - return __s.type() == file_type::socket; -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_socket(const path& __p) { return is_socket(__status(__p)); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI bool is_socket(const path& __p, error_code& __ec) noexcept { - return is_socket(__status(__p, &__ec)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(const path& __p) { - return __last_write_time(__p); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(const path& __p, error_code& __ec) noexcept { - return __last_write_time(__p, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void last_write_time(const path& __p, file_time_type __t) { __last_write_time(__p, __t); } -inline _LIBCPP_HIDE_FROM_ABI void last_write_time(const path& __p, file_time_type __t, error_code& __ec) noexcept { - __last_write_time(__p, __t, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void -permissions(const path& __p, perms __prms, perm_options __opts = perm_options::replace) { - __permissions(__p, __prms, __opts); -} -inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, error_code& __ec) noexcept { - __permissions(__p, __prms, perm_options::replace, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void permissions(const path& __p, perms __prms, perm_options __opts, error_code& __ec) { - __permissions(__p, __prms, __opts, &__ec); -} - -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, const path& __base, error_code& __ec) { - path __tmp = __weakly_canonical(__p, &__ec); - if (__ec) - return {}; - path __tmp_base = __weakly_canonical(__base, &__ec); - if (__ec) - return {}; - return __tmp.lexically_proximate(__tmp_base); -} - -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, error_code& __ec) { - return proximate(__p, current_path(), __ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path proximate(const path& __p, const path& __base = current_path()) { - return __weakly_canonical(__p).lexically_proximate(__weakly_canonical(__base)); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path read_symlink(const path& __p) { return __read_symlink(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path read_symlink(const path& __p, error_code& __ec) { - return __read_symlink(__p, &__ec); -} - -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, const path& __base, error_code& __ec) { - path __tmp = __weakly_canonical(__p, &__ec); - if (__ec) - return path(); - path __tmpbase = __weakly_canonical(__base, &__ec); - if (__ec) - return path(); - return __tmp.lexically_relative(__tmpbase); -} - -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, error_code& __ec) { - return relative(__p, current_path(), __ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path relative(const path& __p, const path& __base = current_path()) { - return __weakly_canonical(__p).lexically_relative(__weakly_canonical(__base)); -} -inline _LIBCPP_HIDE_FROM_ABI uintmax_t remove_all(const path& __p) { return __remove_all(__p); } -inline _LIBCPP_HIDE_FROM_ABI uintmax_t remove_all(const path& __p, error_code& __ec) { - return __remove_all(__p, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI bool remove(const path& __p) { return __remove(__p); } -inline _LIBCPP_HIDE_FROM_ABI bool remove(const path& __p, error_code& __ec) noexcept { return __remove(__p, &__ec); } -inline _LIBCPP_HIDE_FROM_ABI void rename(const path& __from, const path& __to) { return __rename(__from, __to); } -inline _LIBCPP_HIDE_FROM_ABI void rename(const path& __from, const path& __to, error_code& __ec) noexcept { - return __rename(__from, __to, &__ec); -} -inline _LIBCPP_HIDE_FROM_ABI void resize_file(const path& __p, uintmax_t __ns) { return __resize_file(__p, __ns); } -inline _LIBCPP_HIDE_FROM_ABI void resize_file(const path& __p, uintmax_t __ns, error_code& __ec) noexcept { - return __resize_file(__p, __ns, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI space_info space(const path& __p) { return __space(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI space_info space(const path& __p, error_code& __ec) noexcept { - return __space(__p, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI file_status status(const path& __p) { return __status(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI file_status status(const path& __p, error_code& __ec) noexcept { - return __status(__p, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI file_status symlink_status(const path& __p) { return __symlink_status(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI file_status symlink_status(const path& __p, error_code& __ec) noexcept { - return __symlink_status(__p, &__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path temp_directory_path() { return __temp_directory_path(); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path temp_directory_path(error_code& __ec) { - return __temp_directory_path(&__ec); -} -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path weakly_canonical(path const& __p) { return __weakly_canonical(__p); } -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI path weakly_canonical(path const& __p, error_code& __ec) { - return __weakly_canonical(__p, &__ec); -} - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM - -#endif // _LIBCPP___FILESYSTEM_OPERATIONS_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/path.h b/third_party/libcxx/include/c++/v1/__filesystem/path.h deleted file mode 100644 index 47ecf1c..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/path.h +++ /dev/null @@ -1,919 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_PATH_H -#define _LIBCPP___FILESYSTEM_PATH_H - -#include <__algorithm/replace.h> -#include <__algorithm/replace_copy.h> -#include <__config> -#include <__functional/unary_function.h> -#include <__fwd/functional.h> -#include <__iterator/back_insert_iterator.h> -#include <__iterator/iterator_traits.h> -#include <__memory/addressof.h> -#include <__type_traits/decay.h> -#include <__type_traits/enable_if.h> -#include <__type_traits/is_pointer.h> -#include <__type_traits/remove_const.h> -#include <__type_traits/remove_pointer.h> -#include <__type_traits/void_t.h> -#include <__utility/move.h> -#include <string> -#include <string_view> - -#if _LIBCPP_HAS_LOCALIZATION -# include <iomanip> // for quoted -#endif - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_PUSH_MACROS -#include <__undef_macros> - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -template <class _Tp> -struct __can_convert_char { - static const bool value = false; -}; -template <class _Tp> -struct __can_convert_char<const _Tp> : public __can_convert_char<_Tp> {}; -template <> -struct __can_convert_char<char> { - static const bool value = true; - using __char_type _LIBCPP_NODEBUG = char; -}; -template <> -struct __can_convert_char<wchar_t> { - static const bool value = true; - using __char_type _LIBCPP_NODEBUG = wchar_t; -}; -# if _LIBCPP_HAS_CHAR8_T -template <> -struct __can_convert_char<char8_t> { - static const bool value = true; - using __char_type _LIBCPP_NODEBUG = char8_t; -}; -# endif -template <> -struct __can_convert_char<char16_t> { - static const bool value = true; - using __char_type _LIBCPP_NODEBUG = char16_t; -}; -template <> -struct __can_convert_char<char32_t> { - static const bool value = true; - using __char_type _LIBCPP_NODEBUG = char32_t; -}; - -template <class _ECharT, __enable_if_t<__can_convert_char<_ECharT>::value, int> = 0> -_LIBCPP_HIDE_FROM_ABI bool __is_separator(_ECharT __e) { -# if defined(_LIBCPP_WIN32API) - return __e == _ECharT('/') || __e == _ECharT('\\'); -# else - return __e == _ECharT('/'); -# endif -} - -# if _LIBCPP_HAS_CHAR8_T -typedef u8string __u8_string; -# else -typedef string __u8_string; -# endif - -struct _NullSentinel {}; - -template <class _Tp, class = void> -struct __is_pathable_string : public false_type {}; - -template <class _ECharT, class _Traits, class _Alloc> -struct __is_pathable_string< basic_string<_ECharT, _Traits, _Alloc>, - void_t<typename __can_convert_char<_ECharT>::__char_type> > - : public __can_convert_char<_ECharT> { - using _Str _LIBCPP_NODEBUG = basic_string<_ECharT, _Traits, _Alloc>; - - _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); } - - _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_end(_Str const& __s) { return __s.data() + __s.length(); } - - _LIBCPP_HIDE_FROM_ABI static _ECharT __first_or_null(_Str const& __s) { return __s.empty() ? _ECharT{} : __s[0]; } -}; - -template <class _ECharT, class _Traits> -struct __is_pathable_string< basic_string_view<_ECharT, _Traits>, - void_t<typename __can_convert_char<_ECharT>::__char_type> > - : public __can_convert_char<_ECharT> { - using _Str _LIBCPP_NODEBUG = basic_string_view<_ECharT, _Traits>; - - _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_begin(_Str const& __s) { return __s.data(); } - - _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_end(_Str const& __s) { return __s.data() + __s.length(); } - - _LIBCPP_HIDE_FROM_ABI static _ECharT __first_or_null(_Str const& __s) { return __s.empty() ? _ECharT{} : __s[0]; } -}; - -template <class _Source, - class _DS = __decay_t<_Source>, - class _UnqualPtrType = __remove_const_t<__remove_pointer_t<_DS> >, - bool _IsCharPtr = is_pointer<_DS>::value && __can_convert_char<_UnqualPtrType>::value> -struct __is_pathable_char_array : false_type {}; - -template <class _Source, class _ECharT, class _UPtr> -struct __is_pathable_char_array<_Source, _ECharT*, _UPtr, true> : __can_convert_char<__remove_const_t<_ECharT> > { - _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_begin(const _ECharT* __b) { return __b; } - - _LIBCPP_HIDE_FROM_ABI static _ECharT const* __range_end(const _ECharT* __b) { - using _Iter = const _ECharT*; - const _ECharT __sentinel = _ECharT{}; - _Iter __e = __b; - for (; *__e != __sentinel; ++__e) - ; - return __e; - } - - _LIBCPP_HIDE_FROM_ABI static _ECharT __first_or_null(const _ECharT* __b) { return *__b; } -}; - -template <class _Iter, bool _IsIt = __has_input_iterator_category<_Iter>::value, class = void> -struct __is_pathable_iter : false_type {}; - -template <class _Iter> -struct __is_pathable_iter< - _Iter, - true, - void_t<typename __can_convert_char< typename iterator_traits<_Iter>::value_type>::__char_type> > - : __can_convert_char<typename iterator_traits<_Iter>::value_type> { - using _ECharT _LIBCPP_NODEBUG = typename iterator_traits<_Iter>::value_type; - - _LIBCPP_HIDE_FROM_ABI static _Iter __range_begin(_Iter __b) { return __b; } - - _LIBCPP_HIDE_FROM_ABI static _NullSentinel __range_end(_Iter) { return _NullSentinel{}; } - - _LIBCPP_HIDE_FROM_ABI static _ECharT __first_or_null(_Iter __b) { return *__b; } -}; - -template <class _Tp, - bool _IsStringT = __is_pathable_string<_Tp>::value, - bool _IsCharIterT = __is_pathable_char_array<_Tp>::value, - bool _IsIterT = !_IsCharIterT && __is_pathable_iter<_Tp>::value> -struct __is_pathable : false_type { - static_assert(!_IsStringT && !_IsCharIterT && !_IsIterT, "Must all be false"); -}; - -template <class _Tp> -struct __is_pathable<_Tp, true, false, false> : __is_pathable_string<_Tp> {}; - -template <class _Tp> -struct __is_pathable<_Tp, false, true, false> : __is_pathable_char_array<_Tp> {}; - -template <class _Tp> -struct __is_pathable<_Tp, false, false, true> : __is_pathable_iter<_Tp> {}; - -# if defined(_LIBCPP_WIN32API) -typedef wstring __path_string; -typedef wchar_t __path_value; -# else -typedef string __path_string; -typedef char __path_value; -# endif - -# if defined(_LIBCPP_WIN32API) -_LIBCPP_EXPORTED_FROM_ABI size_t __wide_to_char(const wstring&, char*, size_t); -_LIBCPP_EXPORTED_FROM_ABI size_t __char_to_wide(const string&, wchar_t*, size_t); -# endif - -template <class _ECharT> -struct _PathCVT; - -# if _LIBCPP_HAS_LOCALIZATION -template <class _ECharT> -struct _PathCVT { - static_assert(__can_convert_char<_ECharT>::value, "Char type not convertible"); - - typedef __narrow_to_utf8<sizeof(_ECharT) * __CHAR_BIT__> _Narrower; -# if defined(_LIBCPP_WIN32API) - typedef __widen_from_utf8<sizeof(wchar_t) * __CHAR_BIT__> _Widener; -# endif - - _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _ECharT const* __b, _ECharT const* __e) { -# if defined(_LIBCPP_WIN32API) - string __utf8; - _Narrower()(back_inserter(__utf8), __b, __e); - _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); -# else - _Narrower()(back_inserter(__dest), __b, __e); -# endif - } - - template <class _Iter> - _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { - static_assert(!is_same<_Iter, _ECharT*>::value, "Call const overload"); - if (__b == __e) - return; - basic_string<_ECharT> __tmp(__b, __e); -# if defined(_LIBCPP_WIN32API) - string __utf8; - _Narrower()(back_inserter(__utf8), __tmp.data(), __tmp.data() + __tmp.length()); - _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); -# else - _Narrower()(back_inserter(__dest), __tmp.data(), __tmp.data() + __tmp.length()); -# endif - } - - template <class _Iter> - _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { - static_assert(!is_same<_Iter, _ECharT*>::value, "Call const overload"); - const _ECharT __sentinel = _ECharT{}; - if (*__b == __sentinel) - return; - basic_string<_ECharT> __tmp; - for (; *__b != __sentinel; ++__b) - __tmp.push_back(*__b); -# if defined(_LIBCPP_WIN32API) - string __utf8; - _Narrower()(back_inserter(__utf8), __tmp.data(), __tmp.data() + __tmp.length()); - _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); -# else - _Narrower()(back_inserter(__dest), __tmp.data(), __tmp.data() + __tmp.length()); -# endif - } - - template <class _Source> - _LIBCPP_HIDE_FROM_ABI static void __append_source(__path_string& __dest, _Source const& __s) { - using _Traits = __is_pathable<_Source>; - __append_range(__dest, _Traits::__range_begin(__s), _Traits::__range_end(__s)); - } -}; -# endif // _LIBCPP_HAS_LOCALIZATION - -template <> -struct _PathCVT<__path_value> { - template <class _Iter> - _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { - if constexpr (__has_forward_iterator_category<_Iter>::value) { - __dest.append(__b, __e); - } else { - for (; __b != __e; ++__b) - __dest.push_back(*__b); - } - } - - template <class _Iter> - _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { - const char __sentinel = char{}; - for (; *__b != __sentinel; ++__b) - __dest.push_back(*__b); - } - - template <class _Source> - _LIBCPP_HIDE_FROM_ABI static void __append_source(__path_string& __dest, _Source const& __s) { - using _Traits = __is_pathable<_Source>; - __append_range(__dest, _Traits::__range_begin(__s), _Traits::__range_end(__s)); - } -}; - -# if defined(_LIBCPP_WIN32API) -template <> -struct _PathCVT<char> { - _LIBCPP_HIDE_FROM_ABI static void __append_string(__path_string& __dest, const basic_string<char>& __str) { - size_t __size = __char_to_wide(__str, nullptr, 0); - size_t __pos = __dest.size(); - __dest.resize(__pos + __size); - __char_to_wide(__str, const_cast<__path_value*>(__dest.data()) + __pos, __size); - } - - template <class _Iter> - _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _Iter __e) { - basic_string<char> __tmp(__b, __e); - __append_string(__dest, __tmp); - } - - template <class _Iter> - _LIBCPP_HIDE_FROM_ABI static void __append_range(__path_string& __dest, _Iter __b, _NullSentinel) { - const char __sentinel = char{}; - basic_string<char> __tmp; - for (; *__b != __sentinel; ++__b) - __tmp.push_back(*__b); - __append_string(__dest, __tmp); - } - - template <class _Source> - _LIBCPP_HIDE_FROM_ABI static void __append_source(__path_string& __dest, _Source const& __s) { - using _Traits = __is_pathable<_Source>; - __append_range(__dest, _Traits::__range_begin(__s), _Traits::__range_end(__s)); - } -}; - -# if _LIBCPP_HAS_LOCALIZATION -template <class _ECharT> -struct _PathExport { - typedef __narrow_to_utf8<sizeof(wchar_t) * __CHAR_BIT__> _Narrower; - typedef __widen_from_utf8<sizeof(_ECharT) * __CHAR_BIT__> _Widener; - - template <class _Str> - _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { - string __utf8; - _Narrower()(back_inserter(__utf8), __src.data(), __src.data() + __src.size()); - _Widener()(back_inserter(__dest), __utf8.data(), __utf8.data() + __utf8.size()); - } -}; - -template <> -struct _PathExport<char> { - template <class _Str> - _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { - size_t __size = __wide_to_char(__src, nullptr, 0); - size_t __pos = __dest.size(); - __dest.resize(__size); - __wide_to_char(__src, const_cast<char*>(__dest.data()) + __pos, __size); - } -}; - -template <> -struct _PathExport<wchar_t> { - template <class _Str> - _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { - __dest.append(__src.begin(), __src.end()); - } -}; - -template <> -struct _PathExport<char16_t> { - template <class _Str> - _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { - __dest.append(__src.begin(), __src.end()); - } -}; - -# if _LIBCPP_HAS_CHAR8_T -template <> -struct _PathExport<char8_t> { - typedef __narrow_to_utf8<sizeof(wchar_t) * __CHAR_BIT__> _Narrower; - - template <class _Str> - _LIBCPP_HIDE_FROM_ABI static void __append(_Str& __dest, const __path_string& __src) { - _Narrower()(back_inserter(__dest), __src.data(), __src.data() + __src.size()); - } -}; -# endif // _LIBCPP_HAS_CHAR8_T -# endif // _LIBCPP_HAS_LOCALIZATION -# endif // _LIBCPP_WIN32API - -class _LIBCPP_EXPORTED_FROM_ABI path { - template <class _SourceOrIter, class _Tp = path&> - using _EnableIfPathable _LIBCPP_NODEBUG = __enable_if_t<__is_pathable<_SourceOrIter>::value, _Tp>; - - template <class _Tp> - using _SourceChar _LIBCPP_NODEBUG = typename __is_pathable<_Tp>::__char_type; - - template <class _Tp> - using _SourceCVT _LIBCPP_NODEBUG = _PathCVT<_SourceChar<_Tp> >; - -public: -# if defined(_LIBCPP_WIN32API) - typedef wchar_t value_type; - static constexpr value_type preferred_separator = L'\\'; -# else - typedef char value_type; - static constexpr value_type preferred_separator = '/'; -# endif - typedef basic_string<value_type> string_type; - typedef basic_string_view<value_type> __string_view; - - enum format : unsigned char { auto_format, native_format, generic_format }; - - // constructors and destructor - _LIBCPP_HIDE_FROM_ABI path() noexcept {} - _LIBCPP_HIDE_FROM_ABI path(const path& __p) : __pn_(__p.__pn_) {} - _LIBCPP_HIDE_FROM_ABI path(path&& __p) noexcept : __pn_(std::move(__p.__pn_)) {} - - _LIBCPP_HIDE_FROM_ABI path(string_type&& __s, format = format::auto_format) noexcept : __pn_(std::move(__s)) {} - - template <class _Source, class = _EnableIfPathable<_Source, void> > - _LIBCPP_HIDE_FROM_ABI path(const _Source& __src, format = format::auto_format) { - _SourceCVT<_Source>::__append_source(__pn_, __src); - } - - template <class _InputIt> - _LIBCPP_HIDE_FROM_ABI path(_InputIt __first, _InputIt __last, format = format::auto_format) { - typedef typename iterator_traits<_InputIt>::value_type _ItVal; - _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); - } - - /* - #if _LIBCPP_HAS_LOCALIZATION - // TODO Implement locale conversions. - template <class _Source, class = _EnableIfPathable<_Source, void> > - path(const _Source& __src, const locale& __loc, format = format::auto_format); - template <class _InputIt> - path(_InputIt __first, _InputIt _last, const locale& __loc, - format = format::auto_format); - #endif - */ - - _LIBCPP_HIDE_FROM_ABI ~path() = default; - - // assignments - _LIBCPP_HIDE_FROM_ABI path& operator=(const path& __p) { - __pn_ = __p.__pn_; - return *this; - } - - _LIBCPP_HIDE_FROM_ABI path& operator=(path&& __p) noexcept { - __pn_ = std::move(__p.__pn_); - return *this; - } - - _LIBCPP_HIDE_FROM_ABI path& operator=(string_type&& __s) noexcept { - __pn_ = std::move(__s); - return *this; - } - - _LIBCPP_HIDE_FROM_ABI path& assign(string_type&& __s) noexcept _LIBCPP_LIFETIMEBOUND { - __pn_ = std::move(__s); - return *this; - } - - template <class _Source> - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> operator=(const _Source& __src) { - return this->assign(__src); - } - - template <class _Source> - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> assign(const _Source& __src) _LIBCPP_LIFETIMEBOUND { - __pn_.clear(); - _SourceCVT<_Source>::__append_source(__pn_, __src); - return *this; - } - - template <class _InputIt> - _LIBCPP_HIDE_FROM_ABI path& assign(_InputIt __first, _InputIt __last) _LIBCPP_LIFETIMEBOUND { - typedef typename iterator_traits<_InputIt>::value_type _ItVal; - __pn_.clear(); - _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); - return *this; - } - -public: - // appends -# if defined(_LIBCPP_WIN32API) - _LIBCPP_HIDE_FROM_ABI path& operator/=(const path& __p) { - auto __p_root_name = __p.__root_name(); - auto __p_root_name_size = __p_root_name.size(); - if (__p.is_absolute() || (!__p_root_name.empty() && __p_root_name != __string_view(root_name().__pn_))) { - __pn_ = __p.__pn_; - return *this; - } - if (__p.has_root_directory()) { - path __root_name_str = root_name(); - __pn_ = __root_name_str.native(); - __pn_ += __string_view(__p.__pn_).substr(__p_root_name_size); - return *this; - } - if (has_filename() || (!has_root_directory() && is_absolute())) - __pn_ += preferred_separator; - __pn_ += __string_view(__p.__pn_).substr(__p_root_name_size); - return *this; - } - template <class _Source> - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> operator/=(const _Source& __src) { - return operator/=(path(__src)); - } - - template <class _Source> - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> append(const _Source& __src) _LIBCPP_LIFETIMEBOUND { - return operator/=(path(__src)); - } - - template <class _InputIt> - _LIBCPP_HIDE_FROM_ABI path& append(_InputIt __first, _InputIt __last) _LIBCPP_LIFETIMEBOUND { - return operator/=(path(__first, __last)); - } -# else - _LIBCPP_HIDE_FROM_ABI path& operator/=(const path& __p) { - if (__p.is_absolute()) { - __pn_ = __p.__pn_; - return *this; - } - if (has_filename()) - __pn_ += preferred_separator; - __pn_ += __p.native(); - return *this; - } - - // FIXME: Use _LIBCPP_DIAGNOSE_WARNING to produce a diagnostic when __src - // is known at compile time to be "/' since the user almost certainly intended - // to append a separator instead of overwriting the path with "/" - template <class _Source> - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> operator/=(const _Source& __src) { - return this->append(__src); - } - - template <class _Source> - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> append(const _Source& __src) _LIBCPP_LIFETIMEBOUND { - using _Traits = __is_pathable<_Source>; - using _CVT = _PathCVT<_SourceChar<_Source> >; - bool __source_is_absolute = filesystem::__is_separator(_Traits::__first_or_null(__src)); - if (__source_is_absolute) - __pn_.clear(); - else if (has_filename()) - __pn_ += preferred_separator; - _CVT::__append_source(__pn_, __src); - return *this; - } - - template <class _InputIt> - _LIBCPP_HIDE_FROM_ABI path& append(_InputIt __first, _InputIt __last) _LIBCPP_LIFETIMEBOUND { - typedef typename iterator_traits<_InputIt>::value_type _ItVal; - static_assert(__can_convert_char<_ItVal>::value, "Must convertible"); - using _CVT = _PathCVT<_ItVal>; - if (__first != __last && filesystem::__is_separator(*__first)) - __pn_.clear(); - else if (has_filename()) - __pn_ += preferred_separator; - _CVT::__append_range(__pn_, __first, __last); - return *this; - } -# endif - - // concatenation - _LIBCPP_HIDE_FROM_ABI path& operator+=(const path& __x) { - __pn_ += __x.__pn_; - return *this; - } - - _LIBCPP_HIDE_FROM_ABI path& operator+=(const string_type& __x) { - __pn_ += __x; - return *this; - } - - _LIBCPP_HIDE_FROM_ABI path& operator+=(__string_view __x) { - __pn_ += __x; - return *this; - } - - _LIBCPP_HIDE_FROM_ABI path& operator+=(const value_type* __x) { - __pn_ += __x; - return *this; - } - - _LIBCPP_HIDE_FROM_ABI path& operator+=(value_type __x) { - __pn_ += __x; - return *this; - } - - template <class _ECharT, __enable_if_t<__can_convert_char<_ECharT>::value, int> = 0> - _LIBCPP_HIDE_FROM_ABI path& operator+=(_ECharT __x) { - _PathCVT<_ECharT>::__append_source(__pn_, basic_string_view<_ECharT>(std::addressof(__x), 1)); - return *this; - } - - template <class _Source> - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> operator+=(const _Source& __x) { - return this->concat(__x); - } - - template <class _Source> - _LIBCPP_HIDE_FROM_ABI _EnableIfPathable<_Source> concat(const _Source& __x) _LIBCPP_LIFETIMEBOUND { - _SourceCVT<_Source>::__append_source(__pn_, __x); - return *this; - } - - template <class _InputIt> - _LIBCPP_HIDE_FROM_ABI path& concat(_InputIt __first, _InputIt __last) _LIBCPP_LIFETIMEBOUND { - typedef typename iterator_traits<_InputIt>::value_type _ItVal; - _PathCVT<_ItVal>::__append_range(__pn_, __first, __last); - return *this; - } - - // modifiers - _LIBCPP_HIDE_FROM_ABI void clear() noexcept { __pn_.clear(); } - - _LIBCPP_HIDE_FROM_ABI path& make_preferred() _LIBCPP_LIFETIMEBOUND { -# if defined(_LIBCPP_WIN32API) - std::replace(__pn_.begin(), __pn_.end(), L'/', L'\\'); -# endif - return *this; - } - - _LIBCPP_HIDE_FROM_ABI path& remove_filename() _LIBCPP_LIFETIMEBOUND { - auto __fname = __filename(); - if (!__fname.empty()) - __pn_.erase(__fname.data() - __pn_.data()); - return *this; - } - - _LIBCPP_HIDE_FROM_ABI path& replace_filename(const path& __replacement) _LIBCPP_LIFETIMEBOUND { - remove_filename(); - return (*this /= __replacement); - } - - path& replace_extension(const path& __replacement = path()) _LIBCPP_LIFETIMEBOUND; - - friend _LIBCPP_HIDE_FROM_ABI bool operator==(const path& __lhs, const path& __rhs) noexcept { - return __lhs.__compare(__rhs.__pn_) == 0; - } -# if _LIBCPP_STD_VER <= 17 - friend _LIBCPP_HIDE_FROM_ABI bool operator!=(const path& __lhs, const path& __rhs) noexcept { - return __lhs.__compare(__rhs.__pn_) != 0; - } - friend _LIBCPP_HIDE_FROM_ABI bool operator<(const path& __lhs, const path& __rhs) noexcept { - return __lhs.__compare(__rhs.__pn_) < 0; - } - friend _LIBCPP_HIDE_FROM_ABI bool operator<=(const path& __lhs, const path& __rhs) noexcept { - return __lhs.__compare(__rhs.__pn_) <= 0; - } - friend _LIBCPP_HIDE_FROM_ABI bool operator>(const path& __lhs, const path& __rhs) noexcept { - return __lhs.__compare(__rhs.__pn_) > 0; - } - friend _LIBCPP_HIDE_FROM_ABI bool operator>=(const path& __lhs, const path& __rhs) noexcept { - return __lhs.__compare(__rhs.__pn_) >= 0; - } -# else // _LIBCPP_STD_VER <= 17 - friend _LIBCPP_HIDE_FROM_ABI strong_ordering operator<=>(const path& __lhs, const path& __rhs) noexcept { - return __lhs.__compare(__rhs.__pn_) <=> 0; - } -# endif // _LIBCPP_STD_VER <= 17 - - friend _LIBCPP_HIDE_FROM_ABI path operator/(const path& __lhs, const path& __rhs) { - path __result(__lhs); - __result /= __rhs; - return __result; - } - - _LIBCPP_HIDE_FROM_ABI void swap(path& __rhs) noexcept { __pn_.swap(__rhs.__pn_); } - - // private helper to allow reserving memory in the path - _LIBCPP_HIDE_FROM_ABI void __reserve(size_t __s) { __pn_.reserve(__s); } - - // native format observers - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const string_type& native() const noexcept _LIBCPP_LIFETIMEBOUND { return __pn_; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const value_type* c_str() const noexcept _LIBCPP_LIFETIMEBOUND { - return __pn_.c_str(); - } - - _LIBCPP_HIDE_FROM_ABI operator string_type() const { return __pn_; } - -# if defined(_LIBCPP_WIN32API) - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::wstring wstring() const { return __pn_; } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::wstring generic_wstring() const { - std::wstring __s; - __s.resize(__pn_.size()); - std::replace_copy(__pn_.begin(), __pn_.end(), __s.begin(), '\\', '/'); - return __s; - } - -# if _LIBCPP_HAS_LOCALIZATION - template <class _ECharT, class _Traits = char_traits<_ECharT>, class _Allocator = allocator<_ECharT> > - [[nodiscard]] - _LIBCPP_HIDE_FROM_ABI basic_string<_ECharT, _Traits, _Allocator> string(const _Allocator& __a = _Allocator()) const { - using _Str = basic_string<_ECharT, _Traits, _Allocator>; - _Str __s(__a); - __s.reserve(__pn_.size()); - _PathExport<_ECharT>::__append(__s, __pn_); - return __s; - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::string string() const { return string<char>(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI __u8_string u8string() const { - using _CVT = __narrow_to_utf8<sizeof(wchar_t) * __CHAR_BIT__>; - __u8_string __s; - __s.reserve(__pn_.size()); - _CVT()(back_inserter(__s), __pn_.data(), __pn_.data() + __pn_.size()); - return __s; - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u16string u16string() const { return string<char16_t>(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u32string u32string() const { return string<char32_t>(); } - - // generic format observers - template <class _ECharT, class _Traits = char_traits<_ECharT>, class _Allocator = allocator<_ECharT> > - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI basic_string<_ECharT, _Traits, _Allocator> - generic_string(const _Allocator& __a = _Allocator()) const { - using _Str = basic_string<_ECharT, _Traits, _Allocator>; - _Str __s = string<_ECharT, _Traits, _Allocator>(__a); - // Note: This (and generic_u8string below) is slightly suboptimal as - // it iterates twice over the string; once to convert it to the right - // character type, and once to replace path delimiters. - std::replace(__s.begin(), __s.end(), static_cast<_ECharT>('\\'), static_cast<_ECharT>('/')); - return __s; - } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::string generic_string() const { return generic_string<char>(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u16string generic_u16string() const { return generic_string<char16_t>(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u32string generic_u32string() const { return generic_string<char32_t>(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI __u8_string generic_u8string() const { - __u8_string __s = u8string(); - std::replace(__s.begin(), __s.end(), '\\', '/'); - return __s; - } -# endif // _LIBCPP_HAS_LOCALIZATION -# else /* _LIBCPP_WIN32API */ - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::string string() const { return __pn_; } -# if _LIBCPP_HAS_CHAR8_T - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u8string u8string() const { - return std::u8string(__pn_.begin(), __pn_.end()); - } -# else - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::string u8string() const { return __pn_; } -# endif - -# if _LIBCPP_HAS_LOCALIZATION - template <class _ECharT, class _Traits = char_traits<_ECharT>, class _Allocator = allocator<_ECharT> > - [[nodiscard]] - _LIBCPP_HIDE_FROM_ABI basic_string<_ECharT, _Traits, _Allocator> string(const _Allocator& __a = _Allocator()) const { - using _CVT = __widen_from_utf8<sizeof(_ECharT) * __CHAR_BIT__>; - using _Str = basic_string<_ECharT, _Traits, _Allocator>; - _Str __s(__a); - __s.reserve(__pn_.size()); - _CVT()(std::back_inserter(__s), __pn_.data(), __pn_.data() + __pn_.size()); - return __s; - } - -# if _LIBCPP_HAS_WIDE_CHARACTERS - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::wstring wstring() const { return string<wchar_t>(); } -# endif - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u16string u16string() const { return string<char16_t>(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u32string u32string() const { return string<char32_t>(); } -# endif // _LIBCPP_HAS_LOCALIZATION - - // generic format observers - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::string generic_string() const { return __pn_; } -# if _LIBCPP_HAS_CHAR8_T - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u8string generic_u8string() const { - return std::u8string(__pn_.begin(), __pn_.end()); - } -# else - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::string generic_u8string() const { return __pn_; } -# endif - -# if _LIBCPP_HAS_LOCALIZATION - template <class _ECharT, class _Traits = char_traits<_ECharT>, class _Allocator = allocator<_ECharT> > - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI basic_string<_ECharT, _Traits, _Allocator> - generic_string(const _Allocator& __a = _Allocator()) const { - return string<_ECharT, _Traits, _Allocator>(__a); - } - -# if _LIBCPP_HAS_WIDE_CHARACTERS - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::wstring generic_wstring() const { return string<wchar_t>(); } -# endif - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u16string generic_u16string() const { return string<char16_t>(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI std::u32string generic_u32string() const { return string<char32_t>(); } -# endif // _LIBCPP_HAS_LOCALIZATION -# endif /* !_LIBCPP_WIN32API */ - -private: - int __compare(__string_view) const; - __string_view __root_name() const; - __string_view __root_directory() const; - __string_view __root_path_raw() const; - __string_view __relative_path() const; - __string_view __parent_path() const; - __string_view __filename() const; - __string_view __stem() const; - __string_view __extension() const; - -public: - // compare - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI int compare(const path& __p) const noexcept { return __compare(__p.__pn_); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI int compare(const string_type& __s) const { return __compare(__s); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI int compare(__string_view __s) const { return __compare(__s); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI int compare(const value_type* __s) const { return __compare(__s); } - - // decomposition - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI path root_name() const { return string_type(__root_name()); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI path root_directory() const { return string_type(__root_directory()); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI path root_path() const { -# if defined(_LIBCPP_WIN32API) - return string_type(__root_path_raw()); -# else - return root_name().append(string_type(__root_directory())); -# endif - } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI path relative_path() const { return string_type(__relative_path()); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI path parent_path() const { return string_type(__parent_path()); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI path filename() const { return string_type(__filename()); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI path stem() const { return string_type(__stem()); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI path extension() const { return string_type(__extension()); } - - // query - [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI bool empty() const noexcept { return __pn_.empty(); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool has_root_name() const { return !__root_name().empty(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool has_root_directory() const { return !__root_directory().empty(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool has_root_path() const { return !__root_path_raw().empty(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool has_relative_path() const { return !__relative_path().empty(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool has_parent_path() const { return !__parent_path().empty(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool has_filename() const { return !__filename().empty(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool has_stem() const { return !__stem().empty(); } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool has_extension() const { return !__extension().empty(); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_absolute() const { -# if defined(_LIBCPP_WIN32API) - __string_view __root_name_str = __root_name(); - __string_view __root_dir = __root_directory(); - if (__root_name_str.size() == 2 && __root_name_str[1] == ':') { - // A drive letter with no root directory is relative, e.g. x:example. - return !__root_dir.empty(); - } - // If no root name, it's relative, e.g. \example is relative to the current drive - if (__root_name_str.empty()) - return false; - if (__root_name_str.size() < 3) - return false; - // A server root name, like \\server, is always absolute - if (__root_name_str[0] != '/' && __root_name_str[0] != '\\') - return false; - if (__root_name_str[1] != '/' && __root_name_str[1] != '\\') - return false; - // Seems to be a server root name - return true; -# else - return has_root_directory(); -# endif - } - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_relative() const { return !is_absolute(); } - - // relative paths - [[nodiscard]] path lexically_normal() const; - [[nodiscard]] path lexically_relative(const path& __base) const; - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI path lexically_proximate(const path& __base) const { - path __result = this->lexically_relative(__base); - if (__result.native().empty()) - return *this; - return __result; - } - - // iterators - class iterator; - typedef iterator const_iterator; - - [[nodiscard]] iterator begin() const; - [[nodiscard]] iterator end() const; - -# if _LIBCPP_HAS_LOCALIZATION - template <class _CharT, class _Traits> - _LIBCPP_HIDE_FROM_ABI friend basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const path& __p) { - if constexpr (is_same<_CharT, value_type>::value && is_same<_Traits, char_traits<value_type> >::value) - __os << std::quoted(__p.native()); - else - __os << std::quoted(__p.string<_CharT, _Traits>()); - return __os; - } - - template <class _CharT, class _Traits> - _LIBCPP_HIDE_FROM_ABI friend basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, path& __p) { - basic_string<_CharT, _Traits> __tmp; - __is >> std::quoted(__tmp); - __p = __tmp; - return __is; - } -# endif // _LIBCPP_HAS_LOCALIZATION - -private: - inline _LIBCPP_HIDE_FROM_ABI path& __assign_view(__string_view const& __s) { - __pn_ = string_type(__s); - return *this; - } - string_type __pn_; -}; - -inline _LIBCPP_HIDE_FROM_ABI void swap(path& __lhs, path& __rhs) noexcept { __lhs.swap(__rhs); } - -[[nodiscard]] _LIBCPP_EXPORTED_FROM_ABI size_t hash_value(const path& __p) noexcept; - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -_LIBCPP_BEGIN_NAMESPACE_STD - -template <> -struct hash<filesystem::path> : __unary_function<filesystem::path, size_t> { - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_t operator()(filesystem::path const& __p) const noexcept { - return filesystem::hash_value(__p); - } -}; - -_LIBCPP_END_NAMESPACE_STD - -#endif // _LIBCPP_STD_VER >= 17 - -_LIBCPP_POP_MACROS - -#endif // _LIBCPP___FILESYSTEM_PATH_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/path_iterator.h b/third_party/libcxx/include/c++/v1/__filesystem/path_iterator.h deleted file mode 100644 index dd408a7..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/path_iterator.h +++ /dev/null @@ -1,110 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_PATH_ITERATOR_H -#define _LIBCPP___FILESYSTEM_PATH_ITERATOR_H - -#include <__assert> -#include <__config> -#include <__filesystem/path.h> -#include <__iterator/iterator_traits.h> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -class _LIBCPP_EXPORTED_FROM_ABI path::iterator { -public: - enum _ParserState : unsigned char { - _Singular, - _BeforeBegin, - _InRootName, - _InRootDir, - _InFilenames, - _InTrailingSep, - _AtEnd - }; - -public: - typedef input_iterator_tag iterator_category; - typedef bidirectional_iterator_tag iterator_concept; - - typedef path value_type; - typedef ptrdiff_t difference_type; - typedef const path* pointer; - typedef path reference; - -public: - _LIBCPP_HIDE_FROM_ABI iterator() : __stashed_elem_(), __path_ptr_(nullptr), __entry_(), __state_(_Singular) {} - - _LIBCPP_HIDE_FROM_ABI iterator(const iterator&) = default; - _LIBCPP_HIDE_FROM_ABI ~iterator() = default; - - _LIBCPP_HIDE_FROM_ABI iterator& operator=(const iterator&) = default; - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI reference operator*() const { return __stashed_elem_; } - - _LIBCPP_HIDE_FROM_ABI pointer operator->() const { return &__stashed_elem_; } - - _LIBCPP_HIDE_FROM_ABI iterator& operator++() { - _LIBCPP_ASSERT_NON_NULL(__state_ != _Singular, "attempting to increment a singular iterator"); - _LIBCPP_ASSERT_UNCATEGORIZED(__state_ != _AtEnd, "attempting to increment the end iterator"); - return __increment(); - } - - _LIBCPP_HIDE_FROM_ABI iterator operator++(int) { - iterator __it(*this); - this->operator++(); - return __it; - } - - _LIBCPP_HIDE_FROM_ABI iterator& operator--() { - _LIBCPP_ASSERT_NON_NULL(__state_ != _Singular, "attempting to decrement a singular iterator"); - _LIBCPP_ASSERT_UNCATEGORIZED( - __entry_.data() != __path_ptr_->native().data(), "attempting to decrement the begin iterator"); - return __decrement(); - } - - _LIBCPP_HIDE_FROM_ABI iterator operator--(int) { - iterator __it(*this); - this->operator--(); - return __it; - } - -private: - friend class path; - - inline _LIBCPP_HIDE_FROM_ABI friend bool operator==(const iterator&, const iterator&); - - iterator& __increment(); - iterator& __decrement(); - - path __stashed_elem_; - const path* __path_ptr_; - path::__string_view __entry_; - _ParserState __state_; -}; - -inline _LIBCPP_HIDE_FROM_ABI bool operator==(const path::iterator& __lhs, const path::iterator& __rhs) { - return __lhs.__path_ptr_ == __rhs.__path_ptr_ && __lhs.__entry_.data() == __rhs.__entry_.data(); -} - -inline _LIBCPP_HIDE_FROM_ABI bool operator!=(const path::iterator& __lhs, const path::iterator& __rhs) { - return !(__lhs == __rhs); -} - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_PATH_ITERATOR_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/perm_options.h b/third_party/libcxx/include/c++/v1/__filesystem/perm_options.h deleted file mode 100644 index a2ab733..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/perm_options.h +++ /dev/null @@ -1,57 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_PERM_OPTIONS_H -#define _LIBCPP___FILESYSTEM_PERM_OPTIONS_H - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -enum class perm_options : unsigned char { replace = 1, add = 2, remove = 4, nofollow = 8 }; - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr perm_options operator&(perm_options __lhs, perm_options __rhs) { - return static_cast<perm_options>(static_cast<unsigned>(__lhs) & static_cast<unsigned>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr perm_options operator|(perm_options __lhs, perm_options __rhs) { - return static_cast<perm_options>(static_cast<unsigned>(__lhs) | static_cast<unsigned>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr perm_options operator^(perm_options __lhs, perm_options __rhs) { - return static_cast<perm_options>(static_cast<unsigned>(__lhs) ^ static_cast<unsigned>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr perm_options operator~(perm_options __lhs) { - return static_cast<perm_options>(~static_cast<unsigned>(__lhs)); -} - -_LIBCPP_HIDE_FROM_ABI inline perm_options& operator&=(perm_options& __lhs, perm_options __rhs) { - return __lhs = __lhs & __rhs; -} - -_LIBCPP_HIDE_FROM_ABI inline perm_options& operator|=(perm_options& __lhs, perm_options __rhs) { - return __lhs = __lhs | __rhs; -} - -_LIBCPP_HIDE_FROM_ABI inline perm_options& operator^=(perm_options& __lhs, perm_options __rhs) { - return __lhs = __lhs ^ __rhs; -} - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_PERM_OPTIONS_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/perms.h b/third_party/libcxx/include/c++/v1/__filesystem/perms.h deleted file mode 100644 index 042f249..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/perms.h +++ /dev/null @@ -1,80 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_PERMS_H -#define _LIBCPP___FILESYSTEM_PERMS_H - -#include <__config> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -// On Windows, these permission bits map to one single readonly flag per -// file, and the executable bit is always returned as set. When setting -// permissions, as long as the write bit is set for either owner, group or -// others, the readonly flag is cleared. -enum class perms : unsigned { - none = 0, - - owner_read = 0400, - owner_write = 0200, - owner_exec = 0100, - owner_all = 0700, - - group_read = 040, - group_write = 020, - group_exec = 010, - group_all = 070, - - others_read = 04, - others_write = 02, - others_exec = 01, - others_all = 07, - - all = 0777, - - set_uid = 04000, - set_gid = 02000, - sticky_bit = 01000, - mask = 07777, - unknown = 0xFFFF, -}; - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr perms operator&(perms __lhs, perms __rhs) { - return static_cast<perms>(static_cast<unsigned>(__lhs) & static_cast<unsigned>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr perms operator|(perms __lhs, perms __rhs) { - return static_cast<perms>(static_cast<unsigned>(__lhs) | static_cast<unsigned>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr perms operator^(perms __lhs, perms __rhs) { - return static_cast<perms>(static_cast<unsigned>(__lhs) ^ static_cast<unsigned>(__rhs)); -} - -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr perms operator~(perms __lhs) { - return static_cast<perms>(~static_cast<unsigned>(__lhs)); -} - -_LIBCPP_HIDE_FROM_ABI inline perms& operator&=(perms& __lhs, perms __rhs) { return __lhs = __lhs & __rhs; } - -_LIBCPP_HIDE_FROM_ABI inline perms& operator|=(perms& __lhs, perms __rhs) { return __lhs = __lhs | __rhs; } - -_LIBCPP_HIDE_FROM_ABI inline perms& operator^=(perms& __lhs, perms __rhs) { return __lhs = __lhs ^ __rhs; } - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_PERMS_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/recursive_directory_iterator.h b/third_party/libcxx/include/c++/v1/__filesystem/recursive_directory_iterator.h deleted file mode 100644 index 18165b0..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/recursive_directory_iterator.h +++ /dev/null @@ -1,158 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H -#define _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H - -#include <__config> -#include <__filesystem/directory_entry.h> -#include <__filesystem/directory_options.h> -#include <__filesystem/path.h> -#include <__iterator/default_sentinel.h> -#include <__iterator/iterator_traits.h> -#include <__memory/shared_ptr.h> -#include <__ranges/enable_borrowed_range.h> -#include <__ranges/enable_view.h> -#include <__system_error/error_code.h> -#include <__utility/move.h> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -_LIBCPP_PUSH_MACROS -#include <__undef_macros> - -#if _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -class recursive_directory_iterator { -public: - using value_type = directory_entry; - using difference_type = ptrdiff_t; - using pointer = directory_entry const*; - using reference = directory_entry const&; - using iterator_category = input_iterator_tag; - -public: - // constructors and destructor - _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator() noexcept : __rec_(false) {} - - _LIBCPP_HIDE_FROM_ABI explicit recursive_directory_iterator( - const path& __p, directory_options __xoptions = directory_options::none) - : recursive_directory_iterator(__p, __xoptions, nullptr) {} - - _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(const path& __p, directory_options __xoptions, error_code& __ec) - : recursive_directory_iterator(__p, __xoptions, &__ec) {} - - _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(const path& __p, error_code& __ec) - : recursive_directory_iterator(__p, directory_options::none, &__ec) {} - - _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(const recursive_directory_iterator&) = default; - _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator(recursive_directory_iterator&&) = default; - - _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default; - - _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& operator=(recursive_directory_iterator&& __o) noexcept { - // non-default implementation provided to support self-move assign. - if (this != &__o) { - __imp_ = std::move(__o.__imp_); - __rec_ = __o.__rec_; - } - return *this; - } - - _LIBCPP_HIDE_FROM_ABI ~recursive_directory_iterator() = default; - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const directory_entry& operator*() const { return __dereference(); } - - _LIBCPP_HIDE_FROM_ABI const directory_entry* operator->() const { return &__dereference(); } - - _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& operator++() { return __increment(); } - - _LIBCPP_HIDE_FROM_ABI __dir_element_proxy operator++(int) { - __dir_element_proxy __p(**this); - __increment(); - return __p; - } - - _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator& increment(error_code& __ec) { return __increment(&__ec); } - - [[nodiscard]] _LIBCPP_EXPORTED_FROM_ABI directory_options options() const; - [[nodiscard]] _LIBCPP_EXPORTED_FROM_ABI int depth() const; - - _LIBCPP_HIDE_FROM_ABI void pop() { __pop(); } - - _LIBCPP_HIDE_FROM_ABI void pop(error_code& __ec) { __pop(&__ec); } - - [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool recursion_pending() const { return __rec_; } - - _LIBCPP_HIDE_FROM_ABI void disable_recursion_pending() { __rec_ = false; } - -# if _LIBCPP_STD_VER >= 20 - - _LIBCPP_HIDE_FROM_ABI bool operator==(default_sentinel_t) const noexcept { - return *this == recursive_directory_iterator(); - } - -# endif - -private: - _LIBCPP_EXPORTED_FROM_ABI recursive_directory_iterator(const path& __p, directory_options __opt, error_code* __ec); - _LIBCPP_EXPORTED_FROM_ABI const directory_entry& __dereference() const; - _LIBCPP_EXPORTED_FROM_ABI bool __try_recursion(error_code* __ec); - _LIBCPP_EXPORTED_FROM_ABI void __advance(error_code* __ec = nullptr); - _LIBCPP_EXPORTED_FROM_ABI recursive_directory_iterator& __increment(error_code* __ec = nullptr); - _LIBCPP_EXPORTED_FROM_ABI void __pop(error_code* __ec = nullptr); - - inline _LIBCPP_HIDE_FROM_ABI friend bool - operator==(const recursive_directory_iterator&, const recursive_directory_iterator&) noexcept; - - struct _LIBCPP_HIDDEN __shared_imp; - shared_ptr<__shared_imp> __imp_; - bool __rec_; -}; // class recursive_directory_iterator - -inline _LIBCPP_HIDE_FROM_ABI bool -operator==(const recursive_directory_iterator& __lhs, const recursive_directory_iterator& __rhs) noexcept { - return __lhs.__imp_ == __rhs.__imp_; -} - -_LIBCPP_HIDE_FROM_ABI inline bool -operator!=(const recursive_directory_iterator& __lhs, const recursive_directory_iterator& __rhs) noexcept { - return !(__lhs == __rhs); -} -// enable recursive_directory_iterator range-based for statements -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator -begin(recursive_directory_iterator __iter) noexcept { - return __iter; -} - -[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI recursive_directory_iterator end(recursive_directory_iterator) noexcept { - return recursive_directory_iterator(); -} - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -# if _LIBCPP_STD_VER >= 20 - -template <> -inline constexpr bool std::ranges::enable_borrowed_range<std::filesystem::recursive_directory_iterator> = true; - -template <> -inline constexpr bool std::ranges::enable_view<std::filesystem::recursive_directory_iterator> = true; - -# endif // _LIBCPP_STD_VER >= 20 - -#endif // _LIBCPP_STD_VER >= 17 && _LIBCPP_HAS_FILESYSTEM - -_LIBCPP_POP_MACROS - -#endif // _LIBCPP___FILESYSTEM_RECURSIVE_DIRECTORY_ITERATOR_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/space_info.h b/third_party/libcxx/include/c++/v1/__filesystem/space_info.h deleted file mode 100644 index 28f7ced..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/space_info.h +++ /dev/null @@ -1,38 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_SPACE_INFO_H -#define _LIBCPP___FILESYSTEM_SPACE_INFO_H - -#include <__config> -#include <cstdint> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -struct space_info { - uintmax_t capacity; - uintmax_t free; - uintmax_t available; - -# if _LIBCPP_STD_VER >= 20 - friend _LIBCPP_HIDE_FROM_ABI bool operator==(const space_info&, const space_info&) = default; -# endif -}; - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_SPACE_INFO_H diff --git a/third_party/libcxx/include/c++/v1/__filesystem/u8path.h b/third_party/libcxx/include/c++/v1/__filesystem/u8path.h deleted file mode 100644 index aabd2bb..0000000 --- a/third_party/libcxx/include/c++/v1/__filesystem/u8path.h +++ /dev/null @@ -1,93 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// 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___FILESYSTEM_U8PATH_H -#define _LIBCPP___FILESYSTEM_U8PATH_H - -#include <__algorithm/unwrap_iter.h> -#include <__config> -#include <__filesystem/path.h> -#include <__locale> -#include <string> - -#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) -# pragma GCC system_header -#endif - -#if _LIBCPP_STD_VER >= 17 - -_LIBCPP_BEGIN_NAMESPACE_FILESYSTEM - -# if !defined(_LIBCPP_WIN32API) || _LIBCPP_HAS_LOCALIZATION -template <class _InputIt, __enable_if_t<__is_pathable<_InputIt>::value, int> = 0> -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_WITH_CHAR8_T path u8path(_InputIt __f, _InputIt __l) { - static_assert( -# if _LIBCPP_HAS_CHAR8_T - is_same<typename __is_pathable<_InputIt>::__char_type, char8_t>::value || -# endif - is_same<typename __is_pathable<_InputIt>::__char_type, char>::value, - "u8path(Iter, Iter) requires Iter have a value_type of type 'char'" - " or 'char8_t'"); -# if defined(_LIBCPP_WIN32API) - string __tmp(__f, __l); - using _CVT = __widen_from_utf8<sizeof(wchar_t) * __CHAR_BIT__>; - std::wstring __w; - __w.reserve(__tmp.size()); - _CVT()(back_inserter(__w), __tmp.data(), __tmp.data() + __tmp.size()); - return path(__w); -# else - return path(__f, __l); -# endif // defined(_LIBCPP_WIN32API) -} -# endif // !defined(_LIBCPP_WIN32API) || _LIBCPP_HAS_LOCALIZATION - -# if defined(_LIBCPP_WIN32API) && _LIBCPP_HAS_LOCALIZATION -template <class _InputIt, __enable_if_t<__is_pathable<_InputIt>::value, int> = 0> -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_WITH_CHAR8_T path u8path(_InputIt __f, _NullSentinel) { - static_assert( -# if _LIBCPP_HAS_CHAR8_T - is_same<typename __is_pathable<_InputIt>::__char_type, char8_t>::value || -# endif - is_same<typename __is_pathable<_InputIt>::__char_type, char>::value, - "u8path(Iter, Iter) requires Iter have a value_type of type 'char'" - " or 'char8_t'"); - string __tmp; - const char __sentinel = char{}; - for (; *__f != __sentinel; ++__f) - __tmp.push_back(*__f); - using _CVT = __widen_from_utf8<sizeof(wchar_t) * __CHAR_BIT__>; - std::wstring __w; - __w.reserve(__tmp.size()); - _CVT()(back_inserter(__w), __tmp.data(), __tmp.data() + __tmp.size()); - return path(__w); -} -# endif // defined(_LIBCPP_WIN32API) && _LIBCPP_HAS_LOCALIZATION - -template <class _Source, __enable_if_t<__is_pathable<_Source>::value, int> = 0> -[[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_WITH_CHAR8_T path u8path(const _Source& __s) { - static_assert( -# if _LIBCPP_HAS_CHAR8_T - is_same<typename __is_pathable<_Source>::__char_type, char8_t>::value || -# endif - is_same<typename __is_pathable<_Source>::__char_type, char>::value, - "u8path(Source const&) requires Source have a character type of type " - "'char' or 'char8_t'"); -# if defined(_LIBCPP_WIN32API) - using _Traits = __is_pathable<_Source>; - return u8path(std::__unwrap_iter(_Traits::__range_begin(__s)), std::__unwrap_iter(_Traits::__range_end(__s))); -# else - return path(__s); -# endif -} - -_LIBCPP_END_NAMESPACE_FILESYSTEM - -#endif // _LIBCPP_STD_VER >= 17 - -#endif // _LIBCPP___FILESYSTEM_U8PATH_H |
