STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Classes | Typedefs | Enumerations | Functions
experimental::filesystem::v1 Namespace Reference

Classes

class  _Directory_iterator
 
struct  _Path_cvt
 
struct  _Path_cvt< _Outchar, _Outchar, _Outtraits, _Outalloc >
 
struct  _Path_cvt< char, char16_t, _Outtraits, _Outalloc >
 
struct  _Path_cvt< char, char32_t, _Outtraits, _Outalloc >
 
struct  _Path_cvt< char, char8_t, char_traits< char >, allocator< char > >
 
struct  _Path_cvt< char, wchar_t, _Outtraits, _Outalloc >
 
struct  _Path_cvt< char16_t, char, _Outtraits, _Outalloc >
 
struct  _Path_cvt< char32_t, char, _Outtraits, _Outalloc >
 
struct  _Path_cvt< char32_t, wchar_t, _Outtraits, _Outalloc >
 
struct  _Path_cvt< char8_t, char, _Outtraits, _Outalloc >
 
struct  _Path_cvt< char8_t, wchar_t, _Outtraits, _Outalloc >
 
struct  _Path_cvt< wchar_t, char, _Outtraits, _Outalloc >
 
struct  _Path_cvt< wchar_t, char32_t, _Outtraits, _Outalloc >
 
struct  _Path_cvt< wchar_t, char8_t, char_traits< char >, allocator< char > >
 
class  _Path_iterator
 
struct  _Unused_locale
 
class  directory_entry
 
class  file_status
 
class  filesystem_error
 
class  path
 
class  recursive_directory_iterator
 
struct  space_info
 

Typedefs

typedef wchar_t _Pchar
 
typedef file_type _File_type
 
typedef copy_options _Copy_options
 
typedef directory_options _Directory_options
 
typedef perms _Perms
 
typedef chrono::system_clock::time_point file_time_type
 
typedef _Directory_iterator< true_typedirectory_iterator
 

Enumerations

enum  file_type {
  file_type::not_found = -1, file_type::none, file_type::regular, file_type::directory,
  file_type::symlink, file_type::block, file_type::character, file_type::fifo,
  file_type::socket, file_type::unknown
}
 
enum  copy_options {
  copy_options::none = 0, copy_options::skip_existing = 1, copy_options::overwrite_existing = 2, copy_options::update_existing = 4,
  copy_options::recursive = 8, copy_options::copy_symlinks = 16, copy_options::skip_symlinks = 32, copy_options::directories_only = 64,
  copy_options::create_symlinks = 128, copy_options::create_hard_links = 256, copy_options::_Unspecified_recursion_prevention_tag = 512
}
 
enum  directory_options { directory_options::none = 0, directory_options::follow_directory_symlink }
 
enum  perms {
  perms::none = 0, perms::owner_read = 0400, perms::owner_write = 0200, perms::owner_exec = 0100,
  perms::owner_all = 0700, perms::group_read = 040, perms::group_write = 020, perms::group_exec = 010,
  perms::group_all = 070, perms::others_read = 04, perms::others_write = 02, perms::others_exec = 01,
  perms::others_all = 07, perms::all = 0777, perms::set_uid = 04000, perms::set_gid = 02000,
  perms::sticky_bit = 01000, perms::mask = 07777, perms::unknown = 0xFFFF, perms::add_perms = 0x10000,
  perms::remove_perms = 0x20000, perms::resolve_symlinks = 0x40000
}
 

Functions

_FS_DLL void *__CLRCALL_PURE_OR_CDECL _Open_dir (wchar_t(&)[_MAX_FILESYS_NAME], const wchar_t *, int &, _File_type &)
 
_FS_DLL wchar_t *__CLRCALL_PURE_OR_CDECL _Read_dir (wchar_t(&)[_MAX_FILESYS_NAME], void *, _File_type &)
 
_FS_DLL void __CLRCALL_PURE_OR_CDECL _Close_dir (void *)
 
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Current_get (wchar_t(&)[_MAX_FILESYS_NAME])
 
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Current_set (const wchar_t *)
 
_FS_DLL wchar_t *__CLRCALL_PURE_OR_CDECL _Symlink_get (wchar_t(&)[_MAX_FILESYS_NAME], const wchar_t *)
 
_FS_DLL wchar_t *__CLRCALL_PURE_OR_CDECL _Temp_get (wchar_t(&)[_MAX_FILESYS_NAME])
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Make_dir (const wchar_t *, const wchar_t *)
 
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Remove_dir (const wchar_t *)
 
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat (const wchar_t *, _Perms *)
 
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Lstat (const wchar_t *, _Perms *)
 
_FS_DLL uintmax_t __CLRCALL_PURE_OR_CDECL _File_size (const wchar_t *)
 
_FS_DLL uintmax_t __CLRCALL_PURE_OR_CDECL _Hard_links (const wchar_t *)
 
_FS_DLL int64_t __CLRCALL_PURE_OR_CDECL _Last_write_time (const wchar_t *)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Set_last_write_time (const wchar_t *, int64_t)
 
_FS_DLL space_info __CLRCALL_PURE_OR_CDECL _Statvfs (const wchar_t *)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Equivalent (const wchar_t *, const wchar_t *)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Link (const wchar_t *, const wchar_t *)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Symlink (const wchar_t *, const wchar_t *)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Rename (const wchar_t *, const wchar_t *)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Resize (const wchar_t *, uintmax_t)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Unlink (const wchar_t *)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Copy_file (const wchar_t *, const wchar_t *)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Chmod (const wchar_t *, _Perms)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _To_byte (const wchar_t *, char *)
 
_FS_DLL int __CLRCALL_PURE_OR_CDECL _To_wide (const char *, wchar_t *)
 
path operator/ (const path &, const path &)
 
path _Absolute (const path &, const path &, error_code &)
 
void _Canonicalize_string_only (path &, const path &)
 
path canonical (const path &, error_code &)
 
path canonical (const path &, const path &, error_code &)
 
void copy (const path &, const path &)
 
void copy (const path &, const path &, error_code &) _NOEXCEPT
 
void copy (const path &, const path &, _Copy_options)
 
void copy (const path &, const path &, _Copy_options, error_code &) _NOEXCEPT
 
bool copy_file (const path &, const path &, _Copy_options=copy_options::none)
 
bool copy_file (const path &, const path &, error_code &) _NOEXCEPT
 
bool copy_file (const path &, const path &, _Copy_options, error_code &) _NOEXCEPT
 
void copy_symlink (const path &, const path &)
 
void copy_symlink (const path &, const path &, error_code &) _NOEXCEPT
 
bool create_directories (const path &)
 
bool create_directories (const path &, error_code &) _NOEXCEPT
 
bool create_directory (const path &)
 
bool create_directory (const path &, error_code &) _NOEXCEPT
 
bool create_directory (const path &, const path &)
 
bool create_directory (const path &, const path &, error_code &) _NOEXCEPT
 
void create_directory_symlink (const path &, const path &)
 
void create_directory_symlink (const path &, const path &, error_code &) _NOEXCEPT
 
void create_hard_link (const path &, const path &)
 
void create_hard_link (const path &, const path &, error_code &) _NOEXCEPT
 
void create_symlink (const path &, const path &)
 
void create_symlink (const path &, const path &, error_code &) _NOEXCEPT
 
path current_path ()
 
path current_path (error_code &)
 
void current_path (const path &)
 
void current_path (const path &, error_code &) _NOEXCEPT
 
bool equivalent (const path &, const path &)
 
bool equivalent (const path &, const path &, error_code &) _NOEXCEPT
 
bool exists (file_status) _NOEXCEPT
 
bool exists (const path &)
 
bool exists (const path &, error_code &) _NOEXCEPT
 
uintmax_t file_size (const path &)
 
uintmax_t file_size (const path &, error_code &) _NOEXCEPT
 
uintmax_t hard_link_count (const path &)
 
uintmax_t hard_link_count (const path &, error_code &) _NOEXCEPT
 
bool is_block_file (file_status) _NOEXCEPT
 
bool is_block_file (const path &)
 
bool is_block_file (const path &, error_code &) _NOEXCEPT
 
bool is_character_file (file_status) _NOEXCEPT
 
bool is_character_file (const path &)
 
bool is_character_file (const path &, error_code &) _NOEXCEPT
 
bool is_directory (file_status) _NOEXCEPT
 
bool is_directory (const path &)
 
bool is_directory (const path &, error_code &) _NOEXCEPT
 
bool is_empty (const path &)
 
bool is_empty (const path &, error_code &) _NOEXCEPT
 
bool is_fifo (file_status) _NOEXCEPT
 
bool is_fifo (const path &)
 
bool is_fifo (const path &, error_code &) _NOEXCEPT
 
bool is_other (file_status) _NOEXCEPT
 
bool is_other (const path &)
 
bool is_other (const path &, error_code &) _NOEXCEPT
 
bool is_regular_file (file_status) _NOEXCEPT
 
bool is_regular_file (const path &)
 
bool is_regular_file (const path &, error_code &) _NOEXCEPT
 
bool is_socket (file_status) _NOEXCEPT
 
bool is_socket (const path &)
 
bool is_socket (const path &, error_code &) _NOEXCEPT
 
bool is_symlink (file_status) _NOEXCEPT
 
bool is_symlink (const path &)
 
bool is_symlink (const path &, error_code &) _NOEXCEPT
 
file_time_type last_write_time (const path &, error_code &) _NOEXCEPT
 
file_time_type last_write_time (const path &)
 
void last_write_time (const path &, file_time_type, error_code &) _NOEXCEPT
 
void last_write_time (const path &, file_time_type)
 
void permissions (const path &, _Perms)
 
void permissions (const path &, _Perms, error_code &)
 
path read_symlink (const path &)
 
path read_symlink (const path &, error_code &)
 
bool remove (const path &)
 
bool remove (const path &, error_code &) _NOEXCEPT
 
uintmax_t remove_all (const path &)
 
uintmax_t remove_all (const path &, error_code &) _NOEXCEPT
 
void rename (const path &, const path &)
 
void rename (const path &, const path &, error_code &) _NOEXCEPT
 
void resize_file (const path &, uintmax_t)
 
void resize_file (const path &, uintmax_t, error_code &) _NOEXCEPT
 
space_info space (const path &)
 
space_info space (const path &, error_code &) _NOEXCEPT
 
file_status status (const path &)
 
file_status status (const path &, error_code &) _NOEXCEPT
 
bool status_known (file_status) _NOEXCEPT
 
file_status symlink_status (const path &)
 
file_status symlink_status (const path &, error_code &) _NOEXCEPT
 
path system_complete (const path &)
 
path system_complete (const path &, error_code &)
 
path temp_directory_path ()
 
path temp_directory_path (error_code &)
 
void swap (path &_Left, path &_Right) _NOEXCEPT
 
size_t hash_value (const path &_Path) _NOEXCEPT
 
bool operator== (const path &_Left, const path &_Right) _NOEXCEPT
 
bool operator!= (const path &_Left, const path &_Right) _NOEXCEPT
 
bool operator< (const path &_Left, const path &_Right) _NOEXCEPT
 
bool operator<= (const path &_Left, const path &_Right) _NOEXCEPT
 
bool operator> (const path &_Left, const path &_Right) _NOEXCEPT
 
bool operator>= (const path &_Left, const path &_Right) _NOEXCEPT
 
template<class _Elem , class _Traits >
basic_ostream< _Elem, _Traits > & operator<< (basic_ostream< _Elem, _Traits > &_Ostr, const path &_Path)
 
template<class _Elem , class _Traits >
basic_istream< _Elem, _Traits > & operator>> (basic_istream< _Elem, _Traits > &_Istr, path &_Path)
 
template<class _InIt , class = typename enable_if<_Is_iterator<_InIt>::value, void>::type>
path u8path (_InIt _First, _InIt _Last)
 
template<class _InIt , class = typename enable_if<_Is_iterator<_InIt>::value, void>::type>
path u8path (_InIt _First)
 
template<class _Traits , class _Alloc >
path u8path (const basic_string< char, _Traits, _Alloc > &_Str)
 
template<class _Prefix_directory >
bool operator== (const _Directory_iterator< _Prefix_directory > &_Left, const _Directory_iterator< _Prefix_directory > &_Right)
 
template<class _Prefix_directory >
bool operator!= (const _Directory_iterator< _Prefix_directory > &_Left, const _Directory_iterator< _Prefix_directory > &_Right)
 
const directory_iteratorbegin (const directory_iterator &_Iter) _NOEXCEPT
 
directory_iterator end (const directory_iterator &) _NOEXCEPT
 
bool operator== (const recursive_directory_iterator &_Left, const recursive_directory_iterator &_Right)
 
bool operator!= (const recursive_directory_iterator &_Left, const recursive_directory_iterator &_Right)
 
const recursive_directory_iteratorbegin (const recursive_directory_iterator &_Iter) _NOEXCEPT
 
recursive_directory_iterator end (const recursive_directory_iterator &) _NOEXCEPT
 
path absolute (const path &_Path, const path &_Base=current_path())
 
path canonical (const path &_Path, const path &_Base=current_path())
 
bool _Copy_options_indicate_recursive_copy (_Copy_options _Opts)
 
bool _Remove_all (const path &_Path, uintmax_t &_Ans, error_code &_Code) _NOEXCEPT
 

Typedef Documentation

Enumeration Type Documentation

Enumerator
none 
follow_directory_symlink 
Enumerator
none 
owner_read 
owner_write 
owner_exec 
owner_all 
group_read 
group_write 
group_exec 
group_all 
others_read 
others_write 
others_exec 
others_all 
all 
set_uid 
set_gid 
sticky_bit 
mask 
unknown 
add_perms 
remove_perms 
resolve_symlinks 
79  { // names for permissions
80  none = 0,
81  owner_read = 0400, // S_IRUSR
82  owner_write = 0200, // S_IWUSR
83  owner_exec = 0100, // S_IXUSR
84  owner_all = 0700, // S_IRWXU
85  group_read = 040, // S_IRGRP
86  group_write = 020, // S_IWGRP
87  group_exec = 010, // S_IXGRP
88  group_all = 070, // S_IRWXG
89  others_read = 04, // S_IROTH
90  others_write = 02, // S_IWOTH
91  others_exec = 01, // S_IXOTH
92  others_all = 07, // S_IRWXO
93  all = 0777,
94  set_uid = 04000, // S_ISUID
95  set_gid = 02000, // S_ISGID
96  sticky_bit = 01000, // S_ISVTX
97  mask = 07777,
98  unknown = 0xFFFF,
99  add_perms = 0x10000,
100  remove_perms = 0x20000,
101  resolve_symlinks = 0x40000
102  };

Function Documentation

path experimental::filesystem::v1::_Absolute ( const path &  _Path,
const path &  _Base,
error_code _Code 
)
inline
2180  { // make absolute path from _Path and directory _Base; errors in _Code
2181  _Code = error_code();
2182  bool _Path_has_root_name = _Path.has_root_name();
2183  bool _Path_has_root_directory = _Path.has_root_directory();
2184  if (_Path_has_root_name && _Path_has_root_directory)
2185  return (_Path); // fine as is
2186 
2187  path _Current = current_path(_Code);
2188  if (_Code != error_code())
2189  return (path());
2190  path _Abs_base = _Absolute(_Base, _Current, _Code);
2191  if (_Code != error_code())
2192  return (path());
2193 
2194  if (_Path_has_root_name)
2195  { // insert _Base
2196  return (_Path.root_name()
2197  / _Abs_base.root_directory()
2198  / _Abs_base.relative_path()
2199  / _Path.relative_path());
2200  }
2201  else
2202  if (_Path_has_root_directory)
2203  return (_Abs_base.root_name()
2204  / _Path); // prepend root name of base
2205  else
2206  return (_Abs_base
2207  / _Path); // prepend absolute name of base
2208  }
void current_path(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2635
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
path _Absolute(const path &, const path &, error_code &)
Definition: filesystem:2178
_In_ int _Base
Definition: time.h:323
void experimental::filesystem::v1::_Canonicalize_string_only ( path &  _Canon_path,
const path &  _Abs_path 
)
inline
2222  { // transform absolute path _Abs_path, removing .s, and ..s, using string
2223  // manipulations (rather than platform support)
2224  vector<path> _Components;
2225  path::const_iterator _Abs_path_next = _Abs_path.begin();
2226  const path::const_iterator _Abs_path_end = _Abs_path.end();
2227  // This is safe because we have already made the path absolute
2228  _Canon_path /= *_Abs_path_next; // root_name
2229  ++_Abs_path_next;
2230  _Canon_path /= *_Abs_path_next; // root_directory
2231  ++_Abs_path_next;
2232  for (; _Abs_path_next != _Abs_path_end; ++_Abs_path_next)
2233  {
2234  const auto _Cstr = _Abs_path_next->c_str();
2235  if (_Cstr[0] == _FS_PERIOD)
2236  {
2237  if (_Cstr[1] == static_cast<path::value_type>(0))
2238  continue; // consume "."
2239  else if (_Cstr[1] == _FS_PERIOD
2240  && _Cstr[2] == static_cast<path::value_type>(0))
2241  {
2242  // If no parent is found to remove with .., ignore ..
2243  // (that is, C:\..\..\..\Meow canonicalizes to C:\Meow)
2244  if (!_Components.empty())
2245  _Components.pop_back();
2246 
2247  continue; // consume ".."
2248  }
2249  }
2250 
2251  _Components.push_back(*_Abs_path_next);
2252  }
2253 
2254  for (const auto& _Component : _Components)
2255  _Canon_path /= _Component;
2256  }
iterator begin() _NOEXCEPT
Definition: vector:1643
#define _FS_PERIOD
Definition: filesystem:37
Definition: vector:699
void push_back(const _Ty &_Val)
Definition: vector:945
void pop_back()
Definition: vector:1555
bool empty() const _NOEXCEPT
Definition: vector:1703
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Chmod ( const wchar_t ,
_Perms   
)
_FS_DLL void __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Close_dir ( void )
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Copy_file ( const wchar_t ,
const wchar_t  
)
bool experimental::filesystem::v1::_Copy_options_indicate_recursive_copy ( _Copy_options  _Opts)
inline
2299  { // Checks a _Copy_options for whether copy should call itself recursively
2300  if (_Opts == _Copy_options::none)
2301  // This supports "copying a directory" as copying the directory and
2302  // files therein but not subdirectories.
2303  return (true);
2304  if ((_Opts & _Copy_options::recursive) != _Copy_options::none)
2305  return (true);
2306  return (false);
2307  }
_FS_DLL bool __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Current_get ( wchar_t(&)  [_MAX_FILESYS_NAME])
_FS_DLL bool __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Current_set ( const wchar_t )
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Equivalent ( const wchar_t ,
const wchar_t  
)
_FS_DLL uintmax_t __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_File_size ( const wchar_t )
_FS_DLL uintmax_t __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Hard_links ( const wchar_t )
_FS_DLL int64_t __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Last_write_time ( const wchar_t )
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Link ( const wchar_t ,
const wchar_t  
)
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Lstat ( const wchar_t ,
_Perms *   
)
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Make_dir ( const wchar_t ,
const wchar_t  
)
_FS_DLL void* __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Open_dir ( wchar_t(&)  [_MAX_FILESYS_NAME],
const wchar_t ,
int ,
_File_type &   
)
_FS_DLL wchar_t* __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Read_dir ( wchar_t(&)  [_MAX_FILESYS_NAME],
void ,
_File_type &   
)
bool experimental::filesystem::v1::_Remove_all ( const path &  _Path,
uintmax_t _Ans,
error_code _Code 
)
inline
3013  { // recursively remove a file or directory, count removed files
3014  _Code = error_code();
3015  if (is_directory(_Path))
3016  { // empty and remove a directory
3017  typedef _Directory_iterator<false_type> _Myit;
3018  _Myit _Last;
3019 
3020  for (; ; )
3021  { // remove a directory entry
3022  _Myit _First(_Path);
3023  if (_First == _Last)
3024  break;
3025  if (!_Remove_all(_Path / _First->path(), _Ans, _Code))
3026  return (false);
3027  }
3028  if (_Remove_dir(_Path.c_str()))
3029  return (true);
3030  else
3031  { // couldn't remove emptied directory, report it
3033  return (false);
3034  }
3035  }
3036  else if (!remove(_Path, _Code))
3037  return (false);
3038  else
3039  { // file remove succeeded, count it
3040  ++_Ans;
3041  return (true);
3042  }
3043  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Remove_dir(const wchar_t *)
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
bool _Remove_all(const path &_Path, uintmax_t &_Ans, error_code &_Code) _NOEXCEPT
Definition: filesystem:3011
_FwdIt _Last
Definition: algorithm:1936
_FS_DLL bool __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Remove_dir ( const wchar_t )
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Rename ( const wchar_t ,
const wchar_t  
)
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Resize ( const wchar_t ,
uintmax_t   
)
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Set_last_write_time ( const wchar_t ,
int64_t   
)
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Stat ( const wchar_t ,
_Perms *   
)
_FS_DLL space_info __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Statvfs ( const wchar_t )
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Symlink ( const wchar_t ,
const wchar_t  
)
_FS_DLL wchar_t* __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Symlink_get ( wchar_t(&)  [_MAX_FILESYS_NAME],
const wchar_t  
)
_FS_DLL wchar_t* __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Temp_get ( wchar_t(&)  [_MAX_FILESYS_NAME])
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_To_byte ( const wchar_t ,
char  
)
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_To_wide ( const char ,
wchar_t  
)
_FS_DLL int __CLRCALL_PURE_OR_CDECL experimental::filesystem::v1::_Unlink ( const wchar_t )
path experimental::filesystem::v1::absolute ( const path &  _Path,
const path &  _Base = current_path() 
)
inline
2212  { // make absolute path from _Path and directory _Base
2213  error_code _Code;
2214  path _Result = _Absolute(_Path, _Base, _Code);
2215  if (_Code != error_code())
2216  _THROW_NCEE(filesystem_error,
2217  "absolute(p1, p2): current_path() couldn't get current working directory");
2218  return (_Result);
2219  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
path _Absolute(const path &, const path &, error_code &)
Definition: filesystem:2178
_In_ int _Base
Definition: time.h:323
#define _THROW_NCEE(x, y)
Definition: xstddef:51
_Result
Definition: corecrt_wconio.h:362
const directory_iterator& experimental::filesystem::v1::begin ( const directory_iterator &  _Iter)
inline
1962  { // return begin directory_iterator for range-based for
1963  return (_Iter);
1964  }
const recursive_directory_iterator& experimental::filesystem::v1::begin ( const recursive_directory_iterator &  _Iter)
inline
2167  { // return begin recursive_directory_iterator for range-based for
2168  return (_Iter);
2169  }
path experimental::filesystem::v1::canonical ( const path &  _Path,
error_code _Code 
)
inline
2272  { // make absolute path from _Path with no ., .., or symlink
2273  path _Current = current_path(_Code);
2274  if (_Code != error_code())
2275  return (path());
2276  return (canonical(_Path, _Current, _Code));
2277  }
path canonical(const path &_Path, const path &_Base=current_path())
Definition: filesystem:2258
void current_path(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2635
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
path experimental::filesystem::v1::canonical ( const path &  _Path,
const path &  _Base,
error_code _Code 
)
inline
2281  { // make absolute path from _Path, _Base with no ".", "..", symlink
2282  _Code = error_code();
2283  path _Canon_path; // NRVO this variable
2284  path _Abs_path = _Absolute(_Path, _Base, _Code);
2285  if (_Code != error_code())
2286  return (_Canon_path);
2287 
2288  if (_Abs_path.native().size() >= _MAX_FILESYS_NAME)
2289  {
2291  return (_Canon_path);
2292  }
2293 
2294  _Canonicalize_string_only(_Canon_path, _Abs_path);
2295  return (_Canon_path);
2296  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
path _Absolute(const path &, const path &, error_code &)
Definition: filesystem:2178
_In_ int _Base
Definition: time.h:323
#define _MAX_FILESYS_NAME
Definition: filesystem:26
void _Canonicalize_string_only(path &, const path &)
Definition: filesystem:2221
path experimental::filesystem::v1::canonical ( const path &  _Path,
const path &  _Base = current_path() 
)
inline
2260  { // make absolute path from _Path, _Base with no ., .., or symlink
2261  error_code _Code;
2262  path _Ans = canonical(_Path, _Base, _Code);
2263 
2264  if (_Code != error_code())
2265  _THROW_NCEE(filesystem_error,
2266  "canonical(p1, p2): invalid arguments");
2267  return (_Ans);
2268  }
path canonical(const path &_Path, const path &_Base=current_path())
Definition: filesystem:2258
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_In_ int _Base
Definition: time.h:323
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void experimental::filesystem::v1::copy ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
2310  { // copy _Oldpval to _Newpval, general
2311  error_code _Code;
2312 
2313  copy(_Oldpval, _Newpval, _Copy_options::none, _Code);
2314  if (_Code != error_code())
2315  _THROW_NCEE(filesystem_error,
2316  "copy(p1, p2): invalid arguments");
2317  }
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2347
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void experimental::filesystem::v1::copy ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2321  { // copy _Oldpval to _Newpval, general
2322  copy(_Oldpval, _Newpval, _Copy_options::none, _Code);
2323  }
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2347
void experimental::filesystem::v1::copy ( const path &  _Oldpval,
const path &  _Newpval,
_Copy_options  _Opts 
)
inline
2327  { // copy _Oldpval to _Newpval, general
2328  error_code _Code;
2329 
2330  copy(_Oldpval, _Newpval, _Opts, _Code);
2331  if (_Code != error_code())
2332  _THROW_NCEE(filesystem_error,
2333  "copy(p1, p2, options): invalid arguments");
2334  }
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2347
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void experimental::filesystem::v1::copy ( const path &  _Oldpval,
const path &  _Newpval,
_Copy_options  _Opts,
error_code _Code 
)
inline
2339  { // copy _Oldpval to _Newpval, general
2340  file_status _Oldstat;
2341  file_status _Newstat;
2342  error_code _Code2;
2343 
2344  _Code = error_code();
2345  if ((_Opts & _Copy_options::create_symlinks) != _Copy_options::none
2346  || (_Opts & _Copy_options::skip_symlinks) != _Copy_options::none)
2347  { // get symlink status
2348  _Oldstat = symlink_status(_Oldpval);
2349  _Newstat = symlink_status(_Newpval);
2350  }
2351  else
2352  { // get file status
2353  _Oldstat = status(_Oldpval);
2354  _Newstat = status(_Newpval);
2355  }
2356  if (!exists(_Oldstat)
2357  || equivalent(_Oldpval, _Newpval, _Code2)
2358  || is_other(_Oldstat)
2359  || is_other(_Newstat)
2360  || (is_directory(_Oldstat) && is_regular_file(_Newstat)))
2362  else if (is_symlink(_Oldstat))
2363  if ((_Opts & _Copy_options::skip_symlinks) != _Copy_options::none)
2364  ;
2365  else if (!exists(_Newstat)
2366  && (_Opts & _Copy_options::copy_symlinks) != _Copy_options::none)
2367  copy_symlink(_Oldpval, _Newpval, _Code);
2368  else
2370  else if (is_regular_file(_Oldstat))
2371  if ((_Opts & _Copy_options::directories_only) != _Copy_options::none)
2372  ;
2373  else if ((_Opts & _Copy_options::create_symlinks)
2374  != _Copy_options::none)
2375  create_symlink(_Oldpval, _Newpval, _Code);
2376  else if ((_Opts & _Copy_options::create_hard_links)
2377  != _Copy_options::none)
2378  create_hard_link(_Oldpval, _Newpval, _Code);
2379  else if (is_directory(_Newstat))
2380  copy_file(_Oldpval, _Newpval / _Oldpval.filename(), _Opts, _Code);
2381  else
2382  copy_file(_Oldpval, _Newpval, _Opts, _Code);
2383  else if (is_directory(_Oldstat)
2385  { // copy directory recursively
2386  if (!exists(_Newpval) && !create_directory(_Newpval, _Code) && !_Code)
2388  for (directory_iterator _Next(_Oldpval), _End;
2389  _Code == error_code() && _Next != _End; ++_Next)
2390  copy(_Next->path(),
2391  _Newpval / _Next->path().filename(),
2392  _Opts | _Copy_options::_Unspecified_recursion_prevention_tag,
2393  _Code);
2394  }
2395  }
bool _Copy_options_indicate_recursive_copy(_Copy_options _Opts)
Definition: filesystem:2298
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2347
void create_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2595
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
void create_hard_link(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2576
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
Definition: system_error:218
bool equivalent(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2654
bool is_other(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2827
bool copy_file(const path &, const path &, _Copy_options, error_code &) _NOEXCEPT
Definition: filesystem:2414
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2843
file_status symlink_status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3155
_Directory_iterator< true_type > directory_iterator
Definition: filesystem:1958
bool create_directory(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2535
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2875
void copy_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2456
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::copy_file ( const path &  _Oldpval,
const path &  _Newpval,
_Copy_options  _Opt = copy_options::none 
)
inline
2399  { // copy _Oldpval to _Newpval
2400  error_code _Code;
2401  bool _Ans = copy_file(_Oldpval, _Newpval, _Opt, _Code);
2402  if (_Code != error_code())
2403  _THROW_NCEE(filesystem_error,
2404  "copy_file(p1, p2, options): invalid arguments");
2405  return (_Ans);
2406  }
Definition: system_error:218
bool copy_file(const path &, const path &, _Copy_options, error_code &) _NOEXCEPT
Definition: filesystem:2414
#define _THROW_NCEE(x, y)
Definition: xstddef:51
bool experimental::filesystem::v1::copy_file ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2410  { // copy _Oldpval to _Newpval
2411  return (copy_file(_Oldpval, _Newpval, copy_options::none, _Code));
2412  }
bool copy_file(const path &, const path &, _Copy_options, error_code &) _NOEXCEPT
Definition: filesystem:2414
bool experimental::filesystem::v1::copy_file ( const path &  _Oldpval,
const path &  _Newpval,
_Copy_options  _Opt,
error_code _Code 
)
inline
2417  { // copy _Oldpval to _Newpval
2418  _Opt &= (copy_options::skip_existing
2419  | copy_options::overwrite_existing
2420  | copy_options::update_existing);
2421  bool _Exists = exists(_Newpval);
2422  bool _Ans = false;
2423  file_time_type _Oldtime;
2424  file_time_type _Newtime;
2425 
2426  _Code = error_code();
2427  if (_Exists && (_Opt == copy_options::none
2428  || equivalent(_Oldpval, _Newpval, _Code)))
2430  else if (_Code)
2431  ; // equivalent() failed, report error
2432  else if (!_Exists
2433  || (_Opt & copy_options::overwrite_existing) != copy_options::none
2434  || ((_Opt & copy_options::update_existing) != copy_options::none
2435  && ((void)(_Oldtime = last_write_time(_Oldpval, _Code)), !_Code)
2436  && ((void)(_Newtime = last_write_time(_Newpval, _Code)), !_Code)
2437  && _Newtime < _Oldtime))
2438  { // ok to overwrite, if necessary
2439  if (_Copy_file(_Oldpval.c_str(), _Newpval.c_str()) == 0)
2440  _Ans = true;
2441  else
2443  }
2444  return (_Ans);
2445  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
Definition: system_error:218
bool equivalent(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2654
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Copy_file(const wchar_t *, const wchar_t *)
chrono::system_clock::time_point file_time_type
Definition: filesystem:593
void last_write_time(const path &, file_time_type)
Definition: filesystem:2905
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
void experimental::filesystem::v1::copy_symlink ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
2448  { // copy symlink, file or directory
2449  error_code _Code;
2450  copy_symlink(_Oldpval, _Newpval, _Code);
2451  if (_Code != error_code())
2452  _THROW_NCEE(filesystem_error,
2453  "copy_symlink(p1, p2): invalid arguments");
2454  }
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void copy_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2456
void experimental::filesystem::v1::copy_symlink ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2458  { // copy symlink, file or directory
2459  if (is_directory(_Oldpval))
2460  create_directory_symlink(_Oldpval, _Newpval, _Code);
2461  else
2462  create_symlink(_Oldpval, _Newpval, _Code);
2463  }
void create_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2595
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
void create_directory_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2556
bool experimental::filesystem::v1::create_directories ( const path &  _Path)
inline
2466  { // create directories chain
2467  error_code _Code;
2468  bool _Ans = create_directories(_Path, _Code);
2469  if (_Code != error_code())
2470  _THROW_NCEE(filesystem_error,
2471  "create_directories(p): invalid argument");
2472  return (_Ans);
2473  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
bool create_directories(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2475
bool experimental::filesystem::v1::create_directories ( const path &  _Path,
error_code _Code 
)
inline
2477  { // create directory chain
2478  _Code = error_code();
2479  if (_Path.empty())
2480  return (false);
2481  else if (!exists(_Path))
2482  { // recursively create parent directories, then current
2483  create_directories(_Path.parent_path(), _Code);
2484  if (_Code)
2485  return (false); // report error
2486 
2487  create_directory(_Path, _Code);
2488  if (_Code)
2489  return (false); // report error
2490 
2491  return (true);
2492  }
2493  else if (is_directory(_Path))
2494  return (false); // directory already there
2495  else
2496  { // report bad argument
2498  return (false);
2499  }
2500  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
bool create_directories(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2475
bool create_directory(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2535
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
bool experimental::filesystem::v1::create_directory ( const path &  _Path)
inline
2503  { // create a directory
2504  error_code _Code;
2505  bool _Ans = create_directory(_Path, _Code);
2506 
2507  if (_Code != error_code())
2508  _THROW_NCEE(filesystem_error,
2509  "create_directory(p): invalid argument");
2510  return (_Ans);
2511  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
bool create_directory(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2535
bool experimental::filesystem::v1::create_directory ( const path &  _Path,
error_code _Code 
)
inline
2515  { // create a directory
2516  int _Ans = _Make_dir(_Path.c_str(), 0);
2517 
2518  _Code = error_code();
2519  if (_Ans < 0)
2521  return (0 < _Ans);
2522  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Make_dir(const wchar_t *, const wchar_t *)
bool experimental::filesystem::v1::create_directory ( const path &  _Path,
const path &  _Attrs 
)
inline
2525  { // create a directory, copying attributes
2526  error_code _Code;
2527  bool _Ans = create_directory(_Path, _Attrs, _Code);
2528 
2529  if (_Code != error_code())
2530  _THROW_NCEE(filesystem_error,
2531  "create_directory(p1, p2): invalid arguments");
2532  return (_Ans);
2533  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
bool create_directory(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2535
bool experimental::filesystem::v1::create_directory ( const path &  _Path,
const path &  _Attrs,
error_code _Code 
)
inline
2537  { // create a directory, copying attributes
2538  int _Ans = _Make_dir(_Path.c_str(), _Attrs.c_str());
2539 
2540  _Code = error_code();
2541  if (_Ans < 0)
2543  return (0 < _Ans);
2544  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Make_dir(const wchar_t *, const wchar_t *)
void experimental::filesystem::v1::create_directory_symlink ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
2548  { // symlink directory _Newpval to _Oldpval
2549  error_code _Code;
2550  create_directory_symlink(_Oldpval, _Newpval, _Code);
2551  if (_Code != error_code())
2552  _THROW_NCEE(filesystem_error,
2553  "create_directory_symlink(p1, p2): invalid arguments");
2554  }
Definition: system_error:218
void create_directory_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2556
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void experimental::filesystem::v1::create_directory_symlink ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2559  { // symlink directory_Newpval to _Oldpval (NB: SAME AS FILE)
2560  int _Ans = _Symlink(_Oldpval.c_str(), _Newpval.c_str());
2561 
2562  _Code = error_code();
2563  if (_Ans != 0)
2564  _Code = error_code(_Ans, _STD system_category());
2565  }
const error_category & system_category() _NOEXCEPT
Definition: system_error:709
Definition: system_error:218
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Symlink(const wchar_t *, const wchar_t *)
void experimental::filesystem::v1::create_hard_link ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
2568  { // hard link _Newpval to _Oldpval
2569  error_code _Code;
2570  create_hard_link(_Oldpval, _Newpval, _Code);
2571  if (_Code != error_code())
2572  _THROW_NCEE(filesystem_error,
2573  "create_hard_link(p1, p2): invalid arguments");
2574  }
void create_hard_link(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2576
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void experimental::filesystem::v1::create_hard_link ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2578  { // hard link _Newpval to _Oldpval
2579  int _Ans = _Link(_Oldpval.c_str(), _Newpval.c_str());
2580 
2581  _Code = error_code();
2582  if (_Ans != 0)
2583  _Code = error_code(_Ans, _STD system_category());
2584  }
const error_category & system_category() _NOEXCEPT
Definition: system_error:709
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Link(const wchar_t *, const wchar_t *)
Definition: system_error:218
void experimental::filesystem::v1::create_symlink ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
2587  { // symlink _Newpval to _Oldpval
2588  error_code _Code;
2589  create_symlink(_Oldpval, _Newpval, _Code);
2590  if (_Code != error_code())
2591  _THROW_NCEE(filesystem_error,
2592  "create_symlink(p1, p2): invalid arguments");
2593  }
void create_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2595
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void experimental::filesystem::v1::create_symlink ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2597  { // symlink _Newpval to _Oldpval
2598  int _Ans = _Symlink(_Oldpval.c_str(), _Newpval.c_str());
2599 
2600  _Code = error_code();
2601  if (_Ans != 0)
2602  _Code = error_code(_Ans, _STD system_category());
2603  }
const error_category & system_category() _NOEXCEPT
Definition: system_error:709
Definition: system_error:218
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Symlink(const wchar_t *, const wchar_t *)
path experimental::filesystem::v1::current_path ( )
inline
2606  { // get current working directory
2607  error_code _Code;
2608  path _Ans = current_path(_Code);
2609  if (_Code != error_code())
2610  _THROW_NCEE(filesystem_error,
2611  "current_path(): can't get current working directory");
2612  return (_Ans);
2613  }
void current_path(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2635
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
path experimental::filesystem::v1::current_path ( error_code _Code)
inline
2617  { // get current working directory
2618  _Code = error_code();
2620  if (!_Current_get(_Dest))
2621  { // report error
2623  return (path());
2624  }
2625  return (path(_Dest));
2626  }
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Current_get(wchar_t(&)[_MAX_FILESYS_NAME])
unsigned _Dest
Definition: mbstring.h:107
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
Definition: system_error:218
#define _MAX_FILESYS_NAME
Definition: filesystem:26
wchar_t _Pchar
Definition: filesystem:32
void experimental::filesystem::v1::current_path ( const path &  _Path)
inline
2629  { // set current working directory
2630  if (!_Current_set(_Path.c_str()))
2631  _THROW_NCEE(filesystem_error,
2632  "current_path(p): invalid argument");
2633  }
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Current_set(const wchar_t *)
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void experimental::filesystem::v1::current_path ( const path &  _Path,
error_code _Code 
)
inline
2637  { // set current working directory
2638  _Code = error_code();
2639  if (!_Current_set(_Path.c_str()))
2641  }
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Current_set(const wchar_t *)
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
directory_iterator experimental::filesystem::v1::end ( const directory_iterator &  )
inline
1968  { // return end directory_iterator for range-based for
1969  return (directory_iterator());
1970  }
_Directory_iterator< true_type > directory_iterator
Definition: filesystem:1958
recursive_directory_iterator experimental::filesystem::v1::end ( const recursive_directory_iterator &  )
inline
2173  { // return end recursive_directory_iterator for range-based for
2174  return (recursive_directory_iterator());
2175  }
bool experimental::filesystem::v1::equivalent ( const path &  _Path1,
const path &  _Path2 
)
inline
2644  { // test if paths designate same file
2645  error_code _Code;
2646  int _Ans = equivalent(_Path1, _Path2, _Code);
2647 
2648  if (_Code != error_code())
2649  _THROW_NCEE(filesystem_error,
2650  "equivalent(p1, p2): invalid arguments");
2651  return (0 < _Ans);
2652  }
Definition: system_error:218
bool equivalent(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2654
#define _THROW_NCEE(x, y)
Definition: xstddef:51
bool experimental::filesystem::v1::equivalent ( const path &  _Path1,
const path &  _Path2,
error_code _Code 
)
inline
2656  { // test if paths designate same file
2657  int _Ans = _Equivalent(_Path1.c_str(), _Path2.c_str());
2658 
2659  _Code = error_code();
2660  if (_Ans < 0)
2662  return (0 < _Ans);
2663  }
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Equivalent(const wchar_t *, const wchar_t *)
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
Definition: system_error:218
bool experimental::filesystem::v1::exists ( file_status  _Stat)
inline
2666  { // test if path exists
2667  return (status_known(_Stat)
2668  && _Stat.type() != _File_type::not_found);
2669  }
bool status_known(file_status) _NOEXCEPT
Definition: filesystem:3144
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::exists ( const path &  _Path)
inline
2672  { // test if path exists
2673  return (exists(status(_Path)));
2674  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::exists ( const path &  _Path,
error_code _Code 
)
inline
2678  { // test if path exists
2679  _Code = error_code();
2680  return (exists(status(_Path)));
2681  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
uintmax_t experimental::filesystem::v1::file_size ( const path &  _Path)
inline
2684  { // get file size
2685  error_code _Code;
2686  uintmax_t _Ans = file_size(_Path, _Code);
2687  if (_Code != error_code())
2688  _THROW_NCEE(filesystem_error,
2689  "file_size(p): invalid argument");
2690  return (_Ans);
2691  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
uintmax_t file_size(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2693
#define _THROW_NCEE(x, y)
Definition: xstddef:51
unsigned long long uintmax_t
Definition: stdint.h:45
uintmax_t experimental::filesystem::v1::file_size ( const path &  _Path,
error_code _Code 
)
inline
2695  { // get file size
2696  uintmax_t _Ans = (uintmax_t)-1;
2697  file_status _Stat = status(_Path);
2698 
2699  _Code = error_code();
2700  if (exists(_Stat) && is_regular_file(_Stat))
2701  _Ans = _File_size(_Path.c_str());
2702  if (_Ans == (uintmax_t)-1)
2704  return (_Ans);
2705  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL uintmax_t __CLRCALL_PURE_OR_CDECL _File_size(const wchar_t *)
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2843
unsigned long long uintmax_t
Definition: stdint.h:45
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
uintmax_t experimental::filesystem::v1::hard_link_count ( const path &  _Path)
inline
2708  { // get hard link count
2709  error_code _Code;
2710  uintmax_t _Ans = hard_link_count(_Path, _Code);
2711  if (_Code != error_code())
2712  _THROW_NCEE(filesystem_error,
2713  "hard_link_count(p): invalid argument");
2714  return (_Ans);
2715  }
uintmax_t hard_link_count(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2717
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
unsigned long long uintmax_t
Definition: stdint.h:45
uintmax_t experimental::filesystem::v1::hard_link_count ( const path &  _Path,
error_code _Code 
)
inline
2719  { // get hard link count
2720  _Code = error_code();
2721  uintmax_t _Ans = _Hard_links(_Path.c_str());
2722  if (_Ans == (uintmax_t)-1)
2724  return (_Ans);
2725  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL uintmax_t __CLRCALL_PURE_OR_CDECL _Hard_links(const wchar_t *)
unsigned long long uintmax_t
Definition: stdint.h:45
size_t experimental::filesystem::v1::hash_value ( const path &  _Path)
inline
1494  { // get hash value for path
1495  return (hash<path::string_type>()(_Path.native()));
1496  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: xstddef:367
bool experimental::filesystem::v1::is_block_file ( file_status  _Stat)
inline
2728  { // test for block file
2729  return (_Stat.type() == _File_type::block);
2730  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_block_file ( const path &  _Path)
inline
2733  { // test for block file
2734  return (is_block_file(status(_Path)));
2735  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_block_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2737
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_block_file ( const path &  _Path,
error_code _Code 
)
inline
2739  { // test for block file
2740  return (is_block_file(status(_Path, _Code)));
2741  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_block_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2737
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_character_file ( file_status  _Stat)
inline
2744  { // test for character file
2745  return (_Stat.type() == _File_type::character);
2746  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_character_file ( const path &  _Path)
inline
2749  { // test for character file
2750  return (is_character_file(status(_Path)));
2751  }
bool is_character_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2753
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_character_file ( const path &  _Path,
error_code _Code 
)
inline
2755  { // test for character file
2756  return (is_character_file(status(_Path, _Code)));
2757  }
bool is_character_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2753
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_directory ( file_status  _Stat)
inline
2760  { // test for directory
2761  return (_Stat.type() == _File_type::directory);
2762  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_directory ( const path &  _Path)
inline
2765  { // test for directory
2766  return (is_directory(status(_Path)));
2767  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_directory ( const path &  _Path,
error_code _Code 
)
inline
2771  { // test for directory
2772  return (is_directory(status(_Path, _Code)));
2773  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_empty ( const path &  _Path)
inline
2776  { // test if path is empty
2777  error_code _Code;
2778  bool _Ans = _FSPFX is_empty(_Path, _Code);
2779  if (_Code != error_code())
2780  _THROW_NCEE(filesystem_error,
2781  "is_empty(p): invalid argument");
2782  return (_Ans);
2783  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
#define _FSPFX
Definition: filesystem:41
bool is_empty(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2785
bool experimental::filesystem::v1::is_empty ( const path &  _Path,
error_code _Code 
)
inline
2787  { // test if path is empty
2788  file_status _Stat = status(_Path);
2789 
2790  _Code = error_code();
2791  if (is_directory(_Stat))
2792  return (directory_iterator(_Path)
2793  == directory_iterator());
2794  else
2795  return (file_size(_Path, _Code) == 0);
2796  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
uintmax_t file_size(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2693
_Directory_iterator< true_type > directory_iterator
Definition: filesystem:1958
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_fifo ( file_status  _Stat)
inline
2799  { // test for fifo file
2800  return (_Stat.type() == _File_type::fifo);
2801  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_fifo ( const path &  _Path)
inline
2804  { // test for fifo file
2805  return (is_fifo(status(_Path)));
2806  }
bool is_fifo(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2808
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_fifo ( const path &  _Path,
error_code _Code 
)
inline
2810  { // test for fifo file
2811  return (is_fifo(status(_Path, _Code)));
2812  }
bool is_fifo(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2808
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_other ( file_status  _Stat)
inline
2815  { // test if path is other file type
2816  return (exists(_Stat)
2817  && !is_regular_file(_Stat)
2818  && !is_directory(_Stat)
2819  && !is_symlink(_Stat));
2820  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2843
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2875
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
bool experimental::filesystem::v1::is_other ( const path &  _Path)
inline
2823  { // test if path is other file type
2824  return (is_other(status(_Path)));
2825  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_other(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2827
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_other ( const path &  _Path,
error_code _Code 
)
inline
2829  { // test for other file types
2830  return (is_other(status(_Path, _Code)));
2831  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_other(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2827
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_regular_file ( file_status  _Stat)
inline
2834  { // test for regular file
2835  return (_Stat.type() == _File_type::regular);
2836  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_regular_file ( const path &  _Path)
inline
2839  { // test for regular file
2840  return (is_regular_file(status(_Path)));
2841  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2843
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_regular_file ( const path &  _Path,
error_code _Code 
)
inline
2845  { // test for regular file
2846  return (is_regular_file(status(_Path, _Code)));
2847  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2843
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_socket ( file_status  _Stat)
inline
2850  { // test for socket file
2851  return (_Stat.type() == _File_type::socket);
2852  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_socket ( const path &  _Path)
inline
2855  { // test for socket file
2856  return (is_socket(status(_Path)));
2857  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_socket(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2859
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_socket ( const path &  _Path,
error_code _Code 
)
inline
2861  { // test for socket file
2862  return (is_socket(status(_Path, _Code)));
2863  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_socket(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2859
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_symlink ( file_status  _Stat)
inline
2866  { // test for symlink
2867  return (_Stat.type() == _File_type::symlink);
2868  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_symlink ( const path &  _Path)
inline
2871  { // test for symlink
2872  return (is_symlink(status(_Path)));
2873  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2875
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
bool experimental::filesystem::v1::is_symlink ( const path &  _Path,
error_code _Code 
)
inline
2877  { // test for symlink
2878  return (is_symlink(status(_Path, _Code)));
2879  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2875
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
file_time_type experimental::filesystem::v1::last_write_time ( const path &  _Path,
error_code _Code 
)
inline
2893  { // get last write time
2894  int64_t _Ticks = _Last_write_time(_Path.c_str());
2895 
2896  _Code = error_code();
2897  if (_Ticks == -1)
2898  { // report error
2900  return ((file_time_type::min)());
2901  }
2903  }
#define min(a, b)
Definition: minmax.h:18
long long int64_t
Definition: stdint.h:20
Definition: chrono:67
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL int64_t __CLRCALL_PURE_OR_CDECL _Last_write_time(const wchar_t *)
chrono::system_clock::time_point file_time_type
Definition: filesystem:593
file_time_type experimental::filesystem::v1::last_write_time ( const path &  _Path)
inline
2882  { // get last write time
2883  error_code _Code;
2884  file_time_type _Ans = last_write_time(_Path, _Code);
2885  if (_Code != error_code())
2886  _THROW_NCEE(filesystem_error,
2887  "last_write_time(p): invalid argument");
2888  return (_Ans);
2889  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
chrono::system_clock::time_point file_time_type
Definition: filesystem:593
void last_write_time(const path &, file_time_type)
Definition: filesystem:2905
void experimental::filesystem::v1::last_write_time ( const path &  _Path,
file_time_type  _Newtime,
error_code _Code 
)
inline
2916  { // set last write time
2917  _Code = error_code();
2918  if (_Set_last_write_time(_Path.c_str(),
2919  _Newtime.time_since_epoch().count()) == 0)
2921  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Set_last_write_time(const wchar_t *, int64_t)
void experimental::filesystem::v1::last_write_time ( const path &  _Path,
file_time_type  _Newtime 
)
inline
2906  { // set last write time
2907  error_code _Code;
2908  last_write_time(_Path, _Newtime, _Code);
2909  if (_Code != error_code())
2910  _THROW_NCEE(filesystem_error,
2911  "last_write_time(p, new_time): invalid arguments");
2912  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void last_write_time(const path &, file_time_type)
Definition: filesystem:2905
bool experimental::filesystem::v1::operator!= ( const path &  _Left,
const path &  _Right 
)
inline
1504  { // test for path inequality
1505  return (!(_Left == _Right));
1506  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Prefix_directory >
bool experimental::filesystem::v1::operator!= ( const _Directory_iterator< _Prefix_directory > &  _Left,
const _Directory_iterator< _Prefix_directory > &  _Right 
)
inline
1954  { // test for _Directory_iterator inequality
1955  return (!(_Left == _Right));
1956  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
bool experimental::filesystem::v1::operator!= ( const recursive_directory_iterator &  _Left,
const recursive_directory_iterator &  _Right 
)
inline
2161  { // test for recursive_directory_iterator inequality
2162  return (!(_Left == _Right));
2163  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
path experimental::filesystem::v1::operator/ ( const path &  _Left,
const path &  _Right 
)
inline
1529  { // concatenate paths
1530  path _Ans = _Left;
1531  return (_Ans /= _Right);
1532  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
bool experimental::filesystem::v1::operator< ( const path &  _Left,
const path &  _Right 
)
inline
1509  { // test if _Left < _Right
1510  return (_Left.native() < _Right.native());
1511  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Elem , class _Traits >
basic_ostream<_Elem, _Traits>& experimental::filesystem::v1::operator<< ( basic_ostream< _Elem, _Traits > &  _Ostr,
const path &  _Path 
)
inline
1538  { // insert a path
1539  return (_Ostr << _Path.string<_Elem, _Traits, allocator<_Elem> >());
1540  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: iosfwd:558
bool experimental::filesystem::v1::operator<= ( const path &  _Left,
const path &  _Right 
)
inline
1514  { // test if _Left <= _Right
1515  return (!(_Right < _Left));
1516  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
bool experimental::filesystem::v1::operator== ( const path &  _Left,
const path &  _Right 
)
inline
1499  { // test for path equality
1500  return (_Left.native() == _Right.native());
1501  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Prefix_directory >
bool experimental::filesystem::v1::operator== ( const _Directory_iterator< _Prefix_directory > &  _Left,
const _Directory_iterator< _Prefix_directory > &  _Right 
)
inline
1946  { // test for _Directory_iterator equality
1947  return (_Left._Equal(_Right));
1948  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
bool experimental::filesystem::v1::operator== ( const recursive_directory_iterator &  _Left,
const recursive_directory_iterator &  _Right 
)
inline
2154  { // test for recursive_directory_iterator equality
2155  return (_Left._Equal(_Right));
2156  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
bool experimental::filesystem::v1::operator> ( const path &  _Left,
const path &  _Right 
)
inline
1519  { // test if _Left > _Right
1520  return (_Right < _Left);
1521  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
bool experimental::filesystem::v1::operator>= ( const path &  _Left,
const path &  _Right 
)
inline
1524  { // test if _Left >= _Right
1525  return (!(_Left < _Right));
1526  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
template<class _Elem , class _Traits >
basic_istream<_Elem, _Traits>& experimental::filesystem::v1::operator>> ( basic_istream< _Elem, _Traits > &  _Istr,
path &  _Path 
)
inline
1546  { // extract a path
1548  _Istr >> _Str;
1549  _Path = _Str;
1550  return (_Istr);
1551  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: xstring:1866
void experimental::filesystem::v1::permissions ( const path &  _Path,
_Perms  _Mask 
)
inline
2924  { // set access permissions
2925  error_code _Code;
2926  permissions(_Path, _Mask, _Code);
2927  if (_Code != error_code())
2928  _THROW_NCEE(filesystem_error,
2929  "permissions(p, prms): can't set permissions");
2930  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
void permissions(const path &, _Perms, error_code &)
Definition: filesystem:2932
#define _THROW_NCEE(x, y)
Definition: xstddef:51
_CRT_MANAGED_FP_DEPRECATE _In_ unsigned int _Mask
Definition: float.h:235
void experimental::filesystem::v1::permissions ( const path &  _Path,
_Perms  _Mask,
error_code _Code 
)
inline
2934  { // set access permissions
2935  _Perms _Todo = _Mask;
2936  _Mask = (_Perms)(_Mask & perms::mask);
2937  bool _Ok = true;
2938 
2939  _Code = error_code();
2940  if ((_Todo & perms::add_perms) == perms::none)
2941  if ((_Todo & perms::remove_perms) == perms::none)
2942  ;
2943  else
2945  else
2946  if ((_Todo & perms::remove_perms) == perms::none)
2948  else
2949  _Ok = false;
2950  if (!_Ok || _Chmod(_Path.c_str(), _Mask) != 0)
2952  }
perms _Perms
Definition: filesystem:104
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_Perms permissions() const _NOEXCEPT
Definition: filesystem:131
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Chmod(const wchar_t *, _Perms)
_CRT_MANAGED_FP_DEPRECATE _In_ unsigned int _Mask
Definition: float.h:235
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
path experimental::filesystem::v1::read_symlink ( const path &  _Path)
inline
2955  { // read symbolic link
2956  error_code _Code;
2957  path _Sympath = read_symlink(_Path, _Code);
2958  if (_Code != error_code())
2959  _THROW_NCEE(filesystem_error,
2960  "read_symlink(p): can't read symbolic link");
2961  return (_Sympath);
2962  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
path read_symlink(const path &, error_code &)
Definition: filesystem:2964
path experimental::filesystem::v1::read_symlink ( const path &  _Path,
error_code _Code 
)
inline
2966  { // read symbolic link
2967  _Code = error_code();
2968  if (!is_symlink(_Path))
2969  { // report error
2971  return (path());
2972  }
2974  return (path(_Symlink_get(_Dest, _Path.c_str())));
2975  }
unsigned _Dest
Definition: mbstring.h:107
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _MAX_FILESYS_NAME
Definition: filesystem:26
_FS_DLL wchar_t *__CLRCALL_PURE_OR_CDECL _Symlink_get(wchar_t(&)[_MAX_FILESYS_NAME], const wchar_t *)
wchar_t _Pchar
Definition: filesystem:32
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2875
bool experimental::filesystem::v1::remove ( const path &  _Path)
inline
2978  { // remove a file
2979  error_code _Code;
2980  bool _Ans = remove(_Path, _Code);
2981 
2982  if (_Code != error_code())
2983  _THROW_NCEE(filesystem_error,
2984  "remove(p): invalid argument");
2985  return (_Ans);
2986  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
bool experimental::filesystem::v1::remove ( const path &  _Path,
error_code _Code 
)
inline
2990  { // remove a file
2991  _Code = error_code();
2992  if (!exists(symlink_status(_Path)))
2993  return (false);
2994  else if (is_directory(_Path, _Code))
2995  if (_Remove_dir(_Path.c_str()))
2996  return (true);
2997  else
2998  { // couldn't remove emptied directory, report it
3000  return (false);
3001  }
3002  else
3003  { // file exists, try to remove it
3004  bool _Ans = _Unlink(_Path.c_str()) == 0;
3005  if (!_Ans)
3007  return (_Ans);
3008  }
3009  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Remove_dir(const wchar_t *)
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Unlink(const wchar_t *)
file_status symlink_status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3155
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
uintmax_t experimental::filesystem::v1::remove_all ( const path &  _Path)
inline
3046  { // recursively remove a directory
3047  error_code _Code;
3048  uintmax_t _Ans = remove_all(_Path, _Code);
3049  if (_Code != error_code())
3050  _THROW_NCEE(filesystem_error,
3051  "remove_all(p): invalid argument");
3052  return (_Ans);
3053  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
uintmax_t remove_all(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3055
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
unsigned long long uintmax_t
Definition: stdint.h:45
uintmax_t experimental::filesystem::v1::remove_all ( const path &  _Path,
error_code _Code 
)
inline
3057  { // recursively remove a directory
3058  uintmax_t _Ans = 0;
3059  _Remove_all(_Path, _Ans, _Code);
3060  if (_Code)
3061  return (static_cast<uintmax_t>(-1));
3062  return (_Ans);
3063  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
bool _Remove_all(const path &_Path, uintmax_t &_Ans, error_code &_Code) _NOEXCEPT
Definition: filesystem:3011
unsigned long long uintmax_t
Definition: stdint.h:45
void experimental::filesystem::v1::rename ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
3066  { // rename _Oldpval as _Newpval
3067  error_code _Code;
3068  rename(_Oldpval, _Newpval, _Code);
3069  if (_Code != error_code())
3070  _THROW_NCEE(filesystem_error,
3071  "rename(p1, p2): invalid arguments");
3072  }
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
_Check_return_ _ACRTIMP int __cdecl rename(_In_z_ char const *_OldFileName, _In_z_ char const *_NewFileName)
void experimental::filesystem::v1::rename ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
3076  { // rename _Oldpval as _Newpval
3077  _Code = error_code();
3078 
3079  if (!exists(_Oldpval))
3080  { // fail immediately without modifying the filesystem
3082  return;
3083  }
3084 
3085  if (exists(_Newpval))
3086  { // both exist; there can be only one
3087  if (equivalent(_Oldpval, _Newpval, _Code) || _Code != error_code())
3088  return; // successful no-op, or report equivalent() failure
3089 
3090  if (!remove(_Newpval, _Code))
3091  return; // report remove() failure
3092  }
3093 
3094  if (_Rename(_Oldpval.c_str(), _Newpval.c_str()) != 0)
3096  }
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Rename(const wchar_t *, const wchar_t *)
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
Definition: system_error:218
bool equivalent(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2654
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
void experimental::filesystem::v1::resize_file ( const path &  _Path,
uintmax_t  _Newsize 
)
inline
3099  { // change file size
3100  error_code _Code;
3101  resize_file(_Path, _Newsize, _Code);
3102  if (_Code != error_code())
3103  _THROW_NCEE(filesystem_error,
3104  "resize_file(p, n): invalid arguments");
3105  };
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
void resize_file(const path &, uintmax_t, error_code &) _NOEXCEPT
Definition: filesystem:3107
void experimental::filesystem::v1::resize_file ( const path &  _Path,
uintmax_t  _Newsize,
error_code _Code 
)
inline
3109  { // change file size
3110  int _Errno = _Resize(_Path.c_str(), _Newsize);
3111 
3112  _Code = error_code();
3113  if (_Errno != 0)
3114  _Code = error_code(_Errno, _STD system_category());
3115  }
const error_category & system_category() _NOEXCEPT
Definition: system_error:709
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Resize(const wchar_t *, uintmax_t)
space_info experimental::filesystem::v1::space ( const path &  _Path)
inline
3118  { // get space information for volume
3119  return (_Statvfs(_Path.c_str()));
3120  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
_FS_DLL space_info __CLRCALL_PURE_OR_CDECL _Statvfs(const wchar_t *)
space_info experimental::filesystem::v1::space ( const path &  _Path,
error_code _Code 
)
inline
3124  { // get space information for volume
3125  _Code = error_code();
3126  return (_Statvfs(_Path.c_str()));
3127  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL space_info __CLRCALL_PURE_OR_CDECL _Statvfs(const wchar_t *)
file_status experimental::filesystem::v1::status ( const path &  _Path)
inline
3130  { // get file status
3131  error_code _Code;
3132  return (status(_Path, _Code));
3133  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3135
file_status experimental::filesystem::v1::status ( const path &  _Path,
error_code _Code 
)
inline
3137  { // get file status
3138  _Code = error_code();
3139  _Perms _Mode;
3140  _File_type _Ftype = _Stat(_Path.c_str(), &_Mode);
3141  return (file_status(_Ftype, _Mode));
3142  }
perms _Perms
Definition: filesystem:104
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_Check_return_ _In_z_ wchar_t const * _Mode
Definition: corecrt_wstdio.h:133
file_type _File_type
Definition: filesystem:52
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::status_known ( file_status  _Stat)
inline
3145  { // test if status known
3146  return (_Stat.type() != _File_type::unknown);
3147  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
void experimental::filesystem::v1::swap ( path &  _Left,
path &  _Right 
)
inline
1489  { // swap two paths
1490  _Left.swap(_Right);
1491  }
constexpr const _Ty &() _Left
Definition: algorithm:3722
constexpr const _Ty &() _Right
Definition: algorithm:3723
file_status experimental::filesystem::v1::symlink_status ( const path &  _Path)
inline
3150  { // get symlink file status
3151  error_code _Code;
3152  return (symlink_status(_Path, _Code));
3153  }
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
file_status symlink_status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3155
file_status experimental::filesystem::v1::symlink_status ( const path &  _Path,
error_code _Code 
)
inline
3157  { // get symlink file status
3158  _Perms _Mode;
3159  _File_type _Ftype = _Lstat(_Path.c_str(), &_Mode);
3160 
3161  _Code = error_code();
3162  return (file_status(_Ftype, _Mode));
3163  }
perms _Perms
Definition: filesystem:104
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
Definition: system_error:218
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Lstat(const wchar_t *, _Perms *)
_Check_return_ _In_z_ wchar_t const * _Mode
Definition: corecrt_wstdio.h:133
file_type _File_type
Definition: filesystem:52
path experimental::filesystem::v1::system_complete ( const path &  _Path)
inline
3166  { // get completely specified path
3167  if (_Path.is_absolute())
3168  return (_Path);
3169  path _Curpath = current_path();
3170  if (!_Path.has_root_name() || _Path.root_name() == _Curpath.root_name())
3171  return (absolute(_Path));
3172  current_path(_Path.root_name()); // switch to new device
3173  path _Altpath = current_path(); // get its full current path
3174  current_path(_Curpath); // revert to original current path
3175  return (_Altpath / _Path.relative_path());
3176  }
void current_path(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2635
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
path absolute(const path &_Path, const path &_Base=current_path())
Definition: filesystem:2210
path experimental::filesystem::v1::system_complete ( const path &  _Path,
error_code _Code 
)
inline
3180  { // get completely specified path
3181  _Code = error_code();
3182 
3183  path _Ans;
3184 
3185  _TRY_BEGIN
3186  _Ans = system_complete(_Path);
3187  _CATCH_ALL
3189  return (path());
3190  _CATCH_END
3191 
3192  return (_Ans);
3193  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
#define _TRY_BEGIN
Definition: xstddef:26
_In_z_ wchar_t const * _Path
Definition: corecrt_wstdlib.h:337
#define _CATCH_END
Definition: xstddef:29
Definition: system_error:218
#define _CATCH_ALL
Definition: xstddef:28
path system_complete(const path &, error_code &)
Definition: filesystem:3178
path experimental::filesystem::v1::temp_directory_path ( )
inline
3196  { // get temporary directory
3197  error_code _Code;
3198  path _Ans = temp_directory_path(_Code);
3199  if (_Code != error_code())
3200  _THROW_NCEE(filesystem_error,
3201  "temp_directory_path(): can't find temp directory");
3202  return (_Ans);
3203  }
Definition: system_error:218
#define _THROW_NCEE(x, y)
Definition: xstddef:51
path temp_directory_path(error_code &)
Definition: filesystem:3205
path experimental::filesystem::v1::temp_directory_path ( error_code _Code)
inline
3207  { // get temporary directory
3209  _Temp_get(_Dest);
3210  path _Ans(_Dest);
3211 
3212  _Code = error_code();
3213  if (!exists(_Ans) || !is_directory(_Ans))
3214  { // report error
3216  return (path());
3217  }
3218  return (_Ans);
3219  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2769
unsigned _Dest
Definition: mbstring.h:107
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:119
Definition: system_error:218
#define _MAX_FILESYS_NAME
Definition: filesystem:26
wchar_t _Pchar
Definition: filesystem:32
_FS_DLL wchar_t *__CLRCALL_PURE_OR_CDECL _Temp_get(wchar_t(&)[_MAX_FILESYS_NAME])
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2676
template<class _InIt , class = typename enable_if<_Is_iterator<_InIt>::value, void>::type>
path experimental::filesystem::v1::u8path ( _InIt  _First,
_InIt  _Last 
)
inline
1560  { // make path from [_First, _Last) UTF8, given iterators
1561  string _Str(_First, _Last);
1562  path::string_type _Str_out;
1563  return (path(_Path_cvt<char8_t, _Pchar>::
1564  _Cvt(_Str_out, _Str.c_str(), _Str.size())));
1565  }
_FwdIt _Last
Definition: algorithm:1936
template<class _InIt , class = typename enable_if<_Is_iterator<_InIt>::value, void>::type>
path experimental::filesystem::v1::u8path ( _InIt  _First)
inline
1572  { // make path from NTBS UTF8, given iterator
1573  string _Str;
1574  for (; *_First != '\0'; ++_First)
1575  _Str += *_First;
1576  path::string_type _Str_out;
1577  return (path(_Path_cvt<char8_t, _Pchar>::
1578  _Cvt(_Str_out, _Str.c_str(), _Str.size())));
1579  }
_Ret_z_ const _Elem * c_str() const _NOEXCEPT
Definition: xstring:3001
size_type size() const _NOEXCEPT
Definition: xstring:3023
template<class _Traits , class _Alloc >
path experimental::filesystem::v1::u8path ( const basic_string< char, _Traits, _Alloc > &  _Str)
inline
1584  { // make path from arbitrary char string UTF8
1585  path::string_type _Str_out;
1586  return (path(_Path_cvt<char8_t, _Pchar>::
1587  _Cvt(_Str_out, _Str.c_str(), _Str.size())));
1588  }
_Ret_z_ const _Elem * c_str() const _NOEXCEPT
Definition: xstring:3001
size_type size() const _NOEXCEPT
Definition: xstring:3023