mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-26 22:38:30 +00:00
Release Cosmopolitan v3.6.0
This release is an atomic upgrade to GCC 14.1.0 with C23 and C++23
This commit is contained in:
parent
62ace3623a
commit
5660ec4741
1585 changed files with 117353 additions and 271644 deletions
151
third_party/libcxx/filesystem
vendored
151
third_party/libcxx/filesystem
vendored
|
@ -236,19 +236,120 @@
|
|||
friend class directory_iterator; // exposition only
|
||||
};
|
||||
|
||||
class directory_iterator;
|
||||
class directory_iterator {
|
||||
public:
|
||||
using iterator_category = input_iterator_tag;
|
||||
using value_type = directory_entry;
|
||||
using difference_type = ptrdiff_t;
|
||||
using pointer = const directory_entry*;
|
||||
using reference = const directory_entry&;
|
||||
|
||||
// [fs.dir.itr.members], member functions
|
||||
directory_iterator() noexcept;
|
||||
explicit directory_iterator(const path& p);
|
||||
directory_iterator(const path& p, directory_options options);
|
||||
directory_iterator(const path& p, error_code& ec);
|
||||
directory_iterator(const path& p, directory_options options,
|
||||
error_code& ec);
|
||||
directory_iterator(const directory_iterator& rhs);
|
||||
directory_iterator(directory_iterator&& rhs) noexcept;
|
||||
~directory_iterator();
|
||||
|
||||
directory_iterator& operator=(const directory_iterator& rhs);
|
||||
directory_iterator& operator=(directory_iterator&& rhs) noexcept;
|
||||
|
||||
const directory_entry& operator*() const;
|
||||
const directory_entry* operator->() const;
|
||||
directory_iterator& operator++();
|
||||
directory_iterator& increment(error_code& ec);
|
||||
|
||||
bool operator==(default_sentinel_t) const noexcept { // since C++20
|
||||
return *this == directory_iterator();
|
||||
}
|
||||
|
||||
// other members as required by [input.iterators], input iterators
|
||||
};
|
||||
|
||||
// enable directory_iterator range-based for statements
|
||||
directory_iterator begin(directory_iterator iter) noexcept;
|
||||
directory_iterator end(directory_iterator) noexcept;
|
||||
|
||||
class recursive_directory_iterator;
|
||||
class recursive_directory_iterator {
|
||||
public:
|
||||
using iterator_category = input_iterator_tag;
|
||||
using value_type = directory_entry;
|
||||
using difference_type = ptrdiff_t;
|
||||
using pointer = const directory_entry*;
|
||||
using reference = const directory_entry&;
|
||||
|
||||
// [fs.rec.dir.itr.members], constructors and destructor
|
||||
recursive_directory_iterator() noexcept;
|
||||
explicit recursive_directory_iterator(const path& p);
|
||||
recursive_directory_iterator(const path& p, directory_options options);
|
||||
recursive_directory_iterator(const path& p, directory_options options,
|
||||
error_code& ec);
|
||||
recursive_directory_iterator(const path& p, error_code& ec);
|
||||
recursive_directory_iterator(const recursive_directory_iterator& rhs);
|
||||
recursive_directory_iterator(recursive_directory_iterator&& rhs) noexcept;
|
||||
~recursive_directory_iterator();
|
||||
|
||||
// [fs.rec.dir.itr.members], observers
|
||||
directory_options options() const;
|
||||
int depth() const;
|
||||
bool recursion_pending() const;
|
||||
|
||||
const directory_entry& operator*() const;
|
||||
const directory_entry* operator->() const;
|
||||
|
||||
// [fs.rec.dir.itr.members], modifiers
|
||||
recursive_directory_iterator&
|
||||
operator=(const recursive_directory_iterator& rhs);
|
||||
recursive_directory_iterator&
|
||||
operator=(recursive_directory_iterator&& rhs) noexcept;
|
||||
|
||||
recursive_directory_iterator& operator++();
|
||||
recursive_directory_iterator& increment(error_code& ec);
|
||||
|
||||
void pop();
|
||||
void pop(error_code& ec);
|
||||
void disable_recursion_pending();
|
||||
|
||||
bool operator==(default_sentinel_t) const noexcept { // since C++20
|
||||
return *this == recursive_directory_iterator();
|
||||
}
|
||||
|
||||
// other members as required by [input.iterators], input iterators
|
||||
};
|
||||
|
||||
// enable recursive_directory_iterator range-based for statements
|
||||
recursive_directory_iterator begin(recursive_directory_iterator iter) noexcept;
|
||||
recursive_directory_iterator end(recursive_directory_iterator) noexcept;
|
||||
|
||||
class file_status;
|
||||
class file_status {
|
||||
public:
|
||||
// [fs.file.status.cons], constructors and destructor
|
||||
file_status() noexcept : file_status(file_type::none) {}
|
||||
explicit file_status(file_type ft,
|
||||
perms prms = perms::unknown) noexcept;
|
||||
file_status(const file_status&) noexcept = default;
|
||||
file_status(file_status&&) noexcept = default;
|
||||
~file_status();
|
||||
|
||||
// assignments
|
||||
file_status& operator=(const file_status&) noexcept = default;
|
||||
file_status& operator=(file_status&&) noexcept = default;
|
||||
|
||||
// [fs.file.status.mods], modifiers
|
||||
void type(file_type ft) noexcept;
|
||||
void permissions(perms prms) noexcept;
|
||||
|
||||
// [fs.file.status.obs], observers
|
||||
file_type type() const noexcept;
|
||||
perms permissions() const noexcept;
|
||||
|
||||
friend bool operator==(const file_status& lhs, const file_status& rhs) noexcept
|
||||
{ return lhs.type() == rhs.type() && lhs.permissions() == rhs.permissions(); } // C++20
|
||||
};
|
||||
|
||||
struct space_info
|
||||
{
|
||||
|
@ -432,24 +533,27 @@ inline constexpr bool std::ranges::enable_view<std::filesystem::recursive_direct
|
|||
|
||||
*/
|
||||
|
||||
#include <__assert> // all public C++ headers provide the assertion handler
|
||||
#include <__config>
|
||||
#include <__filesystem/copy_options.h>
|
||||
#include <__filesystem/directory_entry.h>
|
||||
#include <__filesystem/directory_iterator.h>
|
||||
#include <__filesystem/directory_options.h>
|
||||
#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/path_iterator.h>
|
||||
#include <__filesystem/perm_options.h>
|
||||
#include <__filesystem/perms.h>
|
||||
#include <__filesystem/recursive_directory_iterator.h>
|
||||
#include <__filesystem/space_info.h>
|
||||
#include <__filesystem/u8path.h>
|
||||
|
||||
#if _LIBCPP_STD_VER >= 17
|
||||
# include <__filesystem/copy_options.h>
|
||||
# include <__filesystem/directory_entry.h>
|
||||
# include <__filesystem/directory_iterator.h>
|
||||
# include <__filesystem/directory_options.h>
|
||||
# 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/path_iterator.h>
|
||||
# include <__filesystem/perm_options.h>
|
||||
# include <__filesystem/perms.h>
|
||||
# include <__filesystem/recursive_directory_iterator.h>
|
||||
# include <__filesystem/space_info.h>
|
||||
# include <__filesystem/u8path.h>
|
||||
#endif
|
||||
|
||||
#include <version>
|
||||
|
||||
// standard-mandated includes
|
||||
|
@ -457,10 +561,6 @@ inline constexpr bool std::ranges::enable_view<std::filesystem::recursive_direct
|
|||
// [fs.filesystem.syn]
|
||||
#include <compare>
|
||||
|
||||
#if defined(_LIBCPP_HAS_NO_FILESYSTEM_LIBRARY)
|
||||
# error "The <filesystem> library is not supported since libc++ has been configured without support for a filesystem."
|
||||
#endif
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
# pragma GCC system_header
|
||||
#endif
|
||||
|
@ -468,6 +568,9 @@ inline constexpr bool std::ranges::enable_view<std::filesystem::recursive_direct
|
|||
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
|
||||
# include <concepts>
|
||||
# include <cstdlib>
|
||||
# include <cstring>
|
||||
# include <iosfwd>
|
||||
# include <new>
|
||||
# include <system_error>
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue