summaryrefslogtreecommitdiffstats
path: root/libcxx/include/filesystem
Commit message (Collapse)AuthorAgeFilesLines
* Rename __is_foo_iterator traits to reflect their Cpp17 nature.Eric Fiselier2019-11-181-3/+3
| | | | | | | | | With the upcoming introduction of iterator concepts in ranges, the meaning of "__is_contiguous_iterator" changes drastically. Currently we intend it to mean "does it have this iterator category", but it could now also mean "does it meet the requirements of this concept", and these can be different.
* [libc++] Always build with -fvisibility=hiddenLouis Dionne2019-08-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Summary: This avoids symbols being accidentally exported from the dylib when they shouldn't. The next step is to use a pragma to apply hidden visibility to all declarations (unless otherwise specified), which will allow us to drop the per-declaration hidden visibility attributes we currently have. This also has the nice side effect of making sure the dylib exports the same symbols regardless of the optimization level. PR38138 Reviewers: EricWF, mclow.lists Subscribers: mgorny, christof, jkorous, dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D62868 llvm-svn: 368703
* [libc++] Mark <filesystem> as unavailable on Apple platforms using pragmasLouis Dionne2019-03-201-1/+11
| | | | | | | | | | | | | | | | | | | | | Summary: Also add the corresponding XFAILs to tests that require filesystem. The approach taken to mark <filesystem> as unavailable in this patch is to mark all the header as unavailable using #pragma clang attribute. Marking each declaration using the attribute is more intrusive and does not provide a lot of value right now because pretty much everything in <filesystem> requires dylib support, often transitively. This is an alternative to https://reviews.llvm.org/D59093. A similar (but partial) patch was already applied in r356558. Reviewers: mclow.lists, EricWF, serge-sans-paille Subscribers: christof, jkorous, dexonsmith, libcxx-commits Differential Revision: https://reviews.llvm.org/D59224 llvm-svn: 356616
* [libc++] Mark internal types of std::filesystem as hiddenLouis Dionne2019-03-191-3/+3
| | | | | | | | | | | | | | | | | | Summary: Otherwise, implicit instantiations of templates with these types can cause the dylib to start exporting the vtable/RTTI of the instantiation. Giving hidden visibility to those types causes the compiler to understand that they are not used outside the dylib, and as a result implicitly instantiated vtables/RTTI of templates with those internal types will get hidden visibility. Reviewers: EricWF Subscribers: christof, jkorous, dexonsmith, jdoerfert, libcxx-commits Differential Revision: https://reviews.llvm.org/D59550 llvm-svn: 356488
* [NFC][libc++] Reindent functionLouis Dionne2019-02-051-4/+2
| | | | llvm-svn: 353180
* [libc++] Fix Windows build error in include/filesystemThomas Anderson2019-01-291-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | _LIBCPP_FUNC_VIS is redundant since the class is already annotated with _LIBCPP_EXCEPTION_ABI. Fixes this build error: In file included from fstream:188: filesystem(1350,3): error: attribute 'dllimport' cannot be applied to member of 'dllimport' class _LIBCPP_FUNC_VIS __config(674,37): note: expanded from macro '_LIBCPP_FUNC_VIS' #define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS __config(666,38): note: expanded from macro '_LIBCPP_DLL_VIS' # define _LIBCPP_DLL_VIS __declspec(dllimport) filesystem(1313,7): note: previous attribute is here class _LIBCPP_EXCEPTION_ABI filesystem_error : public system_error { __config(675,37): note: expanded from macro '_LIBCPP_EXCEPTION_ABI' #define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS __config(666,38): note: expanded from macro '_LIBCPP_DLL_VIS' # define _LIBCPP_DLL_VIS __declspec(dllimport) Differential Revision: https://reviews.llvm.org/D57354 llvm-svn: 352525
* Update more file headers across all of the LLVM projects in the monorepoChandler Carruth2019-01-191-4/+3
| | | | | | | | | | | | | | | | | | to reflect the new license. These used slightly different spellings that defeated my regular expressions. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. llvm-svn: 351648
* Implement LWG 3065: Make path operators friends.Eric Fiselier2018-12-211-37/+25
| | | | | | | | | This prevents things like: using namespace std::filesystem; auto x = L"a/b" == std::string("a/b"); llvm-svn: 349884
* Implement LWG 3145: file_clock breaks ABI for C++17 implementations.Eric Fiselier2018-12-211-30/+0
| | | | | | | This patch adds std::chrono::file_clock, but without breaking the existing ABI for std::filesystem. llvm-svn: 349883
* Fix even more Clang warnings.Eric Fiselier2018-10-011-1/+1
| | | | | | | This patch disables shift-sign-overflow warnings for now. It also fixes most -Wfloat-equal warnings and -Wextra-semi warnings. llvm-svn: 343438
* Implement the infrastructure for feature-test macros. Very few actual ↵Marshall Clow2018-09-121-4/+1
| | | | | | feature test macros, though. Reviewed as: https://reviews.llvm.org/D51955 llvm-svn: 342073
* Implement <filesystem>Eric Fiselier2018-07-271-0/+2682
This patch implements the <filesystem> header and uses that to provide <experimental/filesystem>. Unlike other standard headers, the symbols needed for <filesystem> have not yet been placed in libc++.so. Instead they live in the new libc++fs.a library. Users of filesystem are required to link this library. (Also note that libc++experimental no longer contains the definition of <experimental/filesystem>, which now requires linking libc++fs). The reason for keeping <filesystem> out of the dylib for now is that it's still somewhat experimental, and the possibility of requiring an ABI breaking change is very real. In the future the symbols will likely be moved into the dylib, or the dylib will be made to link libc++fs automagically). Note that moving the symbols out of libc++experimental may break user builds until they update to -lc++fs. This should be OK, because the experimental library provides no stability guarantees. However, I plan on looking into ways we can force libc++experimental to automagically link libc++fs. In order to use a single implementation and set of tests for <filesystem>, it has been placed in a special `__fs` namespace. This namespace is inline in C++17 onward, but not before that. As such implementation is available in C++11 onward, but no filesystem namespace is present "directly", and as such name conflicts shouldn't occur in C++11 or C++14. llvm-svn: 338093
OpenPOWER on IntegriCloud