re2 1.22.2 → 1.23.0
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/README.md +60 -4
- package/binding.gyp +5 -1
- package/lib/addon.cc +4 -0
- package/lib/new.cc +1 -246
- package/lib/pattern.cc +252 -0
- package/lib/pattern.h +10 -0
- package/lib/set.cc +777 -0
- package/lib/wrapped_re2_set.h +42 -0
- package/package.json +21 -9
- package/re2.d.ts +46 -9
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +14 -24
- package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +3 -3
- package/vendor/abseil-cpp/CMake/README.md +2 -2
- package/vendor/abseil-cpp/CMakeLists.txt +3 -3
- package/vendor/abseil-cpp/MODULE.bazel +6 -9
- package/vendor/abseil-cpp/README.md +6 -8
- package/vendor/abseil-cpp/absl/abseil.podspec.gen.py +6 -4
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/algorithm/container.h +2 -19
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +4 -11
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +60 -45
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +57 -38
- package/vendor/abseil-cpp/absl/base/attributes.h +76 -7
- package/vendor/abseil-cpp/absl/base/attributes_test.cc +43 -0
- package/vendor/abseil-cpp/absl/base/call_once.h +11 -12
- package/vendor/abseil-cpp/absl/base/config.h +22 -129
- package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +0 -4
- package/vendor/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- package/vendor/abseil-cpp/absl/base/{internal/fast_type_id_test.cc → fast_type_id_test.cc} +34 -30
- package/vendor/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- package/vendor/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- package/vendor/abseil-cpp/absl/base/internal/endian.h +34 -38
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test.cc +85 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +97 -0
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -9
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
- package/vendor/abseil-cpp/absl/base/internal/poison.cc +7 -6
- package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +15 -28
- package/vendor/abseil-cpp/absl/base/internal/spinlock.h +65 -35
- package/vendor/abseil-cpp/absl/base/internal/spinlock_benchmark.cc +2 -2
- package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +2 -2
- package/vendor/abseil-cpp/absl/base/internal/thread_identity_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/base/internal/thread_identity_test.cc +4 -4
- package/vendor/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +4 -0
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- package/vendor/abseil-cpp/absl/base/no_destructor.h +11 -32
- package/vendor/abseil-cpp/absl/base/no_destructor_test.cc +0 -4
- package/vendor/abseil-cpp/absl/base/nullability.h +83 -72
- package/vendor/abseil-cpp/absl/base/nullability_test.cc +25 -64
- package/vendor/abseil-cpp/absl/base/options.h +3 -80
- package/vendor/abseil-cpp/absl/base/policy_checks.h +7 -7
- package/vendor/abseil-cpp/absl/base/raw_logging_test.cc +15 -0
- package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +50 -30
- package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -1
- package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +0 -1
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- package/vendor/abseil-cpp/absl/cleanup/cleanup_test.cc +0 -2
- package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +74 -1
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +73 -0
- package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +51 -9
- package/vendor/abseil-cpp/absl/container/btree_map.h +8 -6
- package/vendor/abseil-cpp/absl/container/btree_set.h +8 -6
- package/vendor/abseil-cpp/absl/container/btree_test.cc +89 -4
- package/vendor/abseil-cpp/absl/container/fixed_array.h +7 -15
- package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +17 -0
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +20 -15
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +8 -14
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +19 -14
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +46 -0
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +7 -6
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +28 -0
- package/vendor/abseil-cpp/absl/container/internal/btree.h +132 -29
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- package/vendor/abseil-cpp/absl/container/internal/common.h +43 -0
- package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +28 -24
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +4 -17
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +80 -17
- package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +32 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +13 -8
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults_test.cc +1 -52
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +9 -31
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +23 -32
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +5 -1
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +11 -23
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits_test.cc +14 -9
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +516 -0
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes_test.cc +259 -0
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -6
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +32 -13
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +8 -8
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- package/vendor/abseil-cpp/absl/container/internal/layout.h +26 -42
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +1506 -213
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +1095 -1658
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +3 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +31 -29
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +51 -20
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +79 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl_test.cc +66 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +707 -363
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +20 -15
- package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +0 -3
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +18 -13
- package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +3 -8
- package/vendor/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake +1 -1
- package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +9 -20
- package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +9 -20
- package/vendor/abseil-cpp/absl/copts/copts.py +24 -15
- package/vendor/abseil-cpp/absl/crc/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/crc/crc32c.cc +0 -4
- package/vendor/abseil-cpp/absl/crc/crc32c.h +7 -5
- package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +17 -4
- package/vendor/abseil-cpp/absl/crc/crc32c_test.cc +30 -0
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +17 -0
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
- package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +136 -165
- package/vendor/abseil-cpp/absl/crc/internal/gen_crc32c_consts.py +90 -0
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +7 -0
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +11 -10
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -14
- package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +161 -27
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +435 -1
- package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +55 -63
- package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -0
- package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +3 -0
- package/vendor/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- package/vendor/abseil-cpp/absl/flags/flag.h +4 -3
- package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +14 -13
- package/vendor/abseil-cpp/absl/flags/internal/flag.h +34 -34
- package/vendor/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
- package/vendor/abseil-cpp/absl/flags/internal/registry.h +4 -3
- package/vendor/abseil-cpp/absl/flags/internal/usage.cc +2 -2
- package/vendor/abseil-cpp/absl/flags/parse.cc +10 -6
- package/vendor/abseil-cpp/absl/flags/reflection.cc +9 -7
- package/vendor/abseil-cpp/absl/flags/usage.cc +2 -2
- package/vendor/abseil-cpp/absl/flags/usage_config.cc +2 -2
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +7 -6
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +2 -4
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +15 -15
- package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +10 -42
- package/vendor/abseil-cpp/absl/functional/function_ref.h +2 -9
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +10 -0
- package/vendor/abseil-cpp/absl/functional/function_type_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +112 -227
- package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- package/vendor/abseil-cpp/absl/functional/overload.h +0 -20
- package/vendor/abseil-cpp/absl/functional/overload_test.cc +1 -7
- package/vendor/abseil-cpp/absl/hash/BUILD.bazel +16 -9
- package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +6 -9
- package/vendor/abseil-cpp/absl/hash/hash.h +18 -0
- package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +3 -0
- package/vendor/abseil-cpp/absl/hash/hash_instantiated_test.cc +1 -1
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +131 -30
- package/vendor/abseil-cpp/absl/hash/hash_testing.h +20 -20
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +129 -17
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +326 -362
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +54 -151
- package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +14 -2
- package/vendor/abseil-cpp/absl/{strings/cord_buffer.cc → hash/internal/weakly_mixed_integer.h} +14 -6
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +7 -0
- package/vendor/abseil-cpp/absl/log/check.h +2 -1
- package/vendor/abseil-cpp/absl/log/check_test_impl.inc +308 -14
- package/vendor/abseil-cpp/absl/log/die_if_null.h +2 -2
- package/vendor/abseil-cpp/absl/log/flags_test.cc +7 -0
- package/vendor/abseil-cpp/absl/log/globals.h +4 -5
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +13 -9
- package/vendor/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- package/vendor/abseil-cpp/absl/log/internal/check_op.cc +24 -22
- package/vendor/abseil-cpp/absl/log/internal/check_op.h +149 -94
- package/vendor/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- package/vendor/abseil-cpp/absl/log/internal/conditions.h +7 -2
- package/vendor/abseil-cpp/absl/log/internal/fnmatch_test.cc +1 -0
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +84 -59
- package/vendor/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
- package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- package/vendor/abseil-cpp/absl/log/internal/proto.cc +3 -2
- package/vendor/abseil-cpp/absl/log/internal/proto.h +3 -3
- package/vendor/abseil-cpp/absl/log/internal/strip.h +4 -12
- package/vendor/abseil-cpp/absl/log/internal/structured.h +3 -7
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +9 -9
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- package/vendor/abseil-cpp/absl/log/internal/voidify.h +10 -4
- package/vendor/abseil-cpp/absl/log/log.h +48 -35
- package/vendor/abseil-cpp/absl/log/log_basic_test_impl.inc +45 -0
- package/vendor/abseil-cpp/absl/log/log_entry.cc +241 -19
- package/vendor/abseil-cpp/absl/log/log_entry.h +2 -0
- package/vendor/abseil-cpp/absl/log/log_format_test.cc +412 -6
- package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +20 -0
- package/vendor/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +15 -2
- package/vendor/abseil-cpp/absl/log/scoped_mock_log.h +7 -1
- package/vendor/abseil-cpp/absl/log/structured_test.cc +1 -0
- package/vendor/abseil-cpp/absl/memory/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/type_traits.h +46 -175
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +1 -478
- package/vendor/abseil-cpp/absl/numeric/BUILD.bazel +7 -3
- package/vendor/abseil-cpp/absl/numeric/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/numeric/bits.h +68 -2
- package/vendor/abseil-cpp/absl/numeric/bits_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/numeric/bits_test.cc +83 -0
- package/vendor/abseil-cpp/absl/numeric/int128.cc +0 -52
- package/vendor/abseil-cpp/absl/numeric/int128_benchmark.cc +14 -15
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +13 -8
- package/vendor/abseil-cpp/absl/numeric/internal/bits.h +39 -7
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +47 -0
- package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +38 -0
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +124 -0
- package/vendor/abseil-cpp/absl/profiling/hashtable.h +40 -0
- package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +462 -0
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +138 -0
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +7 -3
- package/vendor/abseil-cpp/absl/random/BUILD.bazel +6 -4
- package/vendor/abseil-cpp/absl/random/CMakeLists.txt +20 -19
- package/vendor/abseil-cpp/absl/random/benchmarks.cc +16 -23
- package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +7 -2
- package/vendor/abseil-cpp/absl/random/distributions.h +6 -8
- package/vendor/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +19 -20
- package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- package/vendor/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +24 -92
- package/vendor/abseil-cpp/absl/{base/inline_variable_test_b.cc → random/internal/entropy_pool.h} +14 -6
- package/vendor/abseil-cpp/absl/random/internal/entropy_pool_test.cc +119 -0
- package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +6 -7
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +39 -0
- package/vendor/abseil-cpp/absl/random/internal/randen_benchmarks.cc +8 -6
- package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- package/vendor/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- package/vendor/abseil-cpp/absl/random/internal/seed_material_test.cc +3 -0
- package/vendor/abseil-cpp/absl/random/mock_distributions_test.cc +5 -4
- package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +8 -10
- package/vendor/abseil-cpp/absl/random/random.h +88 -53
- package/vendor/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +26 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.cc +4 -3
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +194 -32
- package/vendor/abseil-cpp/absl/status/status.cc +4 -8
- package/vendor/abseil-cpp/absl/status/status.h +8 -8
- package/vendor/abseil-cpp/absl/{base/inline_variable_test_a.cc → status/status_benchmark.cc} +20 -10
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +65 -0
- package/vendor/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- package/vendor/abseil-cpp/absl/status/statusor.cc +2 -2
- package/vendor/abseil-cpp/absl/status/statusor.h +49 -102
- package/vendor/abseil-cpp/absl/status/statusor_benchmark.cc +480 -0
- package/vendor/abseil-cpp/absl/status/statusor_test.cc +323 -1
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +70 -34
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +6 -3
- package/vendor/abseil-cpp/absl/strings/ascii.cc +9 -9
- package/vendor/abseil-cpp/absl/strings/ascii.h +18 -18
- package/vendor/abseil-cpp/absl/strings/ascii_benchmark.cc +5 -8
- package/vendor/abseil-cpp/absl/strings/charconv.cc +21 -22
- package/vendor/abseil-cpp/absl/strings/charconv.h +5 -5
- package/vendor/abseil-cpp/absl/strings/charconv_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/charset_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/cord.cc +54 -58
- package/vendor/abseil-cpp/absl/strings/cord.h +94 -84
- package/vendor/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- package/vendor/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- package/vendor/abseil-cpp/absl/strings/cord_test.cc +23 -0
- package/vendor/abseil-cpp/absl/strings/cordz_test_helpers.h +4 -5
- package/vendor/abseil-cpp/absl/strings/escaping.cc +130 -149
- package/vendor/abseil-cpp/absl/strings/escaping.h +9 -10
- package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/escaping_test.cc +19 -9
- package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +6 -10
- package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +5 -9
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +2 -4
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_benchmark.cc +56 -0
- package/vendor/abseil-cpp/absl/strings/internal/memutil_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/internal/ostringstream_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +1 -6
- package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- package/vendor/abseil-cpp/absl/strings/internal/str_format/extension_test.cc +3 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +7 -2
- package/vendor/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- package/vendor/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- package/vendor/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- package/vendor/abseil-cpp/absl/strings/internal/utf8_test.cc +196 -3
- package/vendor/abseil-cpp/absl/strings/numbers.cc +53 -32
- package/vendor/abseil-cpp/absl/strings/numbers.h +87 -58
- package/vendor/abseil-cpp/absl/strings/numbers_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +634 -120
- package/vendor/abseil-cpp/absl/strings/str_cat.cc +6 -7
- package/vendor/abseil-cpp/absl/strings/str_cat.h +32 -32
- package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +25 -1
- package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +2 -7
- package/vendor/abseil-cpp/absl/strings/str_format.h +18 -18
- package/vendor/abseil-cpp/absl/strings/str_format_test.cc +8 -14
- package/vendor/abseil-cpp/absl/strings/str_join_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/str_replace.cc +3 -3
- package/vendor/abseil-cpp/absl/strings/str_replace.h +6 -6
- package/vendor/abseil-cpp/absl/strings/str_replace_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/str_split.h +2 -2
- package/vendor/abseil-cpp/absl/strings/str_split_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/string_view.cc +4 -9
- package/vendor/abseil-cpp/absl/strings/string_view.h +38 -39
- package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +4 -6
- package/vendor/abseil-cpp/absl/strings/string_view_test.cc +2 -50
- package/vendor/abseil-cpp/absl/strings/strip.h +4 -4
- package/vendor/abseil-cpp/absl/strings/substitute.cc +5 -4
- package/vendor/abseil-cpp/absl/strings/substitute.h +66 -64
- package/vendor/abseil-cpp/absl/strings/substitute_benchmark.cc +158 -0
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +6 -1
- package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +2 -1
- package/vendor/abseil-cpp/absl/synchronization/barrier.cc +1 -1
- package/vendor/abseil-cpp/absl/synchronization/barrier_test.cc +3 -3
- package/vendor/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
- package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
- package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_test.cc +6 -5
- package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- package/vendor/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/thread_pool.h +3 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/waiter_test.cc +12 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/lifetime_test.cc +4 -4
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +27 -29
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +205 -126
- package/vendor/abseil-cpp/absl/synchronization/mutex_benchmark.cc +13 -31
- package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +183 -169
- package/vendor/abseil-cpp/absl/synchronization/notification.cc +5 -5
- package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
- package/vendor/abseil-cpp/absl/synchronization/notification_test.cc +3 -3
- package/vendor/abseil-cpp/absl/time/BUILD.bazel +9 -1
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +3 -1
- package/vendor/abseil-cpp/absl/time/civil_time.cc +1 -0
- package/vendor/abseil-cpp/absl/time/civil_time_test.cc +134 -0
- package/vendor/abseil-cpp/absl/time/clock.cc +11 -14
- package/vendor/abseil-cpp/absl/time/duration.cc +14 -9
- package/vendor/abseil-cpp/absl/time/duration_test.cc +6 -7
- package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +14 -3
- package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/cctz_benchmark.cc +4 -490
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.cc +515 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +33 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +41 -4
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +22 -23
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc +1 -488
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coyhaique +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +2 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +1 -1
- package/vendor/abseil-cpp/absl/time/time.h +24 -18
- package/vendor/abseil-cpp/absl/time/time_test.cc +26 -0
- package/vendor/abseil-cpp/absl/types/BUILD.bazel +11 -164
- package/vendor/abseil-cpp/absl/types/CMakeLists.txt +23 -167
- package/vendor/abseil-cpp/absl/types/any.h +9 -484
- package/vendor/abseil-cpp/absl/types/optional.h +7 -747
- package/vendor/abseil-cpp/absl/types/span.h +46 -19
- package/vendor/abseil-cpp/absl/types/span_test.cc +27 -0
- package/vendor/abseil-cpp/absl/types/variant.h +5 -784
- package/vendor/abseil-cpp/absl/types/variant_test.cc +43 -2597
- package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -41
- package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +0 -40
- package/vendor/abseil-cpp/absl/utility/utility.h +10 -185
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -3
- package/vendor/abseil-cpp/ci/cmake_common.sh +2 -2
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +12 -13
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +24 -21
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +12 -12
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +23 -22
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +20 -19
- package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +17 -17
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +10 -10
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +1 -1
- package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +1 -1
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +9 -10
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +9 -1
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +14 -6
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +14 -6
- package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +1 -1
- package/vendor/re2/.bazelrc +4 -4
- package/vendor/re2/.bcr/metadata.template.json +16 -0
- package/vendor/re2/.bcr/presubmit.yml +57 -0
- package/vendor/re2/.bcr/source.template.json +5 -0
- package/vendor/re2/.github/bazel.sh +1 -7
- package/vendor/re2/.github/workflows/ci-bazel.yml +5 -5
- package/vendor/re2/.github/workflows/ci-cmake.yml +4 -4
- package/vendor/re2/.github/workflows/ci.yml +5 -6
- package/vendor/re2/.github/workflows/pages.yml +3 -3
- package/vendor/re2/.github/workflows/python.yml +29 -24
- package/vendor/re2/.github/workflows/release-bazel.yml +42 -0
- package/vendor/re2/.github/workflows/release.yml +15 -4
- package/vendor/re2/BUILD.bazel +25 -0
- package/vendor/re2/CMakeLists.txt +100 -85
- package/vendor/re2/CONTRIBUTING.md +0 -1
- package/vendor/re2/MODULE.bazel +10 -10
- package/vendor/re2/Makefile +1 -1
- package/vendor/re2/README.md +259 -0
- package/vendor/re2/python/BUILD.bazel +8 -0
- package/vendor/re2/python/re2.py +1 -1
- package/vendor/re2/python/re2_test.py +6 -0
- package/vendor/re2/python/setup.py +3 -3
- package/vendor/re2/re2/bitmap256.cc +3 -4
- package/vendor/re2/re2/bitstate.cc +15 -10
- package/vendor/re2/re2/dfa.cc +1 -2
- package/vendor/re2/re2/parse.cc +3 -4
- package/vendor/re2/re2/prog.cc +1 -2
- package/vendor/re2/re2/prog.h +1 -0
- package/vendor/re2/re2/re2.cc +5 -0
- package/vendor/re2/re2/re2.h +9 -9
- package/vendor/re2/re2/set.cc +6 -0
- package/vendor/re2/re2/set.h +5 -0
- package/vendor/re2/re2/testing/re2_arg_test.cc +3 -3
- package/vendor/re2/re2/testing/re2_test.cc +8 -0
- package/vendor/re2/re2/testing/set_test.cc +5 -0
- package/vendor/re2/re2/walker-inl.h +1 -1
- package/vendor/abseil-cpp/WORKSPACE +0 -76
- package/vendor/abseil-cpp/WORKSPACE.bzlmod +0 -19
- package/vendor/abseil-cpp/absl/base/inline_variable_test.cc +0 -64
- package/vendor/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- package/vendor/abseil-cpp/absl/base/internal/inline_variable_testing.h +0 -46
- package/vendor/abseil-cpp/absl/base/internal/invoke.h +0 -241
- package/vendor/abseil-cpp/absl/base/internal/nullability_impl.h +0 -69
- package/vendor/abseil-cpp/absl/base/invoke_test.cc +0 -331
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -148
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -54
- package/vendor/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- package/vendor/abseil-cpp/absl/random/internal/pool_urbg_test.cc +0 -182
- package/vendor/abseil-cpp/absl/types/any_exception_safety_test.cc +0 -173
- package/vendor/abseil-cpp/absl/types/any_test.cc +0 -778
- package/vendor/abseil-cpp/absl/types/bad_any_cast.cc +0 -64
- package/vendor/abseil-cpp/absl/types/bad_any_cast.h +0 -75
- package/vendor/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- package/vendor/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- package/vendor/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- package/vendor/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- package/vendor/abseil-cpp/absl/types/internal/optional.h +0 -352
- package/vendor/abseil-cpp/absl/types/internal/variant.h +0 -1622
- package/vendor/abseil-cpp/absl/types/optional_exception_safety_test.cc +0 -292
- package/vendor/abseil-cpp/absl/types/optional_test.cc +0 -1615
- package/vendor/abseil-cpp/absl/types/variant_benchmark.cc +0 -222
- package/vendor/abseil-cpp/absl/types/variant_exception_safety_test.cc +0 -532
- package/vendor/abseil-cpp/absl/utility/internal/if_constexpr.h +0 -70
- package/vendor/abseil-cpp/absl/utility/internal/if_constexpr_test.cc +0 -79
- package/vendor/abseil-cpp/absl/utility/utility_test.cc +0 -239
- package/vendor/re2/.github/workflows/pr.yml +0 -34
- package/vendor/re2/README +0 -47
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
#include "gtest/gtest.h"
|
|
32
32
|
#include "absl/base/attributes.h"
|
|
33
33
|
#include "absl/base/internal/exception_testing.h"
|
|
34
|
+
#include "absl/base/internal/iterator_traits_test_helper.h"
|
|
34
35
|
#include "absl/base/macros.h"
|
|
35
36
|
#include "absl/base/options.h"
|
|
36
37
|
#include "absl/container/internal/test_allocator.h"
|
|
@@ -649,6 +650,33 @@ TEST(IntVec, Insert) {
|
|
|
649
650
|
}
|
|
650
651
|
}
|
|
651
652
|
|
|
653
|
+
TEST(IntPairVec, Insert) {
|
|
654
|
+
for (size_t len = 0; len < 20; len++) {
|
|
655
|
+
for (ptrdiff_t pos = 0; pos <= static_cast<ptrdiff_t>(len); pos++) {
|
|
656
|
+
// Iterator range (C++20 forward iterator)
|
|
657
|
+
const std::forward_list<int> unzipped_input = {9999, 8888, 7777};
|
|
658
|
+
const absl::base_internal::Cpp20ForwardZipIterator<
|
|
659
|
+
std::forward_list<int>::const_iterator>
|
|
660
|
+
begin(unzipped_input.cbegin(), unzipped_input.cbegin());
|
|
661
|
+
const absl::base_internal::Cpp20ForwardZipIterator<
|
|
662
|
+
std::forward_list<int>::const_iterator>
|
|
663
|
+
end(unzipped_input.cend(), unzipped_input.cend());
|
|
664
|
+
|
|
665
|
+
std::vector<std::pair<int, int>> std_v;
|
|
666
|
+
absl::InlinedVector<std::pair<int, int>, 8> v;
|
|
667
|
+
for (size_t i = 0; i < len; ++i) {
|
|
668
|
+
std_v.emplace_back(i, i);
|
|
669
|
+
v.emplace_back(i, i);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
std_v.insert(std_v.begin() + pos, begin, end);
|
|
673
|
+
auto it = v.insert(v.cbegin() + pos, begin, end);
|
|
674
|
+
EXPECT_THAT(v, ElementsAreArray(std_v));
|
|
675
|
+
EXPECT_EQ(it, v.cbegin() + pos);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
|
|
652
680
|
TEST(RefCountedVec, InsertConstructorDestructor) {
|
|
653
681
|
// Make sure the proper construction/destruction happen during insert
|
|
654
682
|
// operations.
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
#include "absl/base/config.h"
|
|
61
61
|
#include "absl/base/internal/raw_logging.h"
|
|
62
62
|
#include "absl/base/macros.h"
|
|
63
|
+
#include "absl/base/optimization.h"
|
|
63
64
|
#include "absl/container/internal/common.h"
|
|
64
65
|
#include "absl/container/internal/common_policy_traits.h"
|
|
65
66
|
#include "absl/container/internal/compressed_tuple.h"
|
|
@@ -224,7 +225,7 @@ struct key_compare_adapter {
|
|
|
224
225
|
|
|
225
226
|
public:
|
|
226
227
|
using Base::Base;
|
|
227
|
-
checked_compare(Compare
|
|
228
|
+
checked_compare(Compare cmp) : Base(std::move(cmp)) {} // NOLINT
|
|
228
229
|
|
|
229
230
|
// Allow converting to Compare for use in key_comp()/value_comp().
|
|
230
231
|
explicit operator Compare() const { return comp(); }
|
|
@@ -708,6 +709,8 @@ class btree_node {
|
|
|
708
709
|
}
|
|
709
710
|
|
|
710
711
|
// Getter for the parent of this node.
|
|
712
|
+
// TODO(ezb): assert that the child of the returned node at position
|
|
713
|
+
// `node_->position()` maps to the current node.
|
|
711
714
|
btree_node *parent() const { return *GetField<0>(); }
|
|
712
715
|
// Getter for whether the node is the root of the tree. The parent of the
|
|
713
716
|
// root of the tree is the leftmost node in the tree which is guaranteed to
|
|
@@ -1175,6 +1178,26 @@ class btree_iterator : private btree_iterator_generation_info {
|
|
|
1175
1178
|
return distance_slow(other);
|
|
1176
1179
|
}
|
|
1177
1180
|
|
|
1181
|
+
// Advances the iterator by `n`. Values of `n` must not result in going past
|
|
1182
|
+
// the `end` iterator (for a positive `n`) or before the `begin` iterator (for
|
|
1183
|
+
// a negative `n`).
|
|
1184
|
+
btree_iterator &operator+=(difference_type n) {
|
|
1185
|
+
assert_valid_generation(node_);
|
|
1186
|
+
if (n == 0) return *this;
|
|
1187
|
+
if (n < 0) return decrement_n_slow(-n);
|
|
1188
|
+
return increment_n_slow(n);
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
// Moves the iterator by `n` positions backwards. Values of `n` must not
|
|
1192
|
+
// result in going before the `begin` iterator (for a positive `n`) or past
|
|
1193
|
+
// the `end` iterator (for a negative `n`).
|
|
1194
|
+
btree_iterator &operator-=(difference_type n) {
|
|
1195
|
+
assert_valid_generation(node_);
|
|
1196
|
+
if (n == 0) return *this;
|
|
1197
|
+
if (n < 0) return increment_n_slow(-n);
|
|
1198
|
+
return decrement_n_slow(n);
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1178
1201
|
// Accessors for the key/value the iterator is pointing at.
|
|
1179
1202
|
reference operator*() const {
|
|
1180
1203
|
ABSL_HARDENING_ASSERT(node_ != nullptr);
|
|
@@ -1277,6 +1300,7 @@ class btree_iterator : private btree_iterator_generation_info {
|
|
|
1277
1300
|
increment_slow();
|
|
1278
1301
|
}
|
|
1279
1302
|
void increment_slow();
|
|
1303
|
+
btree_iterator &increment_n_slow(difference_type n);
|
|
1280
1304
|
|
|
1281
1305
|
void decrement() {
|
|
1282
1306
|
assert_valid_generation(node_);
|
|
@@ -1286,6 +1310,7 @@ class btree_iterator : private btree_iterator_generation_info {
|
|
|
1286
1310
|
decrement_slow();
|
|
1287
1311
|
}
|
|
1288
1312
|
void decrement_slow();
|
|
1313
|
+
btree_iterator &decrement_n_slow(difference_type n);
|
|
1289
1314
|
|
|
1290
1315
|
const key_type &key() const {
|
|
1291
1316
|
return node_->key(static_cast<size_type>(position_));
|
|
@@ -2126,50 +2151,128 @@ auto btree_iterator<N, R, P>::distance_slow(const_iterator other) const
|
|
|
2126
2151
|
|
|
2127
2152
|
template <typename N, typename R, typename P>
|
|
2128
2153
|
void btree_iterator<N, R, P>::increment_slow() {
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2154
|
+
N* node = node_;
|
|
2155
|
+
int position = position_;
|
|
2156
|
+
if (node->is_leaf()) {
|
|
2157
|
+
assert(position >= node->finish());
|
|
2158
|
+
while (position == node->finish() && !node->is_root()) {
|
|
2159
|
+
assert(node->parent()->child(node->position()) == node);
|
|
2160
|
+
position = node->position();
|
|
2161
|
+
node = node->parent();
|
|
2136
2162
|
}
|
|
2137
2163
|
// TODO(ezb): assert we aren't incrementing end() instead of handling.
|
|
2138
|
-
if (
|
|
2139
|
-
|
|
2164
|
+
if (position == node->finish()) {
|
|
2165
|
+
return;
|
|
2140
2166
|
}
|
|
2141
2167
|
} else {
|
|
2142
|
-
assert(
|
|
2143
|
-
|
|
2144
|
-
while (
|
|
2145
|
-
|
|
2168
|
+
assert(position < node->finish());
|
|
2169
|
+
node = node->child(static_cast<field_type>(position + 1));
|
|
2170
|
+
while (node->is_internal()) {
|
|
2171
|
+
node = node->start_child();
|
|
2146
2172
|
}
|
|
2147
|
-
|
|
2173
|
+
position = node->start();
|
|
2148
2174
|
}
|
|
2175
|
+
*this = {node, position};
|
|
2149
2176
|
}
|
|
2150
2177
|
|
|
2151
2178
|
template <typename N, typename R, typename P>
|
|
2152
2179
|
void btree_iterator<N, R, P>::decrement_slow() {
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2180
|
+
N* node = node_;
|
|
2181
|
+
int position = position_;
|
|
2182
|
+
if (node->is_leaf()) {
|
|
2183
|
+
assert(position <= -1);
|
|
2184
|
+
while (position < node->start() && !node->is_root()) {
|
|
2185
|
+
assert(node->parent()->child(node->position()) == node);
|
|
2186
|
+
position = node->position() - 1;
|
|
2187
|
+
node = node->parent();
|
|
2160
2188
|
}
|
|
2161
2189
|
// TODO(ezb): assert we aren't decrementing begin() instead of handling.
|
|
2162
|
-
if (
|
|
2163
|
-
|
|
2190
|
+
if (position < node->start()) {
|
|
2191
|
+
return;
|
|
2164
2192
|
}
|
|
2165
2193
|
} else {
|
|
2166
|
-
assert(
|
|
2167
|
-
|
|
2168
|
-
while (
|
|
2169
|
-
|
|
2194
|
+
assert(position >= node->start());
|
|
2195
|
+
node = node->child(static_cast<field_type>(position));
|
|
2196
|
+
while (node->is_internal()) {
|
|
2197
|
+
node = node->child(node->finish());
|
|
2170
2198
|
}
|
|
2171
|
-
|
|
2199
|
+
position = node->finish() - 1;
|
|
2172
2200
|
}
|
|
2201
|
+
*this = {node, position};
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2204
|
+
template <typename N, typename R, typename P>
|
|
2205
|
+
btree_iterator<N, R, P> &btree_iterator<N, R, P>::increment_n_slow(
|
|
2206
|
+
difference_type n) {
|
|
2207
|
+
N *node = node_;
|
|
2208
|
+
int position = position_;
|
|
2209
|
+
ABSL_ASSUME(n > 0);
|
|
2210
|
+
while (n > 0) {
|
|
2211
|
+
if (node->is_leaf()) {
|
|
2212
|
+
if (position + n < node->finish()) {
|
|
2213
|
+
position += n;
|
|
2214
|
+
break;
|
|
2215
|
+
} else {
|
|
2216
|
+
n -= node->finish() - position;
|
|
2217
|
+
position = node->finish();
|
|
2218
|
+
btree_iterator save = {node, position};
|
|
2219
|
+
while (position == node->finish() && !node->is_root()) {
|
|
2220
|
+
position = node->position();
|
|
2221
|
+
node = node->parent();
|
|
2222
|
+
}
|
|
2223
|
+
if (position == node->finish()) {
|
|
2224
|
+
ABSL_HARDENING_ASSERT(n == 0);
|
|
2225
|
+
return *this = save;
|
|
2226
|
+
}
|
|
2227
|
+
}
|
|
2228
|
+
} else {
|
|
2229
|
+
--n;
|
|
2230
|
+
assert(position < node->finish());
|
|
2231
|
+
node = node->child(static_cast<field_type>(position + 1));
|
|
2232
|
+
while (node->is_internal()) {
|
|
2233
|
+
node = node->start_child();
|
|
2234
|
+
}
|
|
2235
|
+
position = node->start();
|
|
2236
|
+
}
|
|
2237
|
+
}
|
|
2238
|
+
node_ = node;
|
|
2239
|
+
position_ = position;
|
|
2240
|
+
return *this;
|
|
2241
|
+
}
|
|
2242
|
+
|
|
2243
|
+
template <typename N, typename R, typename P>
|
|
2244
|
+
btree_iterator<N, R, P> &btree_iterator<N, R, P>::decrement_n_slow(
|
|
2245
|
+
difference_type n) {
|
|
2246
|
+
N *node = node_;
|
|
2247
|
+
int position = position_;
|
|
2248
|
+
ABSL_ASSUME(n > 0);
|
|
2249
|
+
while (n > 0) {
|
|
2250
|
+
if (node->is_leaf()) {
|
|
2251
|
+
if (position - n >= node->start()) {
|
|
2252
|
+
position -= n;
|
|
2253
|
+
break;
|
|
2254
|
+
} else {
|
|
2255
|
+
n -= 1 + position - node->start();
|
|
2256
|
+
position = node->start() - 1;
|
|
2257
|
+
while (position < node->start() && !node->is_root()) {
|
|
2258
|
+
position = node->position() - 1;
|
|
2259
|
+
node = node->parent();
|
|
2260
|
+
}
|
|
2261
|
+
ABSL_HARDENING_ASSERT(position >= node->start());
|
|
2262
|
+
}
|
|
2263
|
+
} else {
|
|
2264
|
+
--n;
|
|
2265
|
+
assert(position >= node->start());
|
|
2266
|
+
node = node->child(static_cast<field_type>(position));
|
|
2267
|
+
while (node->is_internal()) {
|
|
2268
|
+
node = node->child(node->finish());
|
|
2269
|
+
}
|
|
2270
|
+
position = node->finish() - 1;
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2273
|
+
node_ = node;
|
|
2274
|
+
position_ = position;
|
|
2275
|
+
return *this;
|
|
2173
2276
|
}
|
|
2174
2277
|
|
|
2175
2278
|
////
|
|
@@ -18,12 +18,14 @@
|
|
|
18
18
|
#include <algorithm>
|
|
19
19
|
#include <initializer_list>
|
|
20
20
|
#include <iterator>
|
|
21
|
+
#include <type_traits>
|
|
21
22
|
#include <utility>
|
|
22
23
|
|
|
23
24
|
#include "absl/base/attributes.h"
|
|
24
25
|
#include "absl/base/internal/throw_delegate.h"
|
|
25
26
|
#include "absl/container/internal/btree.h" // IWYU pragma: export
|
|
26
27
|
#include "absl/container/internal/common.h"
|
|
28
|
+
#include "absl/hash/internal/weakly_mixed_integer.h"
|
|
27
29
|
#include "absl/memory/memory.h"
|
|
28
30
|
#include "absl/meta/type_traits.h"
|
|
29
31
|
|
|
@@ -266,7 +268,8 @@ class btree_container {
|
|
|
266
268
|
for (const auto &v : b) {
|
|
267
269
|
h = State::combine(std::move(h), v);
|
|
268
270
|
}
|
|
269
|
-
return State::combine(std::move(h),
|
|
271
|
+
return State::combine(std::move(h),
|
|
272
|
+
hash_internal::WeaklyMixedInteger{b.size()});
|
|
270
273
|
}
|
|
271
274
|
|
|
272
275
|
protected:
|
|
@@ -451,6 +454,29 @@ class btree_map_container : public btree_set_container<Tree> {
|
|
|
451
454
|
template <class K>
|
|
452
455
|
using key_arg = typename super_type::template key_arg<K>;
|
|
453
456
|
|
|
457
|
+
// NOTE: The mess here is to shorten the code for the (very repetitive)
|
|
458
|
+
// function overloads, and to allow the lifetime-bound overloads to dispatch
|
|
459
|
+
// to the non-lifetime-bound overloads, to ensure there is a single source of
|
|
460
|
+
// truth for each overload set.
|
|
461
|
+
//
|
|
462
|
+
// Enabled if an assignment from the given type would require the
|
|
463
|
+
// source object to remain alive for the life of the element.
|
|
464
|
+
//
|
|
465
|
+
// TODO(b/402804213): Remove these traits and simplify the overloads whenever
|
|
466
|
+
// we have a better mechanism available to handle lifetime analysis.
|
|
467
|
+
template <class K, bool Value, typename = void>
|
|
468
|
+
using LifetimeBoundK =
|
|
469
|
+
HasValue<Value, type_traits_internal::IsLifetimeBoundAssignment<
|
|
470
|
+
typename Tree::key_type, K>>;
|
|
471
|
+
template <class M, bool Value, typename = void>
|
|
472
|
+
using LifetimeBoundV =
|
|
473
|
+
HasValue<Value, type_traits_internal::IsLifetimeBoundAssignment<
|
|
474
|
+
typename Tree::params_type::mapped_type, M>>;
|
|
475
|
+
template <class K, bool KValue, class M, bool MValue, typename... Dummy>
|
|
476
|
+
using LifetimeBoundKV =
|
|
477
|
+
absl::conjunction<LifetimeBoundK<K, KValue, absl::void_t<Dummy...>>,
|
|
478
|
+
LifetimeBoundV<M, MValue>>;
|
|
479
|
+
|
|
454
480
|
public:
|
|
455
481
|
using key_type = typename Tree::key_type;
|
|
456
482
|
using mapped_type = typename params_type::mapped_type;
|
|
@@ -464,85 +490,163 @@ class btree_map_container : public btree_set_container<Tree> {
|
|
|
464
490
|
using super_type::super_type;
|
|
465
491
|
btree_map_container() {}
|
|
466
492
|
|
|
493
|
+
// TODO(b/402804213): Remove these macros whenever we have a better mechanism
|
|
494
|
+
// available to handle lifetime analysis.
|
|
495
|
+
#define ABSL_INTERNAL_X(Func, Callee, KQual, MQual, KValue, MValue, ...) \
|
|
496
|
+
template < \
|
|
497
|
+
typename K = key_type, class M, \
|
|
498
|
+
ABSL_INTERNAL_IF_##KValue##_NOR_##MValue( \
|
|
499
|
+
int = (EnableIf<LifetimeBoundKV<K, KValue, M, MValue, \
|
|
500
|
+
IfRRef<int KQual>::AddPtr<K>, \
|
|
501
|
+
IfRRef<int MQual>::AddPtr<M>>>()), \
|
|
502
|
+
ABSL_INTERNAL_SINGLE_ARG( \
|
|
503
|
+
int &..., \
|
|
504
|
+
decltype(EnableIf<LifetimeBoundKV<K, KValue, M, MValue>>()) = \
|
|
505
|
+
0))> \
|
|
506
|
+
decltype(auto) Func( \
|
|
507
|
+
__VA_ARGS__ key_arg<K> KQual k ABSL_INTERNAL_IF_##KValue( \
|
|
508
|
+
ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)), \
|
|
509
|
+
M MQual obj ABSL_INTERNAL_IF_##MValue( \
|
|
510
|
+
ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))) \
|
|
511
|
+
ABSL_ATTRIBUTE_LIFETIME_BOUND { \
|
|
512
|
+
return ABSL_INTERNAL_IF_##KValue##_OR_##MValue( \
|
|
513
|
+
(this->template Func<K, M, 0>), Callee)( \
|
|
514
|
+
__VA_ARGS__ std::forward<decltype(k)>(k), \
|
|
515
|
+
std::forward<decltype(obj)>(obj)); \
|
|
516
|
+
} \
|
|
517
|
+
friend struct std::enable_if<false> /* just to force a semicolon */
|
|
467
518
|
// Insertion routines.
|
|
468
519
|
// Note: the nullptr template arguments and extra `const M&` overloads allow
|
|
469
520
|
// for supporting bitfield arguments.
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
521
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, const &, const &,
|
|
522
|
+
false, false);
|
|
523
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, const &, const &,
|
|
524
|
+
false, true);
|
|
525
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, const &, const &,
|
|
526
|
+
true, false);
|
|
527
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, const &, const &,
|
|
528
|
+
true, true);
|
|
529
|
+
|
|
530
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, const &, &&, false,
|
|
531
|
+
false);
|
|
532
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, const &, &&, false,
|
|
533
|
+
true);
|
|
534
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, const &, &&, true,
|
|
535
|
+
false);
|
|
536
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, const &, &&, true,
|
|
537
|
+
true);
|
|
538
|
+
|
|
539
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, &&, const &, false,
|
|
540
|
+
false);
|
|
541
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, &&, const &, false,
|
|
542
|
+
true);
|
|
543
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, &&, const &, true,
|
|
544
|
+
false);
|
|
545
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, &&, const &, true,
|
|
546
|
+
true);
|
|
547
|
+
|
|
548
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, &&, &&, false,
|
|
549
|
+
false);
|
|
550
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, &&, &&, false, true);
|
|
551
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, &&, &&, true, false);
|
|
552
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_impl, &&, &&, true, true);
|
|
553
|
+
|
|
554
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, const &,
|
|
555
|
+
const &, false, false,
|
|
556
|
+
const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
557
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, const &,
|
|
558
|
+
const &, false, true,
|
|
559
|
+
const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
560
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, const &,
|
|
561
|
+
const &, true, false,
|
|
562
|
+
const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
563
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, const &,
|
|
564
|
+
const &, true, true,
|
|
565
|
+
const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
566
|
+
|
|
567
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, const &, &&,
|
|
568
|
+
false, false, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
569
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, const &, &&,
|
|
570
|
+
false, true, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
571
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, const &, &&,
|
|
572
|
+
true, false, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
573
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, const &, &&,
|
|
574
|
+
true, true, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
575
|
+
|
|
576
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, &&, const &,
|
|
577
|
+
false, false, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
578
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, &&, const &,
|
|
579
|
+
false, true, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
580
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, &&, const &,
|
|
581
|
+
true, false, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
582
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, &&, const &,
|
|
583
|
+
true, true, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
584
|
+
|
|
585
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, &&, &&, false,
|
|
586
|
+
false, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
587
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, &&, &&, false,
|
|
588
|
+
true, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
589
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, &&, &&, true,
|
|
590
|
+
false, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
591
|
+
ABSL_INTERNAL_X(insert_or_assign, insert_or_assign_hint_impl, &&, &&, true,
|
|
592
|
+
true, const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
593
|
+
#undef ABSL_INTERNAL_X
|
|
594
|
+
|
|
595
|
+
#define ABSL_INTERNAL_X(Func, Callee, KQual, KValue, ...) \
|
|
596
|
+
template < \
|
|
597
|
+
class K = key_type, \
|
|
598
|
+
ABSL_INTERNAL_IF_##KValue( \
|
|
599
|
+
class... Args, \
|
|
600
|
+
int = (EnableIf< \
|
|
601
|
+
LifetimeBoundK<K, KValue, IfRRef<int KQual>::AddPtr<K>>>())), \
|
|
602
|
+
ABSL_INTERNAL_IF_##KValue( \
|
|
603
|
+
decltype(EnableIf<LifetimeBoundK< \
|
|
604
|
+
K, KValue, IfRRef<int KQual>::AddPtr<K>>>()) = 0, \
|
|
605
|
+
class... Args), \
|
|
606
|
+
std::enable_if_t<!std::is_convertible<K, const_iterator>::value, int> = \
|
|
607
|
+
0> \
|
|
608
|
+
decltype(auto) Func( \
|
|
609
|
+
__VA_ARGS__ key_arg<K> KQual k ABSL_INTERNAL_IF_##KValue( \
|
|
610
|
+
ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this)), \
|
|
611
|
+
Args &&...args) ABSL_ATTRIBUTE_LIFETIME_BOUND { \
|
|
612
|
+
return ABSL_INTERNAL_IF_##KValue((this->template Func<K, 0>), Callee)( \
|
|
613
|
+
__VA_ARGS__ std::forward<decltype(k)>(k), \
|
|
614
|
+
std::forward<decltype(args)>(args)...); \
|
|
615
|
+
} \
|
|
616
|
+
friend struct std::enable_if<false> /* just to force a semicolon */
|
|
617
|
+
ABSL_INTERNAL_X(try_emplace, try_emplace_impl, const &, false);
|
|
618
|
+
ABSL_INTERNAL_X(try_emplace, try_emplace_impl, const &, true);
|
|
619
|
+
ABSL_INTERNAL_X(try_emplace, try_emplace_impl, &&, false);
|
|
620
|
+
ABSL_INTERNAL_X(try_emplace, try_emplace_impl, &&, true);
|
|
621
|
+
ABSL_INTERNAL_X(try_emplace, try_emplace_hint_impl, const &, false,
|
|
622
|
+
const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
623
|
+
ABSL_INTERNAL_X(try_emplace, try_emplace_hint_impl, const &, true,
|
|
624
|
+
const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
625
|
+
ABSL_INTERNAL_X(try_emplace, try_emplace_hint_impl, &&, false,
|
|
626
|
+
const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
627
|
+
ABSL_INTERNAL_X(try_emplace, try_emplace_hint_impl, &&, true,
|
|
628
|
+
const_iterator(hint) ABSL_INTERNAL_COMMA);
|
|
629
|
+
#undef ABSL_INTERNAL_X
|
|
630
|
+
|
|
631
|
+
template <class K = key_type, int = EnableIf<LifetimeBoundK<K, false>>()>
|
|
539
632
|
mapped_type &operator[](const key_arg<K> &k) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
540
633
|
return try_emplace(k).first->second;
|
|
541
634
|
}
|
|
542
|
-
template <
|
|
635
|
+
template <class K = key_type, int &..., EnableIf<LifetimeBoundK<K, true>> = 0>
|
|
636
|
+
mapped_type &operator[](
|
|
637
|
+
const key_arg<K> &k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(this))
|
|
638
|
+
ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
639
|
+
return this->template operator[]<K, 0>(k);
|
|
640
|
+
}
|
|
641
|
+
template <class K = key_type, int = EnableIf<LifetimeBoundK<K, false>>()>
|
|
543
642
|
mapped_type &operator[](key_arg<K> &&k) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
544
643
|
return try_emplace(std::forward<K>(k)).first->second;
|
|
545
644
|
}
|
|
645
|
+
template <class K = key_type, int &..., EnableIf<LifetimeBoundK<K, true>> = 0>
|
|
646
|
+
mapped_type &operator[](key_arg<K> &&k ABSL_INTERNAL_ATTRIBUTE_CAPTURED_BY(
|
|
647
|
+
this)) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
648
|
+
return this->template operator[]<K, 0>(std::forward<K>(k));
|
|
649
|
+
}
|
|
546
650
|
|
|
547
651
|
template <typename K = key_type>
|
|
548
652
|
mapped_type &at(const key_arg<K> &key) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
@@ -21,10 +21,53 @@
|
|
|
21
21
|
#include "absl/meta/type_traits.h"
|
|
22
22
|
#include "absl/types/optional.h"
|
|
23
23
|
|
|
24
|
+
// TODO(b/402804213): Clean up these macros when no longer needed.
|
|
25
|
+
#define ABSL_INTERNAL_SINGLE_ARG(...) __VA_ARGS__
|
|
26
|
+
|
|
27
|
+
#define ABSL_INTERNAL_IF_true(if_satisfied, ...) if_satisfied
|
|
28
|
+
#define ABSL_INTERNAL_IF_false(if_satisfied, ...) __VA_ARGS__
|
|
29
|
+
|
|
30
|
+
#define ABSL_INTERNAL_IF_true_AND_true ABSL_INTERNAL_IF_true
|
|
31
|
+
#define ABSL_INTERNAL_IF_false_AND_false ABSL_INTERNAL_IF_false
|
|
32
|
+
#define ABSL_INTERNAL_IF_true_AND_false ABSL_INTERNAL_IF_false_AND_false
|
|
33
|
+
#define ABSL_INTERNAL_IF_false_AND_true ABSL_INTERNAL_IF_false_AND_false
|
|
34
|
+
|
|
35
|
+
#define ABSL_INTERNAL_IF_true_OR_true ABSL_INTERNAL_IF_true
|
|
36
|
+
#define ABSL_INTERNAL_IF_false_OR_false ABSL_INTERNAL_IF_false
|
|
37
|
+
#define ABSL_INTERNAL_IF_true_OR_false ABSL_INTERNAL_IF_true_OR_true
|
|
38
|
+
#define ABSL_INTERNAL_IF_false_OR_true ABSL_INTERNAL_IF_true_OR_true
|
|
39
|
+
|
|
40
|
+
#define ABSL_INTERNAL_IF_true_NOR_true ABSL_INTERNAL_IF_false_AND_false
|
|
41
|
+
#define ABSL_INTERNAL_IF_false_NOR_false ABSL_INTERNAL_IF_true_AND_true
|
|
42
|
+
#define ABSL_INTERNAL_IF_true_NOR_false ABSL_INTERNAL_IF_false_AND_true
|
|
43
|
+
#define ABSL_INTERNAL_IF_false_NOR_true ABSL_INTERNAL_IF_true_AND_false
|
|
44
|
+
|
|
45
|
+
#define ABSL_INTERNAL_COMMA ,
|
|
46
|
+
|
|
24
47
|
namespace absl {
|
|
25
48
|
ABSL_NAMESPACE_BEGIN
|
|
26
49
|
namespace container_internal {
|
|
27
50
|
|
|
51
|
+
// TODO(b/402804213): Clean up these traits when no longer needed or
|
|
52
|
+
// deduplicate them with absl::functional_internal::EnableIf.
|
|
53
|
+
template <class Cond>
|
|
54
|
+
using EnableIf = std::enable_if_t<Cond::value, int>;
|
|
55
|
+
|
|
56
|
+
template <bool Value, class T>
|
|
57
|
+
using HasValue = std::conditional_t<Value, T, absl::negation<T>>;
|
|
58
|
+
|
|
59
|
+
template <class T>
|
|
60
|
+
struct IfRRef {
|
|
61
|
+
template <class Other>
|
|
62
|
+
using AddPtr = Other;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
template <class T>
|
|
66
|
+
struct IfRRef<T&&> {
|
|
67
|
+
template <class Other>
|
|
68
|
+
using AddPtr = Other*;
|
|
69
|
+
};
|
|
70
|
+
|
|
28
71
|
template <class, class = void>
|
|
29
72
|
struct IsTransparent : std::false_type {};
|
|
30
73
|
template <class T>
|
|
@@ -119,7 +119,7 @@ struct common_policy_traits {
|
|
|
119
119
|
old_slot)) {
|
|
120
120
|
return P::transfer(alloc, new_slot, old_slot);
|
|
121
121
|
}
|
|
122
|
-
|
|
122
|
+
|
|
123
123
|
// This overload returns true_type for the trait below.
|
|
124
124
|
// The conditional_t is to make the enabler type dependent.
|
|
125
125
|
template <class Alloc,
|
|
@@ -135,7 +135,6 @@ struct common_policy_traits {
|
|
|
135
135
|
static_cast<const void*>(&element(old_slot)), sizeof(value_type));
|
|
136
136
|
return {};
|
|
137
137
|
}
|
|
138
|
-
#endif
|
|
139
138
|
|
|
140
139
|
template <class Alloc>
|
|
141
140
|
static void transfer_impl(Alloc* alloc, slot_type* new_slot,
|