llvm-project/libcxx/src
Eric Fiselier d7fae181c3 Implement filesystem NB comments, relative paths, and related issues.
This is a fairly large patch that implements all of the filesystem NB comments
and the relative paths changes (ex. adding weakly_canonical). These issues
and papers are all interrelated so their implementation couldn't be split up
nicely.

This patch upgrades <experimental/filesystem> to match the C++17 spec and not
the published experimental TS spec. Some of the changes in this patch are both
API and ABI breaking, however libc++ makes no guarantee about stability for
experimental implementations.

The major changes in this patch are:

* Implement NB comments for filesystem (P0492R2), including:
  * Implement `perm_options` enum as part of NB comments, and update the
    `permissions` function to match.
  * Implement changes to `remove_filename` and `replace_filename`
  * Implement changes to `path::stem()` and `path::extension()` which support
    splitting examples like `.profile`.
  * Change path iteration to return an empty path instead of '.' for trailing
    separators.
  * Change `operator/=` to handle absolute paths on the RHS.
  * Change `absolute` to no longer accept a current path argument.

* Implement relative paths according to NB comments (P0219r1)

* Combine `path.cpp` and `operations.cpp` since some path functions require
  access to the operations internals, and some fs operations require access
  to the path parser.

llvm-svn: 329028
2018-04-02 23:03:41 +00:00
..
experimental Implement filesystem NB comments, relative paths, and related issues. 2018-04-02 23:03:41 +00:00
include [libcxx] Add WebAssembly support 2017-12-16 18:59:50 +00:00
support libcxx: Use vcruntime declarations for typeinfo on Windows. 2018-01-26 01:22:17 +00:00
algorithm.cpp Mark libc++ internal globals with _LIBCPP_SAFE_STATIC. 2016-09-28 22:08:13 +00:00
any.cpp Put the exception classes for experimental::optional and experimental::any back in the dylib for binary compatibility 2018-02-01 18:45:57 +00:00
bind.cpp Implement LWG 2488 - Make the placeholders constexpr. 2016-06-26 21:01:34 +00:00
chrono.cpp Fix Libc++ build with MinGW64 2017-05-31 22:14:05 +00:00
condition_variable.cpp [Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows 2017-05-31 22:07:49 +00:00
debug.cpp Fix debug mode build w/o exceptions 2016-12-28 05:20:27 +00:00
exception.cpp [libc++] Replace __sync_* functions with __libcpp_atomic_* functions 2017-09-19 23:18:03 +00:00
functional.cpp [libc++] Add a key function for bad_function_call 2017-03-28 19:33:31 +00:00
future.cpp Make it possible to build a no-exceptions variant of libcxx. 2015-11-10 11:41:22 +00:00
hash.cpp
ios.cpp [Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows 2017-05-31 22:07:49 +00:00
iostream.cpp [libc++] Don't hardcode namespace in manual mangling 2017-08-07 19:59:58 +00:00
locale.cpp Fix some too-big local arrays. Thanks to dcdillon for the patch. Reviewed as D28217 2018-01-11 17:16:52 +00:00
memory.cpp Fix incorrect usage of __libcpp_mutex_trylock. Patch from Andrey Khalyavin 2017-05-04 07:45:09 +00:00
mutex.cpp [Libc++] Use #pragma push_macro/pop_macro to better handle min/max on Windows 2017-05-31 22:07:49 +00:00
new.cpp [libc++] Support Microsoft ABI without vcruntime headers 2017-10-09 19:25:17 +00:00
optional.cpp Put the exception classes for experimental::optional and experimental::any back in the dylib for binary compatibility 2018-02-01 18:45:57 +00:00
random.cpp [libcxx] Support getentropy as a source of randomness for std::random_device 2017-12-01 06:34:33 +00:00
regex.cpp [libcxx] Remove pragmas that were needed to suppress warnings produced 2016-01-28 06:13:36 +00:00
shared_mutex.cpp Implement N4508: shared_mutex. Reviewed as http://reviews.llvm.org/D10480 2015-06-30 14:04:14 +00:00
stdexcept.cpp Remove <__refstring> header; Move it into source directory. 2017-07-12 01:38:35 +00:00
string.cpp [libc++] Refactor Windows support headers. 2017-05-10 20:57:45 +00:00
strstream.cpp Make pbump (internally) handle sizes bigger than MAX_INT. Fixes PR#33725 - thanks to Jonathan Wakely for the report 2017-09-12 15:00:43 +00:00
system_error.cpp Rework libcxx strerror_r handling. 2017-07-19 21:48:49 +00:00
thread.cpp Fix Libc++ build with MinGW64 2017-05-31 22:14:05 +00:00
typeinfo.cpp libcxx: Use vcruntime declarations for typeinfo on Windows. 2018-01-26 01:22:17 +00:00
utility.cpp
valarray.cpp
variant.cpp Implement C++17 <variant>. Patch from Michael Park! 2016-12-02 23:00:05 +00:00
vector.cpp Move external instantiation for __vector_base_common to vector.cpp 2017-06-15 01:53:12 +00:00