Arthur O'Dwyer
67151d029b
[libc++] [ranges] Implement P2415R2 owning_view.
...
"What is a view?"
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2415r2.html
https://github.com/cplusplus/draft/pull/5010/files
This was a late-breaking (Oct 2021) change to C++20.
The only thing missing from this patch is that we're supposed
to bump the feature-test macro from
#define __cpp_lib_ranges 202106L
to
#define __cpp_lib_ranges 202110L
but we can't do that because we don't implement all of 202106 Ranges yet.
Differential Revision: https://reviews.llvm.org/D116894
2022-01-13 12:29:41 -05:00
Arthur O'Dwyer
4d81a46f7f
[libc++] Alphabetize header #includes. NFCI.
...
The NFC part of D116809. We still want to enforce this in CI,
but the mechanism for that is still to-be-determined.
Differential Revision: https://reviews.llvm.org/D116809
2022-01-10 16:30:38 -05:00
Joe Loser
dca681fee9
[libc++][NFC] Fix typo in ranges::iterator_t synopsis
...
The `iterator_t` alias template is on `T` not a `R` like the other
neighboring alias templates. Fix the typo.
2021-11-20 19:15:00 -05:00
Louis Dionne
eb8650a757
[runtimes][NFC] Remove filenames at the top of the license notice
...
We've stopped doing it in libc++ for a while now because these names
would end up rotting as we move things around and copy/paste stuff.
This cleans up all the existing files so as to stop the spreading
as people copy-paste headers around.
2021-11-17 16:30:52 -05:00
Mark de Wever
dcbfceffde
[libc++][nfc] Remove a duplicated include.
2021-10-10 14:21:01 +02:00
Louis Dionne
64184b4af0
[libc++][NFC] Remove useless _LIBCPP_PUSH_MACROS
...
Only files that actually use min/max are required to do this dance.
Differential Revision: https://reviews.llvm.org/D108778
2021-08-27 12:41:55 -04:00
Louis Dionne
19e806e88d
[libc++][NFC] Sort headers alphabetically
2021-08-26 14:18:09 -04:00
zoecarver
9ed0778179
[libcxx][ranges] Move `namespace views` into `namespace ranges` and add an alias.
...
Differential Revision: https://reviews.llvm.org/D108047
2021-08-13 16:12:19 -07:00
zoecarver
df324bba5c
[libcxx][ranges] Add `ranges::join_view`.
...
Differential Revision: https://reviews.llvm.org/D107671
2021-08-13 11:31:08 -07:00
zoecarver
7b20e05c71
[libcxx][ranges] Add `ranges::iota_view`.
...
Differential Revision: https://reviews.llvm.org/D107396
2021-08-13 11:31:08 -07:00
Mark de Wever
d2bc4fa3c7
[libc++][doc] Improve contributor documentation.
...
Addresses the post-commit review comments of D107596.
2021-08-11 17:33:54 +02:00
zoecarver
f9e58f35e9
[libcxx][ranges] Add `views::counted` CPO.
...
Differential Revision: https://reviews.llvm.org/D106923
2021-08-10 16:42:28 -07:00
zoecarver
9d982c67ba
[libcxx][ranges] Add `ranges::reverse_view`.
...
Differential Revision: https://reviews.llvm.org/D107096
2021-08-09 15:09:59 -07:00
Mark de Wever
d618a1cc5c
[libc++] Improve LIBCXX_ENABLE_INCOMPLETE_FEATURES.
...
@tcanens pointed out the current behavior of the macro breaks the usage
pattern described in http://wg21.link/SD6
```
# if __has_include(<optional>)
# include <optional>
# if __cpp_lib_optional >= 201606
# define have_optional 1
# endif
```
To support this usage pattern the hard errror is removed. Instead the
header includes nothing but the `<version>` header.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D107134
2021-07-30 14:36:03 -04:00
zoecarver
481ad59b9f
[libcxx][ranges] Add `std::ranges::single_view`.
...
Differential Revision: https://reviews.llvm.org/D106840
2021-07-30 10:53:20 -07:00
zoecarver
0f4b41e038
[libcxx][ranges] Add ranges::take_view.
...
Differential Revision: https://reviews.llvm.org/D106507
2021-07-28 12:14:21 -07:00
Mark de Wever
71909de374
[libc++] Disable incomplete library features.
...
Adds a new CMake option to disable the usage of incomplete headers.
These incomplete headers are not guaranteed to be ABI stable. This
option is intended to be used by vendors so they can avoid their users
from code that's not ready for production usage.
The option is enabled by default.
Differential Revision: https://reviews.llvm.org/D106763
2021-07-27 22:37:35 +02:00
Louis Dionne
7b28c5d376
[libc++] Implement the output_iterator and output_range concepts
...
Differential Revision: https://reviews.llvm.org/D106704
2021-07-26 15:05:17 -04:00
Louis Dionne
fbaf7f0bc7
[libc++] Add range_size_t
...
Differential Revision: https://reviews.llvm.org/D106708
2021-07-26 12:19:26 -04:00
zoecarver
e5d8b93e5a
[libcxx][ranges] Add `ranges::common_view`.
...
Differential Revision: https://reviews.llvm.org/D105753
2021-07-23 09:08:49 -07:00
Christopher Di Bella
74fd3cb8cd
[libcxx][ranges] implements dangling, borrowed_iterator_t, borrowed_subrange_t
...
* Implements part of P0896 'The One Ranges Proposal'
* Implements http://wg21.link/range.dangling
Reviewed By: zoecarver
Differential Revision: https://reviews.llvm.org/D105205
2021-07-21 21:34:13 +00:00
Christopher Di Bella
182ba8ab1b
[libcxx][ranges] makes `ranges::subrange` a borrowed range
...
Differential Revision: https://reviews.llvm.org/D106207
2021-07-17 17:25:56 +00:00
Louis Dionne
3001b48d76
[libc++] Implement views::all_t and ranges::viewable_range
...
Differential Revision: https://reviews.llvm.org/D105816
2021-07-15 07:54:33 -04:00
zoecarver
0e09a41b41
[libcxx][ranges] Add `ranges::transform_view`.
...
Reviewed By: cjdb, ldionne, #libc
Differential Revision: https://reviews.llvm.org/D103056
2021-07-09 10:13:57 -07:00
zoecarver
46afddec41
[libcxx][nfc] Update the synopsis comment in <ranges> to include drop_view.
2021-06-24 11:09:25 -07:00
zoecarver
3450398738
[libcxx][ranges] Add contiguous_range.
...
Differential Revision: https://reviews.llvm.org/D104262
2021-06-24 10:40:05 -07:00
zoecarver
560170fa2d
[libcxx][views] Add drop_view.
...
The first view in the libc++ ranges library 🚀
Differential Revision: https://reviews.llvm.org/D102037
2021-06-23 10:10:50 -07:00
zoecarver
c820b494d6
[libcxx][ranges] Implement views::all.
...
Differential Revision: https://reviews.llvm.org/D102028
2021-06-14 10:41:00 -04:00
zoecarver
7eba4856c7
[libcxx][ranges] Add class ref_view.
...
Differential Revision: https://reviews.llvm.org/D102020
2021-06-11 11:02:39 -07:00
zoecarver
9106047ee3
[libcxx][ranges] Add range.subrange.
...
Basically the title.
Differential Revision: https://reviews.llvm.org/D102006
2021-06-11 09:34:41 -07:00
Christopher Di Bella
bbb3d03f93
[libcxx][ranges][nfc] moves view concepts into `__ranges/concepts.h`
2021-06-10 19:35:00 +00:00
zoecarver
d31a2e7554
[libcxx][ranges] Add `ranges::empty_view`.
...
Differential Revision: https://reviews.llvm.org/D103208
2021-06-04 09:38:49 -07:00
zoecarver
5671ff20d9
[libcxx] Implement view.interface.
...
This will unblock work on ranges::view. Based on D101396.
Refs http://eel.is/c++draft/view.interface .
Differential Revision: https://reviews.llvm.org/D101737
2021-06-01 12:34:47 -07:00
Arthur O'Dwyer
bfbd73f87d
[libc++] Alphabetize and include-what-you-use. NFCI.
...
Differential Revision: https://reviews.llvm.org/D102781
2021-05-29 19:54:48 -04:00
zoecarver
9db55b314b
[libcxx][ranges] Add ranges::data CPO.
...
This is the second to last one! Based on D101396. Depends on D100255. Refs D101079 and D101193.
Differential Revision: https://reviews.llvm.org/D101476
2021-05-21 11:07:23 -07:00
Christopher Di Bella
d8fad66149
[libcxx][ranges] adds concept `sized_range` and cleans up `ranges::size`
...
* adds `sized_range` and conformance tests
* moves `disable_sized_range` into namespace `std::ranges`
* removes explicit type parameter
Implements part of P0896 'The One Ranges Proposal'.
Differential Revision: https://reviews.llvm.org/D102434
2021-05-19 18:16:45 +00:00
zoecarver
e5d483f28a
[libcxx][ranges] Add ranges::empty CPO.
...
Depends on D101079. Refs D101189.
Differential Revision: https://reviews.llvm.org/D101193
2021-05-10 17:14:39 -07:00
zoecarver
6f1b10df91
[libcxx][ranges] Add ranges::ssize CPO.
...
Based on D101079.
Differential Revision: https://reviews.llvm.org/D101189
2021-05-04 21:50:00 -07:00
zoecarver
600686d75f
[libcxx][ranges] Add ranges::size CPO.
...
The begining of [range.prim].
Differential Revision: https://reviews.llvm.org/D101079
2021-05-04 21:50:00 -07:00
Louis Dionne
2021d272ad
[libc++] Implement ranges::view
...
Differential Revision: https://reviews.llvm.org/D101547
2021-05-04 11:05:58 -04:00
Christopher Di Bella
9c5d86aac5
[libcxx][iterator][ranges] adds `bidirectional_iterator` and `bidirectional_range`
...
Implements parts of:
* P0896R4 The One Ranges Proposal`
Depends on D100275.
Differential Revision: https://reviews.llvm.org/D100278
2021-05-03 21:21:33 +00:00
Christopher Di Bella
fa3e26266c
[libcxx][iterator][ranges] adds `forward_iterator` and `forward_range`
...
Implements parts of:
* P0896R4 The One Ranges Proposal`
Depends on D100271.
Differential Revision: https://reviews.llvm.org/D100275
2021-05-03 20:46:18 +00:00
Christopher Di Bella
c05d1eed35
[libcxx][iterator][ranges] adds `input_iterator` and `input_range`
...
Implements parts of:
* P0896R4 The One Ranges Proposal`
Depends on D100269.
Differential Revision: https://reviews.llvm.org/D100271
2021-04-30 22:49:06 +00:00
Christopher Di Bella
7c17731596
[libcxx][ranges] adds `ranges::range`, `ranges::common_range`, and range aliases
...
* `std::ranges::range`
* `std::ranges::sentinel_t`
* `std::ranges::range_difference_t`
* `std::ranges::range_value_t`
* `std::ranges::range_reference_t`
* `std::ranges::range_rvalue_reference_t`
* `std::ranges::common_range`
`range_size_t` depends on `sized_range` and will be added alongside it.
Implements parts of:
* P0896R4 The One Ranges Proposal`
Depends on D100255.
Differential Revision: https://reviews.llvm.org/D100269
2021-04-30 16:56:42 +00:00
Christopher Di Bella
5a3309f825
[libcxx][ranges] adds `range` access CPOs
...
* `std::ranges::begin`
* `std::ranges::cbegin`
* `std::ranges::end`
* `std::ranges::cend`
* `std::ranges::iterator` (required for `end`)
Implements parts of:
* P0896R4 The One Ranges Proposal`
Co-author: @zoecarver
Depends on D90999, D100160.
Differential Revision: https://reviews.llvm.org/D100255
2021-04-30 16:56:42 +00:00
Mark de Wever
01ace074fc
[libc++] Implements ranges::enable_borrowed_range
...
This is the initial patch to implement ranges in libc++.
Implements parts of:
- P0896R4 One Ranges Proposal
- P1870 forwarding-range is too subtle
- LWG3379 in several library names is misleading
Reviewed By: ldionne, #libc, cjdb, zoecarver, Quuxplusone
Differential Revision: https://reviews.llvm.org/D90999
2021-04-18 13:35:08 +02:00