1*5f757f3fSDimitry Andric// -*- C++ -*- 2*5f757f3fSDimitry Andric//===----------------------------------------------------------------------===// 3*5f757f3fSDimitry Andric// 4*5f757f3fSDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*5f757f3fSDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 6*5f757f3fSDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7*5f757f3fSDimitry Andric// 8*5f757f3fSDimitry Andric//===----------------------------------------------------------------------===// 9*5f757f3fSDimitry Andric 10*5f757f3fSDimitry Andricexport namespace std::filesystem { 11*5f757f3fSDimitry Andric // [fs.class.path], paths 12*5f757f3fSDimitry Andric using std::filesystem::path; 13*5f757f3fSDimitry Andric 14*5f757f3fSDimitry Andric // [fs.path.nonmember], path non-member functions 15*5f757f3fSDimitry Andric using std::filesystem::hash_value; 16*5f757f3fSDimitry Andric using std::filesystem::swap; 17*5f757f3fSDimitry Andric 18*5f757f3fSDimitry Andric // [fs.class.filesystem.error], filesystem errors 19*5f757f3fSDimitry Andric using std::filesystem::filesystem_error; 20*5f757f3fSDimitry Andric 21*5f757f3fSDimitry Andric#ifndef _LIBCPP_HAS_NO_FILESYSTEM 22*5f757f3fSDimitry Andric // [fs.class.directory.entry], directory entries 23*5f757f3fSDimitry Andric using std::filesystem::directory_entry; 24*5f757f3fSDimitry Andric 25*5f757f3fSDimitry Andric // [fs.class.directory.iterator], directory iterators 26*5f757f3fSDimitry Andric using std::filesystem::directory_iterator; 27*5f757f3fSDimitry Andric 28*5f757f3fSDimitry Andric // [fs.dir.itr.nonmembers], range access for directory iterators 29*5f757f3fSDimitry Andric using std::filesystem::begin; 30*5f757f3fSDimitry Andric using std::filesystem::end; 31*5f757f3fSDimitry Andric 32*5f757f3fSDimitry Andric // [fs.class.rec.dir.itr], recursive directory iterators 33*5f757f3fSDimitry Andric using std::filesystem::recursive_directory_iterator; 34*5f757f3fSDimitry Andric#endif // _LIBCPP_HAS_NO_FILESYSTEM 35*5f757f3fSDimitry Andric 36*5f757f3fSDimitry Andric // [fs.rec.dir.itr.nonmembers], range access for recursive directory iterators 37*5f757f3fSDimitry Andric 38*5f757f3fSDimitry Andric // [fs.class.file.status], file status 39*5f757f3fSDimitry Andric using std::filesystem::file_status; 40*5f757f3fSDimitry Andric using std::filesystem::space_info; 41*5f757f3fSDimitry Andric 42*5f757f3fSDimitry Andric // [fs.enum], enumerations 43*5f757f3fSDimitry Andric using std::filesystem::copy_options; 44*5f757f3fSDimitry Andric using std::filesystem::directory_options; 45*5f757f3fSDimitry Andric using std::filesystem::file_type; 46*5f757f3fSDimitry Andric using std::filesystem::perm_options; 47*5f757f3fSDimitry Andric using std::filesystem::perms; 48*5f757f3fSDimitry Andric 49*5f757f3fSDimitry Andric using std::filesystem::file_time_type; 50*5f757f3fSDimitry Andric 51*5f757f3fSDimitry Andric // several of these enums are a bitmask type. 52*5f757f3fSDimitry Andric // [bitmask.types] specified operators 53*5f757f3fSDimitry Andric using std::filesystem::operator&; 54*5f757f3fSDimitry Andric using std::filesystem::operator&=; 55*5f757f3fSDimitry Andric using std::filesystem::operator^; 56*5f757f3fSDimitry Andric using std::filesystem::operator^=; 57*5f757f3fSDimitry Andric using std::filesystem::operator|; 58*5f757f3fSDimitry Andric using std::filesystem::operator|=; 59*5f757f3fSDimitry Andric using std::filesystem::operator~; 60*5f757f3fSDimitry Andric 61*5f757f3fSDimitry Andric#ifndef _LIBCPP_HAS_NO_FILESYSTEM 62*5f757f3fSDimitry Andric // [fs.op.funcs], filesystem operations 63*5f757f3fSDimitry Andric using std::filesystem::absolute; 64*5f757f3fSDimitry Andric using std::filesystem::canonical; 65*5f757f3fSDimitry Andric using std::filesystem::copy; 66*5f757f3fSDimitry Andric using std::filesystem::copy_file; 67*5f757f3fSDimitry Andric using std::filesystem::copy_symlink; 68*5f757f3fSDimitry Andric using std::filesystem::create_directories; 69*5f757f3fSDimitry Andric using std::filesystem::create_directory; 70*5f757f3fSDimitry Andric using std::filesystem::create_directory_symlink; 71*5f757f3fSDimitry Andric using std::filesystem::create_hard_link; 72*5f757f3fSDimitry Andric using std::filesystem::create_symlink; 73*5f757f3fSDimitry Andric using std::filesystem::current_path; 74*5f757f3fSDimitry Andric using std::filesystem::equivalent; 75*5f757f3fSDimitry Andric using std::filesystem::exists; 76*5f757f3fSDimitry Andric using std::filesystem::file_size; 77*5f757f3fSDimitry Andric using std::filesystem::hard_link_count; 78*5f757f3fSDimitry Andric 79*5f757f3fSDimitry Andric using std::filesystem::is_block_file; 80*5f757f3fSDimitry Andric using std::filesystem::is_character_file; 81*5f757f3fSDimitry Andric using std::filesystem::is_directory; 82*5f757f3fSDimitry Andric using std::filesystem::is_empty; 83*5f757f3fSDimitry Andric using std::filesystem::is_fifo; 84*5f757f3fSDimitry Andric using std::filesystem::is_other; 85*5f757f3fSDimitry Andric using std::filesystem::is_regular_file; 86*5f757f3fSDimitry Andric using std::filesystem::is_socket; 87*5f757f3fSDimitry Andric using std::filesystem::is_symlink; 88*5f757f3fSDimitry Andric 89*5f757f3fSDimitry Andric using std::filesystem::last_write_time; 90*5f757f3fSDimitry Andric using std::filesystem::permissions; 91*5f757f3fSDimitry Andric using std::filesystem::proximate; 92*5f757f3fSDimitry Andric using std::filesystem::read_symlink; 93*5f757f3fSDimitry Andric using std::filesystem::relative; 94*5f757f3fSDimitry Andric using std::filesystem::remove; 95*5f757f3fSDimitry Andric 96*5f757f3fSDimitry Andric using std::filesystem::remove_all; 97*5f757f3fSDimitry Andric using std::filesystem::rename; 98*5f757f3fSDimitry Andric using std::filesystem::resize_file; 99*5f757f3fSDimitry Andric using std::filesystem::space; 100*5f757f3fSDimitry Andric using std::filesystem::status; 101*5f757f3fSDimitry Andric using std::filesystem::status_known; 102*5f757f3fSDimitry Andric using std::filesystem::symlink_status; 103*5f757f3fSDimitry Andric using std::filesystem::temp_directory_path; 104*5f757f3fSDimitry Andric using std::filesystem::weakly_canonical; 105*5f757f3fSDimitry Andric#endif // _LIBCPP_HAS_NO_FILESYSTEM 106*5f757f3fSDimitry Andric 107*5f757f3fSDimitry Andric // [depr.fs.path.factory] 108*5f757f3fSDimitry Andric using std::filesystem::u8path; 109*5f757f3fSDimitry Andric} // namespace std::filesystem 110*5f757f3fSDimitry Andric 111*5f757f3fSDimitry Andric// [fs.path.hash], hash support 112*5f757f3fSDimitry Andricexport namespace std { 113*5f757f3fSDimitry Andric using std::hash; 114*5f757f3fSDimitry Andric} 115*5f757f3fSDimitry Andric 116*5f757f3fSDimitry Andricexport namespace std::ranges { 117*5f757f3fSDimitry Andric#ifndef _LIBCPP_HAS_NO_FILESYSTEM 118*5f757f3fSDimitry Andric using std::ranges::enable_borrowed_range; 119*5f757f3fSDimitry Andric using std::ranges::enable_view; 120*5f757f3fSDimitry Andric#endif // _LIBCPP_HAS_NO_FILESYSTEM 121*5f757f3fSDimitry Andric} // namespace std::ranges 122