@zigc/lib 0.17.0-dev.135 → 0.17.0-dev.224
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/c/stdlib.zig +32 -22
- package/compiler/aro/aro/Compilation.zig +0 -3
- package/compiler/translate-c/ast.zig +5 -2
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +1 -22
- package/docs/wasm/markdown/Parser.zig +5 -9
- package/include/__clang_spirv_builtins.h +12 -12
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/amo.h +131 -0
- package/include/amxavx512intrin.h +215 -1
- package/include/amxintrin.h +0 -2
- package/include/arm_acle.h +37 -27
- package/include/arm_neon.h +218 -82
- package/include/arm_sme.h +8 -8
- package/include/arm_sve.h +4162 -3782
- package/include/avx10_2_512bf16intrin.h +19 -12
- package/include/avx10_2_512convertintrin.h +1 -1
- package/include/avx10_2_512niintrin.h +31 -31
- package/include/avx10_2_512satcvtdsintrin.h +1 -1
- package/include/avx10_2bf16intrin.h +54 -45
- package/include/avx10_2convertintrin.h +2 -2
- package/include/avx10_2copyintrin.h +1 -1
- package/include/avx10_2niintrin.h +14 -14
- package/include/avx10_2satcvtdsintrin.h +2 -2
- package/include/avx2intrin.h +275 -377
- package/include/avx512bf16intrin.h +25 -16
- package/include/avx512bitalgintrin.h +19 -30
- package/include/avx512bwintrin.h +386 -505
- package/include/avx512cdintrin.h +42 -55
- package/include/avx512dqintrin.h +132 -161
- package/include/avx512fintrin.h +1015 -1424
- package/include/avx512fp16intrin.h +112 -110
- package/include/avx512ifmaintrin.h +32 -34
- package/include/avx512ifmavlintrin.h +73 -46
- package/include/avx512vbmi2intrin.h +43 -32
- package/include/avx512vbmiintrin.h +19 -27
- package/include/avx512vbmivlintrin.h +35 -49
- package/include/avx512vlbf16intrin.h +32 -22
- package/include/avx512vlbitalgintrin.h +37 -53
- package/include/avx512vlbwintrin.h +470 -573
- package/include/avx512vlcdintrin.h +74 -102
- package/include/avx512vldqintrin.h +110 -127
- package/include/avx512vlfp16intrin.h +130 -111
- package/include/avx512vlintrin.h +945 -1299
- package/include/avx512vlvbmi2intrin.h +78 -63
- package/include/avx512vlvnniintrin.h +21 -18
- package/include/avx512vlvp2intersectintrin.h +2 -2
- package/include/avx512vnniintrin.h +10 -10
- package/include/avx512vp2intersectintrin.h +1 -2
- package/include/avx512vpopcntdqintrin.h +8 -10
- package/include/avx512vpopcntdqvlintrin.h +17 -15
- package/include/avxifmaintrin.h +16 -0
- package/include/avxintrin.h +165 -241
- package/include/avxvnniint16intrin.h +118 -99
- package/include/avxvnniint8intrin.h +56 -32
- package/include/avxvnniintrin.h +16 -8
- package/include/cpuid.h +101 -4
- package/include/emmintrin.h +168 -168
- package/include/f16cintrin.h +23 -9
- package/include/float.h +16 -155
- package/include/fma4intrin.h +98 -96
- package/include/fmaintrin.h +96 -66
- package/include/gfniintrin.h +21 -16
- package/include/hexagon_types.h +23 -20
- package/include/hvx_hexagon_protos.h +649 -860
- package/include/immintrin.h +0 -12
- package/include/intrin.h +4 -0
- package/include/lasxintrin.h +113 -0
- package/include/llvm_libc_wrappers/assert.h +3 -5
- package/include/llvm_libc_wrappers/ctype.h +3 -115
- package/include/llvm_libc_wrappers/inttypes.h +3 -5
- package/include/llvm_libc_wrappers/stdio.h +10 -38
- package/include/llvm_libc_wrappers/stdlib.h +3 -24
- package/include/llvm_libc_wrappers/string.h +2 -70
- package/include/llvm_libc_wrappers/time.h +4 -10
- package/include/mmintrin.h +188 -257
- package/include/module.modulemap +23 -4
- package/include/movrs_avx10_2_512intrin.h +2 -2
- package/include/movrs_avx10_2intrin.h +4 -4
- package/include/pmmintrin.h +12 -24
- package/include/ptrauth.h +16 -2
- package/include/riscv_mips.h +34 -0
- package/include/riscv_nds.h +89 -0
- package/include/sifive_vector.h +58 -2
- package/include/sm4evexintrin.h +2 -2
- package/include/smmintrin.h +77 -59
- package/include/spirvintrin.h +194 -0
- package/include/stddefer.h +19 -0
- package/include/tmmintrin.h +116 -147
- package/include/vaesintrin.h +1 -2
- package/include/xmmintrin.h +44 -70
- package/include/xopintrin.h +20 -10
- package/libcxx/include/__algorithm/all_of.h +11 -5
- package/libcxx/include/__algorithm/comp.h +4 -0
- package/libcxx/include/__algorithm/copy.h +28 -147
- package/libcxx/include/__algorithm/copy_backward.h +9 -24
- package/libcxx/include/__algorithm/copy_n.h +50 -16
- package/libcxx/include/__algorithm/count.h +2 -2
- package/libcxx/include/__algorithm/equal.h +43 -55
- package/libcxx/include/__algorithm/fill.h +26 -8
- package/libcxx/include/__algorithm/fill_n.h +32 -46
- package/libcxx/include/__algorithm/find.h +96 -39
- package/libcxx/include/__algorithm/find_end.h +105 -0
- package/libcxx/include/__algorithm/for_each.h +18 -24
- package/libcxx/include/__algorithm/for_each_n.h +20 -47
- package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
- package/libcxx/include/__algorithm/for_each_segment.h +26 -0
- package/libcxx/include/__algorithm/generate.h +4 -2
- package/libcxx/include/__algorithm/generate_n.h +19 -6
- package/libcxx/include/__algorithm/is_permutation.h +4 -4
- package/libcxx/include/__algorithm/iterator_operations.h +3 -0
- package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
- package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
- package/libcxx/include/__algorithm/make_heap.h +16 -4
- package/libcxx/include/__algorithm/mismatch.h +2 -2
- package/libcxx/include/__algorithm/move.h +8 -19
- package/libcxx/include/__algorithm/move_backward.h +9 -24
- package/libcxx/include/__algorithm/none_of.h +4 -4
- package/libcxx/include/__algorithm/partial_sort.h +1 -1
- package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
- package/libcxx/include/__algorithm/pstl.h +9 -9
- package/libcxx/include/__algorithm/radix_sort.h +27 -25
- package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
- package/libcxx/include/__algorithm/ranges_equal.h +17 -26
- package/libcxx/include/__algorithm/ranges_fill.h +7 -6
- package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
- package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
- package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
- package/libcxx/include/__algorithm/rotate.h +27 -44
- package/libcxx/include/__algorithm/search_n.h +49 -37
- package/libcxx/include/__algorithm/sift_down.h +19 -18
- package/libcxx/include/__algorithm/simd_utils.h +33 -4
- package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
- package/libcxx/include/__algorithm/stable_sort.h +1 -1
- package/libcxx/include/__assertion_handler +31 -4
- package/libcxx/include/__atomic/atomic.h +36 -60
- package/libcxx/include/__atomic/atomic_flag.h +19 -37
- package/libcxx/include/__atomic/atomic_ref.h +29 -12
- package/libcxx/include/__atomic/atomic_sync.h +127 -55
- package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
- package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
- package/libcxx/include/__atomic/contention_t.h +27 -3
- package/libcxx/include/__atomic/floating_point_helper.h +55 -0
- package/libcxx/include/__bit/countl.h +1 -2
- package/libcxx/include/__bit/countr.h +1 -2
- package/libcxx/include/__bit/has_single_bit.h +1 -1
- package/libcxx/include/__bit/popcount.h +0 -1
- package/libcxx/include/__bit/rotate.h +15 -26
- package/libcxx/include/__bit_reference +207 -18
- package/libcxx/include/__charconv/from_chars_integral.h +1 -1
- package/libcxx/include/__charconv/from_chars_result.h +1 -1
- package/libcxx/include/__charconv/to_chars_integral.h +1 -0
- package/libcxx/include/__charconv/to_chars_result.h +1 -1
- package/libcxx/include/__charconv/traits.h +3 -24
- package/libcxx/include/__chrono/day.h +11 -0
- package/libcxx/include/__chrono/duration.h +58 -33
- package/libcxx/include/__chrono/file_clock.h +4 -2
- package/libcxx/include/__chrono/is_clock.h +72 -0
- package/libcxx/include/__chrono/leap_second.h +13 -0
- package/libcxx/include/__chrono/month.h +13 -0
- package/libcxx/include/__chrono/month_weekday.h +22 -0
- package/libcxx/include/__chrono/monthday.h +20 -0
- package/libcxx/include/__chrono/steady_clock.h +1 -1
- package/libcxx/include/__chrono/system_clock.h +3 -3
- package/libcxx/include/__chrono/time_point.h +37 -13
- package/libcxx/include/__chrono/weekday.h +25 -0
- package/libcxx/include/__chrono/year.h +11 -0
- package/libcxx/include/__chrono/year_month.h +13 -0
- package/libcxx/include/__chrono/year_month_day.h +23 -0
- package/libcxx/include/__chrono/year_month_weekday.h +26 -0
- package/libcxx/include/__chrono/zoned_time.h +16 -0
- package/libcxx/include/__compare/is_eq.h +6 -6
- package/libcxx/include/__compare/strong_order.h +12 -30
- package/libcxx/include/__compare/three_way_comparable.h +2 -2
- package/libcxx/include/__concepts/comparison_common_type.h +40 -0
- package/libcxx/include/__concepts/equality_comparable.h +2 -1
- package/libcxx/include/__condition_variable/condition_variable.h +1 -1
- package/libcxx/include/__config +63 -280
- package/libcxx/include/__configuration/abi.h +14 -24
- package/libcxx/include/__configuration/availability.h +65 -118
- package/libcxx/include/__configuration/compiler.h +6 -6
- package/libcxx/include/__configuration/experimental.h +38 -0
- package/libcxx/include/__configuration/hardening.h +215 -0
- package/libcxx/include/__configuration/language.h +3 -0
- package/libcxx/include/__configuration/platform.h +9 -16
- package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
- package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
- package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
- package/libcxx/include/__exception/exception.h +6 -4
- package/libcxx/include/__exception/exception_ptr.h +27 -5
- package/libcxx/include/__exception/nested_exception.h +2 -2
- package/libcxx/include/__exception/operations.h +5 -5
- package/libcxx/include/__expected/bad_expected_access.h +8 -6
- package/libcxx/include/__expected/expected.h +62 -64
- package/libcxx/include/__expected/unexpected.h +4 -4
- package/libcxx/include/__filesystem/copy_options.h +4 -4
- package/libcxx/include/__filesystem/directory_entry.h +37 -33
- package/libcxx/include/__filesystem/directory_iterator.h +9 -11
- package/libcxx/include/__filesystem/directory_options.h +7 -4
- package/libcxx/include/__filesystem/file_status.h +3 -3
- package/libcxx/include/__filesystem/filesystem_error.h +9 -10
- package/libcxx/include/__filesystem/operations.h +97 -66
- package/libcxx/include/__filesystem/path.h +68 -64
- package/libcxx/include/__filesystem/path_iterator.h +1 -3
- package/libcxx/include/__filesystem/perm_options.h +4 -4
- package/libcxx/include/__filesystem/perms.h +4 -4
- package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
- package/libcxx/include/__filesystem/space_info.h +1 -1
- package/libcxx/include/__filesystem/u8path.h +12 -14
- package/libcxx/include/__flat_map/flat_map.h +88 -71
- package/libcxx/include/__flat_map/flat_multimap.h +251 -172
- package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
- package/libcxx/include/__flat_map/utils.h +1 -0
- package/libcxx/include/__flat_set/flat_multiset.h +211 -143
- package/libcxx/include/__flat_set/flat_set.h +86 -68
- package/libcxx/include/__format/concepts.h +0 -14
- package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
- package/libcxx/include/__format/fmt_pair_like.h +42 -0
- package/libcxx/include/__format/format_arg.h +7 -10
- package/libcxx/include/__format/format_args.h +1 -1
- package/libcxx/include/__format/format_context.h +5 -5
- package/libcxx/include/__format/format_parse_context.h +2 -2
- package/libcxx/include/__format/formatter_output.h +30 -34
- package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
- package/libcxx/include/__format/range_default_formatter.h +2 -41
- package/libcxx/include/__format/range_format.h +71 -0
- package/libcxx/include/__format/range_formatter.h +1 -0
- package/libcxx/include/__format/width_estimation_table.h +4 -2
- package/libcxx/include/__functional/bind.h +10 -15
- package/libcxx/include/__functional/bind_back.h +1 -1
- package/libcxx/include/__functional/bind_front.h +1 -1
- package/libcxx/include/__functional/function.h +57 -75
- package/libcxx/include/__functional/hash.h +1 -10
- package/libcxx/include/__functional/identity.h +1 -1
- package/libcxx/include/__functional/is_transparent.h +8 -0
- package/libcxx/include/__functional/mem_fn.h +2 -1
- package/libcxx/include/__functional/operations.h +18 -0
- package/libcxx/include/__functional/ranges_operations.h +7 -0
- package/libcxx/include/__functional/reference_wrapper.h +7 -5
- package/libcxx/include/__functional/weak_result_type.h +14 -28
- package/libcxx/include/__fwd/ios.h +1 -1
- package/libcxx/include/__fwd/tuple.h +14 -0
- package/libcxx/include/__hash_table +371 -357
- package/libcxx/include/__ios/fpos.h +4 -4
- package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/bounded_iter.h +7 -8
- package/libcxx/include/__iterator/concepts.h +6 -9
- package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
- package/libcxx/include/__iterator/distance.h +40 -18
- package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/insert_iterator.h +1 -7
- package/libcxx/include/__iterator/istream_iterator.h +6 -7
- package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
- package/libcxx/include/__iterator/iter_move.h +1 -1
- package/libcxx/include/__iterator/iterator.h +13 -0
- package/libcxx/include/__iterator/iterator_traits.h +13 -14
- package/libcxx/include/__iterator/ostream_iterator.h +1 -7
- package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
- package/libcxx/include/__iterator/reverse_iterator.h +8 -13
- package/libcxx/include/__iterator/segmented_iterator.h +3 -8
- package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
- package/libcxx/include/__iterator/wrap_iter.h +8 -6
- package/libcxx/include/__locale +3 -10
- package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
- package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
- package/libcxx/include/__locale_dir/messages.h +1 -1
- package/libcxx/include/__locale_dir/money.h +2 -2
- package/libcxx/include/__locale_dir/num.h +190 -243
- package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
- package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
- package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
- package/libcxx/include/__locale_dir/support/linux.h +0 -37
- package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
- package/libcxx/include/__locale_dir/support/newlib.h +243 -0
- package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
- package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
- package/libcxx/include/__locale_dir/support/windows.h +0 -29
- package/libcxx/include/__locale_dir/time.h +3 -7
- package/libcxx/include/__math/hypot.h +1 -1
- package/libcxx/include/__math/logarithms.h +1 -1
- package/libcxx/include/__math/traits.h +80 -11
- package/libcxx/include/__mdspan/extents.h +7 -4
- package/libcxx/include/__mdspan/layout_stride.h +4 -5
- package/libcxx/include/__mdspan/mdspan.h +29 -23
- package/libcxx/include/__memory/addressof.h +7 -5
- package/libcxx/include/__memory/align.h +18 -1
- package/libcxx/include/__memory/allocate_at_least.h +15 -10
- package/libcxx/include/__memory/allocator.h +14 -26
- package/libcxx/include/__memory/allocator_traits.h +6 -4
- package/libcxx/include/__memory/compressed_pair.h +15 -9
- package/libcxx/include/__memory/construct_at.h +12 -23
- package/libcxx/include/__memory/inout_ptr.h +1 -1
- package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
- package/libcxx/include/__memory/out_ptr.h +1 -1
- package/libcxx/include/__memory/pointer_traits.h +1 -1
- package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
- package/libcxx/include/__memory/shared_count.h +9 -30
- package/libcxx/include/__memory/shared_ptr.h +100 -145
- package/libcxx/include/__memory/temp_value.h +1 -2
- package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
- package/libcxx/include/__memory/unique_ptr.h +14 -16
- package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
- package/libcxx/include/__memory_resource/memory_resource.h +4 -2
- package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
- package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
- package/libcxx/include/__memory_resource/pool_options.h +1 -1
- package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
- package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
- package/libcxx/include/__mutex/mutex.h +2 -2
- package/libcxx/include/__mutex/once_flag.h +14 -11
- package/libcxx/include/__mutex/tag_types.h +3 -3
- package/libcxx/include/__mutex/unique_lock.h +8 -7
- package/libcxx/include/__new/align_val_t.h +6 -0
- package/libcxx/include/__new/allocate.h +1 -2
- package/libcxx/include/__new/exceptions.h +8 -2
- package/libcxx/include/__new/global_new_delete.h +4 -11
- package/libcxx/include/__new/interference_size.h +0 -4
- package/libcxx/include/__new/launder.h +3 -5
- package/libcxx/include/__new/nothrow_t.h +1 -1
- package/libcxx/include/__numeric/gcd_lcm.h +24 -34
- package/libcxx/include/__numeric/midpoint.h +9 -14
- package/libcxx/include/__numeric/pstl.h +2 -2
- package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
- package/libcxx/include/__ostream/basic_ostream.h +8 -8
- package/libcxx/include/__pstl/backends/default.h +14 -14
- package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
- package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
- package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
- package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
- package/libcxx/include/__random/binomial_distribution.h +10 -4
- package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
- package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
- package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
- package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
- package/libcxx/include/__ranges/adjacent_view.h +419 -0
- package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
- package/libcxx/include/__ranges/chunk_by_view.h +6 -6
- package/libcxx/include/__ranges/common_view.h +7 -7
- package/libcxx/include/__ranges/drop_view.h +8 -8
- package/libcxx/include/__ranges/drop_while_view.h +5 -5
- package/libcxx/include/__ranges/elements_of.h +49 -0
- package/libcxx/include/__ranges/empty_view.h +5 -5
- package/libcxx/include/__ranges/filter_view.h +10 -10
- package/libcxx/include/__ranges/iota_view.h +41 -22
- package/libcxx/include/__ranges/owning_view.h +15 -15
- package/libcxx/include/__ranges/ref_view.h +6 -6
- package/libcxx/include/__ranges/repeat_view.h +17 -10
- package/libcxx/include/__ranges/single_view.h +8 -8
- package/libcxx/include/__ranges/take_view.h +9 -9
- package/libcxx/include/__ranges/transform_view.h +1 -2
- package/libcxx/include/__ranges/view_interface.h +10 -10
- package/libcxx/include/__ranges/zip_transform_view.h +357 -0
- package/libcxx/include/__ranges/zip_view.h +20 -20
- package/libcxx/include/__split_buffer +612 -240
- package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
- package/libcxx/include/__stop_token/stop_callback.h +2 -2
- package/libcxx/include/__stop_token/stop_source.h +1 -1
- package/libcxx/include/__stop_token/stop_state.h +4 -4
- package/libcxx/include/__stop_token/stop_token.h +1 -1
- package/libcxx/include/__string/char_traits.h +51 -31
- package/libcxx/include/__string/constexpr_c_functions.h +5 -5
- package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
- package/libcxx/include/__system_error/error_category.h +8 -8
- package/libcxx/include/__system_error/error_code.h +5 -5
- package/libcxx/include/__system_error/error_condition.h +4 -4
- package/libcxx/include/__system_error/system_error.h +1 -1
- package/libcxx/include/__thread/id.h +1 -1
- package/libcxx/include/__thread/jthread.h +1 -1
- package/libcxx/include/__thread/poll_with_backoff.h +27 -8
- package/libcxx/include/__thread/support/c11.h +8 -8
- package/libcxx/include/__thread/support/pthread.h +8 -8
- package/libcxx/include/__thread/support/windows.h +8 -8
- package/libcxx/include/__thread/thread.h +13 -8
- package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
- package/libcxx/include/__tree +849 -701
- package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
- package/libcxx/include/__tuple/tuple_element.h +0 -12
- package/libcxx/include/__tuple/tuple_size.h +0 -4
- package/libcxx/include/__tuple/tuple_transform.h +45 -0
- package/libcxx/include/__type_traits/aligned_storage.h +13 -40
- package/libcxx/include/__type_traits/desugars_to.h +4 -0
- package/libcxx/include/__type_traits/invoke.h +8 -0
- package/libcxx/include/__type_traits/is_allocator.h +6 -7
- package/libcxx/include/__type_traits/is_array.h +26 -0
- package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
- package/libcxx/include/__type_traits/is_final.h +1 -1
- package/libcxx/include/__type_traits/is_floating_point.h +7 -6
- package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
- package/libcxx/include/__type_traits/is_specialization.h +2 -6
- package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
- package/libcxx/include/__type_traits/make_transparent.h +52 -0
- package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
- package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
- package/libcxx/include/__utility/cmp.h +19 -7
- package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
- package/libcxx/include/__utility/in_place.h +1 -1
- package/libcxx/include/__utility/integer_sequence.h +56 -41
- package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
- package/libcxx/include/__utility/pair.h +22 -25
- package/libcxx/include/__utility/scope_guard.h +2 -0
- package/libcxx/include/__utility/try_key_extraction.h +114 -0
- package/libcxx/include/__vector/vector.h +187 -160
- package/libcxx/include/__vector/vector_bool.h +76 -83
- package/libcxx/include/any +118 -155
- package/libcxx/include/array +88 -56
- package/libcxx/include/atomic +2 -0
- package/libcxx/include/barrier +20 -24
- package/libcxx/include/bitset +49 -30
- package/libcxx/include/ccomplex +3 -11
- package/libcxx/include/chrono +47 -0
- package/libcxx/include/ciso646 +3 -6
- package/libcxx/include/complex +77 -65
- package/libcxx/include/complex.h +10 -10
- package/libcxx/include/condition_variable +3 -3
- package/libcxx/include/cstdalign +3 -10
- package/libcxx/include/cstdbool +3 -10
- package/libcxx/include/ctgmath +2 -11
- package/libcxx/include/ctype.h +24 -24
- package/libcxx/include/cwchar +2 -2
- package/libcxx/include/deque +109 -225
- package/libcxx/include/errno.h +269 -269
- package/libcxx/include/exception +4 -1
- package/libcxx/include/ext/hash_map +7 -48
- package/libcxx/include/ext/hash_set +2 -8
- package/libcxx/include/fenv.h +43 -43
- package/libcxx/include/flat_map +663 -11
- package/libcxx/include/flat_set +543 -8
- package/libcxx/include/float.h +16 -16
- package/libcxx/include/forward_list +33 -53
- package/libcxx/include/fstream +57 -42
- package/libcxx/include/future +41 -51
- package/libcxx/include/initializer_list +9 -3
- package/libcxx/include/inttypes.h +16 -16
- package/libcxx/include/ios +28 -28
- package/libcxx/include/istream +19 -13
- package/libcxx/include/iterator +10 -0
- package/libcxx/include/latch +7 -5
- package/libcxx/include/limits +4 -4
- package/libcxx/include/list +61 -79
- package/libcxx/include/map +386 -274
- package/libcxx/include/math.h +19 -0
- package/libcxx/include/mdspan +1 -5
- package/libcxx/include/mutex +29 -19
- package/libcxx/include/optional +644 -149
- package/libcxx/include/print +9 -5
- package/libcxx/include/queue +39 -37
- package/libcxx/include/ranges +48 -0
- package/libcxx/include/regex +33 -31
- package/libcxx/include/scoped_allocator +16 -11
- package/libcxx/include/semaphore +15 -18
- package/libcxx/include/set +220 -192
- package/libcxx/include/shared_mutex +3 -8
- package/libcxx/include/span +53 -37
- package/libcxx/include/sstream +34 -28
- package/libcxx/include/stack +13 -15
- package/libcxx/include/stddef.h +10 -10
- package/libcxx/include/stdexcept +2 -2
- package/libcxx/include/stdio.h +20 -21
- package/libcxx/include/streambuf +59 -19
- package/libcxx/include/string +574 -573
- package/libcxx/include/string_view +113 -89
- package/libcxx/include/strstream +10 -10
- package/libcxx/include/syncstream +4 -4
- package/libcxx/include/tgmath.h +12 -12
- package/libcxx/include/tuple +242 -212
- package/libcxx/include/type_traits +8 -2
- package/libcxx/include/typeindex +5 -3
- package/libcxx/include/typeinfo +92 -89
- package/libcxx/include/unordered_map +179 -304
- package/libcxx/include/unordered_set +168 -195
- package/libcxx/include/utility +12 -0
- package/libcxx/include/valarray +106 -161
- package/libcxx/include/variant +25 -33
- package/libcxx/include/version +41 -24
- package/libcxx/include/wctype.h +29 -29
- package/libcxx/libc/hdr/errno_macros.h +3 -1
- package/libcxx/libc/hdr/stdint_proxy.h +18 -0
- package/libcxx/libc/hdr/types/wchar_t.h +23 -0
- package/libcxx/libc/hdr/wchar_overlay.h +69 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
- package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
- package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
- package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
- package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
- package/libcxx/libc/shared/libc_common.h +5 -0
- package/libcxx/libc/src/__support/CPP/bit.h +50 -12
- package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
- package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
- package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
- package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
- package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
- package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
- package/libcxx/libc/src/__support/big_int.h +14 -14
- package/libcxx/libc/src/__support/common.h +3 -2
- package/libcxx/libc/src/__support/ctype_utils.h +19 -12
- package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
- package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
- package/libcxx/libc/src/__support/libc_assert.h +2 -0
- package/libcxx/libc/src/__support/macros/attributes.h +44 -1
- package/libcxx/libc/src/__support/macros/config.h +23 -0
- package/libcxx/libc/src/__support/macros/null_check.h +1 -2
- package/libcxx/libc/src/__support/macros/optimization.h +3 -0
- package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
- package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
- package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
- package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
- package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
- package/libcxx/libc/src/__support/math_extras.h +20 -4
- package/libcxx/libc/src/__support/str_to_float.h +98 -125
- package/libcxx/libc/src/__support/str_to_integer.h +39 -27
- package/libcxx/libc/src/__support/wctype_utils.h +588 -0
- package/libcxx/src/any.cpp +4 -0
- package/libcxx/src/atomic.cpp +365 -80
- package/libcxx/src/barrier.cpp +4 -3
- package/libcxx/src/charconv.cpp +6 -3
- package/libcxx/src/condition_variable_destructor.cpp +1 -1
- package/libcxx/src/error_category.cpp +3 -1
- package/libcxx/src/exception.cpp +2 -10
- package/libcxx/src/experimental/time_zone.cpp +1 -1
- package/libcxx/src/experimental/tzdb.cpp +4 -1
- package/libcxx/src/filesystem/error.h +4 -22
- package/libcxx/src/filesystem/format_string.h +9 -18
- package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
- package/libcxx/src/filesystem/operations.cpp +2 -9
- package/libcxx/src/filesystem/path.cpp +3 -1
- package/libcxx/src/include/aligned_alloc.h +65 -0
- package/libcxx/src/include/config_elast.h +1 -1
- package/libcxx/src/include/from_chars_floating_point.h +11 -7
- package/libcxx/src/include/overridable_function.h +8 -10
- package/libcxx/src/iostream.cpp +56 -37
- package/libcxx/src/locale.cpp +213 -196
- package/libcxx/src/memory.cpp +12 -14
- package/libcxx/src/mutex_destructor.cpp +1 -1
- package/libcxx/src/new.cpp +5 -5
- package/libcxx/src/optional.cpp +4 -0
- package/libcxx/src/print.cpp +9 -1
- package/libcxx/src/random.cpp +0 -26
- package/libcxx/src/string.cpp +10 -25
- package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
- package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
- package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
- package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
- package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
- package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
- package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
- package/libcxx/src/support/win32/locale_win32.cpp +1 -1
- package/libcxx/src/system_error.cpp +2 -0
- package/libcxx/src/thread.cpp +1 -3
- package/libcxx/src/valarray.cpp +1 -2
- package/libcxx/src/vector.cpp +2 -2
- package/libcxxabi/include/__cxxabi_config.h +42 -23
- package/libcxxabi/src/cxa_exception.cpp +4 -2
- package/libcxxabi/src/cxa_exception.h +16 -14
- package/libcxxabi/src/cxa_personality.cpp +126 -9
- package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
- package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
- package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
- package/libcxxabi/src/demangle/Utility.h +21 -7
- package/libcxxabi/src/fallback_malloc.cpp +1 -1
- package/libcxxabi/src/private_typeinfo.cpp +6 -0
- package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
- package/libtsan/LICENSE.TXT +311 -0
- package/libtsan/builtins/assembly.h +41 -8
- package/libtsan/interception/interception_win.cpp +4 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
- package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
- package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
- package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
- package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
- package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
- package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
- package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
- package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
- package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
- package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
- package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
- package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
- package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
- package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
- package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
- package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
- package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
- package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
- package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
- package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
- package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
- package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
- package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
- package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
- package/libtsan/tsan_debugging.cpp +2 -2
- package/libtsan/tsan_flags.cpp +37 -0
- package/libtsan/tsan_flags.h +8 -0
- package/libtsan/tsan_flags.inc +12 -0
- package/libtsan/tsan_interceptors.h +9 -1
- package/libtsan/tsan_interceptors_mac.cpp +19 -0
- package/libtsan/tsan_interceptors_posix.cpp +78 -32
- package/libtsan/tsan_interface.h +3 -3
- package/libtsan/tsan_interface_ann.cpp +23 -9
- package/libtsan/tsan_mman.cpp +18 -4
- package/libtsan/tsan_platform.h +44 -7
- package/libtsan/tsan_platform_linux.cpp +42 -14
- package/libtsan/tsan_platform_mac.cpp +16 -3
- package/libtsan/tsan_report.h +14 -1
- package/libtsan/tsan_rtl.cpp +14 -0
- package/libtsan/tsan_rtl.h +7 -2
- package/libtsan/tsan_rtl_aarch64.S +3 -5
- package/libtsan/tsan_rtl_access.cpp +8 -3
- package/libtsan/tsan_rtl_amd64.S +2 -0
- package/libtsan/tsan_rtl_mutex.cpp +94 -49
- package/libtsan/tsan_rtl_report.cpp +132 -65
- package/libtsan/tsan_rtl_thread.cpp +31 -9
- package/libtsan/tsan_symbolize.cpp +1 -1
- package/libtsan/tsan_symbolize.h +1 -1
- package/libtsan/tsan_trace.h +1 -1
- package/libunwind/include/__libunwind_config.h +11 -2
- package/libunwind/include/libunwind.h +117 -11
- package/libunwind/include/unwind_arm_ehabi.h +4 -1
- package/libunwind/src/AddressSpace.hpp +42 -20
- package/libunwind/src/CompactUnwinder.hpp +16 -5
- package/libunwind/src/DwarfInstructions.hpp +24 -13
- package/libunwind/src/DwarfParser.hpp +62 -23
- package/libunwind/src/EHHeaderParser.hpp +7 -4
- package/libunwind/src/Registers.hpp +226 -22
- package/libunwind/src/Unwind-seh.cpp +6 -7
- package/libunwind/src/Unwind-wasm.c +7 -7
- package/libunwind/src/UnwindCursor.hpp +167 -49
- package/libunwind/src/UnwindLevel1.c +46 -17
- package/libunwind/src/UnwindRegistersRestore.S +46 -5
- package/libunwind/src/UnwindRegistersSave.S +86 -2
- package/libunwind/src/assembly.h +5 -1
- package/libunwind/src/config.h +9 -0
- package/libunwind/src/gcc_personality_v0.c +79 -6
- package/libunwind/src/libunwind.cpp +104 -4
- package/libunwind/src/libunwind_ext.h +7 -1
- package/libunwind/src/shadow_stack_unwind.h +2 -2
- package/lldb/pretty_printers.py +948 -0
- package/package.json +1 -1
- package/std/Build/Step/Compile.zig +18 -19
- package/std/Build/Step/Run.zig +13 -6
- package/std/Build/Step.zig +0 -3
- package/std/Io/Threaded.zig +3 -0
- package/std/Target/aarch64.zig +620 -77
- package/std/Target/amdgcn.zig +421 -21
- package/std/Target/arm.zig +40 -6
- package/std/Target/bpf.zig +6 -0
- package/std/Target/hexagon.zig +41 -6
- package/std/Target/loongarch.zig +18 -0
- package/std/Target/mips.zig +6 -0
- package/std/Target/nvptx.zig +58 -35
- package/std/Target/powerpc.zig +27 -19
- package/std/Target/riscv.zig +415 -177
- package/std/Target/sparc.zig +17 -0
- package/std/Target/wasm.zig +7 -0
- package/std/Target/x86.zig +200 -31
- package/std/Target/xtensa.zig +65 -0
- package/std/Target.zig +16 -8
- package/std/c.zig +7 -0
- package/std/crypto/ml_kem.zig +0 -15
- package/std/debug/Dwarf.zig +14 -11
- package/std/debug/Pdb.zig +24 -16
- package/std/hash/xxhash.zig +0 -6
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +1 -2
- package/std/mem.zig +1 -2
- package/std/os/linux/x86.zig +2 -2
- package/std/os/windows.zig +130 -1
- package/std/simd.zig +4 -21
- package/std/start.zig +4 -3
- package/std/zig/Ast.zig +5 -7
- package/std/zig/AstGen.zig +20 -14
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/ZonGen.zig +13 -21
- package/std/zig/llvm/Builder.zig +2 -2
- package/std/zig/system/arm.zig +56 -2
- package/std/zig/system/windows.zig +34 -1
- package/std/zig/system/x86.zig +60 -16
- package/std/zig/system.zig +0 -10
- package/std/zig/target.zig +1 -2
- package/std/zon/parse.zig +1 -1
- package/include/amxbf16transposeintrin.h +0 -94
- package/include/amxcomplextransposeintrin.h +0 -303
- package/include/amxfp16transposeintrin.h +0 -94
- package/include/amxmovrstransposeintrin.h +0 -200
- package/include/amxtf32transposeintrin.h +0 -105
- package/include/amxtransposeintrin.h +0 -248
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
|
@@ -87,35 +87,35 @@ public:
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
template <class _D2 = _Derived>
|
|
90
|
-
_LIBCPP_HIDE_FROM_ABI constexpr auto data()
|
|
90
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto data()
|
|
91
91
|
requires contiguous_iterator<iterator_t<_D2>>
|
|
92
92
|
{
|
|
93
93
|
return std::to_address(ranges::begin(__derived()));
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
template <class _D2 = _Derived>
|
|
97
|
-
_LIBCPP_HIDE_FROM_ABI constexpr auto data() const
|
|
97
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto data() const
|
|
98
98
|
requires range<const _D2> && contiguous_iterator<iterator_t<const _D2>>
|
|
99
99
|
{
|
|
100
100
|
return std::to_address(ranges::begin(__derived()));
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
template <class _D2 = _Derived>
|
|
104
|
-
_LIBCPP_HIDE_FROM_ABI constexpr auto size()
|
|
104
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto size()
|
|
105
105
|
requires forward_range<_D2> && sized_sentinel_for<sentinel_t<_D2>, iterator_t<_D2>>
|
|
106
106
|
{
|
|
107
107
|
return std::__to_unsigned_like(ranges::end(__derived()) - ranges::begin(__derived()));
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
template <class _D2 = _Derived>
|
|
111
|
-
_LIBCPP_HIDE_FROM_ABI constexpr auto size() const
|
|
111
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto size() const
|
|
112
112
|
requires forward_range<const _D2> && sized_sentinel_for<sentinel_t<const _D2>, iterator_t<const _D2>>
|
|
113
113
|
{
|
|
114
114
|
return std::__to_unsigned_like(ranges::end(__derived()) - ranges::begin(__derived()));
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
template <class _D2 = _Derived>
|
|
118
|
-
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) front()
|
|
118
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) front()
|
|
119
119
|
requires forward_range<_D2>
|
|
120
120
|
{
|
|
121
121
|
_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(
|
|
@@ -124,7 +124,7 @@ public:
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
template <class _D2 = _Derived>
|
|
127
|
-
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) front() const
|
|
127
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) front() const
|
|
128
128
|
requires forward_range<const _D2>
|
|
129
129
|
{
|
|
130
130
|
_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(
|
|
@@ -133,7 +133,7 @@ public:
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
template <class _D2 = _Derived>
|
|
136
|
-
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) back()
|
|
136
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) back()
|
|
137
137
|
requires bidirectional_range<_D2> && common_range<_D2>
|
|
138
138
|
{
|
|
139
139
|
_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(
|
|
@@ -142,7 +142,7 @@ public:
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
template <class _D2 = _Derived>
|
|
145
|
-
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) back() const
|
|
145
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) back() const
|
|
146
146
|
requires bidirectional_range<const _D2> && common_range<const _D2>
|
|
147
147
|
{
|
|
148
148
|
_LIBCPP_ASSERT_VALID_ELEMENT_ACCESS(
|
|
@@ -151,12 +151,12 @@ public:
|
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
template <random_access_range _RARange = _Derived>
|
|
154
|
-
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator[](range_difference_t<_RARange> __index) {
|
|
154
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator[](range_difference_t<_RARange> __index) {
|
|
155
155
|
return ranges::begin(__derived())[__index];
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
template <random_access_range _RARange = const _Derived>
|
|
159
|
-
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator[](range_difference_t<_RARange> __index) const {
|
|
159
|
+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator[](range_difference_t<_RARange> __index) const {
|
|
160
160
|
return ranges::begin(__derived())[__index];
|
|
161
161
|
}
|
|
162
162
|
};
|
|
@@ -0,0 +1,357 @@
|
|
|
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
|
+
|
|
10
|
+
#ifndef _LIBCPP___RANGES_ZIP_TRANSFORM_VIEW_H
|
|
11
|
+
#define _LIBCPP___RANGES_ZIP_TRANSFORM_VIEW_H
|
|
12
|
+
|
|
13
|
+
#include <__config>
|
|
14
|
+
|
|
15
|
+
#include <__concepts/constructible.h>
|
|
16
|
+
#include <__concepts/convertible_to.h>
|
|
17
|
+
#include <__concepts/derived_from.h>
|
|
18
|
+
#include <__concepts/equality_comparable.h>
|
|
19
|
+
#include <__concepts/invocable.h>
|
|
20
|
+
#include <__functional/invoke.h>
|
|
21
|
+
#include <__iterator/concepts.h>
|
|
22
|
+
#include <__iterator/incrementable_traits.h>
|
|
23
|
+
#include <__iterator/iterator_traits.h>
|
|
24
|
+
#include <__memory/addressof.h>
|
|
25
|
+
#include <__ranges/access.h>
|
|
26
|
+
#include <__ranges/all.h>
|
|
27
|
+
#include <__ranges/concepts.h>
|
|
28
|
+
#include <__ranges/empty_view.h>
|
|
29
|
+
#include <__ranges/movable_box.h>
|
|
30
|
+
#include <__ranges/view_interface.h>
|
|
31
|
+
#include <__ranges/zip_view.h>
|
|
32
|
+
#include <__type_traits/decay.h>
|
|
33
|
+
#include <__type_traits/invoke.h>
|
|
34
|
+
#include <__type_traits/is_object.h>
|
|
35
|
+
#include <__type_traits/is_reference.h>
|
|
36
|
+
#include <__type_traits/is_referenceable.h>
|
|
37
|
+
#include <__type_traits/maybe_const.h>
|
|
38
|
+
#include <__type_traits/remove_cvref.h>
|
|
39
|
+
#include <__utility/forward.h>
|
|
40
|
+
#include <__utility/in_place.h>
|
|
41
|
+
#include <__utility/move.h>
|
|
42
|
+
#include <tuple> // for std::apply
|
|
43
|
+
|
|
44
|
+
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
|
45
|
+
# pragma GCC system_header
|
|
46
|
+
#endif
|
|
47
|
+
|
|
48
|
+
_LIBCPP_PUSH_MACROS
|
|
49
|
+
#include <__undef_macros>
|
|
50
|
+
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
51
|
+
|
|
52
|
+
#if _LIBCPP_STD_VER >= 23
|
|
53
|
+
|
|
54
|
+
namespace ranges {
|
|
55
|
+
|
|
56
|
+
template <move_constructible _Fn, input_range... _Views>
|
|
57
|
+
requires(view<_Views> && ...) &&
|
|
58
|
+
(sizeof...(_Views) > 0) && is_object_v<_Fn> && regular_invocable<_Fn&, range_reference_t<_Views>...> &&
|
|
59
|
+
__referenceable<invoke_result_t<_Fn&, range_reference_t<_Views>...>>
|
|
60
|
+
class zip_transform_view : public view_interface<zip_transform_view<_Fn, _Views...>> {
|
|
61
|
+
_LIBCPP_NO_UNIQUE_ADDRESS zip_view<_Views...> __zip_;
|
|
62
|
+
_LIBCPP_NO_UNIQUE_ADDRESS __movable_box<_Fn> __fun_;
|
|
63
|
+
|
|
64
|
+
using _InnerView _LIBCPP_NODEBUG = zip_view<_Views...>;
|
|
65
|
+
template <bool _Const>
|
|
66
|
+
using __ziperator _LIBCPP_NODEBUG = iterator_t<__maybe_const<_Const, _InnerView>>;
|
|
67
|
+
template <bool _Const>
|
|
68
|
+
using __zentinel _LIBCPP_NODEBUG = sentinel_t<__maybe_const<_Const, _InnerView>>;
|
|
69
|
+
|
|
70
|
+
template <bool>
|
|
71
|
+
class __iterator;
|
|
72
|
+
|
|
73
|
+
template <bool>
|
|
74
|
+
class __sentinel;
|
|
75
|
+
|
|
76
|
+
public:
|
|
77
|
+
_LIBCPP_HIDE_FROM_ABI zip_transform_view() = default;
|
|
78
|
+
|
|
79
|
+
_LIBCPP_HIDE_FROM_ABI constexpr explicit zip_transform_view(_Fn __fun, _Views... __views)
|
|
80
|
+
: __zip_(std::move(__views)...), __fun_(in_place, std::move(__fun)) {}
|
|
81
|
+
|
|
82
|
+
_LIBCPP_HIDE_FROM_ABI constexpr auto begin() { return __iterator<false>(*this, __zip_.begin()); }
|
|
83
|
+
|
|
84
|
+
_LIBCPP_HIDE_FROM_ABI constexpr auto begin() const
|
|
85
|
+
requires range<const _InnerView> && regular_invocable<const _Fn&, range_reference_t<const _Views>...>
|
|
86
|
+
{
|
|
87
|
+
return __iterator<true>(*this, __zip_.begin());
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
_LIBCPP_HIDE_FROM_ABI constexpr auto end() {
|
|
91
|
+
if constexpr (common_range<_InnerView>) {
|
|
92
|
+
return __iterator<false>(*this, __zip_.end());
|
|
93
|
+
} else {
|
|
94
|
+
return __sentinel<false>(__zip_.end());
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
_LIBCPP_HIDE_FROM_ABI constexpr auto end() const
|
|
99
|
+
requires range<const _InnerView> && regular_invocable<const _Fn&, range_reference_t<const _Views>...>
|
|
100
|
+
{
|
|
101
|
+
if constexpr (common_range<const _InnerView>) {
|
|
102
|
+
return __iterator<true>(*this, __zip_.end());
|
|
103
|
+
} else {
|
|
104
|
+
return __sentinel<true>(__zip_.end());
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
_LIBCPP_HIDE_FROM_ABI constexpr auto size()
|
|
109
|
+
requires sized_range<_InnerView>
|
|
110
|
+
{
|
|
111
|
+
return __zip_.size();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
_LIBCPP_HIDE_FROM_ABI constexpr auto size() const
|
|
115
|
+
requires sized_range<const _InnerView>
|
|
116
|
+
{
|
|
117
|
+
return __zip_.size();
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
template <class _Fn, class... _Ranges>
|
|
122
|
+
zip_transform_view(_Fn, _Ranges&&...) -> zip_transform_view<_Fn, views::all_t<_Ranges>...>;
|
|
123
|
+
|
|
124
|
+
template <bool _Const, class _Fn, class... _Views>
|
|
125
|
+
struct __zip_transform_iterator_category_base {};
|
|
126
|
+
|
|
127
|
+
template <bool _Const, class _Fn, class... _Views>
|
|
128
|
+
requires forward_range<__maybe_const<_Const, zip_view<_Views...>>>
|
|
129
|
+
struct __zip_transform_iterator_category_base<_Const, _Fn, _Views...> {
|
|
130
|
+
private:
|
|
131
|
+
template <class _View>
|
|
132
|
+
using __tag _LIBCPP_NODEBUG = typename iterator_traits<iterator_t<__maybe_const<_Const, _View>>>::iterator_category;
|
|
133
|
+
|
|
134
|
+
static consteval auto __get_iterator_category() {
|
|
135
|
+
if constexpr (!is_reference_v<invoke_result_t<__maybe_const<_Const, _Fn>&,
|
|
136
|
+
range_reference_t<__maybe_const<_Const, _Views>>...>>) {
|
|
137
|
+
return input_iterator_tag();
|
|
138
|
+
} else if constexpr ((derived_from<__tag<_Views>, random_access_iterator_tag> && ...)) {
|
|
139
|
+
return random_access_iterator_tag();
|
|
140
|
+
} else if constexpr ((derived_from<__tag<_Views>, bidirectional_iterator_tag> && ...)) {
|
|
141
|
+
return bidirectional_iterator_tag();
|
|
142
|
+
} else if constexpr ((derived_from<__tag<_Views>, forward_iterator_tag> && ...)) {
|
|
143
|
+
return forward_iterator_tag();
|
|
144
|
+
} else {
|
|
145
|
+
return input_iterator_tag();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
public:
|
|
150
|
+
using iterator_category = decltype(__get_iterator_category());
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
template <move_constructible _Fn, input_range... _Views>
|
|
154
|
+
requires(view<_Views> && ...) &&
|
|
155
|
+
(sizeof...(_Views) > 0) && is_object_v<_Fn> && regular_invocable<_Fn&, range_reference_t<_Views>...> &&
|
|
156
|
+
__referenceable<invoke_result_t<_Fn&, range_reference_t<_Views>...>>
|
|
157
|
+
template <bool _Const>
|
|
158
|
+
class zip_transform_view<_Fn, _Views...>::__iterator
|
|
159
|
+
: public __zip_transform_iterator_category_base<_Const, _Fn, _Views...> {
|
|
160
|
+
using _Parent _LIBCPP_NODEBUG = __maybe_const<_Const, zip_transform_view>;
|
|
161
|
+
using _Base _LIBCPP_NODEBUG = __maybe_const<_Const, _InnerView>;
|
|
162
|
+
|
|
163
|
+
friend zip_transform_view<_Fn, _Views...>;
|
|
164
|
+
|
|
165
|
+
_Parent* __parent_ = nullptr;
|
|
166
|
+
__ziperator<_Const> __inner_;
|
|
167
|
+
|
|
168
|
+
_LIBCPP_HIDE_FROM_ABI constexpr __iterator(_Parent& __parent, __ziperator<_Const> __inner)
|
|
169
|
+
: __parent_(std::addressof(__parent)), __inner_(std::move(__inner)) {}
|
|
170
|
+
|
|
171
|
+
_LIBCPP_HIDE_FROM_ABI constexpr auto __get_deref_and_invoke() const noexcept {
|
|
172
|
+
return [&__fun = *__parent_->__fun_](const auto&... __iters) noexcept(noexcept(std::invoke(
|
|
173
|
+
*__parent_->__fun_, *__iters...))) -> decltype(auto) { return std::invoke(__fun, *__iters...); };
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
public:
|
|
177
|
+
using iterator_concept = typename __ziperator<_Const>::iterator_concept;
|
|
178
|
+
using value_type =
|
|
179
|
+
remove_cvref_t<invoke_result_t<__maybe_const<_Const, _Fn>&, range_reference_t<__maybe_const<_Const, _Views>>...>>;
|
|
180
|
+
using difference_type = range_difference_t<_Base>;
|
|
181
|
+
|
|
182
|
+
_LIBCPP_HIDE_FROM_ABI __iterator() = default;
|
|
183
|
+
_LIBCPP_HIDE_FROM_ABI constexpr __iterator(__iterator<!_Const> __i)
|
|
184
|
+
requires _Const && convertible_to<__ziperator<false>, __ziperator<_Const>>
|
|
185
|
+
: __parent_(__i.__parent_), __inner_(std::move(__i.__inner_)) {}
|
|
186
|
+
|
|
187
|
+
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator*() const
|
|
188
|
+
noexcept(noexcept(std::apply(__get_deref_and_invoke(), __zip_view_iterator_access::__get_underlying(__inner_)))) {
|
|
189
|
+
return std::apply(__get_deref_and_invoke(), __zip_view_iterator_access::__get_underlying(__inner_));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
_LIBCPP_HIDE_FROM_ABI constexpr __iterator& operator++() {
|
|
193
|
+
++__inner_;
|
|
194
|
+
return *this;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
_LIBCPP_HIDE_FROM_ABI constexpr void operator++(int) { ++*this; }
|
|
198
|
+
|
|
199
|
+
_LIBCPP_HIDE_FROM_ABI constexpr __iterator operator++(int)
|
|
200
|
+
requires forward_range<_Base>
|
|
201
|
+
{
|
|
202
|
+
auto __tmp = *this;
|
|
203
|
+
++*this;
|
|
204
|
+
return __tmp;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
_LIBCPP_HIDE_FROM_ABI constexpr __iterator& operator--()
|
|
208
|
+
requires bidirectional_range<_Base>
|
|
209
|
+
{
|
|
210
|
+
--__inner_;
|
|
211
|
+
return *this;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
_LIBCPP_HIDE_FROM_ABI constexpr __iterator operator--(int)
|
|
215
|
+
requires bidirectional_range<_Base>
|
|
216
|
+
{
|
|
217
|
+
auto __tmp = *this;
|
|
218
|
+
--*this;
|
|
219
|
+
return __tmp;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
_LIBCPP_HIDE_FROM_ABI constexpr __iterator& operator+=(difference_type __x)
|
|
223
|
+
requires random_access_range<_Base>
|
|
224
|
+
{
|
|
225
|
+
__inner_ += __x;
|
|
226
|
+
return *this;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
_LIBCPP_HIDE_FROM_ABI constexpr __iterator& operator-=(difference_type __x)
|
|
230
|
+
requires random_access_range<_Base>
|
|
231
|
+
{
|
|
232
|
+
__inner_ -= __x;
|
|
233
|
+
return *this;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
_LIBCPP_HIDE_FROM_ABI constexpr decltype(auto) operator[](difference_type __n) const
|
|
237
|
+
requires random_access_range<_Base>
|
|
238
|
+
{
|
|
239
|
+
return std::apply(
|
|
240
|
+
[&]<class... _Is>(const _Is&... __iters) -> decltype(auto) {
|
|
241
|
+
return std::invoke(*__parent_->__fun_, __iters[iter_difference_t<_Is>(__n)]...);
|
|
242
|
+
},
|
|
243
|
+
__zip_view_iterator_access::__get_underlying(__inner_));
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const __iterator& __x, const __iterator& __y)
|
|
247
|
+
requires equality_comparable<__ziperator<_Const>>
|
|
248
|
+
{
|
|
249
|
+
return __x.__inner_ == __y.__inner_;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr auto operator<=>(const __iterator& __x, const __iterator& __y)
|
|
253
|
+
requires random_access_range<_Base>
|
|
254
|
+
{
|
|
255
|
+
return __x.__inner_ <=> __y.__inner_;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr __iterator operator+(const __iterator& __i, difference_type __n)
|
|
259
|
+
requires random_access_range<_Base>
|
|
260
|
+
{
|
|
261
|
+
return __iterator(*__i.__parent_, __i.__inner_ + __n);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr __iterator operator+(difference_type __n, const __iterator& __i)
|
|
265
|
+
requires random_access_range<_Base>
|
|
266
|
+
{
|
|
267
|
+
return __iterator(*__i.__parent_, __i.__inner_ + __n);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr __iterator operator-(const __iterator& __i, difference_type __n)
|
|
271
|
+
requires random_access_range<_Base>
|
|
272
|
+
{
|
|
273
|
+
return __iterator(*__i.__parent_, __i.__inner_ - __n);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr difference_type operator-(const __iterator& __x, const __iterator& __y)
|
|
277
|
+
requires sized_sentinel_for<__ziperator<_Const>, __ziperator<_Const>>
|
|
278
|
+
{
|
|
279
|
+
return __x.__inner_ - __y.__inner_;
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
template <move_constructible _Fn, input_range... _Views>
|
|
284
|
+
requires(view<_Views> && ...) &&
|
|
285
|
+
(sizeof...(_Views) > 0) && is_object_v<_Fn> && regular_invocable<_Fn&, range_reference_t<_Views>...> &&
|
|
286
|
+
__referenceable<invoke_result_t<_Fn&, range_reference_t<_Views>...>>
|
|
287
|
+
template <bool _Const>
|
|
288
|
+
class zip_transform_view<_Fn, _Views...>::__sentinel {
|
|
289
|
+
__zentinel<_Const> __inner_;
|
|
290
|
+
|
|
291
|
+
friend zip_transform_view<_Fn, _Views...>;
|
|
292
|
+
|
|
293
|
+
_LIBCPP_HIDE_FROM_ABI constexpr explicit __sentinel(__zentinel<_Const> __inner) : __inner_(__inner) {}
|
|
294
|
+
|
|
295
|
+
public:
|
|
296
|
+
_LIBCPP_HIDE_FROM_ABI __sentinel() = default;
|
|
297
|
+
|
|
298
|
+
_LIBCPP_HIDE_FROM_ABI constexpr __sentinel(__sentinel<!_Const> __i)
|
|
299
|
+
requires _Const && convertible_to<__zentinel<false>, __zentinel<_Const>>
|
|
300
|
+
: __inner_(__i.__inner_) {}
|
|
301
|
+
|
|
302
|
+
template <bool _OtherConst>
|
|
303
|
+
requires sentinel_for<__zentinel<_Const>, __ziperator<_OtherConst>>
|
|
304
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr bool operator==(const __iterator<_OtherConst>& __x, const __sentinel& __y) {
|
|
305
|
+
return __x.__inner_ == __y.__inner_;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
template <bool _OtherConst>
|
|
309
|
+
requires sized_sentinel_for<__zentinel<_Const>, __ziperator<_OtherConst>>
|
|
310
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr range_difference_t<__maybe_const<_OtherConst, _InnerView>>
|
|
311
|
+
operator-(const __iterator<_OtherConst>& __x, const __sentinel& __y) {
|
|
312
|
+
return __x.__inner_ - __y.__inner_;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
template <bool _OtherConst>
|
|
316
|
+
requires sized_sentinel_for<__zentinel<_Const>, __ziperator<_OtherConst>>
|
|
317
|
+
_LIBCPP_HIDE_FROM_ABI friend constexpr range_difference_t<__maybe_const<_OtherConst, _InnerView>>
|
|
318
|
+
operator-(const __sentinel& __x, const __iterator<_OtherConst>& __y) {
|
|
319
|
+
return __x.__inner_ - __y.__inner_;
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
namespace views {
|
|
324
|
+
namespace __zip_transform {
|
|
325
|
+
|
|
326
|
+
struct __fn {
|
|
327
|
+
template <class _Fn>
|
|
328
|
+
requires(move_constructible<decay_t<_Fn>> && regular_invocable<decay_t<_Fn>&> &&
|
|
329
|
+
is_object_v<invoke_result_t<decay_t<_Fn>&>>)
|
|
330
|
+
_LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Fn&&) const
|
|
331
|
+
noexcept(noexcept(auto(views::empty<decay_t<invoke_result_t<decay_t<_Fn>&>>>))) {
|
|
332
|
+
return views::empty<decay_t<invoke_result_t<decay_t<_Fn>&>>>;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
template <class _Fn, class... _Ranges>
|
|
336
|
+
requires(sizeof...(_Ranges) > 0)
|
|
337
|
+
_LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Fn&& __fun, _Ranges&&... __rs) const
|
|
338
|
+
noexcept(noexcept(zip_transform_view(std::forward<_Fn>(__fun), std::forward<_Ranges>(__rs)...)))
|
|
339
|
+
-> decltype(zip_transform_view(std::forward<_Fn>(__fun), std::forward<_Ranges>(__rs)...)) {
|
|
340
|
+
return zip_transform_view(std::forward<_Fn>(__fun), std::forward<_Ranges>(__rs)...);
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
} // namespace __zip_transform
|
|
345
|
+
inline namespace __cpo {
|
|
346
|
+
inline constexpr auto zip_transform = __zip_transform::__fn{};
|
|
347
|
+
} // namespace __cpo
|
|
348
|
+
} // namespace views
|
|
349
|
+
} // namespace ranges
|
|
350
|
+
|
|
351
|
+
#endif // _LIBCPP_STD_VER >= 23
|
|
352
|
+
|
|
353
|
+
_LIBCPP_END_NAMESPACE_STD
|
|
354
|
+
|
|
355
|
+
_LIBCPP_POP_MACROS
|
|
356
|
+
|
|
357
|
+
#endif // _LIBCPP___RANGES_ZIP_TRANSFORM_VIEW_H
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
#include <__ranges/enable_borrowed_range.h>
|
|
32
32
|
#include <__ranges/size.h>
|
|
33
33
|
#include <__ranges/view_interface.h>
|
|
34
|
+
#include <__tuple/tuple_transform.h>
|
|
34
35
|
#include <__type_traits/is_nothrow_constructible.h>
|
|
35
36
|
#include <__type_traits/make_unsigned.h>
|
|
36
37
|
#include <__utility/declval.h>
|
|
@@ -58,15 +59,6 @@ concept __zip_is_common =
|
|
|
58
59
|
(!(bidirectional_range<_Ranges> && ...) && (common_range<_Ranges> && ...)) ||
|
|
59
60
|
((random_access_range<_Ranges> && ...) && (sized_range<_Ranges> && ...));
|
|
60
61
|
|
|
61
|
-
template <class _Fun, class _Tuple>
|
|
62
|
-
_LIBCPP_HIDE_FROM_ABI constexpr auto __tuple_transform(_Fun&& __f, _Tuple&& __tuple) {
|
|
63
|
-
return std::apply(
|
|
64
|
-
[&]<class... _Types>(_Types&&... __elements) {
|
|
65
|
-
return tuple<invoke_result_t<_Fun&, _Types>...>(std::invoke(__f, std::forward<_Types>(__elements))...);
|
|
66
|
-
},
|
|
67
|
-
std::forward<_Tuple>(__tuple));
|
|
68
|
-
}
|
|
69
|
-
|
|
70
62
|
template <class _Fun, class _Tuple>
|
|
71
63
|
_LIBCPP_HIDE_FROM_ABI constexpr void __tuple_for_each(_Fun&& __f, _Tuple&& __tuple) {
|
|
72
64
|
std::apply(
|
|
@@ -145,24 +137,24 @@ public:
|
|
|
145
137
|
_LIBCPP_HIDE_FROM_ABI constexpr auto begin()
|
|
146
138
|
requires(!(__simple_view<_Views> && ...))
|
|
147
139
|
{
|
|
148
|
-
return __iterator<false>(
|
|
140
|
+
return __iterator<false>(std::__tuple_transform(ranges::begin, __views_));
|
|
149
141
|
}
|
|
150
142
|
|
|
151
143
|
_LIBCPP_HIDE_FROM_ABI constexpr auto begin() const
|
|
152
144
|
requires(range<const _Views> && ...)
|
|
153
145
|
{
|
|
154
|
-
return __iterator<true>(
|
|
146
|
+
return __iterator<true>(std::__tuple_transform(ranges::begin, __views_));
|
|
155
147
|
}
|
|
156
148
|
|
|
157
149
|
_LIBCPP_HIDE_FROM_ABI constexpr auto end()
|
|
158
150
|
requires(!(__simple_view<_Views> && ...))
|
|
159
151
|
{
|
|
160
152
|
if constexpr (!__zip_is_common<_Views...>) {
|
|
161
|
-
return __sentinel<false>(
|
|
153
|
+
return __sentinel<false>(std::__tuple_transform(ranges::end, __views_));
|
|
162
154
|
} else if constexpr ((random_access_range<_Views> && ...)) {
|
|
163
155
|
return begin() + iter_difference_t<__iterator<false>>(size());
|
|
164
156
|
} else {
|
|
165
|
-
return __iterator<false>(
|
|
157
|
+
return __iterator<false>(std::__tuple_transform(ranges::end, __views_));
|
|
166
158
|
}
|
|
167
159
|
}
|
|
168
160
|
|
|
@@ -170,11 +162,11 @@ public:
|
|
|
170
162
|
requires(range<const _Views> && ...)
|
|
171
163
|
{
|
|
172
164
|
if constexpr (!__zip_is_common<const _Views...>) {
|
|
173
|
-
return __sentinel<true>(
|
|
165
|
+
return __sentinel<true>(std::__tuple_transform(ranges::end, __views_));
|
|
174
166
|
} else if constexpr ((random_access_range<const _Views> && ...)) {
|
|
175
167
|
return begin() + iter_difference_t<__iterator<true>>(size());
|
|
176
168
|
} else {
|
|
177
|
-
return __iterator<true>(
|
|
169
|
+
return __iterator<true>(std::__tuple_transform(ranges::end, __views_));
|
|
178
170
|
}
|
|
179
171
|
}
|
|
180
172
|
|
|
@@ -186,7 +178,7 @@ public:
|
|
|
186
178
|
using _CT = make_unsigned_t<common_type_t<decltype(__sizes)...>>;
|
|
187
179
|
return ranges::min({_CT(__sizes)...});
|
|
188
180
|
},
|
|
189
|
-
|
|
181
|
+
std::__tuple_transform(ranges::size, __views_));
|
|
190
182
|
}
|
|
191
183
|
|
|
192
184
|
_LIBCPP_HIDE_FROM_ABI constexpr auto size() const
|
|
@@ -197,7 +189,7 @@ public:
|
|
|
197
189
|
using _CT = make_unsigned_t<common_type_t<decltype(__sizes)...>>;
|
|
198
190
|
return ranges::min({_CT(__sizes)...});
|
|
199
191
|
},
|
|
200
|
-
|
|
192
|
+
std::__tuple_transform(ranges::size, __views_));
|
|
201
193
|
}
|
|
202
194
|
};
|
|
203
195
|
|
|
@@ -235,6 +227,13 @@ struct __zip_view_iterator_category_base<_Const, _Views...> {
|
|
|
235
227
|
using iterator_category = input_iterator_tag;
|
|
236
228
|
};
|
|
237
229
|
|
|
230
|
+
struct __zip_view_iterator_access {
|
|
231
|
+
template <class _Iter>
|
|
232
|
+
_LIBCPP_HIDE_FROM_ABI static constexpr decltype(auto) __get_underlying(_Iter& __iter) noexcept {
|
|
233
|
+
return (__iter.__current_);
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
|
|
238
237
|
template <input_range... _Views>
|
|
239
238
|
requires(view<_Views> && ...) && (sizeof...(_Views) > 0)
|
|
240
239
|
template <bool _Const>
|
|
@@ -255,6 +254,7 @@ class zip_view<_Views...>::__iterator : public __zip_view_iterator_category_base
|
|
|
255
254
|
static constexpr bool __is_zip_view_iterator = true;
|
|
256
255
|
|
|
257
256
|
friend struct __product_iterator_traits<__iterator>;
|
|
257
|
+
friend __zip_view_iterator_access;
|
|
258
258
|
|
|
259
259
|
public:
|
|
260
260
|
using iterator_concept = decltype(ranges::__get_zip_view_iterator_tag<_Const, _Views...>());
|
|
@@ -268,7 +268,7 @@ public:
|
|
|
268
268
|
: __current_(std::move(__i.__current_)) {}
|
|
269
269
|
|
|
270
270
|
_LIBCPP_HIDE_FROM_ABI constexpr auto operator*() const {
|
|
271
|
-
return
|
|
271
|
+
return std::__tuple_transform([](auto& __i) -> decltype(auto) { return *__i; }, __current_);
|
|
272
272
|
}
|
|
273
273
|
|
|
274
274
|
_LIBCPP_HIDE_FROM_ABI constexpr __iterator& operator++() {
|
|
@@ -318,7 +318,7 @@ public:
|
|
|
318
318
|
_LIBCPP_HIDE_FROM_ABI constexpr auto operator[](difference_type __n) const
|
|
319
319
|
requires __zip_all_random_access<_Const, _Views...>
|
|
320
320
|
{
|
|
321
|
-
return
|
|
321
|
+
return std::__tuple_transform(
|
|
322
322
|
[&]<class _Iter>(_Iter& __i) -> decltype(auto) { return __i[iter_difference_t<_Iter>(__n)]; }, __current_);
|
|
323
323
|
}
|
|
324
324
|
|
|
@@ -377,7 +377,7 @@ public:
|
|
|
377
377
|
_LIBCPP_HIDE_FROM_ABI friend constexpr auto iter_move(const __iterator& __i) noexcept(
|
|
378
378
|
(noexcept(ranges::iter_move(std::declval<const iterator_t<__maybe_const<_Const, _Views>>&>())) && ...) &&
|
|
379
379
|
(is_nothrow_move_constructible_v<range_rvalue_reference_t<__maybe_const<_Const, _Views>>> && ...)) {
|
|
380
|
-
return
|
|
380
|
+
return std::__tuple_transform(ranges::iter_move, __i.__current_);
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
_LIBCPP_HIDE_FROM_ABI friend constexpr void iter_swap(const __iterator& __l, const __iterator& __r) noexcept(
|