]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/libcxx/include/experimental/filesystem
Merge ^/head r358678 through r358711.
[FreeBSD/FreeBSD.git] / contrib / llvm-project / libcxx / include / experimental / filesystem
1 // -*- C++ -*-
2 //===--------------------------- filesystem -------------------------------===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //
8 //===----------------------------------------------------------------------===//
9 #ifndef _LIBCPP_EXPERIMENTAL_FILESYSTEM
10 #define _LIBCPP_EXPERIMENTAL_FILESYSTEM
11 /*
12     filesystem synopsis
13
14     namespace std { namespace experimental { namespace filesystem { inline namespace v1 {
15
16     class path;
17
18     void swap(path& lhs, path& rhs) noexcept;
19     size_t hash_value(const path& p) noexcept;
20
21     bool operator==(const path& lhs, const path& rhs) noexcept;
22     bool operator!=(const path& lhs, const path& rhs) noexcept;
23     bool operator< (const path& lhs, const path& rhs) noexcept;
24     bool operator<=(const path& lhs, const path& rhs) noexcept;
25     bool operator> (const path& lhs, const path& rhs) noexcept;
26     bool operator>=(const path& lhs, const path& rhs) noexcept;
27
28     path operator/ (const path& lhs, const path& rhs);
29
30     // fs.path.io operators are friends of path.
31     template <class charT, class traits>
32     friend basic_ostream<charT, traits>&
33     operator<<(basic_ostream<charT, traits>& os, const path& p);
34
35     template <class charT, class traits>
36     friend basic_istream<charT, traits>&
37     operator>>(basic_istream<charT, traits>& is, path& p);
38
39     template <class Source>
40       path u8path(const Source& source);
41     template <class InputIterator>
42       path u8path(InputIterator first, InputIterator last);
43
44     class filesystem_error;
45     class directory_entry;
46
47     class directory_iterator;
48
49     // enable directory_iterator range-based for statements
50     directory_iterator begin(directory_iterator iter) noexcept;
51     directory_iterator end(const directory_iterator&) noexcept;
52
53     class recursive_directory_iterator;
54
55     // enable recursive_directory_iterator range-based for statements
56     recursive_directory_iterator begin(recursive_directory_iterator iter) noexcept;
57     recursive_directory_iterator end(const recursive_directory_iterator&) noexcept;
58
59     class file_status;
60
61     struct space_info
62     {
63       uintmax_t capacity;
64       uintmax_t free;
65       uintmax_t available;
66     };
67
68     enum class file_type;
69     enum class perms;
70     enum class perm_options;
71     enum class copy_options;
72     enum class directory_options;
73
74     typedef chrono::time_point<trivial-clock>  file_time_type;
75
76     // operational functions
77
78     path absolute(const path& p);
79     path absolute(const path& p, error_code &ec);
80
81     path canonical(const path& p);
82     path canonical(const path& p, error_code& ec);
83
84     void copy(const path& from, const path& to);
85     void copy(const path& from, const path& to, error_code& ec);
86     void copy(const path& from, const path& to, copy_options options);
87     void copy(const path& from, const path& to, copy_options options,
88                    error_code& ec);
89
90     bool copy_file(const path& from, const path& to);
91     bool copy_file(const path& from, const path& to, error_code& ec);
92     bool copy_file(const path& from, const path& to, copy_options option);
93     bool copy_file(const path& from, const path& to, copy_options option,
94                            error_code& ec);
95
96     void copy_symlink(const path& existing_symlink, const path& new_symlink);
97     void copy_symlink(const path& existing_symlink, const path& new_symlink,
98                               error_code& ec) noexcept;
99
100     bool create_directories(const path& p);
101     bool create_directories(const path& p, error_code& ec);
102
103     bool create_directory(const path& p);
104     bool create_directory(const path& p, error_code& ec) noexcept;
105
106     bool create_directory(const path& p, const path& attributes);
107     bool create_directory(const path& p, const path& attributes,
108                                   error_code& ec) noexcept;
109
110     void create_directory_symlink(const path& to, const path& new_symlink);
111     void create_directory_symlink(const path& to, const path& new_symlink,
112                                           error_code& ec) noexcept;
113
114     void create_hard_link(const path& to, const path& new_hard_link);
115     void create_hard_link(const path& to, const path& new_hard_link,
116                                   error_code& ec) noexcept;
117
118     void create_symlink(const path& to, const path& new_symlink);
119     void create_symlink(const path& to, const path& new_symlink,
120                                 error_code& ec) noexcept;
121
122     path current_path();
123     path current_path(error_code& ec);
124     void current_path(const path& p);
125     void current_path(const path& p, error_code& ec) noexcept;
126
127     bool exists(file_status s) noexcept;
128     bool exists(const path& p);
129     bool exists(const path& p, error_code& ec) noexcept;
130
131     bool equivalent(const path& p1, const path& p2);
132     bool equivalent(const path& p1, const path& p2, error_code& ec) noexcept;
133
134     uintmax_t    file_size(const path& p);
135     uintmax_t    file_size(const path& p, error_code& ec) noexcept;
136
137     uintmax_t    hard_link_count(const path& p);
138     uintmax_t    hard_link_count(const path& p, error_code& ec) noexcept;
139
140     bool is_block_file(file_status s) noexcept;
141     bool is_block_file(const path& p);
142     bool is_block_file(const path& p, error_code& ec) noexcept;
143
144     bool is_character_file(file_status s) noexcept;
145     bool is_character_file(const path& p);
146     bool is_character_file(const path& p, error_code& ec) noexcept;
147
148     bool is_directory(file_status s) noexcept;
149     bool is_directory(const path& p);
150     bool is_directory(const path& p, error_code& ec) noexcept;
151
152     bool is_empty(const path& p);
153     bool is_empty(const path& p, error_code& ec) noexcept;
154
155     bool is_fifo(file_status s) noexcept;
156     bool is_fifo(const path& p);
157     bool is_fifo(const path& p, error_code& ec) noexcept;
158
159     bool is_other(file_status s) noexcept;
160     bool is_other(const path& p);
161     bool is_other(const path& p, error_code& ec) noexcept;
162
163     bool is_regular_file(file_status s) noexcept;
164     bool is_regular_file(const path& p);
165     bool is_regular_file(const path& p, error_code& ec) noexcept;
166
167     bool is_socket(file_status s) noexcept;
168     bool is_socket(const path& p);
169     bool is_socket(const path& p, error_code& ec) noexcept;
170
171     bool is_symlink(file_status s) noexcept;
172     bool is_symlink(const path& p);
173     bool is_symlink(const path& p, error_code& ec) noexcept;
174
175     file_time_type  last_write_time(const path& p);
176     file_time_type  last_write_time(const path& p, error_code& ec) noexcept;
177     void last_write_time(const path& p, file_time_type new_time);
178     void last_write_time(const path& p, file_time_type new_time,
179                                  error_code& ec) noexcept;
180
181     void permissions(const path& p, perms prms,
182                      perm_options opts=perm_options::replace);
183     void permissions(const path& p, perms prms, error_code& ec) noexcept;
184     void permissions(const path& p, perms prms, perm_options opts,
185                      error_code& ec);
186
187     path proximate(const path& p, error_code& ec);
188     path proximate(const path& p, const path& base = current_path());
189     path proximate(const path& p, const path& base, error_code &ec);
190
191     path read_symlink(const path& p);
192     path read_symlink(const path& p, error_code& ec);
193
194     path relative(const path& p, error_code& ec);
195     path relative(const path& p, const path& base=current_path());
196     path relative(const path& p, const path& base, error_code& ec);
197
198     bool remove(const path& p);
199     bool remove(const path& p, error_code& ec) noexcept;
200
201     uintmax_t    remove_all(const path& p);
202     uintmax_t    remove_all(const path& p, error_code& ec);
203
204     void rename(const path& from, const path& to);
205     void rename(const path& from, const path& to, error_code& ec) noexcept;
206
207     void resize_file(const path& p, uintmax_t size);
208     void resize_file(const path& p, uintmax_t size, error_code& ec) noexcept;
209
210     space_info   space(const path& p);
211     space_info   space(const path& p, error_code& ec) noexcept;
212
213     file_status  status(const path& p);
214     file_status  status(const path& p, error_code& ec) noexcept;
215
216     bool status_known(file_status s) noexcept;
217
218     file_status  symlink_status(const path& p);
219     file_status  symlink_status(const path& p, error_code& ec) noexcept;
220
221     path temp_directory_path();
222     path temp_directory_path(error_code& ec);
223
224     path weakly_canonical(path const& p);
225     path weakly_canonical(path const& p, error_code& ec);
226
227
228 } } } }  // namespaces std::experimental::filesystem::v1
229
230 */
231
232 #include <experimental/__config>
233 #include <filesystem>
234
235 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
236 #pragma GCC system_header
237 #endif
238
239 _LIBCPP_PUSH_MACROS
240 #include <__undef_macros>
241
242 #ifndef _LIBCPP_CXX03_LANG
243
244 #define __cpp_lib_experimental_filesystem 201406
245
246 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_FILESYSTEM
247
248 using namespace _VSTD_FS;
249
250 _LIBCPP_END_NAMESPACE_EXPERIMENTAL_FILESYSTEM
251
252 #endif // !_LIBCPP_CXX03_LANG
253
254 _LIBCPP_POP_MACROS
255
256 #endif // _LIBCPP_EXPERIMENTAL_FILESYSTEM