xref: /aosp_15_r20/external/cronet/third_party/libc++/src/modules/std/ranges.cppm (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1// -*- C++ -*-
2//===----------------------------------------------------------------------===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10module;
11#include <ranges>
12
13export module std:ranges;
14export namespace std {
15  namespace ranges {
16    inline namespace __cpo {
17      // [range.access], range access
18      using std::ranges::__cpo::begin;
19      using std::ranges::__cpo::cbegin;
20      using std::ranges::__cpo::cend;
21      using std::ranges::__cpo::crbegin;
22      using std::ranges::__cpo::crend;
23      using std::ranges::__cpo::end;
24      using std::ranges::__cpo::rbegin;
25      using std::ranges::__cpo::rend;
26
27      using std::ranges::__cpo::cdata;
28      using std::ranges::__cpo::data;
29      using std::ranges::__cpo::empty;
30      using std::ranges::__cpo::size;
31      using std::ranges::__cpo::ssize;
32    } // namespace __cpo
33
34    // [range.range], ranges
35    using std::ranges::range;
36
37    using std::ranges::enable_borrowed_range;
38
39    using std::ranges::borrowed_range;
40
41    // using std::ranges::const_iterator_t;
42    // using std::ranges::const_sentinel_t;
43    using std::ranges::iterator_t;
44    // using std::ranges::range_const_reference_t;
45    using std::ranges::range_common_reference_t;
46    using std::ranges::range_difference_t;
47    using std::ranges::range_reference_t;
48    using std::ranges::range_rvalue_reference_t;
49    using std::ranges::range_size_t;
50    using std::ranges::range_value_t;
51    using std::ranges::sentinel_t;
52
53    // [range.sized], sized ranges
54    using std::ranges::disable_sized_range;
55    using std::ranges::sized_range;
56
57    // [range.view], views
58    using std::ranges::enable_view;
59    using std::ranges::view;
60    using std::ranges::view_base;
61
62    // [range.refinements], other range refinements
63    using std::ranges::bidirectional_range;
64    using std::ranges::common_range;
65    // using std::ranges::constant_range;
66    using std::ranges::contiguous_range;
67    using std::ranges::forward_range;
68    using std::ranges::input_range;
69    using std::ranges::output_range;
70    using std::ranges::random_access_range;
71    using std::ranges::viewable_range;
72
73    // [view.interface], class template view_­interface
74    using std::ranges::view_interface;
75
76    // [range.subrange], sub-ranges
77    using std::ranges::subrange;
78    using std::ranges::subrange_kind;
79
80    using std::ranges::get;
81  } // namespace ranges
82
83  using std::ranges::get;
84
85  namespace ranges {
86
87    // [range.dangling], dangling iterator handling
88    using std::ranges::dangling;
89
90    // [range.elementsof], class template elements_­of
91    // using std::ranges::elements_of;
92
93    using std::ranges::borrowed_iterator_t;
94
95    using std::ranges::borrowed_subrange_t;
96
97    // [range.utility.conv], range conversions
98    // using std::ranges::to;
99
100    // [range.empty], empty view
101    using std::ranges::empty_view;
102
103    namespace views {
104      using std::ranges::views::empty;
105    }
106
107    // [range.single], single view
108    using std::ranges::single_view;
109
110    namespace views {
111      using std::ranges::views::single;
112    } // namespace views
113
114    // [range.iota], iota view
115    using std::ranges::iota_view;
116
117    namespace views {
118      using std::ranges::views::iota;
119    } // namespace views
120
121    // [range.repeat], repeat view
122#if 0
123    using std::ranges::repeat_view;
124
125    namespace views {
126      using std::ranges::views::repeat;
127    } // namespace views
128#endif
129#ifndef _LIBCPP_HAS_NO_LOCALIZATION
130    // [range.istream], istream view
131    using std::ranges::basic_istream_view;
132    using std::ranges::istream_view;
133#  ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
134    using std::ranges::wistream_view;
135#  endif
136
137    namespace views {
138      using std::ranges::views::istream;
139    }
140#endif // _LIBCPP_HAS_NO_LOCALIZATION
141
142    // [range.adaptor.object], range adaptor objects
143    // using std::ranges::range_adaptor_closure;
144
145    // [range.all], all view
146    namespace views {
147      using std::ranges::views::all;
148      using std::ranges::views::all_t;
149    } // namespace views
150
151    // [range.ref.view], ref view
152    using std::ranges::ref_view;
153
154    // [range.owning.view], owning view
155    using std::ranges::owning_view;
156
157    // [range.as.rvalue], as rvalue view
158    using std::ranges::as_rvalue_view;
159
160    namespace views {
161      using std::ranges::views::as_rvalue;
162    } // namespace views
163
164    // [range.filter], filter view
165    using std::ranges::filter_view;
166
167    namespace views {
168      using std::ranges::views::filter;
169    } // namespace views
170
171    // [range.transform], transform view
172    using std::ranges::transform_view;
173
174    namespace views {
175      using std::ranges::views::transform;
176    } // namespace views
177
178    // [range.take], take view
179    using std::ranges::take_view;
180
181    namespace views {
182      using std::ranges::views::take;
183    } // namespace views
184
185    // [range.take.while], take while view
186    using std::ranges::take_while_view;
187
188    namespace views {
189      using std::ranges::views::take_while;
190    } // namespace views
191
192    // [range.drop], drop view
193    using std::ranges::drop_view;
194
195    namespace views {
196      using std::ranges::views::drop;
197    } // namespace views
198
199    // [range.drop.while], drop while view
200    using std::ranges::drop_while_view;
201
202    namespace views {
203      using std::ranges::views::drop_while;
204    } // namespace views
205
206    using std::ranges::join_view;
207
208    namespace views {
209      using std::ranges::views::join;
210    } // namespace views
211#if 0
212    using std::ranges::join_with_view;
213
214    namespace views {
215      using std::ranges::views::join_with;
216    } // namespace views
217#endif
218    using std::ranges::lazy_split_view;
219
220    // [range.split], split view
221    using std::ranges::split_view;
222
223    namespace views {
224      using std::ranges::views::lazy_split;
225      using std::ranges::views::split;
226    } // namespace views
227
228    // [range.counted], counted view
229    namespace views {
230      using std::ranges::views::counted;
231    } // namespace views
232
233    // [range.common], common view
234    using std::ranges::common_view;
235
236    namespace views {
237      using std::ranges::views::common;
238    } // namespace views
239
240    // [range.reverse], reverse view
241    using std::ranges::reverse_view;
242
243    namespace views {
244      using std::ranges::views::reverse;
245    } // namespace views
246
247    // [range.as.const], as const view
248#if 0
249    using std::ranges::as_const_view;
250
251    namespace views {
252      using std::ranges::views::as_const;
253    } // namespace views
254#endif
255    // [range.elements], elements view
256    using std::ranges::elements_view;
257
258    using std::ranges::keys_view;
259    using std::ranges::values_view;
260
261    namespace views {
262      using std::ranges::views::elements;
263      using std::ranges::views::keys;
264      using std::ranges::views::values;
265    } // namespace views
266
267    // [range.zip], zip view
268    using std::ranges::zip_view;
269
270    namespace views {
271      using std::ranges::views::zip;
272    } // namespace views
273
274#if 0
275    // [range.zip.transform], zip transform view
276    using std::ranges::zip_transform_view;
277
278    namespace views {
279      using std::ranges::views::zip_transform;
280    }
281
282    using std::ranges::adjacent_view;
283
284    namespace views {
285      using std::ranges::views::adjacent;
286      using std::ranges::views::pairwise;
287    } // namespace views
288
289    using std::ranges::adjacent_transform_view;
290
291    namespace views {
292      using std::ranges::views::adjacent_transform;
293      using std::ranges::views::pairwise_transform;
294    } // namespace views
295
296    using std::ranges::chunk_view;
297
298    using std::ranges::chunk_view<V>;
299
300    namespace views {
301      using std::ranges::views::chunk;
302    }
303
304    using std::ranges::slide_view;
305
306    namespace views {
307      using std::ranges::views::slide;
308    }
309
310    // [range.chunk.by], chunk by view
311    using std::ranges::chunk_by_view;
312
313    namespace views {
314      using std::ranges::views::chunk_by;
315    }
316
317    // [range.stride], stride view
318    using std::ranges::stride_view;
319
320    namespace views {
321      using std::ranges::views::stride;
322    }
323
324    using std::ranges::cartesian_product_view;
325
326    namespace views {
327      using std::ranges::views::cartesian_product;
328    }
329#endif
330  } // namespace ranges
331
332  namespace views = ranges::views;
333
334  using std::tuple_element;
335  using std::tuple_size;
336
337  using std::from_range;
338  using std::from_range_t;
339} // namespace std
340