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

Function Documentation

path experimental::filesystem::v1::_Absolute ( const path &  _Path,
const path &  _Base,
error_code _Code 
)
inline
2188  { // make absolute path from _Path and directory _Base; errors in _Code
2189  _Code = error_code();
2190  bool _Path_has_root_name = _Path.has_root_name();
2191  bool _Path_has_root_directory = _Path.has_root_directory();
2192  if (_Path_has_root_name && _Path_has_root_directory)
2193  return (_Path); // fine as is
2194 
2195  path _Current = current_path(_Code);
2196  if (_Code != error_code())
2197  return (path());
2198  path _Abs_base = _Absolute(_Base, _Current, _Code);
2199  if (_Code != error_code())
2200  return (path());
2201 
2202  if (_Path_has_root_name)
2203  { // insert _Base
2204  return (_Path.root_name()
2205  / _Abs_base.root_directory()
2206  / _Abs_base.relative_path()
2207  / _Path.relative_path());
2208  }
2209  else
2210  if (_Path_has_root_directory)
2211  return (_Abs_base.root_name()
2212  / _Path); // prepend root name of base
2213  else
2214  return (_Abs_base
2215  / _Path); // prepend absolute name of base
2216  }
void current_path(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2643
Definition: system_error:221
path _Absolute(const path &, const path &, error_code &)
Definition: filesystem:2186
void experimental::filesystem::v1::_Canonicalize_string_only ( path &  _Canon_path,
const path &  _Abs_path 
)
inline
2230  { // transform absolute path _Abs_path, removing .s, and ..s, using string
2231  // manipulations (rather than platform support)
2232  vector<path> _Components;
2233  path::const_iterator _Abs_path_next = _Abs_path.begin();
2234  const path::const_iterator _Abs_path_end = _Abs_path.end();
2235  // This is safe because we have already made the path absolute
2236  _Canon_path /= *_Abs_path_next; // root_name
2237  ++_Abs_path_next;
2238  _Canon_path /= *_Abs_path_next; // root_directory
2239  ++_Abs_path_next;
2240  for (; _Abs_path_next != _Abs_path_end; ++_Abs_path_next)
2241  {
2242  const auto _Cstr = _Abs_path_next->c_str();
2243  if (_Cstr[0] == _FS_PERIOD)
2244  {
2245  if (_Cstr[1] == static_cast<path::value_type>(0))
2246  continue; // consume "."
2247  else if (_Cstr[1] == _FS_PERIOD
2248  && _Cstr[2] == static_cast<path::value_type>(0))
2249  {
2250  // If no parent is found to remove with .., ignore ..
2251  // (that is, C:\..\..\..\Meow canonicalizes to C:\Meow)
2252  if (!_Components.empty())
2253  _Components.pop_back();
2254 
2255  continue; // consume ".."
2256  }
2257  }
2258 
2259  _Components.push_back(*_Abs_path_next);
2260  }
2261 
2262  for (const auto& _Component : _Components)
2263  _Canon_path /= _Component;
2264  }
iterator begin() _NOEXCEPT
Definition: vector:1056
#define _FS_PERIOD
Definition: filesystem:36
Definition: vector:678
void push_back(value_type &&_Val)
Definition: vector:895
void pop_back()
Definition: vector:1312
bool empty() const _NOEXCEPT
Definition: vector:1188
_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
2307  { // Checks a _Copy_options for whether copy should call itself recursively
2308  if (_Opts == _Copy_options::none)
2309  // This supports "copying a directory" as copying the directory and
2310  // files therein but not subdirectories.
2311  return (true);
2312  if ((_Opts & _Copy_options::recursive) != _Copy_options::none)
2313  return (true);
2314  return (false);
2315  }
_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
3021  { // recursively remove a file or directory, count removed files
3022  _Code = error_code();
3023  if (is_directory(_Path))
3024  { // empty and remove a directory
3025  typedef _Directory_iterator<false_type> _Myit;
3026  _Myit _Last;
3027 
3028  for (; ; )
3029  { // remove a directory entry
3030  _Myit _First(_Path);
3031  if (_First == _Last)
3032  break;
3033  if (!_Remove_all(_Path / _First->path(), _Ans, _Code))
3034  return (false);
3035  }
3036  if (_Remove_dir(_Path.c_str()))
3037  return (true);
3038  else
3039  { // couldn't remove emptied directory, report it
3041  return (false);
3042  }
3043  }
3044  else if (!remove(_Path, _Code))
3045  return (false);
3046  else
3047  { // file remove succeeded, count it
3048  ++_Ans;
3049  return (true);
3050  }
3051  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Remove_dir(const wchar_t *)
Definition: system_error:221
bool _Remove_all(const path &_Path, uintmax_t &_Ans, error_code &_Code) _NOEXCEPT
Definition: filesystem:3019
_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
2220  { // make absolute path from _Path and directory _Base
2221  error_code _Code;
2222  path _Result = _Absolute(_Path, _Base, _Code);
2223  if (_Code != error_code())
2224  _THROW_NCEE(filesystem_error,
2225  "absolute(p1, p2): current_path() couldn't get current working directory");
2226  return (_Result);
2227  }
Definition: system_error:221
path _Absolute(const path &, const path &, error_code &)
Definition: filesystem:2186
#define _THROW_NCEE(x, y)
Definition: xstddef:78
const directory_iterator& experimental::filesystem::v1::begin ( const directory_iterator &  _Iter)
inline
1970  { // return begin directory_iterator for range-based for
1971  return (_Iter);
1972  }
const recursive_directory_iterator& experimental::filesystem::v1::begin ( const recursive_directory_iterator &  _Iter)
inline
2175  { // return begin recursive_directory_iterator for range-based for
2176  return (_Iter);
2177  }
path experimental::filesystem::v1::canonical ( const path &  _Path,
error_code _Code 
)
inline
2280  { // make absolute path from _Path with no ., .., or symlink
2281  path _Current = current_path(_Code);
2282  if (_Code != error_code())
2283  return (path());
2284  return (canonical(_Path, _Current, _Code));
2285  }
path canonical(const path &_Path, const path &_Base=current_path())
Definition: filesystem:2266
void current_path(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2643
Definition: system_error:221
path experimental::filesystem::v1::canonical ( const path &  _Path,
const path &  _Base,
error_code _Code 
)
inline
2289  { // make absolute path from _Path, _Base with no ".", "..", symlink
2290  _Code = error_code();
2291  path _Canon_path; // NRVO this variable
2292  path _Abs_path = _Absolute(_Path, _Base, _Code);
2293  if (_Code != error_code())
2294  return (_Canon_path);
2295 
2296  if (_Abs_path.native().size() >= _MAX_FILESYS_NAME)
2297  {
2299  return (_Canon_path);
2300  }
2301 
2302  _Canonicalize_string_only(_Canon_path, _Abs_path);
2303  return (_Canon_path);
2304  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
path _Absolute(const path &, const path &, error_code &)
Definition: filesystem:2186
#define _MAX_FILESYS_NAME
Definition: filesystem:25
void _Canonicalize_string_only(path &, const path &)
Definition: filesystem:2229
path experimental::filesystem::v1::canonical ( const path &  _Path,
const path &  _Base = current_path() 
)
inline
2268  { // make absolute path from _Path, _Base with no ., .., or symlink
2269  error_code _Code;
2270  path _Ans = canonical(_Path, _Base, _Code);
2271 
2272  if (_Code != error_code())
2273  _THROW_NCEE(filesystem_error,
2274  "canonical(p1, p2): invalid arguments");
2275  return (_Ans);
2276  }
path canonical(const path &_Path, const path &_Base=current_path())
Definition: filesystem:2266
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void experimental::filesystem::v1::copy ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
2318  { // copy _Oldpval to _Newpval, general
2319  error_code _Code;
2320 
2321  copy(_Oldpval, _Newpval, _Copy_options::none, _Code);
2322  if (_Code != error_code())
2323  _THROW_NCEE(filesystem_error,
2324  "copy(p1, p2): invalid arguments");
2325  }
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2369
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void experimental::filesystem::v1::copy ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2329  { // copy _Oldpval to _Newpval, general
2330  copy(_Oldpval, _Newpval, _Copy_options::none, _Code);
2331  }
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2369
void experimental::filesystem::v1::copy ( const path &  _Oldpval,
const path &  _Newpval,
_Copy_options  _Opts 
)
inline
2335  { // copy _Oldpval to _Newpval, general
2336  error_code _Code;
2337 
2338  copy(_Oldpval, _Newpval, _Opts, _Code);
2339  if (_Code != error_code())
2340  _THROW_NCEE(filesystem_error,
2341  "copy(p1, p2, options): invalid arguments");
2342  }
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2369
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void experimental::filesystem::v1::copy ( const path &  _Oldpval,
const path &  _Newpval,
_Copy_options  _Opts,
error_code _Code 
)
inline
2347  { // copy _Oldpval to _Newpval, general
2348  file_status _Oldstat;
2349  file_status _Newstat;
2350  error_code _Code2;
2351 
2352  _Code = error_code();
2353  if ((_Opts & _Copy_options::create_symlinks) != _Copy_options::none
2354  || (_Opts & _Copy_options::skip_symlinks) != _Copy_options::none)
2355  { // get symlink status
2356  _Oldstat = symlink_status(_Oldpval);
2357  _Newstat = symlink_status(_Newpval);
2358  }
2359  else
2360  { // get file status
2361  _Oldstat = status(_Oldpval);
2362  _Newstat = status(_Newpval);
2363  }
2364  if (!exists(_Oldstat)
2365  || equivalent(_Oldpval, _Newpval, _Code2)
2366  || is_other(_Oldstat)
2367  || is_other(_Newstat)
2368  || (is_directory(_Oldstat) && is_regular_file(_Newstat)))
2370  else if (is_symlink(_Oldstat))
2371  if ((_Opts & _Copy_options::skip_symlinks) != _Copy_options::none)
2372  ;
2373  else if (!exists(_Newstat)
2374  && (_Opts & _Copy_options::copy_symlinks) != _Copy_options::none)
2375  copy_symlink(_Oldpval, _Newpval, _Code);
2376  else
2378  else if (is_regular_file(_Oldstat))
2379  if ((_Opts & _Copy_options::directories_only) != _Copy_options::none)
2380  ;
2381  else if ((_Opts & _Copy_options::create_symlinks)
2382  != _Copy_options::none)
2383  create_symlink(_Oldpval, _Newpval, _Code);
2384  else if ((_Opts & _Copy_options::create_hard_links)
2385  != _Copy_options::none)
2386  create_hard_link(_Oldpval, _Newpval, _Code);
2387  else if (is_directory(_Newstat))
2388  copy_file(_Oldpval, _Newpval / _Oldpval.filename(), _Opts, _Code);
2389  else
2390  copy_file(_Oldpval, _Newpval, _Opts, _Code);
2391  else if (is_directory(_Oldstat)
2393  { // copy directory recursively
2394  if (!exists(_Newpval) && !create_directory(_Newpval, _Code) && !_Code)
2396  for (directory_iterator _Next(_Oldpval), _End;
2397  _Code == error_code() && _Next != _End; ++_Next)
2398  copy(_Next->path(),
2399  _Newpval / _Next->path().filename(),
2400  _Opts | _Copy_options::_Unspecified_recursion_prevention_tag,
2401  _Code);
2402  }
2403  }
bool _Copy_options_indicate_recursive_copy(_Copy_options _Opts)
Definition: filesystem:2306
_OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest)
Definition: xutility:2369
void create_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2603
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
void create_hard_link(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2584
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
bool equivalent(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2662
bool is_other(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2835
bool copy_file(const path &, const path &, _Copy_options, error_code &) _NOEXCEPT
Definition: filesystem:2422
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2851
file_status symlink_status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3163
_Directory_iterator< true_type > directory_iterator
Definition: filesystem:1966
bool create_directory(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2543
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2883
void copy_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2464
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2684
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::copy_file ( const path &  _Oldpval,
const path &  _Newpval,
_Copy_options  _Opt = copy_options::none 
)
inline
2407  { // copy _Oldpval to _Newpval
2408  error_code _Code;
2409  bool _Ans = copy_file(_Oldpval, _Newpval, _Opt, _Code);
2410  if (_Code != error_code())
2411  _THROW_NCEE(filesystem_error,
2412  "copy_file(p1, p2, options): invalid arguments");
2413  return (_Ans);
2414  }
Definition: system_error:221
bool copy_file(const path &, const path &, _Copy_options, error_code &) _NOEXCEPT
Definition: filesystem:2422
#define _THROW_NCEE(x, y)
Definition: xstddef:78
bool experimental::filesystem::v1::copy_file ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2418  { // copy _Oldpval to _Newpval
2419  return (copy_file(_Oldpval, _Newpval, copy_options::none, _Code));
2420  }
bool copy_file(const path &, const path &, _Copy_options, error_code &) _NOEXCEPT
Definition: filesystem:2422
bool experimental::filesystem::v1::copy_file ( const path &  _Oldpval,
const path &  _Newpval,
_Copy_options  _Opt,
error_code _Code 
)
inline
2425  { // copy _Oldpval to _Newpval
2426  _Opt &= (copy_options::skip_existing
2427  | copy_options::overwrite_existing
2428  | copy_options::update_existing);
2429  bool _Exists = exists(_Newpval);
2430  bool _Ans = false;
2431  file_time_type _Oldtime;
2432  file_time_type _Newtime;
2433 
2434  _Code = error_code();
2435  if (_Exists && (_Opt == copy_options::none
2436  || equivalent(_Oldpval, _Newpval, _Code)))
2438  else if (_Code)
2439  ; // equivalent() failed, report error
2440  else if (!_Exists
2441  || (_Opt & copy_options::overwrite_existing) != copy_options::none
2442  || ((_Opt & copy_options::update_existing) != copy_options::none
2443  && ((void)(_Oldtime = last_write_time(_Oldpval, _Code)), !_Code)
2444  && ((void)(_Newtime = last_write_time(_Newpval, _Code)), !_Code)
2445  && _Newtime < _Oldtime))
2446  { // ok to overwrite, if necessary
2447  if (_Copy_file(_Oldpval.c_str(), _Newpval.c_str()) == 0)
2448  _Ans = true;
2449  else
2451  }
2452  return (_Ans);
2453  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
bool equivalent(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2662
_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:595
void last_write_time(const path &, file_time_type)
Definition: filesystem:2913
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2684
void experimental::filesystem::v1::copy_symlink ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
2456  { // copy symlink, file or directory
2457  error_code _Code;
2458  copy_symlink(_Oldpval, _Newpval, _Code);
2459  if (_Code != error_code())
2460  _THROW_NCEE(filesystem_error,
2461  "copy_symlink(p1, p2): invalid arguments");
2462  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void copy_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2464
void experimental::filesystem::v1::copy_symlink ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2466  { // copy symlink, file or directory
2467  if (is_directory(_Oldpval))
2468  create_directory_symlink(_Oldpval, _Newpval, _Code);
2469  else
2470  create_symlink(_Oldpval, _Newpval, _Code);
2471  }
void create_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2603
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
void create_directory_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2564
bool experimental::filesystem::v1::create_directories ( const path &  _Path)
inline
2474  { // create directories chain
2475  error_code _Code;
2476  bool _Ans = create_directories(_Path, _Code);
2477  if (_Code != error_code())
2478  _THROW_NCEE(filesystem_error,
2479  "create_directories(p): invalid argument");
2480  return (_Ans);
2481  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
bool create_directories(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2483
bool experimental::filesystem::v1::create_directories ( const path &  _Path,
error_code _Code 
)
inline
2485  { // create directory chain
2486  _Code = error_code();
2487  if (_Path.empty())
2488  return (false);
2489  else if (!exists(_Path))
2490  { // recursively create parent directories, then current
2491  create_directories(_Path.parent_path(), _Code);
2492  if (_Code)
2493  return (false); // report error
2494 
2495  create_directory(_Path, _Code);
2496  if (_Code)
2497  return (false); // report error
2498 
2499  return (true);
2500  }
2501  else if (is_directory(_Path))
2502  return (false); // directory already there
2503  else
2504  { // report bad argument
2506  return (false);
2507  }
2508  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
bool create_directories(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2483
bool create_directory(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2543
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2684
bool experimental::filesystem::v1::create_directory ( const path &  _Path)
inline
2511  { // create a directory
2512  error_code _Code;
2513  bool _Ans = create_directory(_Path, _Code);
2514 
2515  if (_Code != error_code())
2516  _THROW_NCEE(filesystem_error,
2517  "create_directory(p): invalid argument");
2518  return (_Ans);
2519  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
bool create_directory(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2543
bool experimental::filesystem::v1::create_directory ( const path &  _Path,
error_code _Code 
)
inline
2523  { // create a directory
2524  int _Ans = _Make_dir(_Path.c_str(), 0);
2525 
2526  _Code = error_code();
2527  if (_Ans < 0)
2529  return (0 < _Ans);
2530  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
_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
2533  { // create a directory, copying attributes
2534  error_code _Code;
2535  bool _Ans = create_directory(_Path, _Attrs, _Code);
2536 
2537  if (_Code != error_code())
2538  _THROW_NCEE(filesystem_error,
2539  "create_directory(p1, p2): invalid arguments");
2540  return (_Ans);
2541  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
bool create_directory(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2543
bool experimental::filesystem::v1::create_directory ( const path &  _Path,
const path &  _Attrs,
error_code _Code 
)
inline
2545  { // create a directory, copying attributes
2546  int _Ans = _Make_dir(_Path.c_str(), _Attrs.c_str());
2547 
2548  _Code = error_code();
2549  if (_Ans < 0)
2551  return (0 < _Ans);
2552  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
_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
2556  { // symlink directory _Newpval to _Oldpval
2557  error_code _Code;
2558  create_directory_symlink(_Oldpval, _Newpval, _Code);
2559  if (_Code != error_code())
2560  _THROW_NCEE(filesystem_error,
2561  "create_directory_symlink(p1, p2): invalid arguments");
2562  }
Definition: system_error:221
void create_directory_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2564
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void experimental::filesystem::v1::create_directory_symlink ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2567  { // symlink directory_Newpval to _Oldpval (NB: SAME AS FILE)
2568  int _Ans = _Symlink(_Oldpval.c_str(), _Newpval.c_str());
2569 
2570  _Code = error_code();
2571  if (_Ans != 0)
2572  _Code = error_code(_Ans, _STD system_category());
2573  }
const error_category & system_category() _NOEXCEPT
Definition: system_error:712
Definition: system_error:221
_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
2576  { // hard link _Newpval to _Oldpval
2577  error_code _Code;
2578  create_hard_link(_Oldpval, _Newpval, _Code);
2579  if (_Code != error_code())
2580  _THROW_NCEE(filesystem_error,
2581  "create_hard_link(p1, p2): invalid arguments");
2582  }
void create_hard_link(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2584
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void experimental::filesystem::v1::create_hard_link ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2586  { // hard link _Newpval to _Oldpval
2587  int _Ans = _Link(_Oldpval.c_str(), _Newpval.c_str());
2588 
2589  _Code = error_code();
2590  if (_Ans != 0)
2591  _Code = error_code(_Ans, _STD system_category());
2592  }
const error_category & system_category() _NOEXCEPT
Definition: system_error:712
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Link(const wchar_t *, const wchar_t *)
Definition: system_error:221
void experimental::filesystem::v1::create_symlink ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
2595  { // symlink _Newpval to _Oldpval
2596  error_code _Code;
2597  create_symlink(_Oldpval, _Newpval, _Code);
2598  if (_Code != error_code())
2599  _THROW_NCEE(filesystem_error,
2600  "create_symlink(p1, p2): invalid arguments");
2601  }
void create_symlink(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2603
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void experimental::filesystem::v1::create_symlink ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
2605  { // symlink _Newpval to _Oldpval
2606  int _Ans = _Symlink(_Oldpval.c_str(), _Newpval.c_str());
2607 
2608  _Code = error_code();
2609  if (_Ans != 0)
2610  _Code = error_code(_Ans, _STD system_category());
2611  }
const error_category & system_category() _NOEXCEPT
Definition: system_error:712
Definition: system_error:221
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Symlink(const wchar_t *, const wchar_t *)
path experimental::filesystem::v1::current_path ( )
inline
2614  { // get current working directory
2615  error_code _Code;
2616  path _Ans = current_path(_Code);
2617  if (_Code != error_code())
2618  _THROW_NCEE(filesystem_error,
2619  "current_path(): can't get current working directory");
2620  return (_Ans);
2621  }
void current_path(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2643
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
path experimental::filesystem::v1::current_path ( error_code _Code)
inline
2625  { // get current working directory
2626  _Code = error_code();
2627  _Pchar _Dest[_MAX_FILESYS_NAME];
2628  if (!_Current_get(_Dest))
2629  { // report error
2631  return (path());
2632  }
2633  return (path(_Dest));
2634  }
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Current_get(wchar_t(&)[_MAX_FILESYS_NAME])
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
#define _MAX_FILESYS_NAME
Definition: filesystem:25
wchar_t _Pchar
Definition: filesystem:31
void experimental::filesystem::v1::current_path ( const path &  _Path)
inline
2637  { // set current working directory
2638  if (!_Current_set(_Path.c_str()))
2639  _THROW_NCEE(filesystem_error,
2640  "current_path(p): invalid argument");
2641  }
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Current_set(const wchar_t *)
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void experimental::filesystem::v1::current_path ( const path &  _Path,
error_code _Code 
)
inline
2645  { // set current working directory
2646  _Code = error_code();
2647  if (!_Current_set(_Path.c_str()))
2649  }
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Current_set(const wchar_t *)
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
directory_iterator experimental::filesystem::v1::end ( const directory_iterator &  )
inline
1976  { // return end directory_iterator for range-based for
1977  return (directory_iterator());
1978  }
_Directory_iterator< true_type > directory_iterator
Definition: filesystem:1966
recursive_directory_iterator experimental::filesystem::v1::end ( const recursive_directory_iterator &  )
inline
2181  { // return end recursive_directory_iterator for range-based for
2182  return (recursive_directory_iterator());
2183  }
bool experimental::filesystem::v1::equivalent ( const path &  _Path1,
const path &  _Path2 
)
inline
2652  { // test if paths designate same file
2653  error_code _Code;
2654  int _Ans = equivalent(_Path1, _Path2, _Code);
2655 
2656  if (_Code != error_code())
2657  _THROW_NCEE(filesystem_error,
2658  "equivalent(p1, p2): invalid arguments");
2659  return (0 < _Ans);
2660  }
Definition: system_error:221
bool equivalent(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2662
#define _THROW_NCEE(x, y)
Definition: xstddef:78
bool experimental::filesystem::v1::equivalent ( const path &  _Path1,
const path &  _Path2,
error_code _Code 
)
inline
2664  { // test if paths designate same file
2665  int _Ans = _Equivalent(_Path1.c_str(), _Path2.c_str());
2666 
2667  _Code = error_code();
2668  if (_Ans < 0)
2670  return (0 < _Ans);
2671  }
_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:120
Definition: system_error:221
bool experimental::filesystem::v1::exists ( file_status  _Stat)
inline
2674  { // test if path exists
2675  return (status_known(_Stat)
2676  && _Stat.type() != _File_type::not_found);
2677  }
bool status_known(file_status) _NOEXCEPT
Definition: filesystem:3152
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::exists ( const path &  _Path)
inline
2680  { // test if path exists
2681  return (exists(status(_Path)));
2682  }
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2684
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::exists ( const path &  _Path,
error_code _Code 
)
inline
2686  { // test if path exists
2687  _Code = error_code();
2688  return (exists(status(_Path)));
2689  }
Definition: system_error:221
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2684
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
uintmax_t experimental::filesystem::v1::file_size ( const path &  _Path)
inline
2692  { // get file size
2693  error_code _Code;
2694  uintmax_t _Ans = file_size(_Path, _Code);
2695  if (_Code != error_code())
2696  _THROW_NCEE(filesystem_error,
2697  "file_size(p): invalid argument");
2698  return (_Ans);
2699  }
Definition: system_error:221
uintmax_t file_size(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2701
#define _THROW_NCEE(x, y)
Definition: xstddef:78
unsigned long long uintmax_t
Definition: stdint.h:45
uintmax_t experimental::filesystem::v1::file_size ( const path &  _Path,
error_code _Code 
)
inline
2703  { // get file size
2704  uintmax_t _Ans = (uintmax_t)-1;
2705  file_status _Stat = status(_Path);
2706 
2707  _Code = error_code();
2708  if (exists(_Stat) && is_regular_file(_Stat))
2709  _Ans = _File_size(_Path.c_str());
2710  if (_Ans == (uintmax_t)-1)
2712  return (_Ans);
2713  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
_FS_DLL uintmax_t __CLRCALL_PURE_OR_CDECL _File_size(const wchar_t *)
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2851
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:2684
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
uintmax_t experimental::filesystem::v1::hard_link_count ( const path &  _Path)
inline
2716  { // get hard link count
2717  error_code _Code;
2718  uintmax_t _Ans = hard_link_count(_Path, _Code);
2719  if (_Code != error_code())
2720  _THROW_NCEE(filesystem_error,
2721  "hard_link_count(p): invalid argument");
2722  return (_Ans);
2723  }
uintmax_t hard_link_count(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2725
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
unsigned long long uintmax_t
Definition: stdint.h:45
uintmax_t experimental::filesystem::v1::hard_link_count ( const path &  _Path,
error_code _Code 
)
inline
2727  { // get hard link count
2728  _Code = error_code();
2729  uintmax_t _Ans = _Hard_links(_Path.c_str());
2730  if (_Ans == (uintmax_t)-1)
2732  return (_Ans);
2733  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
_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
1502  { // get hash value for path
1503  return (hash<path::string_type>()(_Path.native()));
1504  }
Definition: xstddef:372
bool experimental::filesystem::v1::is_block_file ( file_status  _Stat)
inline
2736  { // test for block file
2737  return (_Stat.type() == _File_type::block);
2738  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_block_file ( const path &  _Path)
inline
2741  { // test for block file
2742  return (is_block_file(status(_Path)));
2743  }
bool is_block_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2745
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_block_file ( const path &  _Path,
error_code _Code 
)
inline
2747  { // test for block file
2748  return (is_block_file(status(_Path, _Code)));
2749  }
bool is_block_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2745
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_character_file ( file_status  _Stat)
inline
2752  { // test for character file
2753  return (_Stat.type() == _File_type::character);
2754  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_character_file ( const path &  _Path)
inline
2757  { // test for character file
2758  return (is_character_file(status(_Path)));
2759  }
bool is_character_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2761
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_character_file ( const path &  _Path,
error_code _Code 
)
inline
2763  { // test for character file
2764  return (is_character_file(status(_Path, _Code)));
2765  }
bool is_character_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2761
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_directory ( file_status  _Stat)
inline
2768  { // test for directory
2769  return (_Stat.type() == _File_type::directory);
2770  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_directory ( const path &  _Path)
inline
2773  { // test for directory
2774  return (is_directory(status(_Path)));
2775  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_directory ( const path &  _Path,
error_code _Code 
)
inline
2779  { // test for directory
2780  return (is_directory(status(_Path, _Code)));
2781  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_empty ( const path &  _Path)
inline
2784  { // test if path is empty
2785  error_code _Code;
2786  bool _Ans = _FSPFX is_empty(_Path, _Code);
2787  if (_Code != error_code())
2788  _THROW_NCEE(filesystem_error,
2789  "is_empty(p): invalid argument");
2790  return (_Ans);
2791  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
#define _FSPFX
Definition: filesystem:40
bool is_empty(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2793
bool experimental::filesystem::v1::is_empty ( const path &  _Path,
error_code _Code 
)
inline
2795  { // test if path is empty
2796  file_status _Stat = status(_Path);
2797 
2798  _Code = error_code();
2799  if (is_directory(_Stat))
2800  return (directory_iterator(_Path)
2801  == directory_iterator());
2802  else
2803  return (file_size(_Path, _Code) == 0);
2804  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
Definition: system_error:221
uintmax_t file_size(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2701
_Directory_iterator< true_type > directory_iterator
Definition: filesystem:1966
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_fifo ( file_status  _Stat)
inline
2807  { // test for fifo file
2808  return (_Stat.type() == _File_type::fifo);
2809  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_fifo ( const path &  _Path)
inline
2812  { // test for fifo file
2813  return (is_fifo(status(_Path)));
2814  }
bool is_fifo(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2816
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_fifo ( const path &  _Path,
error_code _Code 
)
inline
2818  { // test for fifo file
2819  return (is_fifo(status(_Path, _Code)));
2820  }
bool is_fifo(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2816
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_other ( file_status  _Stat)
inline
2823  { // test if path is other file type
2824  return (exists(_Stat)
2825  && !is_regular_file(_Stat)
2826  && !is_directory(_Stat)
2827  && !is_symlink(_Stat));
2828  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2851
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2883
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2684
bool experimental::filesystem::v1::is_other ( const path &  _Path)
inline
2831  { // test if path is other file type
2832  return (is_other(status(_Path)));
2833  }
bool is_other(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2835
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_other ( const path &  _Path,
error_code _Code 
)
inline
2837  { // test for other file types
2838  return (is_other(status(_Path, _Code)));
2839  }
bool is_other(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2835
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_regular_file ( file_status  _Stat)
inline
2842  { // test for regular file
2843  return (_Stat.type() == _File_type::regular);
2844  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_regular_file ( const path &  _Path)
inline
2847  { // test for regular file
2848  return (is_regular_file(status(_Path)));
2849  }
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2851
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_regular_file ( const path &  _Path,
error_code _Code 
)
inline
2853  { // test for regular file
2854  return (is_regular_file(status(_Path, _Code)));
2855  }
bool is_regular_file(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2851
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_socket ( file_status  _Stat)
inline
2858  { // test for socket file
2859  return (_Stat.type() == _File_type::socket);
2860  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_socket ( const path &  _Path)
inline
2863  { // test for socket file
2864  return (is_socket(status(_Path)));
2865  }
bool is_socket(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2867
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_socket ( const path &  _Path,
error_code _Code 
)
inline
2869  { // test for socket file
2870  return (is_socket(status(_Path, _Code)));
2871  }
bool is_socket(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2867
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_symlink ( file_status  _Stat)
inline
2874  { // test for symlink
2875  return (_Stat.type() == _File_type::symlink);
2876  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::is_symlink ( const path &  _Path)
inline
2879  { // test for symlink
2880  return (is_symlink(status(_Path)));
2881  }
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2883
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
bool experimental::filesystem::v1::is_symlink ( const path &  _Path,
error_code _Code 
)
inline
2885  { // test for symlink
2886  return (is_symlink(status(_Path, _Code)));
2887  }
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2883
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
file_time_type experimental::filesystem::v1::last_write_time ( const path &  _Path,
error_code _Code 
)
inline
2901  { // get last write time
2902  int64_t _Ticks = _Last_write_time(_Path.c_str());
2903 
2904  _Code = error_code();
2905  if (_Ticks == -1)
2906  { // report error
2908  return ((file_time_type::min)());
2909  }
2911  }
long long int64_t
Definition: stdint.h:20
Definition: chrono:71
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
_FS_DLL int64_t __CLRCALL_PURE_OR_CDECL _Last_write_time(const wchar_t *)
chrono::system_clock::time_point file_time_type
Definition: filesystem:595
constexpr const _Ty &() min(const _Ty &_Left, const _Ty &_Right, _Pr _Pred) _NOEXCEPT_OP(_NOEXCEPT_OP(_DEBUG_LT_PRED(_Pred
file_time_type experimental::filesystem::v1::last_write_time ( const path &  _Path)
inline
2890  { // get last write time
2891  error_code _Code;
2892  file_time_type _Ans = last_write_time(_Path, _Code);
2893  if (_Code != error_code())
2894  _THROW_NCEE(filesystem_error,
2895  "last_write_time(p): invalid argument");
2896  return (_Ans);
2897  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
chrono::system_clock::time_point file_time_type
Definition: filesystem:595
void last_write_time(const path &, file_time_type)
Definition: filesystem:2913
void experimental::filesystem::v1::last_write_time ( const path &  _Path,
file_time_type  _Newtime,
error_code _Code 
)
inline
2924  { // set last write time
2925  _Code = error_code();
2926  if (_Set_last_write_time(_Path.c_str(),
2927  _Newtime.time_since_epoch().count()) == 0)
2929  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
_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
2914  { // set last write time
2915  error_code _Code;
2916  last_write_time(_Path, _Newtime, _Code);
2917  if (_Code != error_code())
2918  _THROW_NCEE(filesystem_error,
2919  "last_write_time(p, new_time): invalid arguments");
2920  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void last_write_time(const path &, file_time_type)
Definition: filesystem:2913
bool experimental::filesystem::v1::operator!= ( const path &  _Left,
const path &  _Right 
)
inline
1512  { // test for path inequality
1513  return (!(_Left == _Right));
1514  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
template<class _Prefix_directory >
bool experimental::filesystem::v1::operator!= ( const _Directory_iterator< _Prefix_directory > &  _Left,
const _Directory_iterator< _Prefix_directory > &  _Right 
)
inline
1962  { // test for _Directory_iterator inequality
1963  return (!(_Left == _Right));
1964  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
bool experimental::filesystem::v1::operator!= ( const recursive_directory_iterator &  _Left,
const recursive_directory_iterator &  _Right 
)
inline
2169  { // test for recursive_directory_iterator inequality
2170  return (!(_Left == _Right));
2171  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
path experimental::filesystem::v1::operator/ ( const path &  _Left,
const path &  _Right 
)
inline
1537  { // concatenate paths
1538  path _Ans = _Left;
1539  return (_Ans /= _Right);
1540  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
bool experimental::filesystem::v1::operator< ( const path &  _Left,
const path &  _Right 
)
inline
1517  { // test if _Left < _Right
1518  return (_Left.native() < _Right.native());
1519  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
template<class _Elem , class _Traits >
basic_ostream<_Elem, _Traits>& experimental::filesystem::v1::operator<< ( basic_ostream< _Elem, _Traits > &  _Ostr,
const path &  _Path 
)
inline
1546  { // insert a path
1547  return (_Ostr << _Path.string<_Elem, _Traits, allocator<_Elem> >());
1548  }
Definition: iosfwd:612
bool experimental::filesystem::v1::operator<= ( const path &  _Left,
const path &  _Right 
)
inline
1522  { // test if _Left <= _Right
1523  return (!(_Right < _Left));
1524  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
bool experimental::filesystem::v1::operator== ( const path &  _Left,
const path &  _Right 
)
inline
1507  { // test for path equality
1508  return (_Left.native() == _Right.native());
1509  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
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 equality
1955  return (_Left._Equal(_Right));
1956  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
bool experimental::filesystem::v1::operator== ( const recursive_directory_iterator &  _Left,
const recursive_directory_iterator &  _Right 
)
inline
2162  { // test for recursive_directory_iterator equality
2163  return (_Left._Equal(_Right));
2164  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
bool experimental::filesystem::v1::operator> ( const path &  _Left,
const path &  _Right 
)
inline
1527  { // test if _Left > _Right
1528  return (_Right < _Left);
1529  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
bool experimental::filesystem::v1::operator>= ( const path &  _Left,
const path &  _Right 
)
inline
1532  { // test if _Left >= _Right
1533  return (!(_Left < _Right));
1534  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
template<class _Elem , class _Traits >
basic_istream<_Elem, _Traits>& experimental::filesystem::v1::operator>> ( basic_istream< _Elem, _Traits > &  _Istr,
path &  _Path 
)
inline
1554  { // extract a path
1556  _Istr >> _Str;
1557  _Path = _Str;
1558  return (_Istr);
1559  }
Definition: xstring:21
void experimental::filesystem::v1::permissions ( const path &  _Path,
_Perms  _Mask 
)
inline
2932  { // set access permissions
2933  error_code _Code;
2934  permissions(_Path, _Mask, _Code);
2935  if (_Code != error_code())
2936  _THROW_NCEE(filesystem_error,
2937  "permissions(p, prms): can't set permissions");
2938  }
void permissions(const path &, _Perms, error_code &) _NOEXCEPT
Definition: filesystem:2940
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void experimental::filesystem::v1::permissions ( const path &  _Path,
_Perms  _Mask,
error_code _Code 
)
inline
2942  { // set access permissions
2943  _Perms _Todo = _Mask;
2944  _Mask = (_Perms)(_Mask & perms::mask);
2945  bool _Ok = true;
2946 
2947  _Code = error_code();
2948  if ((_Todo & perms::add_perms) == perms::none)
2949  if ((_Todo & perms::remove_perms) == perms::none)
2950  ;
2951  else
2952  _Mask = (_Perms)(status(_Path).permissions() & ~_Mask);
2953  else
2954  if ((_Todo & perms::remove_perms) == perms::none)
2955  _Mask = (_Perms)(_Mask | status(_Path).permissions());
2956  else
2957  _Ok = false;
2958  if (!_Ok || _Chmod(_Path.c_str(), _Mask) != 0)
2960  }
perms _Perms
Definition: filesystem:103
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
_Perms permissions() const _NOEXCEPT
Definition: filesystem:130
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Chmod(const wchar_t *, _Perms)
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
path experimental::filesystem::v1::read_symlink ( const path &  _Path)
inline
2963  { // read symbolic link
2964  error_code _Code;
2965  path _Sympath = read_symlink(_Path, _Code);
2966  if (_Code != error_code())
2967  _THROW_NCEE(filesystem_error,
2968  "read_symlink(p): can't read symbolic link");
2969  return (_Sympath);
2970  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
path read_symlink(const path &, error_code &)
Definition: filesystem:2972
path experimental::filesystem::v1::read_symlink ( const path &  _Path,
error_code _Code 
)
inline
2974  { // read symbolic link
2975  _Code = error_code();
2976  if (!is_symlink(_Path))
2977  { // report error
2979  return (path());
2980  }
2981  _Pchar _Dest[_MAX_FILESYS_NAME];
2982  return (path(_Symlink_get(_Dest, _Path.c_str())));
2983  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
#define _MAX_FILESYS_NAME
Definition: filesystem:25
_FS_DLL wchar_t *__CLRCALL_PURE_OR_CDECL _Symlink_get(wchar_t(&)[_MAX_FILESYS_NAME], const wchar_t *)
wchar_t _Pchar
Definition: filesystem:31
bool is_symlink(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2883
bool experimental::filesystem::v1::remove ( const path &  _Path)
inline
2986  { // remove a file
2987  error_code _Code;
2988  bool _Ans = remove(_Path, _Code);
2989 
2990  if (_Code != error_code())
2991  _THROW_NCEE(filesystem_error,
2992  "remove(p): invalid argument");
2993  return (_Ans);
2994  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
bool experimental::filesystem::v1::remove ( const path &  _Path,
error_code _Code 
)
inline
2998  { // remove a file
2999  _Code = error_code();
3000  if (!exists(symlink_status(_Path)))
3001  return (false);
3002  else if (is_directory(_Path, _Code))
3003  if (_Remove_dir(_Path.c_str()))
3004  return (true);
3005  else
3006  { // couldn't remove emptied directory, report it
3008  return (false);
3009  }
3010  else
3011  { // file exists, try to remove it
3012  bool _Ans = _Unlink(_Path.c_str()) == 0;
3013  if (!_Ans)
3015  return (_Ans);
3016  }
3017  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
_FS_DLL bool __CLRCALL_PURE_OR_CDECL _Remove_dir(const wchar_t *)
Definition: system_error:221
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Unlink(const wchar_t *)
file_status symlink_status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3163
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2684
uintmax_t experimental::filesystem::v1::remove_all ( const path &  _Path)
inline
3054  { // recursively remove a directory
3055  error_code _Code;
3056  uintmax_t _Ans = remove_all(_Path, _Code);
3057  if (_Code != error_code())
3058  _THROW_NCEE(filesystem_error,
3059  "remove_all(p): invalid argument");
3060  return (_Ans);
3061  }
uintmax_t remove_all(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3063
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
unsigned long long uintmax_t
Definition: stdint.h:45
uintmax_t experimental::filesystem::v1::remove_all ( const path &  _Path,
error_code _Code 
)
inline
3065  { // recursively remove a directory
3066  uintmax_t _Ans = 0;
3067  _Remove_all(_Path, _Ans, _Code);
3068  if (_Code)
3069  return (static_cast<uintmax_t>(-1));
3070  return (_Ans);
3071  }
bool _Remove_all(const path &_Path, uintmax_t &_Ans, error_code &_Code) _NOEXCEPT
Definition: filesystem:3019
unsigned long long uintmax_t
Definition: stdint.h:45
void experimental::filesystem::v1::rename ( const path &  _Oldpval,
const path &  _Newpval 
)
inline
3074  { // rename _Oldpval as _Newpval
3075  error_code _Code;
3076  rename(_Oldpval, _Newpval, _Code);
3077  if (_Code != error_code())
3078  _THROW_NCEE(filesystem_error,
3079  "rename(p1, p2): invalid arguments");
3080  }
void rename(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:3082
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void experimental::filesystem::v1::rename ( const path &  _Oldpval,
const path &  _Newpval,
error_code _Code 
)
inline
3084  { // rename _Oldpval as _Newpval
3085  _Code = error_code();
3086 
3087  if (!exists(_Oldpval))
3088  { // fail immediately without modifying the filesystem
3090  return;
3091  }
3092 
3093  if (exists(_Newpval))
3094  { // both exist; there can be only one
3095  if (equivalent(_Oldpval, _Newpval, _Code) || _Code != error_code())
3096  return; // successful no-op, or report equivalent() failure
3097 
3098  if (!remove(_Newpval, _Code))
3099  return; // report remove() failure
3100  }
3101 
3102  if (_Rename(_Oldpval.c_str(), _Newpval.c_str()) != 0)
3104  }
_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:120
Definition: system_error:221
bool equivalent(const path &, const path &, error_code &) _NOEXCEPT
Definition: filesystem:2662
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2684
void experimental::filesystem::v1::resize_file ( const path &  _Path,
uintmax_t  _Newsize 
)
inline
3107  { // change file size
3108  error_code _Code;
3109  resize_file(_Path, _Newsize, _Code);
3110  if (_Code != error_code())
3111  _THROW_NCEE(filesystem_error,
3112  "resize_file(p, n): invalid arguments");
3113  };
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
void resize_file(const path &, uintmax_t, error_code &) _NOEXCEPT
Definition: filesystem:3115
void experimental::filesystem::v1::resize_file ( const path &  _Path,
uintmax_t  _Newsize,
error_code _Code 
)
inline
3117  { // change file size
3118  int _Errno = _Resize(_Path.c_str(), _Newsize);
3119 
3120  _Code = error_code();
3121  if (_Errno != 0)
3122  _Code = error_code(_Errno, _STD system_category());
3123  }
const error_category & system_category() _NOEXCEPT
Definition: system_error:712
Definition: system_error:221
_FS_DLL int __CLRCALL_PURE_OR_CDECL _Resize(const wchar_t *, uintmax_t)
space_info experimental::filesystem::v1::space ( const path &  _Path)
inline
3126  { // get space information for volume
3127  return (_Statvfs(_Path.c_str()));
3128  }
_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
3132  { // get space information for volume
3133  _Code = error_code();
3134  return (_Statvfs(_Path.c_str()));
3135  }
Definition: system_error:221
_FS_DLL space_info __CLRCALL_PURE_OR_CDECL _Statvfs(const wchar_t *)
file_status experimental::filesystem::v1::status ( const path &  _Path)
inline
3138  { // get file status
3139  error_code _Code;
3140  return (status(_Path, _Code));
3141  }
Definition: system_error:221
file_status status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3143
file_status experimental::filesystem::v1::status ( const path &  _Path,
error_code _Code 
)
inline
3145  { // get file status
3146  _Code = error_code();
3147  _Perms _Mode;
3148  _File_type _Ftype = _Stat(_Path.c_str(), &_Mode);
3149  return (file_status(_Ftype, _Mode));
3150  }
perms _Perms
Definition: filesystem:103
Definition: system_error:221
file_type _File_type
Definition: filesystem:51
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
bool experimental::filesystem::v1::status_known ( file_status  _Stat)
inline
3153  { // test if status known
3154  return (_Stat.type() != _File_type::unknown);
3155  }
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Stat(const wchar_t *, _Perms *)
void experimental::filesystem::v1::swap ( path &  _Left,
path &  _Right 
)
inline
1497  { // swap two paths
1498  _Left.swap(_Right);
1499  }
constexpr const _Ty &() _Left
Definition: algorithm:3590
constexpr const _Ty &() _Right
Definition: algorithm:3591
file_status experimental::filesystem::v1::symlink_status ( const path &  _Path)
inline
3158  { // get symlink file status
3159  error_code _Code;
3160  return (symlink_status(_Path, _Code));
3161  }
Definition: system_error:221
file_status symlink_status(const path &, error_code &) _NOEXCEPT
Definition: filesystem:3163
file_status experimental::filesystem::v1::symlink_status ( const path &  _Path,
error_code _Code 
)
inline
3165  { // get symlink file status
3166  _Perms _Mode;
3167  _File_type _Ftype = _Lstat(_Path.c_str(), &_Mode);
3168 
3169  _Code = error_code();
3170  return (file_status(_Ftype, _Mode));
3171  }
perms _Perms
Definition: filesystem:103
Definition: system_error:221
_FS_DLL _File_type __CLRCALL_PURE_OR_CDECL _Lstat(const wchar_t *, _Perms *)
file_type _File_type
Definition: filesystem:51
path experimental::filesystem::v1::system_complete ( const path &  _Path)
inline
3174  { // get completely specified path
3175  if (_Path.is_absolute())
3176  return (_Path);
3177  path _Curpath = current_path();
3178  if (!_Path.has_root_name() || _Path.root_name() == _Curpath.root_name())
3179  return (absolute(_Path));
3180  current_path(_Path.root_name()); // switch to new device
3181  path _Altpath = current_path(); // get its full current path
3182  current_path(_Curpath); // revert to original current path
3183  return (_Altpath / _Path.relative_path());
3184  }
void current_path(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2643
path absolute(const path &_Path, const path &_Base=current_path())
Definition: filesystem:2218
path experimental::filesystem::v1::system_complete ( const path &  _Path,
error_code _Code 
)
inline
3188  { // get completely specified path
3189  _Code = error_code();
3190 
3191  path _Ans;
3192 
3193  _TRY_BEGIN
3194  _Ans = system_complete(_Path);
3195  _CATCH_ALL
3197  return (path());
3198  _CATCH_END
3199 
3200  return (_Ans);
3201  }
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
#define _TRY_BEGIN
Definition: xstddef:60
#define _CATCH_END
Definition: xstddef:63
Definition: system_error:221
#define _CATCH_ALL
Definition: xstddef:62
path system_complete(const path &, error_code &)
Definition: filesystem:3186
path experimental::filesystem::v1::temp_directory_path ( )
inline
3204  { // get temporary directory
3205  error_code _Code;
3206  path _Ans = temp_directory_path(_Code);
3207  if (_Code != error_code())
3208  _THROW_NCEE(filesystem_error,
3209  "temp_directory_path(): can't find temp directory");
3210  return (_Ans);
3211  }
Definition: system_error:221
#define _THROW_NCEE(x, y)
Definition: xstddef:78
path temp_directory_path(error_code &)
Definition: filesystem:3213
path experimental::filesystem::v1::temp_directory_path ( error_code _Code)
inline
3215  { // get temporary directory
3216  _Pchar _Dest[_MAX_FILESYS_NAME];
3217  _Temp_get(_Dest);
3218  path _Ans(_Dest);
3219 
3220  _Code = error_code();
3221  if (!exists(_Ans) || !is_directory(_Ans))
3222  { // report error
3224  return (path());
3225  }
3226  return (_Ans);
3227  }
bool is_directory(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2777
error_code make_error_code(_Future_errc _Errno) _NOEXCEPT
Definition: future:120
Definition: system_error:221
#define _MAX_FILESYS_NAME
Definition: filesystem:25
wchar_t _Pchar
Definition: filesystem:31
_FS_DLL wchar_t *__CLRCALL_PURE_OR_CDECL _Temp_get(wchar_t(&)[_MAX_FILESYS_NAME])
bool exists(const path &, error_code &) _NOEXCEPT
Definition: filesystem:2684
template<class _InIt , class = typename enable_if<_Is_iterator<_InIt>::value, void>::type>
path experimental::filesystem::v1::u8path ( _InIt  _First,
_InIt  _Last 
)
inline
1568  { // make path from [_First, _Last) UTF8, given iterators
1569  string _Str(_First, _Last);
1570  path::string_type _Str_out;
1571  return (path(_Path_cvt<char8_t, _Pchar>::
1572  _Cvt(_Str_out, _Str.c_str(), _Str.size())));
1573  }
_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
1580  { // make path from NTBS UTF8, given iterator
1581  string _Str;
1582  for (; *_First != '\0'; ++_First)
1583  _Str += *_First;
1584  path::string_type _Str_out;
1585  return (path(_Path_cvt<char8_t, _Pchar>::
1586  _Cvt(_Str_out, _Str.c_str(), _Str.size())));
1587  }
const _Elem * c_str() const _NOEXCEPT
Definition: xstring:1741
size_type size() const _NOEXCEPT
Definition: xstring:1763
template<class _Traits , class _Alloc >
path experimental::filesystem::v1::u8path ( const basic_string< char, _Traits, _Alloc > &  _Str)
inline
1592  { // make path from arbitrary char string UTF8
1593  path::string_type _Str_out;
1594  return (path(_Path_cvt<char8_t, _Pchar>::
1595  _Cvt(_Str_out, _Str.c_str(), _Str.size())));
1596  }
const _Elem * c_str() const _NOEXCEPT
Definition: xstring:1741
size_type size() const _NOEXCEPT
Definition: xstring:1763