aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxxcuda11/include/filesystem
diff options
context:
space:
mode:
authormikhnenko <mikhnenko@yandex-team.com>2024-11-13 19:49:47 +0300
committermikhnenko <mikhnenko@yandex-team.com>2024-11-13 20:05:17 +0300
commit3a1f180ce38fcdb92d6e67966a1c7e957ff9bcc9 (patch)
treee784fb8ca03783bbc1c10d76dc899a7328063657 /contrib/libs/cxxsupp/libcxxcuda11/include/filesystem
parent593d804b3cb5202c629726e873c66ce3eb20b1a7 (diff)
downloadydb-3a1f180ce38fcdb92d6e67966a1c7e957ff9bcc9.tar.gz
Freeze libcxx for cuda without c++20 support
commit_hash:c2eb32b5cb16638c17c6fc6900738f26ba6eca49
Diffstat (limited to 'contrib/libs/cxxsupp/libcxxcuda11/include/filesystem')
-rw-r--r--contrib/libs/cxxsupp/libcxxcuda11/include/filesystem571
1 files changed, 571 insertions, 0 deletions
diff --git a/contrib/libs/cxxsupp/libcxxcuda11/include/filesystem b/contrib/libs/cxxsupp/libcxxcuda11/include/filesystem
new file mode 100644
index 0000000000..99ba713ad0
--- /dev/null
+++ b/contrib/libs/cxxsupp/libcxxcuda11/include/filesystem
@@ -0,0 +1,571 @@
+// -*- 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
+#define _LIBCPP_FILESYSTEM
+
+/*
+ filesystem synopsis
+
+ namespace std::filesystem {
+
+ // `class path` from http://eel.is/c++draft/fs.class.path.general#6
+ class path {
+ public:
+ using value_type = see below;
+ using string_type = basic_string<value_type>;
+ static constexpr value_type preferred_separator = see below;
+
+ enum format;
+
+ path() noexcept;
+ path(const path& p);
+ path(path&& p) noexcept;
+ path(string_type&& source, format fmt = auto_format);
+ template<class Source>
+ path(const Source& source, format fmt = auto_format);
+ template<class InputIterator>
+ path(InputIterator first, InputIterator last, format fmt = auto_format);
+ template<class Source>
+ path(const Source& source, const locale& loc, format fmt = auto_format);
+ template<class InputIterator>
+ path(InputIterator first, InputIterator last, const locale& loc, format fmt = auto_format);
+ ~path();
+
+ path& operator=(const path& p);
+ path& operator=(path&& p) noexcept;
+ path& operator=(string_type&& source);
+ path& assign(string_type&& source);
+ template<class Source>
+ path& operator=(const Source& source);
+ template<class Source>
+ path& assign(const Source& source);
+ template<class InputIterator>
+ path& assign(InputIterator first, InputIterator last);
+
+ path& operator/=(const path& p);
+ template<class Source>
+ path& operator/=(const Source& source);
+ template<class Source>
+ path& append(const Source& source);
+ template<class InputIterator>
+ path& append(InputIterator first, InputIterator last);
+
+ path& operator+=(const path& x);
+ path& operator+=(const string_type& x);
+ path& operator+=(basic_string_view<value_type> x);
+ path& operator+=(const value_type* x);
+ path& operator+=(value_type x);
+ template<class Source>
+ path& operator+=(const Source& x);
+ template<class EcharT>
+ path& operator+=(EcharT x);
+ template<class Source>
+ path& concat(const Source& x);
+ template<class InputIterator>
+ path& concat(InputIterator first, InputIterator last);
+
+ void clear() noexcept;
+ path& make_preferred();
+ path& remove_filename();
+ path& replace_filename(const path& replacement);
+ path& replace_extension(const path& replacement = path());
+ void swap(path& rhs) noexcept;
+
+ friend bool operator==(const path& lhs, const path& rhs) noexcept;
+ friend bool operator!=(const path& lhs, const path& rhs) noexcept; // removed in C++20
+ friend bool operator< (const path& lhs, const path& rhs) noexcept; // removed in C++20
+ friend bool operator<=(const path& lhs, const path& rhs) noexcept; // removed in C++20
+ friend bool operator> (const path& lhs, const path& rhs) noexcept; // removed in C++20
+ friend bool operator>=(const path& lhs, const path& rhs) noexcept; // removed in C++20
+ friend strong_ordering operator<=>(const path& lhs, const path& rhs) noexcept; // C++20
+
+ friend path operator/(const path& lhs, const path& rhs);
+
+ const string_type& native() const noexcept;
+ const value_type* c_str() const noexcept;
+ operator string_type() const;
+
+ template<class EcharT, class traits = char_traits<EcharT>,
+ class Allocator = allocator<EcharT>>
+ basic_string<EcharT, traits, Allocator>
+ string(const Allocator& a = Allocator()) const;
+ std::string string() const;
+ std::wstring wstring() const;
+ std::u8string u8string() const;
+ std::u16string u16string() const;
+ std::u32string u32string() const;
+
+ template<class EcharT, class traits = char_traits<EcharT>,
+ class Allocator = allocator<EcharT>>
+ basic_string<EcharT, traits, Allocator>
+ generic_string(const Allocator& a = Allocator()) const;
+ std::string generic_string() const;
+ std::wstring generic_wstring() const;
+ std::u8string generic_u8string() const;
+ std::u16string generic_u16string() const;
+ std::u32string generic_u32string() const;
+
+ int compare(const path& p) const noexcept;
+ int compare(const string_type& s) const;
+ int compare(basic_string_view<value_type> s) const;
+ int compare(const value_type* s) const;
+
+ path root_name() const;
+ path root_directory() const;
+ path root_path() const;
+ path relative_path() const;
+ path parent_path() const;
+ path filename() const;
+ path stem() const;
+ path extension() const;
+
+ [[nodiscard]] bool empty() const noexcept;
+ bool has_root_name() const;
+ bool has_root_directory() const;
+ bool has_root_path() const;
+ bool has_relative_path() const;
+ bool has_parent_path() const;
+ bool has_filename() const;
+ bool has_stem() const;
+ bool has_extension() const;
+ bool is_absolute() const;
+ bool is_relative() const;
+
+ path lexically_normal() const;
+ path lexically_relative(const path& base) const;
+ path lexically_proximate(const path& base) const;
+
+ class iterator;
+ using const_iterator = iterator;
+
+ iterator begin() const;
+ iterator end() const;
+
+ template<class charT, class traits>
+ friend basic_ostream<charT, traits>&
+ operator<<(basic_ostream<charT, traits>& os, const path& p);
+ template<class charT, class traits>
+ friend basic_istream<charT, traits>&
+ operator>>(basic_istream<charT, traits>& is, path& p);
+ };
+
+ void swap(path& lhs, path& rhs) noexcept;
+ size_t hash_value(const path& p) noexcept;
+
+ // [fs.path.hash], hash support
+ template<> struct hash<filesystem::path>;
+
+ template <class Source>
+ path u8path(const Source& source);
+ template <class InputIterator>
+ path u8path(InputIterator first, InputIterator last);
+
+ class filesystem_error;
+
+ class directory_entry {
+ public:
+ directory_entry() noexcept = default;
+ directory_entry(const directory_entry&) = default;
+ directory_entry(directory_entry&&) noexcept = default;
+ explicit directory_entry(const filesystem::path& p);
+ directory_entry(const filesystem::path& p, error_code& ec);
+ ~directory_entry();
+
+ directory_entry& operator=(const directory_entry&) = default;
+ directory_entry& operator=(directory_entry&&) noexcept = default;
+
+ void assign(const filesystem::path& p);
+ void assign(const filesystem::path& p, error_code& ec);
+ void replace_filename(const filesystem::path& p);
+ void replace_filename(const filesystem::path& p, error_code& ec);
+ void refresh();
+ void refresh(error_code& ec) noexcept;
+
+ const filesystem::path& path() const noexcept;
+ operator const filesystem::path&() const noexcept;
+ bool exists() const;
+ bool exists(error_code& ec) const noexcept;
+ bool is_block_file() const;
+ bool is_block_file(error_code& ec) const noexcept;
+ bool is_character_file() const;
+ bool is_character_file(error_code& ec) const noexcept;
+ bool is_directory() const;
+ bool is_directory(error_code& ec) const noexcept;
+ bool is_fifo() const;
+ bool is_fifo(error_code& ec) const noexcept;
+ bool is_other() const;
+ bool is_other(error_code& ec) const noexcept;
+ bool is_regular_file() const;
+ bool is_regular_file(error_code& ec) const noexcept;
+ bool is_socket() const;
+ bool is_socket(error_code& ec) const noexcept;
+ bool is_symlink() const;
+ bool is_symlink(error_code& ec) const noexcept;
+ uintmax_t file_size() const;
+ uintmax_t file_size(error_code& ec) const noexcept;
+ uintmax_t hard_link_count() const;
+ uintmax_t hard_link_count(error_code& ec) const noexcept;
+ file_time_type last_write_time() const;
+ file_time_type last_write_time(error_code& ec) const noexcept;
+ file_status status() const;
+ file_status status(error_code& ec) const noexcept;
+ file_status symlink_status() const;
+ file_status symlink_status(error_code& ec) const noexcept;
+
+ bool operator==(const directory_entry& rhs) const noexcept;
+ bool operator!=(const directory_entry& rhs) const noexcept; // removed in C++20
+ bool operator< (const directory_entry& rhs) const noexcept; // removed in C++20
+ bool operator<=(const directory_entry& rhs) const noexcept; // removed in C++20
+ bool operator> (const directory_entry& rhs) const noexcept; // removed in C++20
+ bool operator>=(const directory_entry& rhs) const noexcept; // removed in C++20
+ strong_ordering operator<=>(const directory_entry& rhs) const noexcept; // since C++20
+
+ template<class charT, class traits>
+ friend basic_ostream<charT, traits>&
+ operator<<(basic_ostream<charT, traits>& os, const directory_entry& d);
+
+ private:
+ filesystem::path pathobject; // exposition only
+ friend class directory_iterator; // exposition only
+ };
+
+ 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 {
+ 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 {
+ 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
+ {
+ uintmax_t capacity;
+ uintmax_t free;
+ uintmax_t available;
+
+ friend bool operator==(const space_info&, const space_info&) = default; // C++20
+ };
+
+ enum class file_type;
+ enum class perms;
+ enum class perm_options;
+ enum class copy_options;
+ enum class directory_options;
+
+ typedef chrono::time_point<trivial-clock> file_time_type;
+
+ // operational functions
+
+ path absolute(const path& p);
+ path absolute(const path& p, error_code &ec);
+
+ path canonical(const path& p);
+ path canonical(const path& p, error_code& ec);
+
+ void copy(const path& from, const path& to);
+ void copy(const path& from, const path& to, error_code& ec);
+ void copy(const path& from, const path& to, copy_options options);
+ void copy(const path& from, const path& to, copy_options options,
+ error_code& ec);
+
+ bool copy_file(const path& from, const path& to);
+ bool copy_file(const path& from, const path& to, error_code& ec);
+ bool copy_file(const path& from, const path& to, copy_options option);
+ bool copy_file(const path& from, const path& to, copy_options option,
+ error_code& ec);
+
+ void copy_symlink(const path& existing_symlink, const path& new_symlink);
+ void copy_symlink(const path& existing_symlink, const path& new_symlink,
+ error_code& ec) noexcept;
+
+ bool create_directories(const path& p);
+ bool create_directories(const path& p, error_code& ec);
+
+ bool create_directory(const path& p);
+ bool create_directory(const path& p, error_code& ec) noexcept;
+
+ bool create_directory(const path& p, const path& attributes);
+ bool create_directory(const path& p, const path& attributes,
+ error_code& ec) noexcept;
+
+ void create_directory_symlink(const path& to, const path& new_symlink);
+ void create_directory_symlink(const path& to, const path& new_symlink,
+ error_code& ec) noexcept;
+
+ void create_hard_link(const path& to, const path& new_hard_link);
+ void create_hard_link(const path& to, const path& new_hard_link,
+ error_code& ec) noexcept;
+
+ void create_symlink(const path& to, const path& new_symlink);
+ void create_symlink(const path& to, const path& new_symlink,
+ error_code& ec) noexcept;
+
+ path current_path();
+ path current_path(error_code& ec);
+ void current_path(const path& p);
+ void current_path(const path& p, error_code& ec) noexcept;
+
+ bool exists(file_status s) noexcept;
+ bool exists(const path& p);
+ bool exists(const path& p, error_code& ec) noexcept;
+
+ bool equivalent(const path& p1, const path& p2);
+ bool equivalent(const path& p1, const path& p2, error_code& ec) noexcept;
+
+ uintmax_t file_size(const path& p);
+ uintmax_t file_size(const path& p, error_code& ec) noexcept;
+
+ uintmax_t hard_link_count(const path& p);
+ uintmax_t hard_link_count(const path& p, error_code& ec) noexcept;
+
+ bool is_block_file(file_status s) noexcept;
+ bool is_block_file(const path& p);
+ bool is_block_file(const path& p, error_code& ec) noexcept;
+
+ bool is_character_file(file_status s) noexcept;
+ bool is_character_file(const path& p);
+ bool is_character_file(const path& p, error_code& ec) noexcept;
+
+ bool is_directory(file_status s) noexcept;
+ bool is_directory(const path& p);
+ bool is_directory(const path& p, error_code& ec) noexcept;
+
+ bool is_empty(const path& p);
+ bool is_empty(const path& p, error_code& ec) noexcept;
+
+ bool is_fifo(file_status s) noexcept;
+ bool is_fifo(const path& p);
+ bool is_fifo(const path& p, error_code& ec) noexcept;
+
+ bool is_other(file_status s) noexcept;
+ bool is_other(const path& p);
+ bool is_other(const path& p, error_code& ec) noexcept;
+
+ bool is_regular_file(file_status s) noexcept;
+ bool is_regular_file(const path& p);
+ bool is_regular_file(const path& p, error_code& ec) noexcept;
+
+ bool is_socket(file_status s) noexcept;
+ bool is_socket(const path& p);
+ bool is_socket(const path& p, error_code& ec) noexcept;
+
+ bool is_symlink(file_status s) noexcept;
+ bool is_symlink(const path& p);
+ bool is_symlink(const path& p, error_code& ec) noexcept;
+
+ file_time_type last_write_time(const path& p);
+ file_time_type last_write_time(const path& p, error_code& ec) noexcept;
+ void last_write_time(const path& p, file_time_type new_time);
+ void last_write_time(const path& p, file_time_type new_time,
+ error_code& ec) noexcept;
+
+ void permissions(const path& p, perms prms,
+ perm_options opts=perm_options::replace);
+ void permissions(const path& p, perms prms, error_code& ec) noexcept;
+ void permissions(const path& p, perms prms, perm_options opts,
+ error_code& ec);
+
+ path proximate(const path& p, error_code& ec);
+ path proximate(const path& p, const path& base = current_path());
+ path proximate(const path& p, const path& base, error_code &ec);
+
+ path read_symlink(const path& p);
+ path read_symlink(const path& p, error_code& ec);
+
+ path relative(const path& p, error_code& ec);
+ path relative(const path& p, const path& base=current_path());
+ path relative(const path& p, const path& base, error_code& ec);
+
+ bool remove(const path& p);
+ bool remove(const path& p, error_code& ec) noexcept;
+
+ uintmax_t remove_all(const path& p);
+ uintmax_t remove_all(const path& p, error_code& ec);
+
+ void rename(const path& from, const path& to);
+ void rename(const path& from, const path& to, error_code& ec) noexcept;
+
+ void resize_file(const path& p, uintmax_t size);
+ void resize_file(const path& p, uintmax_t size, error_code& ec) noexcept;
+
+ space_info space(const path& p);
+ space_info space(const path& p, error_code& ec) noexcept;
+
+ file_status status(const path& p);
+ file_status status(const path& p, error_code& ec) noexcept;
+
+ bool status_known(file_status s) noexcept;
+
+ file_status symlink_status(const path& p);
+ file_status symlink_status(const path& p, error_code& ec) noexcept;
+
+ path temp_directory_path();
+ path temp_directory_path(error_code& ec);
+
+ path weakly_canonical(path const& p);
+ path weakly_canonical(path const& p, error_code& ec);
+
+} // namespace std::filesystem
+
+template <>
+inline constexpr bool std::ranges::enable_borrowed_range<std::filesystem::directory_iterator> = true;
+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::directory_iterator> = true;
+template <>
+inline constexpr bool std::ranges::enable_view<std::filesystem::recursive_directory_iterator> = true;
+
+*/
+
+#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>
+#include <version>
+
+// standard-mandated includes
+
+// [fs.filesystem.syn]
+#include <compare>
+
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+# pragma GCC system_header
+#endif
+
+#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <concepts>
+# include <cstdlib>
+# include <system_error>
+#endif
+
+#endif // _LIBCPP_FILESYSTEM