@zigc/lib 0.17.0-dev.27 → 0.17.0-dev.296
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/fcntl.zig +6 -1
- package/c/inttypes.zig +0 -10
- package/c/math.zig +52 -112
- package/c/pthread.zig +57 -0
- package/c/search.zig +1 -27
- package/c/stdlib/drand48.zig +0 -57
- package/c/stdlib.zig +31 -121
- package/c/string.zig +20 -7
- package/c/strings.zig +0 -38
- package/c/unistd.zig +27 -26
- package/c/wchar.zig +10 -0
- package/c.zig +2 -2
- package/compiler/aro/aro/CodeGen.zig +7 -8
- package/compiler/aro/aro/Compilation.zig +17 -17
- package/compiler/aro/aro/Driver.zig +14 -13
- package/compiler/aro/aro/Parser.zig +20 -15
- package/compiler/aro/aro/Pragma.zig +3 -2
- package/compiler/aro/aro/Preprocessor.zig +9 -6
- package/compiler/aro/aro/pragmas/message.zig +3 -2
- package/compiler/aro/aro/text_literal.zig +3 -2
- package/compiler/aro/assembly_backend/x86_64.zig +4 -4
- package/compiler/build_runner.zig +2 -4
- package/compiler/reduce/Walk.zig +8 -13
- package/compiler/resinator/compile.zig +1 -1
- package/compiler/resinator/cvtres.zig +4 -4
- package/compiler/resinator/errors.zig +7 -7
- package/compiler/resinator/ico.zig +4 -4
- package/compiler/resinator/parse.zig +2 -2
- package/compiler/resinator/res.zig +1 -1
- package/compiler/std-docs.zig +1 -1
- package/compiler/test_runner.zig +1 -1
- package/compiler/translate-c/MacroTranslator.zig +1 -1
- package/compiler/translate-c/Translator.zig +6 -2
- package/compiler/translate-c/ast.zig +16 -23
- package/compiler/translate-c/main.zig +1 -1
- package/compiler_rt/addf3.zig +1 -1
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/atomics.zig +1 -1
- package/compiler_rt/comparef.zig +3 -3
- package/compiler_rt/cos.zig +1 -3
- package/compiler_rt/count0bits.zig +1 -1
- package/compiler_rt/divdf3.zig +2 -2
- package/compiler_rt/divsf3.zig +1 -1
- package/compiler_rt/divtf3.zig +1 -1
- package/compiler_rt/divxf3.zig +1 -1
- package/compiler_rt/exp.zig +0 -2
- package/compiler_rt/exp2.zig +0 -2
- package/compiler_rt/extendf.zig +5 -5
- package/compiler_rt/fabs.zig +1 -3
- package/compiler_rt/float_from_int.zig +3 -4
- package/compiler_rt/fma.zig +0 -2
- package/compiler_rt/fmax.zig +1 -3
- package/compiler_rt/fmin.zig +1 -3
- package/compiler_rt/fmod.zig +2 -4
- package/compiler_rt/limb64.zig +3 -2
- package/compiler_rt/log.zig +0 -2
- package/compiler_rt/log10.zig +0 -2
- package/compiler_rt/log2.zig +0 -2
- package/compiler_rt/mulf3.zig +2 -2
- package/compiler_rt/rem_pio2l.zig +1 -1
- package/compiler_rt/round.zig +0 -2
- package/compiler_rt/sin.zig +1 -3
- package/compiler_rt/sincos.zig +1 -3
- package/compiler_rt/sqrt.zig +0 -2
- package/compiler_rt/ssp.zig +2 -2
- package/compiler_rt/tan.zig +1 -3
- package/compiler_rt/trunc.zig +0 -2
- package/compiler_rt/truncf.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +5 -26
- package/docs/wasm/Walk.zig +1 -3
- package/docs/wasm/html_render.zig +1 -2
- package/docs/wasm/markdown/Parser.zig +16 -20
- package/fuzzer.zig +2 -0
- 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/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
- package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
- package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
- package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
- package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
- package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
- package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
- package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
- package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
- package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
- package/libc/include/any-linux-any/linux/android/binder.h +1 -1
- package/libc/include/any-linux-any/linux/bpf.h +28 -0
- package/libc/include/any-linux-any/linux/btrfs.h +1 -0
- package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
- package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
- package/libc/include/any-linux-any/linux/dpll.h +1 -0
- package/libc/include/any-linux-any/linux/elf.h +2 -0
- package/libc/include/any-linux-any/linux/ethtool.h +21 -5
- package/libc/include/any-linux-any/linux/fs.h +1 -0
- package/libc/include/any-linux-any/linux/hyperv.h +1 -1
- package/libc/include/any-linux-any/linux/idxd.h +134 -134
- package/libc/include/any-linux-any/linux/if_alg.h +1 -1
- package/libc/include/any-linux-any/linux/if_link.h +1 -0
- package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
- package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
- package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
- package/libc/include/any-linux-any/linux/io_uring.h +33 -2
- package/libc/include/any-linux-any/linux/iommufd.h +39 -0
- package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
- package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
- package/libc/include/any-linux-any/linux/kvm.h +30 -6
- package/libc/include/any-linux-any/linux/landlock.h +22 -8
- package/libc/include/any-linux-any/linux/magic.h +1 -0
- package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
- package/libc/include/any-linux-any/linux/mount.h +11 -2
- package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
- package/libc/include/any-linux-any/linux/mshv.h +2 -0
- package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
- package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
- package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
- package/libc/include/any-linux-any/linux/nfs.h +1 -1
- package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
- package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
- package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
- package/libc/include/any-linux-any/linux/nl80211.h +104 -3
- package/libc/include/any-linux-any/linux/pci.h +7 -0
- package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
- package/libc/include/any-linux-any/linux/pcitest.h +1 -0
- package/libc/include/any-linux-any/linux/perf_event.h +24 -3
- package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
- package/libc/include/any-linux-any/linux/prctl.h +30 -0
- package/libc/include/any-linux-any/linux/rseq.h +62 -5
- package/libc/include/any-linux-any/linux/shm.h +0 -1
- package/libc/include/any-linux-any/linux/stddef.h +4 -0
- package/libc/include/any-linux-any/linux/sysctl.h +1 -2
- package/libc/include/any-linux-any/linux/taskstats.h +12 -1
- package/libc/include/any-linux-any/linux/tcp.h +23 -3
- package/libc/include/any-linux-any/linux/typelimits.h +8 -0
- package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
- package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
- package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
- package/libc/include/any-linux-any/linux/vduse.h +80 -5
- package/libc/include/any-linux-any/linux/version.h +3 -3
- package/libc/include/any-linux-any/linux/vfio.h +4 -0
- package/libc/include/any-linux-any/linux/videodev2.h +3 -0
- package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
- package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
- package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
- package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
- package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
- package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
- package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
- package/libc/include/arc-linux-any/asm/swab.h +0 -63
- package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
- package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
- package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
- package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
- package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/mips-linux-any/asm/errno.h +2 -0
- package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
- package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
- package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
- package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/sparc-linux-any/asm/errno.h +2 -0
- package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
- package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
- package/libc/include/x86-linux-any/asm/kvm.h +13 -8
- package/libc/include/x86-linux-any/asm/svm.h +16 -16
- package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
- package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
- package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- 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/Cache/Path.zig +1 -1
- package/std/Build/Cache.zig +6 -6
- package/std/Build/Step/Compile.zig +18 -20
- package/std/Build/Step/ConfigHeader.zig +1 -1
- package/std/Build/Step/Run.zig +15 -8
- package/std/Build/Step.zig +3 -7
- package/std/Build/Watch/FsEvents.zig +1 -1
- package/std/Build/WebServer.zig +2 -2
- package/std/Build/abi.zig +1 -1
- package/std/Build.zig +0 -3
- package/std/Io/Dir.zig +9 -4
- package/std/Io/Dispatch.zig +8 -18
- package/std/Io/File/Writer.zig +8 -6
- package/std/Io/File.zig +0 -9
- package/std/Io/Kqueue.zig +3 -3
- package/std/Io/Reader.zig +8 -14
- package/std/Io/Semaphore.zig +112 -17
- package/std/Io/Terminal.zig +1 -1
- package/std/Io/Threaded.zig +183 -46
- package/std/Io/Uring.zig +18 -20
- package/std/Io/Writer.zig +10 -7
- package/std/Io/net/HostName.zig +11 -6
- package/std/Io/net.zig +11 -11
- package/std/Io.zig +104 -38
- package/std/Random/ChaCha.zig +2 -2
- package/std/Random/benchmark.zig +2 -2
- package/std/Random.zig +6 -6
- package/std/SemanticVersion.zig +1 -1
- package/std/Target/Query.zig +2 -2
- 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 +67 -14
- package/std/Thread.zig +5 -2
- package/std/array_hash_map.zig +103 -57
- package/std/array_list.zig +10 -31
- package/std/base64.zig +5 -5
- package/std/bit_set.zig +86 -69
- package/std/c/haiku.zig +3 -0
- package/std/c/serenity.zig +1 -6
- package/std/c.zig +123 -32
- package/std/compress/flate/Decompress.zig +3 -4
- package/std/compress/zstd/Decompress.zig +7 -9
- package/std/crypto/25519/curve25519.zig +2 -2
- package/std/crypto/25519/edwards25519.zig +3 -3
- package/std/crypto/25519/ristretto255.zig +2 -2
- package/std/crypto/25519/scalar.zig +6 -6
- package/std/crypto/25519/x25519.zig +1 -1
- package/std/crypto/Certificate.zig +14 -2
- package/std/crypto/Sha1.zig +1 -1
- package/std/crypto/aegis.zig +45 -39
- package/std/crypto/aes_ccm.zig +22 -22
- package/std/crypto/aes_gcm.zig +10 -12
- package/std/crypto/aes_ocb.zig +9 -9
- package/std/crypto/argon2.zig +15 -15
- package/std/crypto/ascon.zig +75 -33
- package/std/crypto/bcrypt.zig +20 -10
- package/std/crypto/benchmark.zig +7 -7
- package/std/crypto/blake2.zig +100 -64
- package/std/crypto/cbc_mac.zig +1 -1
- package/std/crypto/chacha20.zig +10 -10
- package/std/crypto/cmac.zig +3 -3
- package/std/crypto/codecs/asn1/Oid.zig +12 -1
- package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
- package/std/crypto/codecs/asn1.zig +1 -1
- package/std/crypto/codecs/base64_hex_ct.zig +3 -5
- package/std/crypto/ecdsa.zig +9 -9
- package/std/crypto/ff.zig +4 -5
- package/std/crypto/ghash_polyval.zig +4 -4
- package/std/crypto/hkdf.zig +1 -1
- package/std/crypto/isap.zig +3 -3
- package/std/crypto/kangarootwelve.zig +1 -1
- package/std/crypto/keccak_p.zig +8 -8
- package/std/crypto/md5.zig +1 -1
- package/std/crypto/ml_dsa.zig +39 -39
- package/std/crypto/ml_kem.zig +12 -34
- package/std/crypto/modes.zig +2 -2
- package/std/crypto/pbkdf2.zig +1 -1
- package/std/crypto/pcurves/common.zig +4 -5
- package/std/crypto/pcurves/p256/scalar.zig +3 -3
- package/std/crypto/pcurves/p384/scalar.zig +2 -2
- package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
- package/std/crypto/pcurves/tests/p256.zig +5 -5
- package/std/crypto/pcurves/tests/p384.zig +5 -5
- package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
- package/std/crypto/salsa20.zig +8 -8
- package/std/crypto/sha2.zig +2 -2
- package/std/crypto/sha3.zig +2 -2
- package/std/crypto/siphash.zig +1 -1
- package/std/crypto/timing_safe.zig +10 -9
- package/std/crypto/tls/Client.zig +89 -13
- package/std/crypto/tls.zig +1 -1
- package/std/crypto.zig +4 -3
- package/std/debug/Dwarf.zig +15 -12
- package/std/debug/Pdb.zig +25 -17
- package/std/debug.zig +14 -8
- package/std/deque.zig +1 -1
- package/std/elf.zig +1 -1
- package/std/enums.zig +8 -8
- package/std/fmt/parse_float/decimal.zig +1 -1
- package/std/fmt/parse_float.zig +1 -1
- package/std/fmt.zig +14 -10
- package/std/fs/path.zig +7 -5
- package/std/hash/Adler32.zig +3 -3
- package/std/hash/benchmark.zig +2 -2
- package/std/hash/wyhash.zig +2 -2
- package/std/hash/xxhash.zig +0 -6
- package/std/hash_map.zig +20 -1
- package/std/heap/BufferFirstAllocator.zig +165 -0
- package/std/heap/debug_allocator.zig +2 -2
- package/std/heap/memory_pool.zig +34 -197
- package/std/heap.zig +2 -133
- package/std/http/Client.zig +21 -24
- package/std/http.zig +4 -5
- package/std/json/Scanner.zig +2 -2
- package/std/json/static.zig +2 -2
- package/std/{builtin.zig → lang.zig} +5 -1
- package/std/leb128.zig +2 -2
- package/std/math/big/int.zig +5 -5
- package/std/math/big.zig +4 -4
- package/std/math/copysign.zig +1 -1
- package/std/math/float.zig +62 -0
- package/std/math/frexp.zig +4 -4
- package/std/math/ilogb.zig +1 -1
- package/std/math/isfinite.zig +1 -1
- package/std/math/isinf.zig +1 -1
- package/std/math/isnan.zig +1 -2
- package/std/math/isnormal.zig +2 -2
- package/std/math/iszero.zig +2 -2
- package/std/math/ldexp.zig +2 -2
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +1 -2
- package/std/math/nextafter.zig +3 -4
- package/std/math/pow.zig +1 -1
- package/std/math/powi.zig +2 -3
- package/std/math/signbit.zig +0 -1
- package/std/math.zig +21 -26
- package/std/mem/Allocator.zig +0 -6
- package/std/mem.zig +31 -31
- package/std/meta/trailer_flags.zig +1 -1
- package/std/meta.zig +4 -36
- package/std/multi_array_list.zig +24 -0
- package/std/os/emscripten.zig +7 -6
- package/std/os/linux/IoUring.zig +2 -0
- package/std/os/linux/aarch64.zig +41 -12
- package/std/os/linux/arc.zig +41 -12
- package/std/os/linux/arm.zig +41 -12
- package/std/os/linux/bpf.zig +6 -0
- package/std/os/linux/hexagon.zig +33 -11
- package/std/os/linux/ioctl.zig +2 -2
- package/std/os/linux/loongarch32.zig +41 -13
- package/std/os/linux/loongarch64.zig +41 -12
- package/std/os/linux/m68k.zig +41 -13
- package/std/os/linux/mips.zig +67 -36
- package/std/os/linux/mips64.zig +60 -29
- package/std/os/linux/mipsn32.zig +60 -29
- package/std/os/linux/or1k.zig +41 -12
- package/std/os/linux/powerpc.zig +41 -12
- package/std/os/linux/powerpc64.zig +41 -12
- package/std/os/linux/riscv32.zig +41 -12
- package/std/os/linux/riscv64.zig +41 -12
- package/std/os/linux/s390x.zig +44 -7
- package/std/os/linux/sparc64.zig +83 -52
- package/std/os/linux/syscalls.zig +26 -1
- package/std/os/linux/thumb.zig +52 -36
- package/std/os/linux/x32.zig +41 -12
- package/std/os/linux/x86.zig +44 -15
- package/std/os/linux/x86_64.zig +41 -12
- package/std/os/linux.zig +416 -450
- package/std/os/plan9.zig +1 -1
- package/std/os/uefi/hii.zig +1 -1
- package/std/os/uefi/tables/boot_services.zig +9 -8
- package/std/os/uefi/tables/runtime_services.zig +1 -1
- package/std/os/windows.zig +130 -1
- package/std/os.zig +41 -0
- package/std/posix.zig +1 -1
- package/std/process/Environ.zig +1 -1
- package/std/process.zig +5 -4
- package/std/simd.zig +4 -21
- package/std/sort.zig +3 -3
- package/std/start.zig +17 -4
- package/std/std.zig +8 -1
- package/std/tar/Writer.zig +39 -33
- package/std/tar.zig +8 -4
- package/std/testing.zig +2 -2
- package/std/unicode.zig +13 -8
- package/std/zig/Ast/Render.zig +6 -30
- package/std/zig/Ast.zig +12 -37
- package/std/zig/AstGen.zig +175 -332
- package/std/zig/AstRlAnnotate.zig +1 -22
- package/std/zig/AstSmith.zig +5 -11
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/LibCDirs.zig +15 -6
- package/std/zig/LibCInstallation.zig +34 -12
- package/std/zig/Parse.zig +11 -76
- package/std/zig/TokenSmith.zig +0 -6
- package/std/zig/WindowsSdk.zig +18 -18
- package/std/zig/Zir.zig +65 -132
- package/std/zig/ZonGen.zig +19 -27
- package/std/zig/llvm/Builder.zig +39 -33
- package/std/zig/llvm/bitcode_writer.zig +3 -3
- package/std/zig/llvm/ir.zig +8 -8
- 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 -4
- package/std/zig/tokenizer.zig +4 -43
- package/std/zig.zig +3 -14
- package/std/zip.zig +5 -5
- package/std/zon/parse.zig +1 -1
- package/zig.h +340 -1
- package/compiler_rt/long_double.zig +0 -37
- 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/libc/include/hexagon-linux-any/asm/signal.h +0 -29
- package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
- package/libc/mingw/math/lrintl.c +0 -18
- package/libc/mingw/math/rintl.c +0 -16
- package/libc/mingw/winpthreads/spinlock.c +0 -82
- package/libc/musl/src/linux/tee.c +0 -8
- package/libc/musl/src/math/i386/lrintl.c +0 -8
- package/libc/musl/src/math/i386/rintl.c +0 -7
- package/libc/musl/src/math/lrintl.c +0 -36
- package/libc/musl/src/math/rintl.c +0 -29
- package/libc/musl/src/math/s390x/rintl.c +0 -15
- package/libc/musl/src/math/x32/lrintl.s +0 -7
- package/libc/musl/src/math/x32/rintl.s +0 -6
- package/libc/musl/src/math/x86_64/lrintl.c +0 -8
- package/libc/musl/src/math/x86_64/rintl.c +0 -7
- package/libc/musl/src/string/strdup.c +0 -10
- package/libc/musl/src/string/strndup.c +0 -12
- package/libc/musl/src/string/wcsdup.c +0 -10
- package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
- package/libc/musl/src/thread/pthread_spin_init.c +0 -6
- package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
- package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
- package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
- package/libc/musl/src/unistd/dup2.c +0 -20
- package/libc/musl/src/unistd/dup3.c +0 -26
- package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
- /package/std/{builtin → lang}/assembly.zig +0 -0
|
@@ -13,10 +13,12 @@
|
|
|
13
13
|
#include <__algorithm/max.h>
|
|
14
14
|
#include <__algorithm/move.h>
|
|
15
15
|
#include <__algorithm/move_backward.h>
|
|
16
|
+
#include <__assert>
|
|
16
17
|
#include <__config>
|
|
17
18
|
#include <__iterator/distance.h>
|
|
18
19
|
#include <__iterator/iterator_traits.h>
|
|
19
20
|
#include <__iterator/move_iterator.h>
|
|
21
|
+
#include <__memory/addressof.h>
|
|
20
22
|
#include <__memory/allocate_at_least.h>
|
|
21
23
|
#include <__memory/allocator.h>
|
|
22
24
|
#include <__memory/allocator_traits.h>
|
|
@@ -28,11 +30,9 @@
|
|
|
28
30
|
#include <__type_traits/integral_constant.h>
|
|
29
31
|
#include <__type_traits/is_nothrow_assignable.h>
|
|
30
32
|
#include <__type_traits/is_nothrow_constructible.h>
|
|
31
|
-
#include <__type_traits/is_replaceable.h>
|
|
32
33
|
#include <__type_traits/is_swappable.h>
|
|
33
34
|
#include <__type_traits/is_trivially_destructible.h>
|
|
34
35
|
#include <__type_traits/is_trivially_relocatable.h>
|
|
35
|
-
#include <__type_traits/remove_reference.h>
|
|
36
36
|
#include <__utility/forward.h>
|
|
37
37
|
#include <__utility/move.h>
|
|
38
38
|
|
|
@@ -45,25 +45,430 @@ _LIBCPP_PUSH_MACROS
|
|
|
45
45
|
|
|
46
46
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
49
|
+
class __split_buffer;
|
|
50
|
+
|
|
51
|
+
template <class _SplitBuffer, class _Tp, class _Allocator>
|
|
52
|
+
class __split_buffer_pointer_layout {
|
|
53
|
+
protected:
|
|
54
|
+
using value_type = _Tp;
|
|
55
|
+
using allocator_type = _Allocator;
|
|
56
|
+
using __alloc_traits _LIBCPP_NODEBUG = allocator_traits<allocator_type>;
|
|
57
|
+
using reference = value_type&;
|
|
58
|
+
using const_reference = const value_type&;
|
|
59
|
+
using size_type = typename __alloc_traits::size_type;
|
|
60
|
+
using difference_type = typename __alloc_traits::difference_type;
|
|
61
|
+
using pointer = typename __alloc_traits::pointer;
|
|
62
|
+
using const_pointer = typename __alloc_traits::const_pointer;
|
|
63
|
+
using iterator = pointer;
|
|
64
|
+
using const_iterator = const_pointer;
|
|
65
|
+
using __sentinel_type _LIBCPP_NODEBUG = pointer;
|
|
51
66
|
|
|
52
|
-
template <class _Tp, class _Allocator = allocator<_Tp> >
|
|
53
|
-
struct __split_buffer {
|
|
54
67
|
public:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
// Can't be defaulted due to _LIBCPP_COMPRESSED_PAIR not being an aggregate in C++03 and C++11.
|
|
69
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __split_buffer_pointer_layout() : __back_cap_(nullptr) {}
|
|
70
|
+
|
|
71
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20
|
|
72
|
+
_LIBCPP_HIDE_FROM_ABI explicit __split_buffer_pointer_layout(const allocator_type& __alloc)
|
|
73
|
+
: __back_cap_(nullptr), __alloc_(__alloc) {}
|
|
74
|
+
|
|
75
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pointer __front_cap() _NOEXCEPT { return __front_cap_; }
|
|
76
|
+
|
|
77
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI const_pointer __front_cap() const _NOEXCEPT {
|
|
78
|
+
return __front_cap_;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pointer begin() _NOEXCEPT { return __begin_; }
|
|
82
|
+
|
|
83
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI const_pointer begin() const _NOEXCEPT { return __begin_; }
|
|
84
|
+
|
|
85
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pointer end() _NOEXCEPT { return __end_; }
|
|
86
|
+
|
|
87
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pointer end() const _NOEXCEPT { return __end_; }
|
|
88
|
+
|
|
89
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT {
|
|
90
|
+
return static_cast<size_type>(__end_ - __begin_);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT { return __begin_ == __end_; }
|
|
94
|
+
|
|
95
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type capacity() const _NOEXCEPT {
|
|
96
|
+
return static_cast<size_type>(__back_cap_ - __front_cap_);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI allocator_type& __get_allocator() _NOEXCEPT { return __alloc_; }
|
|
100
|
+
|
|
101
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI allocator_type const& __get_allocator() const _NOEXCEPT {
|
|
102
|
+
return __alloc_;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Returns the sentinel object directly. Should be used in conjunction with automatic type deduction,
|
|
106
|
+
// not explicit types.
|
|
107
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __sentinel_type __raw_sentinel() const _NOEXCEPT {
|
|
108
|
+
return __end_;
|
|
109
|
+
}
|
|
110
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __sentinel_type __raw_capacity() const _NOEXCEPT {
|
|
111
|
+
return __back_cap_;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_data(pointer __new_first) _NOEXCEPT {
|
|
115
|
+
__front_cap_ = __new_first;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void
|
|
119
|
+
__set_valid_range(pointer __new_begin, pointer __new_end) _NOEXCEPT {
|
|
120
|
+
__begin_ = __new_begin;
|
|
121
|
+
__end_ = __new_end;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void
|
|
125
|
+
__set_valid_range(pointer __new_begin, size_type __new_size) _NOEXCEPT {
|
|
126
|
+
__begin_ = __new_begin;
|
|
127
|
+
__end_ = __begin_ + __new_size;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_sentinel(pointer __new_end) _NOEXCEPT {
|
|
131
|
+
_LIBCPP_ASSERT_INTERNAL(__front_cap_ <= __new_end, "__new_end cannot precede __front_cap_");
|
|
132
|
+
__end_ = __new_end;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_sentinel(size_type __new_size) _NOEXCEPT {
|
|
136
|
+
__end_ = __begin_ + __new_size;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_capacity(size_type __new_capacity) _NOEXCEPT {
|
|
140
|
+
__back_cap_ = __front_cap_ + __new_capacity;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_capacity(pointer __new_capacity) _NOEXCEPT {
|
|
144
|
+
__back_cap_ = __new_capacity;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type __front_spare() const _NOEXCEPT {
|
|
148
|
+
return static_cast<size_type>(__begin_ - __front_cap_);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type __back_spare() const _NOEXCEPT {
|
|
152
|
+
return static_cast<size_type>(__back_cap_ - __end_);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI reference back() _NOEXCEPT { return *(__end_ - 1); }
|
|
156
|
+
|
|
157
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI const_reference back() const _NOEXCEPT { return *(__end_ - 1); }
|
|
158
|
+
|
|
159
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __swap_without_allocator(
|
|
160
|
+
__split_buffer_pointer_layout<__split_buffer<value_type, allocator_type, __split_buffer_pointer_layout>,
|
|
161
|
+
value_type,
|
|
162
|
+
allocator_type>& __other) _NOEXCEPT {
|
|
163
|
+
std::swap(__front_cap_, __other.__front_cap_);
|
|
164
|
+
std::swap(__begin_, __other.__begin_);
|
|
165
|
+
std::swap(__back_cap_, __other.__back_cap_);
|
|
166
|
+
std::swap(__end_, __other.__end_);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void swap(__split_buffer_pointer_layout& __other) _NOEXCEPT {
|
|
170
|
+
std::swap(__front_cap_, __other.__front_cap_);
|
|
171
|
+
std::swap(__begin_, __other.__begin_);
|
|
172
|
+
std::swap(__back_cap_, __other.__back_cap_);
|
|
173
|
+
std::swap(__end_, __other.__end_);
|
|
174
|
+
std::__swap_allocator(__alloc_, __other.__alloc_);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __reset() _NOEXCEPT {
|
|
178
|
+
__front_cap_ = nullptr;
|
|
179
|
+
__begin_ = nullptr;
|
|
180
|
+
__end_ = nullptr;
|
|
181
|
+
__back_cap_ = nullptr;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void
|
|
185
|
+
__copy_without_alloc(__split_buffer_pointer_layout const& __other)
|
|
186
|
+
_NOEXCEPT_(is_nothrow_copy_assignable<pointer>::value) {
|
|
187
|
+
__front_cap_ = __other.__front_cap_;
|
|
188
|
+
__begin_ = __other.__begin_;
|
|
189
|
+
__end_ = __other.__end_;
|
|
190
|
+
__back_cap_ = __other.__back_cap_;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
private:
|
|
194
|
+
pointer __front_cap_ = nullptr;
|
|
195
|
+
pointer __begin_ = nullptr;
|
|
196
|
+
pointer __end_ = nullptr;
|
|
197
|
+
_LIBCPP_COMPRESSED_PAIR(pointer, __back_cap_, allocator_type, __alloc_);
|
|
198
|
+
|
|
199
|
+
template <class, class, class>
|
|
200
|
+
friend class __split_buffer_pointer_layout;
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
template <class _SplitBuffer, class _Tp, class _Allocator>
|
|
204
|
+
class __split_buffer_size_layout {
|
|
205
|
+
protected:
|
|
206
|
+
using value_type = _Tp;
|
|
207
|
+
using allocator_type = _Allocator;
|
|
208
|
+
using __alloc_traits _LIBCPP_NODEBUG = allocator_traits<allocator_type>;
|
|
209
|
+
using reference = value_type&;
|
|
210
|
+
using const_reference = const value_type&;
|
|
211
|
+
using size_type = typename __alloc_traits::size_type;
|
|
212
|
+
using difference_type = typename __alloc_traits::difference_type;
|
|
213
|
+
using pointer = typename __alloc_traits::pointer;
|
|
214
|
+
using const_pointer = typename __alloc_traits::const_pointer;
|
|
215
|
+
using iterator = pointer;
|
|
216
|
+
using const_iterator = const_pointer;
|
|
217
|
+
using __sentinel_type _LIBCPP_NODEBUG = size_type;
|
|
218
|
+
|
|
219
|
+
public:
|
|
220
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __split_buffer_size_layout() = default;
|
|
221
|
+
|
|
222
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit __split_buffer_size_layout(const allocator_type& __alloc)
|
|
223
|
+
: __alloc_(__alloc) {}
|
|
224
|
+
|
|
225
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pointer __front_cap() _NOEXCEPT { return __front_cap_; }
|
|
226
|
+
|
|
227
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI const_pointer __front_cap() const _NOEXCEPT {
|
|
228
|
+
return __front_cap_;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pointer begin() _NOEXCEPT { return __begin_; }
|
|
232
|
+
|
|
233
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI const_pointer begin() const _NOEXCEPT { return __begin_; }
|
|
234
|
+
|
|
235
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pointer end() _NOEXCEPT { return __begin_ + __size_; }
|
|
236
|
+
|
|
237
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI pointer end() const _NOEXCEPT { return __begin_ + __size_; }
|
|
238
|
+
|
|
239
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type size() const _NOEXCEPT { return __size_; }
|
|
240
|
+
|
|
241
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool empty() const _NOEXCEPT { return __size_ == 0; }
|
|
242
|
+
|
|
243
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type capacity() const _NOEXCEPT { return __cap_; }
|
|
244
|
+
|
|
245
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI allocator_type& __get_allocator() _NOEXCEPT { return __alloc_; }
|
|
246
|
+
|
|
247
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI allocator_type const& __get_allocator() const _NOEXCEPT {
|
|
248
|
+
return __alloc_;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Returns the sentinel object directly. Should be used in conjunction with automatic type deduction,
|
|
252
|
+
// not explicit types.
|
|
253
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __sentinel_type __raw_sentinel() const _NOEXCEPT {
|
|
254
|
+
return __size_;
|
|
255
|
+
}
|
|
256
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __sentinel_type __raw_capacity() const _NOEXCEPT {
|
|
257
|
+
return __cap_;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_data(pointer __new_first) _NOEXCEPT {
|
|
261
|
+
__front_cap_ = __new_first;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void
|
|
265
|
+
__set_valid_range(pointer __new_begin, pointer __new_end) _NOEXCEPT {
|
|
266
|
+
// Size-based __split_buffers track their size directly: we need to explicitly update the size
|
|
267
|
+
// when the front is adjusted.
|
|
268
|
+
__size_ -= __new_begin - __begin_;
|
|
269
|
+
__begin_ = __new_begin;
|
|
270
|
+
__set_sentinel(__new_end);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void
|
|
274
|
+
__set_valid_range(pointer __new_begin, size_type __new_size) _NOEXCEPT {
|
|
275
|
+
// Size-based __split_buffers track their size directly: we need to explicitly update the size
|
|
276
|
+
// when the front is adjusted.
|
|
277
|
+
__size_ -= __new_begin - __begin_;
|
|
278
|
+
__begin_ = __new_begin;
|
|
279
|
+
__set_sentinel(__new_size);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_sentinel(pointer __new_end) _NOEXCEPT {
|
|
283
|
+
_LIBCPP_ASSERT_INTERNAL(__front_cap_ <= __new_end, "__new_end cannot precede __front_cap_");
|
|
284
|
+
__size_ += __new_end - end();
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_sentinel(size_type __new_size) _NOEXCEPT {
|
|
288
|
+
__size_ = __new_size;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_capacity(size_type __new_capacity) _NOEXCEPT {
|
|
292
|
+
__cap_ = __new_capacity;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __set_capacity(pointer __new_capacity) _NOEXCEPT {
|
|
296
|
+
__cap_ = __new_capacity - __begin_;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type __front_spare() const _NOEXCEPT {
|
|
300
|
+
return static_cast<size_type>(__begin_ - __front_cap_);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type __back_spare() const _NOEXCEPT {
|
|
304
|
+
// `__cap_ - __end_` tells us the total number of spares when in size-mode. We need to remove
|
|
305
|
+
// the __front_spare from the count.
|
|
306
|
+
return __cap_ - __size_ - __front_spare();
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI reference back() _NOEXCEPT { return __begin_[__size_ - 1]; }
|
|
310
|
+
|
|
311
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI const_reference back() const _NOEXCEPT {
|
|
312
|
+
return __begin_[__size_ - 1];
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __swap_without_allocator(
|
|
316
|
+
__split_buffer_pointer_layout<__split_buffer<value_type, allocator_type, __split_buffer_pointer_layout>,
|
|
317
|
+
value_type,
|
|
318
|
+
allocator_type>& __other) _NOEXCEPT {
|
|
319
|
+
std::swap(__front_cap_, __other.__front_cap_);
|
|
320
|
+
std::swap(__begin_, __other.__begin_);
|
|
321
|
+
std::swap(__cap_, __other.__cap_);
|
|
322
|
+
std::swap(__size_, __other.__size_);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void swap(__split_buffer_size_layout& __other) _NOEXCEPT {
|
|
326
|
+
std::swap(__front_cap_, __other.__front_cap_);
|
|
327
|
+
std::swap(__begin_, __other.__begin_);
|
|
328
|
+
std::swap(__cap_, __other.__cap_);
|
|
329
|
+
std::swap(__size_, __other.__size_);
|
|
330
|
+
std::__swap_allocator(__alloc_, __other.__alloc_);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __reset() _NOEXCEPT {
|
|
334
|
+
__front_cap_ = nullptr;
|
|
335
|
+
__begin_ = nullptr;
|
|
336
|
+
__size_ = 0;
|
|
337
|
+
__cap_ = 0;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void
|
|
341
|
+
__copy_without_alloc(__split_buffer_size_layout const& __other)
|
|
342
|
+
_NOEXCEPT_(is_nothrow_copy_assignable<pointer>::value) {
|
|
343
|
+
__front_cap_ = __other.__front_cap_;
|
|
344
|
+
__begin_ = __other.__begin_;
|
|
345
|
+
__cap_ = __other.__cap_;
|
|
346
|
+
__size_ = __other.__size_;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
private:
|
|
350
|
+
pointer __front_cap_ = nullptr;
|
|
351
|
+
pointer __begin_ = nullptr;
|
|
352
|
+
size_type __size_ = 0;
|
|
353
|
+
size_type __cap_ = 0;
|
|
354
|
+
_LIBCPP_NO_UNIQUE_ADDRESS allocator_type __alloc_;
|
|
355
|
+
|
|
356
|
+
template <class, class, class>
|
|
357
|
+
friend class __split_buffer_size_layout;
|
|
358
|
+
};
|
|
359
|
+
|
|
360
|
+
// `__split_buffer` is a contiguous array data structure. It may hold spare capacity at both ends of
|
|
361
|
+
// the sequence. This allows for a `__split_buffer` to grow from both the front and the back without
|
|
362
|
+
// relocating its contents until it runs out of room. This characteristic sets it apart from
|
|
363
|
+
// `std::vector`, which only holds spare capacity at its end. As such, `__split_buffer` is useful
|
|
364
|
+
// for implementing both `std::vector` and `std::deque`.
|
|
365
|
+
//
|
|
366
|
+
// The sequence is stored as a contiguous chunk of memory delimited by the following "pointers" (`o` denotes
|
|
367
|
+
// uninitialized memory and `x` denotes a valid object):
|
|
368
|
+
//
|
|
369
|
+
// |oooooooooooooooooooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooooooooooooooooooooooo|
|
|
370
|
+
// ^ ^ ^ ^
|
|
371
|
+
// __front_cap_ __begin_ __end_ __back_cap_
|
|
372
|
+
//
|
|
373
|
+
// The range [__front_cap_, __begin_) contains uninitialized memory. It is referred to as the "front spare capacity".
|
|
374
|
+
// The range [__begin_, __end_) contains valid objects. It is referred to as the "valid range".
|
|
375
|
+
// The range [__end_, __back_cap_) contains uninitialized memory. It is referred to as the "back spare capacity".
|
|
376
|
+
//
|
|
377
|
+
// The layout of `__split_buffer` is determined by the `_Layout` template template parameter. This
|
|
378
|
+
// `_Layout` allows the above pointers to be stored as different representations, such as integer
|
|
379
|
+
// offsets. A layout class template must provide the following interface:
|
|
380
|
+
//
|
|
381
|
+
// template<class _Tp, class _Allocator, class _Layout>
|
|
382
|
+
// class __layout {
|
|
383
|
+
// protected:
|
|
384
|
+
// using value_type = _Tp;
|
|
385
|
+
// using allocator_type = _Allocator;
|
|
386
|
+
// using __alloc_traits = allocator_traits<allocator_type>;
|
|
387
|
+
// using reference = value_type&;
|
|
388
|
+
// using const_reference = const value_type&;
|
|
389
|
+
// using size_type = typename __alloc_traits::size_type;
|
|
390
|
+
// using difference_type = typename __alloc_traits::difference_type;
|
|
391
|
+
// using pointer = typename __alloc_traits::pointer;
|
|
392
|
+
// using const_pointer = typename __alloc_traits::const_pointer;
|
|
393
|
+
// using iterator = pointer;
|
|
394
|
+
// using const_iterator = const_pointer;
|
|
395
|
+
// using __sentinel_type = /* type that represents the layout's sentinel */;
|
|
396
|
+
//
|
|
397
|
+
// public:
|
|
398
|
+
// __layout() = default;
|
|
399
|
+
// explicit __layout(const allocator_type&);
|
|
400
|
+
//
|
|
401
|
+
// pointer __front_cap();
|
|
402
|
+
// const_pointer __front_cap() const;
|
|
403
|
+
//
|
|
404
|
+
// pointer begin();
|
|
405
|
+
// const_pointer begin() const;
|
|
406
|
+
//
|
|
407
|
+
// pointer end();
|
|
408
|
+
// pointer end() const;
|
|
409
|
+
//
|
|
410
|
+
// size_type size() const;
|
|
411
|
+
// bool empty() const;
|
|
412
|
+
// size_type capacity() const;
|
|
413
|
+
//
|
|
414
|
+
// allocator_type& __get_allocator();
|
|
415
|
+
// allocator_type const& __get_allocator() const;
|
|
416
|
+
//
|
|
417
|
+
// __sentinel_type __raw_sentinel() const;
|
|
418
|
+
// __sentinel_type __raw_capacity() const;
|
|
419
|
+
//
|
|
420
|
+
// void __set_data(pointer);
|
|
421
|
+
// void __set_valid_range(pointer __begin, pointer __end);
|
|
422
|
+
// void __set_valid_range(pointer __begin, size_type __size);
|
|
423
|
+
// void __set_sentinel(pointer __end);
|
|
424
|
+
// void __set_sentinel(size_type __size);
|
|
425
|
+
//
|
|
426
|
+
// void __set_capacity(size_type __capacity);
|
|
427
|
+
// void __set_capacity(pointer __capacity);
|
|
428
|
+
//
|
|
429
|
+
// size_type __front_spare() const;
|
|
430
|
+
// size_type __back_spare() const;
|
|
431
|
+
//
|
|
432
|
+
// reference back();
|
|
433
|
+
// const_reference back() const;
|
|
434
|
+
//
|
|
435
|
+
// template<class _OtherLayout>
|
|
436
|
+
// void __swap_without_allocator(_OtherLayout&);
|
|
437
|
+
// void swap(__layout&);
|
|
438
|
+
//
|
|
439
|
+
// void __reset();
|
|
440
|
+
// void __copy_without_alloc(__layout const&);
|
|
441
|
+
// };
|
|
442
|
+
//
|
|
443
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
444
|
+
class __split_buffer : _Layout<__split_buffer<_Tp, _Allocator, _Layout>, _Tp, _Allocator> {
|
|
445
|
+
using __base_type _LIBCPP_NODEBUG = _Layout<__split_buffer<_Tp, _Allocator, _Layout>, _Tp, _Allocator>;
|
|
446
|
+
|
|
447
|
+
public:
|
|
448
|
+
using __base_type::__back_spare;
|
|
449
|
+
using __base_type::__copy_without_alloc;
|
|
450
|
+
using __base_type::__front_cap;
|
|
451
|
+
using __base_type::__front_spare;
|
|
452
|
+
using __base_type::__get_allocator;
|
|
453
|
+
using __base_type::__raw_capacity;
|
|
454
|
+
using __base_type::__raw_sentinel;
|
|
455
|
+
using __base_type::__reset;
|
|
456
|
+
using __base_type::__set_capacity;
|
|
457
|
+
using __base_type::__set_data;
|
|
458
|
+
using __base_type::__set_sentinel;
|
|
459
|
+
using __base_type::__set_valid_range;
|
|
460
|
+
|
|
461
|
+
using typename __base_type::__alloc_traits;
|
|
462
|
+
using typename __base_type::allocator_type;
|
|
463
|
+
using typename __base_type::const_iterator;
|
|
464
|
+
using typename __base_type::const_pointer;
|
|
465
|
+
using typename __base_type::const_reference;
|
|
466
|
+
using typename __base_type::difference_type;
|
|
467
|
+
using typename __base_type::iterator;
|
|
468
|
+
using typename __base_type::pointer;
|
|
469
|
+
using typename __base_type::reference;
|
|
470
|
+
using typename __base_type::size_type;
|
|
471
|
+
using typename __base_type::value_type;
|
|
67
472
|
|
|
68
473
|
// A __split_buffer contains the following members which may be trivially relocatable:
|
|
69
474
|
// - pointer: may be trivially relocatable, so it's checked
|
|
@@ -73,36 +478,24 @@ public:
|
|
|
73
478
|
__libcpp_is_trivially_relocatable<pointer>::value && __libcpp_is_trivially_relocatable<allocator_type>::value,
|
|
74
479
|
__split_buffer,
|
|
75
480
|
void>;
|
|
76
|
-
using __replaceable _LIBCPP_NODEBUG =
|
|
77
|
-
__conditional_t<__is_replaceable_v<pointer> && __container_allocator_is_replaceable<__alloc_traits>::value,
|
|
78
|
-
__split_buffer,
|
|
79
|
-
void>;
|
|
80
|
-
|
|
81
|
-
pointer __first_;
|
|
82
|
-
pointer __begin_;
|
|
83
|
-
pointer __end_;
|
|
84
|
-
_LIBCPP_COMPRESSED_PAIR(pointer, __cap_, allocator_type, __alloc_);
|
|
85
481
|
|
|
86
482
|
__split_buffer(const __split_buffer&) = delete;
|
|
87
483
|
__split_buffer& operator=(const __split_buffer&) = delete;
|
|
88
484
|
|
|
89
|
-
|
|
90
|
-
_NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
|
|
91
|
-
: __first_(nullptr), __begin_(nullptr), __end_(nullptr), __cap_(nullptr) {}
|
|
485
|
+
_LIBCPP_HIDE_FROM_ABI __split_buffer() = default;
|
|
92
486
|
|
|
93
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit __split_buffer(
|
|
94
|
-
: __first_(nullptr), __begin_(nullptr), __end_(nullptr), __cap_(nullptr), __alloc_(__a) {}
|
|
487
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit __split_buffer(allocator_type& __a) : __base_type(__a) {}
|
|
95
488
|
|
|
96
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit __split_buffer(const
|
|
97
|
-
:
|
|
489
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI explicit __split_buffer(const allocator_type& __a)
|
|
490
|
+
: __base_type(__a) {}
|
|
98
491
|
|
|
99
492
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI
|
|
100
|
-
__split_buffer(size_type __cap, size_type __start,
|
|
493
|
+
__split_buffer(size_type __cap, size_type __start, allocator_type& __a);
|
|
101
494
|
|
|
102
495
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __split_buffer(__split_buffer&& __c)
|
|
103
496
|
_NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);
|
|
104
497
|
|
|
105
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __split_buffer(__split_buffer&& __c, const
|
|
498
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __split_buffer(__split_buffer&& __c, const allocator_type& __a);
|
|
106
499
|
|
|
107
500
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI __split_buffer& operator=(__split_buffer&& __c)
|
|
108
501
|
_NOEXCEPT_((__alloc_traits::propagate_on_container_move_assignment::value &&
|
|
@@ -111,36 +504,16 @@ public:
|
|
|
111
504
|
|
|
112
505
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI ~__split_buffer();
|
|
113
506
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT { __destruct_at_end(__begin_); }
|
|
507
|
+
using __base_type::back;
|
|
508
|
+
using __base_type::begin;
|
|
509
|
+
using __base_type::capacity;
|
|
510
|
+
using __base_type::empty;
|
|
511
|
+
using __base_type::end;
|
|
512
|
+
using __base_type::size;
|
|
121
513
|
|
|
122
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool empty() const { return __end_ == __begin_; }
|
|
127
|
-
|
|
128
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type capacity() const {
|
|
129
|
-
return static_cast<size_type>(__cap_ - __first_);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type __front_spare() const {
|
|
133
|
-
return static_cast<size_type>(__begin_ - __first_);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI size_type __back_spare() const {
|
|
137
|
-
return static_cast<size_type>(__cap_ - __end_);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI reference front() { return *__begin_; }
|
|
141
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI const_reference front() const { return *__begin_; }
|
|
142
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI reference back() { return *(__end_ - 1); }
|
|
143
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI const_reference back() const { return *(__end_ - 1); }
|
|
514
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void clear() _NOEXCEPT { __destruct_at_end(begin()); }
|
|
515
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI reference front() { return *begin(); }
|
|
516
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI const_reference front() const { return *begin(); }
|
|
144
517
|
|
|
145
518
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void shrink_to_fit() _NOEXCEPT;
|
|
146
519
|
|
|
@@ -149,8 +522,8 @@ public:
|
|
|
149
522
|
template <class... _Args>
|
|
150
523
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void emplace_back(_Args&&... __args);
|
|
151
524
|
|
|
152
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void pop_front() { __destruct_at_begin(
|
|
153
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void pop_back() { __destruct_at_end(
|
|
525
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void pop_front() { __destruct_at_begin(begin() + 1); }
|
|
526
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void pop_back() { __destruct_at_end(end() - 1); }
|
|
154
527
|
|
|
155
528
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __construct_at_end(size_type __n);
|
|
156
529
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __construct_at_end(size_type __n, const_reference __x);
|
|
@@ -182,244 +555,242 @@ public:
|
|
|
182
555
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __destruct_at_end(pointer __new_last, true_type) _NOEXCEPT;
|
|
183
556
|
|
|
184
557
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void swap(__split_buffer& __x)
|
|
185
|
-
_NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || __is_nothrow_swappable_v<
|
|
558
|
+
_NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || __is_nothrow_swappable_v<allocator_type>);
|
|
559
|
+
|
|
560
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool __invariants() const {
|
|
561
|
+
if (__front_cap() == nullptr) {
|
|
562
|
+
if (begin() != nullptr)
|
|
563
|
+
return false;
|
|
564
|
+
|
|
565
|
+
if (!empty())
|
|
566
|
+
return false;
|
|
567
|
+
|
|
568
|
+
if (capacity() != 0)
|
|
569
|
+
return false;
|
|
570
|
+
|
|
571
|
+
return true;
|
|
572
|
+
} else {
|
|
573
|
+
if (begin() < __front_cap())
|
|
574
|
+
return false;
|
|
186
575
|
|
|
187
|
-
|
|
576
|
+
if (capacity() < size())
|
|
577
|
+
return false;
|
|
578
|
+
|
|
579
|
+
if (end() < begin())
|
|
580
|
+
return false;
|
|
581
|
+
|
|
582
|
+
return true;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void
|
|
587
|
+
__swap_without_allocator(__split_buffer<value_type, allocator_type, _Layout>& __other) _NOEXCEPT {
|
|
588
|
+
__base_type::__swap_without_allocator(__other);
|
|
589
|
+
}
|
|
188
590
|
|
|
189
591
|
private:
|
|
190
592
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__split_buffer& __c, true_type)
|
|
191
593
|
_NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value) {
|
|
192
|
-
|
|
594
|
+
__get_allocator() = std::move(__c.__get_allocator());
|
|
193
595
|
}
|
|
194
596
|
|
|
195
597
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI void __move_assign_alloc(__split_buffer&, false_type) _NOEXCEPT {}
|
|
196
598
|
|
|
197
599
|
struct _ConstructTransaction {
|
|
198
600
|
_LIBCPP_CONSTEXPR_SINCE_CXX20
|
|
199
|
-
_LIBCPP_HIDE_FROM_ABI explicit _ConstructTransaction(
|
|
200
|
-
: __pos_(
|
|
201
|
-
__end_(
|
|
202
|
-
|
|
601
|
+
_LIBCPP_HIDE_FROM_ABI explicit _ConstructTransaction(__split_buffer* __parent, pointer __p, size_type __n) _NOEXCEPT
|
|
602
|
+
: __pos_(__p),
|
|
603
|
+
__end_(__p + __n),
|
|
604
|
+
__parent_(__parent) {}
|
|
203
605
|
|
|
204
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI ~_ConstructTransaction() {
|
|
606
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI ~_ConstructTransaction() { __parent_->__set_sentinel(__pos_); }
|
|
205
607
|
|
|
206
608
|
pointer __pos_;
|
|
207
609
|
const pointer __end_;
|
|
208
610
|
|
|
209
611
|
private:
|
|
210
|
-
|
|
612
|
+
__split_buffer* __parent_;
|
|
211
613
|
};
|
|
212
|
-
};
|
|
213
614
|
|
|
214
|
-
template <class
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
if (__begin_ != nullptr)
|
|
218
|
-
return false;
|
|
219
|
-
if (__end_ != nullptr)
|
|
220
|
-
return false;
|
|
221
|
-
if (__cap_ != nullptr)
|
|
222
|
-
return false;
|
|
223
|
-
} else {
|
|
224
|
-
if (__begin_ < __first_)
|
|
225
|
-
return false;
|
|
226
|
-
if (__end_ < __begin_)
|
|
227
|
-
return false;
|
|
228
|
-
if (__cap_ < __end_)
|
|
229
|
-
return false;
|
|
230
|
-
}
|
|
231
|
-
return true;
|
|
232
|
-
}
|
|
615
|
+
template <class _T2, class _A2, template <class, class, class> class _L2>
|
|
616
|
+
friend class __split_buffer;
|
|
617
|
+
};
|
|
233
618
|
|
|
234
|
-
// Default constructs __n objects starting at
|
|
619
|
+
// Default constructs __n objects starting at `end()`
|
|
235
620
|
// throws if construction throws
|
|
236
621
|
// Precondition: __n > 0
|
|
237
622
|
// Precondition: size() + __n <= capacity()
|
|
238
623
|
// Postcondition: size() == size() + __n
|
|
239
|
-
template <class _Tp, class _Allocator>
|
|
240
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n) {
|
|
241
|
-
_ConstructTransaction __tx(
|
|
624
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
625
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator, _Layout>::__construct_at_end(size_type __n) {
|
|
626
|
+
_ConstructTransaction __tx(this, end(), __n);
|
|
242
627
|
for (; __tx.__pos_ != __tx.__end_; ++__tx.__pos_) {
|
|
243
|
-
__alloc_traits::construct(
|
|
628
|
+
__alloc_traits::construct(__get_allocator(), std::__to_address(__tx.__pos_));
|
|
244
629
|
}
|
|
245
630
|
}
|
|
246
631
|
|
|
247
|
-
// Copy constructs __n objects starting at
|
|
632
|
+
// Copy constructs __n objects starting at `end()` from __x
|
|
248
633
|
// throws if construction throws
|
|
249
634
|
// Precondition: __n > 0
|
|
250
635
|
// Precondition: size() + __n <= capacity()
|
|
251
636
|
// Postcondition: size() == old size() + __n
|
|
252
637
|
// Postcondition: [i] == __x for all i in [size() - __n, __n)
|
|
253
|
-
template <class _Tp, class _Allocator>
|
|
638
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
254
639
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 void
|
|
255
|
-
__split_buffer<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x) {
|
|
256
|
-
_ConstructTransaction __tx(
|
|
640
|
+
__split_buffer<_Tp, _Allocator, _Layout>::__construct_at_end(size_type __n, const_reference __x) {
|
|
641
|
+
_ConstructTransaction __tx(this, end(), __n);
|
|
257
642
|
for (; __tx.__pos_ != __tx.__end_; ++__tx.__pos_) {
|
|
258
|
-
__alloc_traits::construct(
|
|
643
|
+
__alloc_traits::construct(__get_allocator(), std::__to_address(__tx.__pos_), __x);
|
|
259
644
|
}
|
|
260
645
|
}
|
|
261
646
|
|
|
262
|
-
template <class _Tp, class _Allocator>
|
|
647
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
263
648
|
template <class _Iterator, class _Sentinel>
|
|
264
649
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 void
|
|
265
|
-
__split_buffer<_Tp, _Allocator>::__construct_at_end_with_sentinel(_Iterator __first, _Sentinel __last) {
|
|
266
|
-
|
|
650
|
+
__split_buffer<_Tp, _Allocator, _Layout>::__construct_at_end_with_sentinel(_Iterator __first, _Sentinel __last) {
|
|
651
|
+
allocator_type& __a = __get_allocator();
|
|
267
652
|
for (; __first != __last; ++__first) {
|
|
268
|
-
if (
|
|
269
|
-
size_type __old_cap =
|
|
653
|
+
if (__back_spare() == 0) {
|
|
654
|
+
size_type __old_cap = capacity();
|
|
270
655
|
size_type __new_cap = std::max<size_type>(2 * __old_cap, 8);
|
|
271
656
|
__split_buffer __buf(__new_cap, 0, __a);
|
|
272
|
-
|
|
273
|
-
|
|
657
|
+
pointer __buf_end = __buf.end();
|
|
658
|
+
pointer __end = end();
|
|
659
|
+
for (pointer __p = begin(); __p != __end; ++__p) {
|
|
660
|
+
__alloc_traits::construct(__buf.__get_allocator(), std::__to_address(__buf_end), std::move(*__p));
|
|
661
|
+
__buf.__set_sentinel(++__buf_end);
|
|
662
|
+
}
|
|
274
663
|
swap(__buf);
|
|
275
664
|
}
|
|
276
|
-
|
|
277
|
-
|
|
665
|
+
|
|
666
|
+
__alloc_traits::construct(__a, std::__to_address(end()), *__first);
|
|
667
|
+
__set_sentinel(size() + 1);
|
|
278
668
|
}
|
|
279
669
|
}
|
|
280
|
-
|
|
670
|
+
|
|
671
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
281
672
|
template <class _ForwardIterator, __enable_if_t<__has_forward_iterator_category<_ForwardIterator>::value, int> >
|
|
282
673
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 void
|
|
283
|
-
__split_buffer<_Tp, _Allocator>::__construct_at_end(_ForwardIterator __first, _ForwardIterator __last) {
|
|
674
|
+
__split_buffer<_Tp, _Allocator, _Layout>::__construct_at_end(_ForwardIterator __first, _ForwardIterator __last) {
|
|
284
675
|
__construct_at_end_with_size(__first, std::distance(__first, __last));
|
|
285
676
|
}
|
|
286
677
|
|
|
287
|
-
template <class _Tp, class _Allocator>
|
|
678
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
288
679
|
template <class _ForwardIterator>
|
|
289
680
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 void
|
|
290
|
-
__split_buffer<_Tp, _Allocator>::__construct_at_end_with_size(_ForwardIterator __first, size_type __n) {
|
|
291
|
-
_ConstructTransaction __tx(
|
|
681
|
+
__split_buffer<_Tp, _Allocator, _Layout>::__construct_at_end_with_size(_ForwardIterator __first, size_type __n) {
|
|
682
|
+
_ConstructTransaction __tx(this, end(), __n);
|
|
292
683
|
for (; __tx.__pos_ != __tx.__end_; ++__tx.__pos_, (void)++__first) {
|
|
293
|
-
__alloc_traits::construct(
|
|
684
|
+
__alloc_traits::construct(__get_allocator(), std::__to_address(__tx.__pos_), *__first);
|
|
294
685
|
}
|
|
295
686
|
}
|
|
296
687
|
|
|
297
|
-
template <class _Tp, class _Allocator>
|
|
688
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
298
689
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline void
|
|
299
|
-
__split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, false_type) {
|
|
300
|
-
|
|
301
|
-
|
|
690
|
+
__split_buffer<_Tp, _Allocator, _Layout>::__destruct_at_begin(pointer __new_begin, false_type) {
|
|
691
|
+
pointer __begin = begin();
|
|
692
|
+
// Updating begin at every iteration is unnecessary because destruction can't throw.
|
|
693
|
+
while (__begin != __new_begin)
|
|
694
|
+
__alloc_traits::destroy(__get_allocator(), std::__to_address(__begin++));
|
|
695
|
+
__set_valid_range(__begin, end());
|
|
302
696
|
}
|
|
303
697
|
|
|
304
|
-
template <class _Tp, class _Allocator>
|
|
698
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
305
699
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline void
|
|
306
|
-
__split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, true_type) {
|
|
307
|
-
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
template <class _Tp, class _Allocator>
|
|
311
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline _LIBCPP_HIDE_FROM_ABI void
|
|
312
|
-
__split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, false_type) _NOEXCEPT {
|
|
313
|
-
while (__new_last != __end_)
|
|
314
|
-
__alloc_traits::destroy(__alloc_, std::__to_address(--__end_));
|
|
700
|
+
__split_buffer<_Tp, _Allocator, _Layout>::__destruct_at_begin(pointer __new_begin, true_type) {
|
|
701
|
+
__set_valid_range(__new_begin, end());
|
|
315
702
|
}
|
|
316
703
|
|
|
317
|
-
template <class _Tp, class _Allocator>
|
|
704
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
318
705
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline _LIBCPP_HIDE_FROM_ABI void
|
|
319
|
-
__split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last,
|
|
320
|
-
|
|
706
|
+
__split_buffer<_Tp, _Allocator, _Layout>::__destruct_at_end(pointer __new_last, false_type) _NOEXCEPT {
|
|
707
|
+
pointer __end = end();
|
|
708
|
+
// Updating begin at every iteration is unnecessary because destruction can't throw.
|
|
709
|
+
while (__new_last != __end)
|
|
710
|
+
__alloc_traits::destroy(__get_allocator(), std::__to_address(--__end));
|
|
711
|
+
__set_sentinel(__end);
|
|
321
712
|
}
|
|
322
713
|
|
|
323
|
-
template <class _Tp, class _Allocator>
|
|
714
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
324
715
|
_LIBCPP_CONSTEXPR_SINCE_CXX20
|
|
325
|
-
__split_buffer<_Tp, _Allocator>::__split_buffer(size_type __cap, size_type __start,
|
|
326
|
-
:
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
__cap = __allocation.count;
|
|
716
|
+
__split_buffer<_Tp, _Allocator, _Layout>::__split_buffer(size_type __cap, size_type __start, allocator_type& __a)
|
|
717
|
+
: __base_type(__a) {
|
|
718
|
+
_LIBCPP_ASSERT_INTERNAL(__cap >= __start, "can't have a start point outside the capacity");
|
|
719
|
+
if (__cap > 0) {
|
|
720
|
+
auto __allocation = std::__allocate_at_least(__get_allocator(), __cap);
|
|
721
|
+
__set_data(__allocation.ptr);
|
|
722
|
+
__cap = __allocation.count;
|
|
333
723
|
}
|
|
334
|
-
|
|
335
|
-
|
|
724
|
+
|
|
725
|
+
pointer __begin = __front_cap() + __start;
|
|
726
|
+
__set_valid_range(__begin, __begin);
|
|
727
|
+
__set_capacity(__cap);
|
|
336
728
|
}
|
|
337
729
|
|
|
338
|
-
template <class _Tp, class _Allocator>
|
|
339
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 __split_buffer<_Tp, _Allocator>::~__split_buffer() {
|
|
730
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
731
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 __split_buffer<_Tp, _Allocator, _Layout>::~__split_buffer() {
|
|
340
732
|
clear();
|
|
341
|
-
if (
|
|
342
|
-
__alloc_traits::deallocate(
|
|
733
|
+
if (__front_cap())
|
|
734
|
+
__alloc_traits::deallocate(__get_allocator(), __front_cap(), capacity());
|
|
343
735
|
}
|
|
344
736
|
|
|
345
|
-
template <class _Tp, class _Allocator>
|
|
346
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 __split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c)
|
|
737
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
738
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 __split_buffer<_Tp, _Allocator, _Layout>::__split_buffer(__split_buffer&& __c)
|
|
347
739
|
_NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value)
|
|
348
|
-
:
|
|
349
|
-
|
|
350
|
-
__end_(std::move(__c.__end_)),
|
|
351
|
-
__cap_(std::move(__c.__cap_)),
|
|
352
|
-
__alloc_(std::move(__c.__alloc_)) {
|
|
353
|
-
__c.__first_ = nullptr;
|
|
354
|
-
__c.__begin_ = nullptr;
|
|
355
|
-
__c.__end_ = nullptr;
|
|
356
|
-
__c.__cap_ = nullptr;
|
|
740
|
+
: __base_type(std::move(__c)) {
|
|
741
|
+
__c.__reset();
|
|
357
742
|
}
|
|
358
743
|
|
|
359
|
-
template <class _Tp, class _Allocator>
|
|
744
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
360
745
|
_LIBCPP_CONSTEXPR_SINCE_CXX20
|
|
361
|
-
__split_buffer<_Tp, _Allocator>::__split_buffer(__split_buffer&& __c, const
|
|
362
|
-
:
|
|
363
|
-
if (__a == __c.
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
__c.__first_ = nullptr;
|
|
369
|
-
__c.__begin_ = nullptr;
|
|
370
|
-
__c.__end_ = nullptr;
|
|
371
|
-
__c.__cap_ = nullptr;
|
|
746
|
+
__split_buffer<_Tp, _Allocator, _Layout>::__split_buffer(__split_buffer&& __c, const allocator_type& __a)
|
|
747
|
+
: __base_type(__a) {
|
|
748
|
+
if (__a == __c.__get_allocator()) {
|
|
749
|
+
__set_data(__c.__front_cap());
|
|
750
|
+
__set_valid_range(__c.begin(), __c.end());
|
|
751
|
+
__set_capacity(__c.capacity());
|
|
752
|
+
__c.__reset();
|
|
372
753
|
} else {
|
|
373
|
-
auto __allocation = std::__allocate_at_least(
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
754
|
+
auto __allocation = std::__allocate_at_least(__get_allocator(), __c.size());
|
|
755
|
+
__set_data(__allocation.ptr);
|
|
756
|
+
__set_valid_range(__front_cap(), __front_cap());
|
|
757
|
+
__set_capacity(__allocation.count);
|
|
377
758
|
typedef move_iterator<iterator> _Ip;
|
|
378
759
|
__construct_at_end(_Ip(__c.begin()), _Ip(__c.end()));
|
|
379
760
|
}
|
|
380
761
|
}
|
|
381
762
|
|
|
382
|
-
template <class _Tp, class _Allocator>
|
|
383
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 __split_buffer<_Tp, _Allocator>&
|
|
384
|
-
__split_buffer<_Tp, _Allocator>::operator=(__split_buffer&& __c)
|
|
763
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
764
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 __split_buffer<_Tp, _Allocator, _Layout>&
|
|
765
|
+
__split_buffer<_Tp, _Allocator, _Layout>::operator=(__split_buffer&& __c)
|
|
385
766
|
_NOEXCEPT_((__alloc_traits::propagate_on_container_move_assignment::value &&
|
|
386
767
|
is_nothrow_move_assignable<allocator_type>::value) ||
|
|
387
768
|
!__alloc_traits::propagate_on_container_move_assignment::value) {
|
|
388
769
|
clear();
|
|
389
770
|
shrink_to_fit();
|
|
390
|
-
|
|
391
|
-
__begin_ = __c.__begin_;
|
|
392
|
-
__end_ = __c.__end_;
|
|
393
|
-
__cap_ = __c.__cap_;
|
|
771
|
+
__copy_without_alloc(__c);
|
|
394
772
|
__move_assign_alloc(__c, integral_constant<bool, __alloc_traits::propagate_on_container_move_assignment::value>());
|
|
395
|
-
__c.
|
|
773
|
+
__c.__reset();
|
|
396
774
|
return *this;
|
|
397
775
|
}
|
|
398
776
|
|
|
399
|
-
template <class _Tp, class _Allocator>
|
|
400
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator>::swap(__split_buffer& __x)
|
|
401
|
-
_NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || __is_nothrow_swappable_v<
|
|
402
|
-
|
|
403
|
-
std::swap(__begin_, __x.__begin_);
|
|
404
|
-
std::swap(__end_, __x.__end_);
|
|
405
|
-
std::swap(__cap_, __x.__cap_);
|
|
406
|
-
std::__swap_allocator(__alloc_, __x.__alloc_);
|
|
777
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
778
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator, _Layout>::swap(__split_buffer& __x)
|
|
779
|
+
_NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value || __is_nothrow_swappable_v<allocator_type>) {
|
|
780
|
+
__base_type::swap(__x);
|
|
407
781
|
}
|
|
408
782
|
|
|
409
|
-
template <class _Tp, class _Allocator>
|
|
410
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator>::shrink_to_fit() _NOEXCEPT {
|
|
783
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
784
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator, _Layout>::shrink_to_fit() _NOEXCEPT {
|
|
411
785
|
if (capacity() > size()) {
|
|
412
786
|
#if _LIBCPP_HAS_EXCEPTIONS
|
|
413
787
|
try {
|
|
414
788
|
#endif // _LIBCPP_HAS_EXCEPTIONS
|
|
415
|
-
__split_buffer<value_type,
|
|
789
|
+
__split_buffer<value_type, allocator_type, _Layout> __t(size(), 0, __get_allocator());
|
|
416
790
|
if (__t.capacity() < capacity()) {
|
|
417
|
-
__t.__construct_at_end(move_iterator<pointer>(
|
|
418
|
-
__t.
|
|
419
|
-
|
|
420
|
-
std::swap(__begin_, __t.__begin_);
|
|
421
|
-
std::swap(__end_, __t.__end_);
|
|
422
|
-
std::swap(__cap_, __t.__cap_);
|
|
791
|
+
__t.__construct_at_end(move_iterator<pointer>(begin()), move_iterator<pointer>(end()));
|
|
792
|
+
__t.__set_sentinel(size());
|
|
793
|
+
__swap_without_allocator(__t);
|
|
423
794
|
}
|
|
424
795
|
#if _LIBCPP_HAS_EXCEPTIONS
|
|
425
796
|
} catch (...) {
|
|
@@ -428,55 +799,56 @@ _LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator>::shrink_to_fi
|
|
|
428
799
|
}
|
|
429
800
|
}
|
|
430
801
|
|
|
431
|
-
template <class _Tp, class _Allocator>
|
|
802
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
432
803
|
template <class... _Args>
|
|
433
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator>::emplace_front(_Args&&... __args) {
|
|
434
|
-
if (
|
|
435
|
-
|
|
436
|
-
|
|
804
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator, _Layout>::emplace_front(_Args&&... __args) {
|
|
805
|
+
if (__front_spare() == 0) {
|
|
806
|
+
pointer __end = end();
|
|
807
|
+
if (__back_spare() > 0) {
|
|
808
|
+
// The elements are pressed up against the front of the buffer: we need to move them back a
|
|
809
|
+
// little bit to make `emplace_front` have amortised O(1) complexity.
|
|
810
|
+
difference_type __d = __back_spare();
|
|
437
811
|
__d = (__d + 1) / 2;
|
|
438
|
-
|
|
439
|
-
|
|
812
|
+
auto __new_end = __end + __d;
|
|
813
|
+
__set_valid_range(std::move_backward(begin(), __end, __new_end), __new_end);
|
|
440
814
|
} else {
|
|
441
|
-
size_type __c = std::max<size_type>(2 *
|
|
442
|
-
__split_buffer<value_type,
|
|
443
|
-
__t.__construct_at_end(move_iterator<pointer>(
|
|
444
|
-
|
|
445
|
-
std::swap(__begin_, __t.__begin_);
|
|
446
|
-
std::swap(__end_, __t.__end_);
|
|
447
|
-
std::swap(__cap_, __t.__cap_);
|
|
815
|
+
size_type __c = std::max<size_type>(2 * capacity(), 1);
|
|
816
|
+
__split_buffer<value_type, allocator_type, _Layout> __t(__c, (__c + 3) / 4, __get_allocator());
|
|
817
|
+
__t.__construct_at_end(move_iterator<pointer>(begin()), move_iterator<pointer>(__end));
|
|
818
|
+
__base_type::__swap_without_allocator(__t);
|
|
448
819
|
}
|
|
449
820
|
}
|
|
450
|
-
|
|
451
|
-
|
|
821
|
+
|
|
822
|
+
__alloc_traits::construct(__get_allocator(), std::__to_address(begin() - 1), std::forward<_Args>(__args)...);
|
|
823
|
+
__set_valid_range(begin() - 1, size() + 1);
|
|
452
824
|
}
|
|
453
825
|
|
|
454
|
-
template <class _Tp, class _Allocator>
|
|
826
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
455
827
|
template <class... _Args>
|
|
456
|
-
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator>::emplace_back(_Args&&... __args) {
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
828
|
+
_LIBCPP_CONSTEXPR_SINCE_CXX20 void __split_buffer<_Tp, _Allocator, _Layout>::emplace_back(_Args&&... __args) {
|
|
829
|
+
pointer __end = end();
|
|
830
|
+
if (__back_spare() == 0) {
|
|
831
|
+
if (__front_spare() > 0) {
|
|
832
|
+
difference_type __d = __front_spare();
|
|
460
833
|
__d = (__d + 1) / 2;
|
|
461
|
-
|
|
462
|
-
|
|
834
|
+
__end = std::move(begin(), __end, begin() - __d);
|
|
835
|
+
__set_valid_range(begin() - __d, __end);
|
|
463
836
|
} else {
|
|
464
|
-
size_type __c = std::max<size_type>(2 *
|
|
465
|
-
__split_buffer<value_type,
|
|
466
|
-
__t.__construct_at_end(move_iterator<pointer>(
|
|
467
|
-
|
|
468
|
-
std::swap(__begin_, __t.__begin_);
|
|
469
|
-
std::swap(__end_, __t.__end_);
|
|
470
|
-
std::swap(__cap_, __t.__cap_);
|
|
837
|
+
size_type __c = std::max<size_type>(2 * capacity(), 1);
|
|
838
|
+
__split_buffer<value_type, allocator_type, _Layout> __t(__c, __c / 4, __get_allocator());
|
|
839
|
+
__t.__construct_at_end(move_iterator<pointer>(begin()), move_iterator<pointer>(__end));
|
|
840
|
+
__base_type::__swap_without_allocator(__t);
|
|
471
841
|
}
|
|
472
842
|
}
|
|
473
|
-
|
|
474
|
-
|
|
843
|
+
|
|
844
|
+
__alloc_traits::construct(__get_allocator(), std::__to_address(__end), std::forward<_Args>(__args)...);
|
|
845
|
+
__set_sentinel(++__end);
|
|
475
846
|
}
|
|
476
847
|
|
|
477
|
-
template <class _Tp, class _Allocator>
|
|
848
|
+
template <class _Tp, class _Allocator, template <class, class, class> class _Layout>
|
|
478
849
|
_LIBCPP_CONSTEXPR_SINCE_CXX20 inline _LIBCPP_HIDE_FROM_ABI void
|
|
479
|
-
swap(__split_buffer<_Tp, _Allocator>& __x, __split_buffer<_Tp, _Allocator>& __y)
|
|
850
|
+
swap(__split_buffer<_Tp, _Allocator, _Layout>& __x, __split_buffer<_Tp, _Allocator, _Layout>& __y)
|
|
851
|
+
_NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) {
|
|
480
852
|
__x.swap(__y);
|
|
481
853
|
}
|
|
482
854
|
|