re2 1.24.0 → 1.25.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/LICENSE +15 -20
- package/README.md +63 -4
- package/binding.gyp +1 -2
- package/lib/addon.cc +9 -5
- package/lib/exec.cc +4 -4
- package/lib/match.cc +4 -4
- package/lib/new.cc +6 -6
- package/lib/pattern.cc +148 -1
- package/lib/replace.cc +5 -4
- package/lib/search.cc +1 -1
- package/lib/set.cc +85 -10
- package/lib/test.cc +1 -1
- package/lib/unicode_properties.h +15840 -0
- package/lib/wrapped_re2.h +40 -4
- package/lib/wrapped_re2_set.h +3 -1
- package/llms-full.txt +497 -0
- package/llms.txt +135 -0
- package/package.json +19 -11
- package/re2.d.ts +2 -0
- package/re2.js +1 -0
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +87 -74
- package/vendor/abseil-cpp/CMakeLists.txt +3 -3
- package/vendor/abseil-cpp/FAQ.md +130 -79
- package/vendor/abseil-cpp/MODULE.bazel +6 -7
- package/vendor/abseil-cpp/absl/BUILD.bazel +6 -0
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/algorithm/algorithm.h +34 -2
- package/vendor/abseil-cpp/absl/algorithm/container.h +164 -17
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +390 -13
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +53 -6
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +28 -4
- package/vendor/abseil-cpp/absl/base/attributes.h +61 -42
- package/vendor/abseil-cpp/absl/base/call_once.h +1 -0
- package/vendor/abseil-cpp/absl/base/casts.h +8 -1
- package/vendor/abseil-cpp/absl/base/casts_test.cc +3 -6
- package/vendor/abseil-cpp/absl/base/config.h +53 -9
- package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +9 -9
- package/vendor/abseil-cpp/absl/base/fast_type_id.h +30 -2
- package/vendor/abseil-cpp/absl/base/fast_type_id_test.cc +3 -0
- package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +15 -12
- package/vendor/abseil-cpp/absl/base/internal/hardening.h +136 -0
- package/vendor/abseil-cpp/absl/base/internal/hardening_test.cc +168 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +2 -2
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -0
- package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
- package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +1 -2
- package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
- package/vendor/abseil-cpp/absl/base/macros.h +36 -20
- package/vendor/abseil-cpp/absl/base/nullability.h +4 -3
- package/vendor/abseil-cpp/absl/base/optimization.h +3 -2
- package/vendor/abseil-cpp/absl/base/optimization_test.cc +4 -3
- package/vendor/abseil-cpp/absl/base/options.h +55 -1
- package/vendor/abseil-cpp/absl/base/policy_checks.h +5 -5
- package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
- package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
- package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +19 -28
- package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +3 -2
- package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +19 -7
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +6 -5
- package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +3 -5
- package/vendor/abseil-cpp/absl/container/btree_set.h +5 -5
- package/vendor/abseil-cpp/absl/container/btree_test.cc +11 -14
- package/vendor/abseil-cpp/absl/container/chunked_queue.h +8 -6
- package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +5 -5
- package/vendor/abseil-cpp/absl/container/fixed_array.h +14 -13
- package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +3 -3
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +18 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +34 -1
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +21 -7
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +39 -7
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +29 -29
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2 -2
- package/vendor/abseil-cpp/absl/container/internal/btree.h +32 -24
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +16 -17
- package/vendor/abseil-cpp/absl/container/internal/common.h +6 -5
- package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +16 -16
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +13 -13
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +41 -31
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +2 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +4 -4
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +27 -19
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -2
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -17
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +12 -30
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +28 -28
- package/vendor/abseil-cpp/absl/container/internal/layout.h +13 -13
- package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +3 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +60 -62
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +59 -39
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +619 -326
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +25 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +4 -4
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +575 -159
- package/vendor/abseil-cpp/absl/container/linked_hash_map.h +2 -2
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +27 -15
- package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +34 -0
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +25 -11
- package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +39 -7
- package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +7 -4
- package/vendor/abseil-cpp/absl/crc/BUILD.bazel +0 -1
- package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +2 -3
- package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +2 -1
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +6 -6
- package/vendor/abseil-cpp/absl/crc/internal/crc.cc +4 -6
- package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
- package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +143 -81
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +9 -31
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +3 -33
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +2 -1
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +12 -2
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +2 -3
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -0
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +46 -36
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +18 -58
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +5 -48
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +10 -124
- package/vendor/abseil-cpp/absl/debugging/symbolize.cc +20 -2
- package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +58 -106
- package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +37 -36
- package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -3
- package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +1 -1
- package/vendor/abseil-cpp/absl/flags/commandlineflag.h +8 -6
- package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +1 -1
- package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +5 -5
- package/vendor/abseil-cpp/absl/flags/flag_test.cc +30 -30
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +4 -4
- package/vendor/abseil-cpp/absl/flags/internal/flag.h +6 -6
- package/vendor/abseil-cpp/absl/flags/marshalling.h +2 -28
- package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +12 -11
- package/vendor/abseil-cpp/absl/flags/reflection_test.cc +1 -1
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +26 -1
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +29 -1
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +13 -14
- package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +46 -47
- package/vendor/abseil-cpp/absl/functional/bind_back.h +79 -0
- package/vendor/abseil-cpp/absl/functional/bind_back_test.cc +237 -0
- package/vendor/abseil-cpp/absl/functional/bind_front.h +7 -1
- package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +4 -4
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +2 -2
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +28 -28
- package/vendor/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
- package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
- package/vendor/abseil-cpp/absl/functional/overload_test.cc +13 -13
- package/vendor/abseil-cpp/absl/hash/BUILD.bazel +1 -2
- package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +1 -2
- package/vendor/abseil-cpp/absl/hash/hash.h +1 -1
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +14 -20
- package/vendor/abseil-cpp/absl/hash/hash_testing.h +11 -9
- package/vendor/abseil-cpp/absl/hash/internal/city.cc +39 -51
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +165 -47
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +86 -27
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +36 -1
- package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +8 -5
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +5 -2
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +5 -3
- package/vendor/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +15 -1
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -4
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +14 -0
- package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -1
- package/vendor/abseil-cpp/absl/log/internal/proto.cc +13 -0
- package/vendor/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
- package/vendor/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
- package/vendor/abseil-cpp/absl/log/internal/structured_proto_test.cc +3 -3
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +2 -2
- package/vendor/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +3 -3
- package/vendor/abseil-cpp/absl/log/log_format_test.cc +19 -2
- package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +18 -0
- package/vendor/abseil-cpp/absl/log/log_streamer.h +29 -2
- package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +18 -0
- package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +1 -1
- package/vendor/abseil-cpp/absl/log/vlog_is_on.h +0 -2
- package/vendor/abseil-cpp/absl/log/vlog_is_on_test.cc +6 -5
- package/vendor/abseil-cpp/absl/memory/memory.h +55 -5
- package/vendor/abseil-cpp/absl/memory/memory_test.cc +55 -1
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires.h +1 -1
- package/vendor/abseil-cpp/absl/meta/type_traits.h +119 -55
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +7 -7
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +6 -6
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +3 -1
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +0 -4
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +32 -33
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +25 -2
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +8 -5
- package/vendor/abseil-cpp/absl/random/BUILD.bazel +13 -1
- package/vendor/abseil-cpp/absl/random/CMakeLists.txt +23 -2
- package/vendor/abseil-cpp/absl/random/benchmarks.cc +1 -1
- package/vendor/abseil-cpp/absl/random/beta_distribution.h +2 -2
- package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
- package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +43 -0
- package/vendor/abseil-cpp/absl/random/discrete_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/distributions.h +17 -17
- package/vendor/abseil-cpp/absl/random/distributions_test.cc +4 -4
- package/vendor/abseil-cpp/absl/random/exponential_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +4 -2
- package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
- package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +14 -40
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +2 -2
- package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
- package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
- package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +4 -4
- package/vendor/abseil-cpp/absl/random/internal/seed_material.h +2 -1
- package/vendor/abseil-cpp/absl/random/internal/traits.h +21 -0
- package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +5 -0
- package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
- package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +2 -1
- package/vendor/abseil-cpp/absl/random/mocking_access.h +74 -0
- package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +9 -19
- package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +81 -0
- package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +26 -2
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +22 -8
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +43 -43
- package/vendor/abseil-cpp/absl/status/status.cc +62 -70
- package/vendor/abseil-cpp/absl/status/status.h +249 -23
- package/vendor/abseil-cpp/absl/status/status_benchmark.cc +12 -0
- package/vendor/abseil-cpp/absl/status/status_builder.cc +196 -0
- package/vendor/abseil-cpp/absl/status/status_builder.h +978 -0
- package/vendor/abseil-cpp/absl/status/status_builder_test.cc +380 -0
- package/vendor/abseil-cpp/absl/status/status_macros.h +484 -0
- package/vendor/abseil-cpp/absl/status/status_macros_test.cc +634 -0
- package/vendor/abseil-cpp/absl/status/status_matchers.h +2 -1
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +3 -4
- package/vendor/abseil-cpp/absl/status/status_payload_printer.h +3 -2
- package/vendor/abseil-cpp/absl/status/status_test.cc +443 -13
- package/vendor/abseil-cpp/absl/status/statusor.h +69 -36
- package/vendor/abseil-cpp/absl/status/statusor_test.cc +132 -35
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +42 -7
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +33 -4
- package/vendor/abseil-cpp/absl/strings/ascii.h +1 -2
- package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +5 -5
- package/vendor/abseil-cpp/absl/strings/cord.cc +26 -7
- package/vendor/abseil-cpp/absl/strings/cord.h +23 -13
- package/vendor/abseil-cpp/absl/strings/cord_buffer.h +4 -2
- package/vendor/abseil-cpp/absl/strings/cord_test.cc +85 -9
- package/vendor/abseil-cpp/absl/strings/escaping.cc +183 -35
- package/vendor/abseil-cpp/absl/strings/escaping.h +12 -2
- package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +1 -3
- package/vendor/abseil-cpp/absl/strings/escaping_test.cc +22 -18
- package/vendor/abseil-cpp/absl/strings/has_absl_stringify_test.cc +2 -2
- package/vendor/abseil-cpp/absl/strings/has_ostream_operator_test.cc +2 -2
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +10 -10
- package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
- package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
- package/vendor/abseil-cpp/absl/strings/internal/escaping.h +2 -26
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +23 -2
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +6 -2
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -24
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +16 -41
- package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
- package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +12 -20
- package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +510 -307
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -1
- package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +9 -10
- package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +6 -5
- package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
- package/vendor/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
- package/vendor/abseil-cpp/absl/strings/internal/stringify_stream_test.cc +111 -0
- package/vendor/abseil-cpp/absl/strings/numbers.cc +406 -0
- package/vendor/abseil-cpp/absl/strings/numbers.h +4 -0
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +33 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +10 -6
- package/vendor/abseil-cpp/absl/strings/str_cat.h +36 -1
- package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +28 -0
- package/vendor/abseil-cpp/absl/strings/str_join_test.cc +4 -4
- package/vendor/abseil-cpp/absl/strings/str_split.h +11 -6
- package/vendor/abseil-cpp/absl/strings/str_split_test.cc +13 -0
- package/vendor/abseil-cpp/absl/strings/substitute.h +2 -2
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +21 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +13 -0
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +32 -2
- package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +17 -3
- package/vendor/abseil-cpp/absl/time/BUILD.bazel +80 -0
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +73 -0
- package/vendor/abseil-cpp/absl/time/clock.h +3 -0
- package/vendor/abseil-cpp/absl/time/clock_interface.cc +71 -0
- package/vendor/abseil-cpp/absl/time/clock_interface.h +93 -0
- package/vendor/abseil-cpp/absl/time/clock_interface_test.cc +128 -0
- package/vendor/abseil-cpp/absl/time/format.cc +3 -10
- package/vendor/abseil-cpp/absl/time/format_test.cc +12 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +90 -89
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +80 -5
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +1 -2
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +3 -3
- package/vendor/abseil-cpp/absl/time/simulated_clock.cc +225 -0
- package/vendor/abseil-cpp/absl/time/simulated_clock.h +109 -0
- package/vendor/abseil-cpp/absl/time/simulated_clock_test.cc +614 -0
- package/vendor/abseil-cpp/absl/types/BUILD.bazel +116 -0
- package/vendor/abseil-cpp/absl/types/CMakeLists.txt +100 -0
- package/vendor/abseil-cpp/absl/types/any.h +26 -4
- package/vendor/abseil-cpp/absl/types/any_span.h +1067 -0
- package/vendor/abseil-cpp/absl/types/any_span_benchmark.cc +258 -0
- package/vendor/abseil-cpp/absl/types/any_span_test.cc +1210 -0
- package/vendor/abseil-cpp/absl/types/compare.h +4 -4
- package/vendor/abseil-cpp/absl/types/internal/any_span.h +477 -0
- package/vendor/abseil-cpp/absl/types/internal/span.h +5 -6
- package/vendor/abseil-cpp/absl/types/optional.h +30 -3
- package/vendor/abseil-cpp/absl/types/optional_ref.h +295 -0
- package/vendor/abseil-cpp/absl/types/optional_ref_test.cc +370 -0
- package/vendor/abseil-cpp/absl/types/source_location.cc +18 -0
- package/vendor/abseil-cpp/absl/types/source_location.h +172 -0
- package/vendor/abseil-cpp/absl/types/source_location_test.cc +139 -0
- package/vendor/abseil-cpp/absl/types/span.h +19 -23
- package/vendor/abseil-cpp/absl/types/variant.h +75 -18
- package/vendor/abseil-cpp/absl/types/variant_test.cc +23 -23
- package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/utility/utility.h +99 -16
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -0
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +10 -4
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +13 -6
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +10 -4
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +12 -5
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +9 -2
- package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +10 -3
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +8 -2
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +4 -3
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +2 -2
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -1
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
|
@@ -107,6 +107,7 @@
|
|
|
107
107
|
|
|
108
108
|
#include "absl/base/attributes.h"
|
|
109
109
|
#include "absl/base/config.h"
|
|
110
|
+
#include "absl/base/internal/hardening.h"
|
|
110
111
|
#include "absl/base/internal/iterator_traits.h"
|
|
111
112
|
#include "absl/base/macros.h"
|
|
112
113
|
#include "absl/container/internal/chunked_queue.h"
|
|
@@ -428,22 +429,22 @@ class chunked_queue {
|
|
|
428
429
|
// Returns a reference to the first element in the container.
|
|
429
430
|
// REQUIRES: !empty()
|
|
430
431
|
T& front() {
|
|
431
|
-
|
|
432
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
432
433
|
return *head_;
|
|
433
434
|
}
|
|
434
435
|
const T& front() const {
|
|
435
|
-
|
|
436
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
436
437
|
return *head_;
|
|
437
438
|
}
|
|
438
439
|
|
|
439
440
|
// Returns a reference to the last element in the container.
|
|
440
441
|
// REQUIRES: !empty()
|
|
441
442
|
T& back() {
|
|
442
|
-
|
|
443
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
443
444
|
return *(&*tail_ - 1);
|
|
444
445
|
}
|
|
445
446
|
const T& back() const {
|
|
446
|
-
|
|
447
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
447
448
|
return *(&*tail_ - 1);
|
|
448
449
|
}
|
|
449
450
|
|
|
@@ -460,7 +461,8 @@ class chunked_queue {
|
|
|
460
461
|
// (It is undefined behavior to swap between two containers with unequal
|
|
461
462
|
// allocators if propagate_on_container_swap is false, so we don't have to
|
|
462
463
|
// handle that here like we do in the move-assignment operator.)
|
|
463
|
-
|
|
464
|
+
absl::base_internal::HardeningAssert(get_allocator() ==
|
|
465
|
+
other.get_allocator());
|
|
464
466
|
swap(alloc_and_size_.size, other.alloc_and_size_.size);
|
|
465
467
|
}
|
|
466
468
|
}
|
|
@@ -709,7 +711,7 @@ inline void chunked_queue<T, BLo, BHi, Allocator>::DestroyAndDeallocateAll() {
|
|
|
709
711
|
|
|
710
712
|
template <typename T, size_t BLo, size_t BHi, typename Allocator>
|
|
711
713
|
inline void chunked_queue<T, BLo, BHi, Allocator>::pop_front() {
|
|
712
|
-
|
|
714
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
713
715
|
ABSL_ASSERT(head_.block);
|
|
714
716
|
AllocatorTraits::destroy(alloc_and_size_.allocator(), head_.ptr);
|
|
715
717
|
++head_.ptr;
|
|
@@ -756,13 +756,13 @@ TEST(ChunkedQueue, Hardening) {
|
|
|
756
756
|
}
|
|
757
757
|
|
|
758
758
|
absl::chunked_queue<int> q;
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
759
|
+
EXPECT_DEATH_IF_SUPPORTED(q.front(), "");
|
|
760
|
+
EXPECT_DEATH_IF_SUPPORTED(q.back(), "");
|
|
761
|
+
EXPECT_DEATH_IF_SUPPORTED(q.pop_front(), "");
|
|
762
762
|
|
|
763
763
|
const absl::chunked_queue<int> cq;
|
|
764
|
-
|
|
765
|
-
|
|
764
|
+
EXPECT_DEATH_IF_SUPPORTED(cq.front(), "");
|
|
765
|
+
EXPECT_DEATH_IF_SUPPORTED(cq.back(), "");
|
|
766
766
|
}
|
|
767
767
|
|
|
768
768
|
} // namespace
|
|
@@ -44,11 +44,12 @@
|
|
|
44
44
|
#include "absl/base/attributes.h"
|
|
45
45
|
#include "absl/base/config.h"
|
|
46
46
|
#include "absl/base/dynamic_annotations.h"
|
|
47
|
+
#include "absl/base/internal/hardening.h"
|
|
47
48
|
#include "absl/base/internal/iterator_traits.h"
|
|
48
|
-
#include "absl/base/internal/throw_delegate.h"
|
|
49
49
|
#include "absl/base/macros.h"
|
|
50
50
|
#include "absl/base/optimization.h"
|
|
51
51
|
#include "absl/base/port.h"
|
|
52
|
+
#include "absl/base/throw_delegate.h"
|
|
52
53
|
#include "absl/container/internal/compressed_tuple.h"
|
|
53
54
|
#include "absl/hash/internal/weakly_mixed_integer.h"
|
|
54
55
|
#include "absl/memory/memory.h"
|
|
@@ -96,7 +97,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
|
|
96
97
|
absl::allocator_is_nothrow<allocator_type>::value;
|
|
97
98
|
}
|
|
98
99
|
static constexpr bool DefaultConstructorIsNonTrivial() {
|
|
99
|
-
return !
|
|
100
|
+
return !std::is_trivially_default_constructible<StorageElement>::value;
|
|
100
101
|
}
|
|
101
102
|
|
|
102
103
|
public:
|
|
@@ -222,7 +223,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
|
|
222
223
|
// Returns a reference the ith element of the fixed array.
|
|
223
224
|
// REQUIRES: 0 <= i < size()
|
|
224
225
|
reference operator[](size_type i) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
225
|
-
|
|
226
|
+
absl::base_internal::HardeningAssertLT(i, size());
|
|
226
227
|
return data()[i];
|
|
227
228
|
}
|
|
228
229
|
|
|
@@ -230,7 +231,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
|
|
230
231
|
// ith element of the fixed array.
|
|
231
232
|
// REQUIRES: 0 <= i < size()
|
|
232
233
|
const_reference operator[](size_type i) const ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
233
|
-
|
|
234
|
+
absl::base_internal::HardeningAssertLT(i, size());
|
|
234
235
|
return data()[i];
|
|
235
236
|
}
|
|
236
237
|
|
|
@@ -240,7 +241,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
|
|
240
241
|
// array, or throws std::out_of_range
|
|
241
242
|
reference at(size_type i) ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
242
243
|
if (ABSL_PREDICT_FALSE(i >= size())) {
|
|
243
|
-
|
|
244
|
+
ThrowStdOutOfRange("FixedArray::at failed bounds check");
|
|
244
245
|
}
|
|
245
246
|
return data()[i];
|
|
246
247
|
}
|
|
@@ -249,7 +250,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
|
|
249
250
|
// of the fixed array.
|
|
250
251
|
const_reference at(size_type i) const ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
251
252
|
if (ABSL_PREDICT_FALSE(i >= size())) {
|
|
252
|
-
|
|
253
|
+
ThrowStdOutOfRange("FixedArray::at failed bounds check");
|
|
253
254
|
}
|
|
254
255
|
return data()[i];
|
|
255
256
|
}
|
|
@@ -258,14 +259,14 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
|
|
258
259
|
//
|
|
259
260
|
// Returns a reference to the first element of the fixed array.
|
|
260
261
|
reference front() ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
261
|
-
|
|
262
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
262
263
|
return data()[0];
|
|
263
264
|
}
|
|
264
265
|
|
|
265
266
|
// Overload of FixedArray::front() to return a reference to the first element
|
|
266
267
|
// of a fixed array of const values.
|
|
267
268
|
const_reference front() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
268
|
-
|
|
269
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
269
270
|
return data()[0];
|
|
270
271
|
}
|
|
271
272
|
|
|
@@ -273,14 +274,14 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
|
|
273
274
|
//
|
|
274
275
|
// Returns a reference to the last element of the fixed array.
|
|
275
276
|
reference back() ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
276
|
-
|
|
277
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
277
278
|
return data()[size() - 1];
|
|
278
279
|
}
|
|
279
280
|
|
|
280
281
|
// Overload of FixedArray::back() to return a reference to the last element
|
|
281
282
|
// of a fixed array of const values.
|
|
282
283
|
const_reference back() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
|
|
283
|
-
|
|
284
|
+
absl::base_internal::HardeningAssertNonEmpty(*this);
|
|
284
285
|
return data()[size() - 1];
|
|
285
286
|
}
|
|
286
287
|
|
|
@@ -414,14 +415,14 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
|
|
414
415
|
// error: call to int __builtin___sprintf_chk(etc...)
|
|
415
416
|
// will always overflow destination buffer [-Werror]
|
|
416
417
|
//
|
|
417
|
-
template <typename OuterT, typename InnerT =
|
|
418
|
+
template <typename OuterT, typename InnerT = std::remove_extent_t<OuterT>,
|
|
418
419
|
size_t InnerN = std::extent<OuterT>::value>
|
|
419
420
|
struct StorageElementWrapper {
|
|
420
421
|
InnerT array[InnerN];
|
|
421
422
|
};
|
|
422
423
|
|
|
423
424
|
using StorageElement =
|
|
424
|
-
|
|
425
|
+
std::conditional_t<std::is_array<value_type>::value,
|
|
425
426
|
StorageElementWrapper<value_type>, value_type>;
|
|
426
427
|
|
|
427
428
|
static pointer AsValueType(pointer ptr) { return ptr; }
|
|
@@ -458,7 +459,7 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
|
|
458
459
|
};
|
|
459
460
|
|
|
460
461
|
using InlinedStorage =
|
|
461
|
-
|
|
462
|
+
std::conditional_t<inline_elements == 0, EmptyInlinedStorage,
|
|
462
463
|
NonEmptyInlinedStorage>;
|
|
463
464
|
|
|
464
465
|
// Storage
|
|
@@ -112,7 +112,7 @@ TEST(FixedArrayTest, CopyCtor) {
|
|
|
112
112
|
TEST(FixedArrayTest, MoveCtor) {
|
|
113
113
|
absl::FixedArray<std::unique_ptr<int>, 10> on_stack(5);
|
|
114
114
|
for (int i = 0; i < 5; ++i) {
|
|
115
|
-
on_stack[i] =
|
|
115
|
+
on_stack[i] = std::make_unique<int>(i);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
absl::FixedArray<std::unique_ptr<int>, 10> stack_copy = std::move(on_stack);
|
|
@@ -121,7 +121,7 @@ TEST(FixedArrayTest, MoveCtor) {
|
|
|
121
121
|
|
|
122
122
|
absl::FixedArray<std::unique_ptr<int>, 10> allocated(15);
|
|
123
123
|
for (int i = 0; i < 15; ++i) {
|
|
124
|
-
allocated[i] =
|
|
124
|
+
allocated[i] = std::make_unique<int>(i);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
absl::FixedArray<std::unique_ptr<int>, 10> alloced_copy =
|
|
@@ -307,7 +307,7 @@ static void TestArrayOfArrays(int n) {
|
|
|
307
307
|
using InnerArray = ConstructionTester[elements_per_inner_array];
|
|
308
308
|
// Heap-allocate the FixedArray to avoid blowing the stack frame.
|
|
309
309
|
auto array_ptr =
|
|
310
|
-
|
|
310
|
+
std::make_unique<absl::FixedArray<InnerArray, inline_elements>>(n);
|
|
311
311
|
auto& array = *array_ptr;
|
|
312
312
|
|
|
313
313
|
ASSERT_EQ(array.size(), n);
|
|
@@ -171,16 +171,28 @@ class ABSL_ATTRIBUTE_OWNER flat_hash_map
|
|
|
171
171
|
// // Move is guaranteed efficient
|
|
172
172
|
// absl::flat_hash_map<int, std::string> map5(std::move(map4));
|
|
173
173
|
//
|
|
174
|
+
// // After the move, map4 is in a valid but unspecified state. The only
|
|
175
|
+
// // operations guaranteed to be safe on a moved-from map are destruction,
|
|
176
|
+
// // assignment, and clear(). Any other operation (e.g. size(), empty(),
|
|
177
|
+
// // iteration) results in undefined behavior.
|
|
178
|
+
//
|
|
174
179
|
// * Move assignment operator
|
|
175
180
|
//
|
|
176
181
|
// // May be efficient if allocators are compatible
|
|
177
182
|
// absl::flat_hash_map<int, std::string> map6;
|
|
178
183
|
// map6 = std::move(map5);
|
|
179
184
|
//
|
|
185
|
+
// // Same moved-from guarantees apply to map5 after this operation.
|
|
186
|
+
//
|
|
180
187
|
// * Range constructor
|
|
181
188
|
//
|
|
182
189
|
// std::vector<std::pair<int, std::string>> v = {{1, "a"}, {2, "b"}};
|
|
183
190
|
// absl::flat_hash_map<int, std::string> map7(v.begin(), v.end());
|
|
191
|
+
//
|
|
192
|
+
// * from_range constructor (C++23)
|
|
193
|
+
//
|
|
194
|
+
// std::vector<std::pair<int, std::string>> v = {{1, "a"}, {2, "b"}};
|
|
195
|
+
// absl::flat_hash_map<int, std::string> map8(std::from_range, v);
|
|
184
196
|
flat_hash_map() {}
|
|
185
197
|
using Base::Base;
|
|
186
198
|
|
|
@@ -609,22 +621,22 @@ namespace container_internal {
|
|
|
609
621
|
// Erasure and/or insertion of elements in the function is not allowed.
|
|
610
622
|
template <typename K, typename V, typename H, typename E, typename A,
|
|
611
623
|
typename Function>
|
|
612
|
-
decay_t<Function> c_for_each_fast(const flat_hash_map<K, V, H, E, A>& c,
|
|
613
|
-
|
|
624
|
+
std::decay_t<Function> c_for_each_fast(const flat_hash_map<K, V, H, E, A>& c,
|
|
625
|
+
Function&& f) {
|
|
614
626
|
container_internal::ForEach(f, &c);
|
|
615
627
|
return f;
|
|
616
628
|
}
|
|
617
629
|
template <typename K, typename V, typename H, typename E, typename A,
|
|
618
630
|
typename Function>
|
|
619
|
-
decay_t<Function> c_for_each_fast(flat_hash_map<K, V, H, E, A>& c,
|
|
620
|
-
|
|
631
|
+
std::decay_t<Function> c_for_each_fast(flat_hash_map<K, V, H, E, A>& c,
|
|
632
|
+
Function&& f) {
|
|
621
633
|
container_internal::ForEach(f, &c);
|
|
622
634
|
return f;
|
|
623
635
|
}
|
|
624
636
|
template <typename K, typename V, typename H, typename E, typename A,
|
|
625
637
|
typename Function>
|
|
626
|
-
decay_t<Function> c_for_each_fast(flat_hash_map<K, V, H, E, A>&& c,
|
|
627
|
-
|
|
638
|
+
std::decay_t<Function> c_for_each_fast(flat_hash_map<K, V, H, E, A>&& c,
|
|
639
|
+
Function&& f) {
|
|
628
640
|
container_internal::ForEach(f, &c);
|
|
629
641
|
return f;
|
|
630
642
|
}
|
|
@@ -33,7 +33,10 @@
|
|
|
33
33
|
#include "absl/container/internal/unordered_map_modifiers_test.h"
|
|
34
34
|
#include "absl/log/check.h"
|
|
35
35
|
#include "absl/meta/type_traits.h"
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
#if ABSL_INTERNAL_CPLUSPLUS_LANG >= 202002L
|
|
38
|
+
#include <ranges> // NOLINT(build/c++20)
|
|
39
|
+
#endif
|
|
37
40
|
|
|
38
41
|
namespace absl {
|
|
39
42
|
ABSL_NAMESPACE_BEGIN
|
|
@@ -445,6 +448,36 @@ TEST(Iterator, InconsistentHashEqFunctorsValidation) {
|
|
|
445
448
|
EXPECT_DEATH_IF_SUPPORTED(insert_conflicting_elems(), crash_message);
|
|
446
449
|
}
|
|
447
450
|
|
|
451
|
+
#if defined(__cpp_lib_containers_ranges) && \
|
|
452
|
+
__cpp_lib_containers_ranges >= 202202L
|
|
453
|
+
TEST(FlatHashMap, FromRange) {
|
|
454
|
+
std::vector<std::pair<int, int>> v = {{1, 2}, {3, 4}, {5, 6}};
|
|
455
|
+
absl::flat_hash_map<int, int> m(std::from_range, v);
|
|
456
|
+
EXPECT_THAT(m, UnorderedElementsAre(Pair(1, 2), Pair(3, 4), Pair(5, 6)));
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
TEST(FlatHashMap, FromRangeWithAllocator) {
|
|
460
|
+
std::vector<std::pair<int, int>> v = {{1, 2}, {3, 4}, {5, 6}};
|
|
461
|
+
absl::flat_hash_map<int, int,
|
|
462
|
+
absl::container_internal::hash_default_hash<int>,
|
|
463
|
+
absl::container_internal::hash_default_eq<int>,
|
|
464
|
+
Alloc<std::pair<const int, int>>>
|
|
465
|
+
m(std::from_range, v, 0, Alloc<std::pair<const int, int>>());
|
|
466
|
+
EXPECT_THAT(m, UnorderedElementsAre(Pair(1, 2), Pair(3, 4), Pair(5, 6)));
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
TEST(FlatHashMap, FromRangeWithHasherAndAllocator) {
|
|
470
|
+
std::vector<std::pair<int, int>> v = {{1, 2}, {3, 4}, {5, 6}};
|
|
471
|
+
using TestingHash = absl::container_internal::StatefulTestingHash;
|
|
472
|
+
absl::flat_hash_map<int, int, TestingHash,
|
|
473
|
+
absl::container_internal::hash_default_eq<int>,
|
|
474
|
+
Alloc<std::pair<const int, int>>>
|
|
475
|
+
m(std::from_range, v, 0, TestingHash{},
|
|
476
|
+
Alloc<std::pair<const int, int>>());
|
|
477
|
+
EXPECT_THAT(m, UnorderedElementsAre(Pair(1, 2), Pair(3, 4), Pair(5, 6)));
|
|
478
|
+
}
|
|
479
|
+
#endif
|
|
480
|
+
|
|
448
481
|
} // namespace
|
|
449
482
|
} // namespace container_internal
|
|
450
483
|
ABSL_NAMESPACE_END
|
|
@@ -167,16 +167,28 @@ class ABSL_ATTRIBUTE_OWNER flat_hash_set
|
|
|
167
167
|
// // Move is guaranteed efficient
|
|
168
168
|
// absl::flat_hash_set<std::string> set5(std::move(set4));
|
|
169
169
|
//
|
|
170
|
+
// // After the move, set4 is in a valid but unspecified state. The only
|
|
171
|
+
// // operations guaranteed to be safe on a moved-from set are destruction,
|
|
172
|
+
// // assignment, and clear(). Any other operation (e.g. size(), empty(),
|
|
173
|
+
// // iteration) results in undefined behavior.
|
|
174
|
+
//
|
|
170
175
|
// * Move assignment operator
|
|
171
176
|
//
|
|
172
177
|
// // May be efficient if allocators are compatible
|
|
173
178
|
// absl::flat_hash_set<std::string> set6;
|
|
174
179
|
// set6 = std::move(set5);
|
|
175
180
|
//
|
|
181
|
+
// // Same moved-from guarantees apply to set5 after this operation.
|
|
182
|
+
//
|
|
176
183
|
// * Range constructor
|
|
177
184
|
//
|
|
178
185
|
// std::vector<std::string> v = {"a", "b"};
|
|
179
186
|
// absl::flat_hash_set<std::string> set7(v.begin(), v.end());
|
|
187
|
+
//
|
|
188
|
+
// * from_range constructor (C++23)
|
|
189
|
+
//
|
|
190
|
+
// std::vector<std::string> v = {"a", "b"};
|
|
191
|
+
// absl::flat_hash_set<std::string> set8(std::from_range, v);
|
|
180
192
|
flat_hash_set() {}
|
|
181
193
|
using Base::Base;
|
|
182
194
|
|
|
@@ -512,18 +524,20 @@ namespace container_internal {
|
|
|
512
524
|
// There is no guarantees on the order of the function calls.
|
|
513
525
|
// Erasure and/or insertion of elements in the function is not allowed.
|
|
514
526
|
template <typename T, typename H, typename E, typename A, typename Function>
|
|
515
|
-
decay_t<Function> c_for_each_fast(const flat_hash_set<T, H, E, A>& c,
|
|
516
|
-
|
|
527
|
+
std::decay_t<Function> c_for_each_fast(const flat_hash_set<T, H, E, A>& c,
|
|
528
|
+
Function&& f) {
|
|
517
529
|
container_internal::ForEach(f, &c);
|
|
518
530
|
return f;
|
|
519
531
|
}
|
|
520
532
|
template <typename T, typename H, typename E, typename A, typename Function>
|
|
521
|
-
decay_t<Function> c_for_each_fast(flat_hash_set<T, H, E, A>& c,
|
|
533
|
+
std::decay_t<Function> c_for_each_fast(flat_hash_set<T, H, E, A>& c,
|
|
534
|
+
Function&& f) {
|
|
522
535
|
container_internal::ForEach(f, &c);
|
|
523
536
|
return f;
|
|
524
537
|
}
|
|
525
538
|
template <typename T, typename H, typename E, typename A, typename Function>
|
|
526
|
-
decay_t<Function> c_for_each_fast(flat_hash_set<T, H, E, A>&& c,
|
|
539
|
+
std::decay_t<Function> c_for_each_fast(flat_hash_set<T, H, E, A>&& c,
|
|
540
|
+
Function&& f) {
|
|
527
541
|
container_internal::ForEach(f, &c);
|
|
528
542
|
return f;
|
|
529
543
|
}
|
|
@@ -545,14 +559,14 @@ struct FlatHashSetPolicy {
|
|
|
545
559
|
|
|
546
560
|
template <class Allocator, class... Args>
|
|
547
561
|
static void construct(Allocator* alloc, slot_type* slot, Args&&... args) {
|
|
548
|
-
|
|
549
|
-
|
|
562
|
+
std::allocator_traits<Allocator>::construct(*alloc, slot,
|
|
563
|
+
std::forward<Args>(args)...);
|
|
550
564
|
}
|
|
551
565
|
|
|
552
566
|
// Return std::true_type in case destroy is trivial.
|
|
553
567
|
template <class Allocator>
|
|
554
568
|
static auto destroy(Allocator* alloc, slot_type* slot) {
|
|
555
|
-
|
|
569
|
+
std::allocator_traits<Allocator>::destroy(*alloc, slot);
|
|
556
570
|
return IsDestructionTrivial<Allocator, slot_type>();
|
|
557
571
|
}
|
|
558
572
|
|
|
@@ -38,6 +38,10 @@
|
|
|
38
38
|
#include "absl/memory/memory.h"
|
|
39
39
|
#include "absl/strings/string_view.h"
|
|
40
40
|
|
|
41
|
+
#if ABSL_INTERNAL_CPLUSPLUS_LANG >= 202002L
|
|
42
|
+
#include <ranges> // NOLINT(build/c++20)
|
|
43
|
+
#endif
|
|
44
|
+
|
|
41
45
|
namespace absl {
|
|
42
46
|
ABSL_NAMESPACE_BEGIN
|
|
43
47
|
namespace container_internal {
|
|
@@ -105,11 +109,11 @@ TEST(FlatHashSet, MergeExtractInsert) {
|
|
|
105
109
|
}
|
|
106
110
|
};
|
|
107
111
|
absl::flat_hash_set<std::unique_ptr<int>, Hash, Eq> set1, set2;
|
|
108
|
-
set1.insert(
|
|
109
|
-
set1.insert(
|
|
112
|
+
set1.insert(std::make_unique<int>(7));
|
|
113
|
+
set1.insert(std::make_unique<int>(17));
|
|
110
114
|
|
|
111
|
-
set2.insert(
|
|
112
|
-
set2.insert(
|
|
115
|
+
set2.insert(std::make_unique<int>(7));
|
|
116
|
+
set2.insert(std::make_unique<int>(19));
|
|
113
117
|
|
|
114
118
|
EXPECT_THAT(set1, UnorderedElementsAre(Pointee(7), Pointee(17)));
|
|
115
119
|
EXPECT_THAT(set2, UnorderedElementsAre(Pointee(7), Pointee(19)));
|
|
@@ -119,7 +123,7 @@ TEST(FlatHashSet, MergeExtractInsert) {
|
|
|
119
123
|
EXPECT_THAT(set1, UnorderedElementsAre(Pointee(7), Pointee(17), Pointee(19)));
|
|
120
124
|
EXPECT_THAT(set2, UnorderedElementsAre(Pointee(7)));
|
|
121
125
|
|
|
122
|
-
auto node = set1.extract(
|
|
126
|
+
auto node = set1.extract(std::make_unique<int>(7));
|
|
123
127
|
EXPECT_TRUE(node);
|
|
124
128
|
EXPECT_THAT(node.value(), Pointee(7));
|
|
125
129
|
EXPECT_THAT(set1, UnorderedElementsAre(Pointee(17), Pointee(19)));
|
|
@@ -133,12 +137,12 @@ TEST(FlatHashSet, MergeExtractInsert) {
|
|
|
133
137
|
EXPECT_NE(insert_result.position->get(), insert_result.node.value().get());
|
|
134
138
|
EXPECT_THAT(set2, UnorderedElementsAre(Pointee(7)));
|
|
135
139
|
|
|
136
|
-
node = set1.extract(
|
|
140
|
+
node = set1.extract(std::make_unique<int>(17));
|
|
137
141
|
EXPECT_TRUE(node);
|
|
138
142
|
EXPECT_THAT(node.value(), Pointee(17));
|
|
139
143
|
EXPECT_THAT(set1, UnorderedElementsAre(Pointee(19)));
|
|
140
144
|
|
|
141
|
-
node.value() =
|
|
145
|
+
node.value() = std::make_unique<int>(23);
|
|
142
146
|
|
|
143
147
|
insert_result = set2.insert(std::move(node));
|
|
144
148
|
EXPECT_FALSE(node);
|
|
@@ -395,6 +399,34 @@ TEST(FlatHashSet, IsDefaultHash) {
|
|
|
395
399
|
false);
|
|
396
400
|
}
|
|
397
401
|
|
|
402
|
+
#if defined(__cpp_lib_containers_ranges) && \
|
|
403
|
+
__cpp_lib_containers_ranges >= 202202L
|
|
404
|
+
TEST(FlatHashSet, FromRange) {
|
|
405
|
+
std::vector<int> v = {1, 2, 3, 4, 5};
|
|
406
|
+
absl::flat_hash_set<int> s(std::from_range, v);
|
|
407
|
+
EXPECT_THAT(s, UnorderedElementsAre(1, 2, 3, 4, 5));
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
TEST(FlatHashSet, FromRangeWithAllocator) {
|
|
411
|
+
std::vector<int> v = {1, 2, 3, 4, 5};
|
|
412
|
+
absl::flat_hash_set<int, absl::container_internal::hash_default_hash<int>,
|
|
413
|
+
absl::container_internal::hash_default_eq<int>,
|
|
414
|
+
Alloc<int>>
|
|
415
|
+
s(std::from_range, v, 0, Alloc<int>());
|
|
416
|
+
EXPECT_THAT(s, UnorderedElementsAre(1, 2, 3, 4, 5));
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
TEST(FlatHashSet, FromRangeWithHasherAndAllocator) {
|
|
420
|
+
std::vector<int> v = {1, 2, 3, 4, 5};
|
|
421
|
+
using TestingHash = absl::container_internal::StatefulTestingHash;
|
|
422
|
+
absl::flat_hash_set<int, TestingHash,
|
|
423
|
+
absl::container_internal::hash_default_eq<int>,
|
|
424
|
+
Alloc<int>>
|
|
425
|
+
s(std::from_range, v, 0, TestingHash{}, Alloc<int>());
|
|
426
|
+
EXPECT_THAT(s, UnorderedElementsAre(1, 2, 3, 4, 5));
|
|
427
|
+
}
|
|
428
|
+
#endif
|
|
429
|
+
|
|
398
430
|
} // namespace
|
|
399
431
|
} // namespace container_internal
|
|
400
432
|
ABSL_NAMESPACE_END
|