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
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
#include <list>
|
|
64
64
|
#include <map>
|
|
65
65
|
#include <memory>
|
|
66
|
+
#include <optional>
|
|
66
67
|
#include <set>
|
|
67
68
|
#include <string>
|
|
68
69
|
#include <string_view>
|
|
@@ -71,12 +72,14 @@
|
|
|
71
72
|
#include <unordered_map>
|
|
72
73
|
#include <unordered_set>
|
|
73
74
|
#include <utility>
|
|
75
|
+
#include <variant>
|
|
74
76
|
#include <vector>
|
|
75
77
|
|
|
76
78
|
#include "absl/base/attributes.h"
|
|
77
79
|
#include "absl/base/internal/endian.h"
|
|
78
80
|
#include "absl/base/internal/unaligned_access.h"
|
|
79
81
|
#include "absl/base/optimization.h"
|
|
82
|
+
#include "absl/base/options.h"
|
|
80
83
|
#include "absl/base/port.h"
|
|
81
84
|
#include "absl/container/fixed_array.h"
|
|
82
85
|
#include "absl/hash/internal/city.h"
|
|
@@ -94,6 +97,10 @@
|
|
|
94
97
|
#include <filesystem> // NOLINT
|
|
95
98
|
#endif
|
|
96
99
|
|
|
100
|
+
// We are allowed to use a non-portable hardware-accelerated implementation in
|
|
101
|
+
// headers if ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY != 0
|
|
102
|
+
#if ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY != 0
|
|
103
|
+
|
|
97
104
|
// 32-bit builds with SSE 4.2 do not have _mm_crc32_u64, so the
|
|
98
105
|
// __x86_64__ condition is necessary.
|
|
99
106
|
#if defined(__SSE4_2__) && defined(__x86_64__)
|
|
@@ -104,7 +111,10 @@
|
|
|
104
111
|
#define ABSL_HASH_INTERNAL_CRC32_U32 _mm_crc32_u32
|
|
105
112
|
#define ABSL_HASH_INTERNAL_CRC32_U8 _mm_crc32_u8
|
|
106
113
|
|
|
107
|
-
|
|
114
|
+
// 32-bit builds with AVX do not have _mm_crc32_u64, so the _M_X64 condition is
|
|
115
|
+
// necessary.
|
|
116
|
+
#elif defined(_MSC_VER) && !defined(__clang__) && defined(__AVX__) && \
|
|
117
|
+
defined(_M_X64)
|
|
108
118
|
|
|
109
119
|
// MSVC AVX (/arch:AVX) implies SSE 4.2.
|
|
110
120
|
#include <intrin.h>
|
|
@@ -124,6 +134,15 @@
|
|
|
124
134
|
#define ABSL_HASH_INTERNAL_CRC32_U32 __crc32cw
|
|
125
135
|
#define ABSL_HASH_INTERNAL_CRC32_U8 __crc32cb
|
|
126
136
|
|
|
137
|
+
#endif // Platform tests
|
|
138
|
+
|
|
139
|
+
#endif // ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY != 0
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
#if ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY == 1
|
|
143
|
+
#ifndef ABSL_HASH_INTERNAL_HAS_CRC32
|
|
144
|
+
#error "Hardware acceleration is required by ABSL_OPTION_INLINE_HW_ACCEL_STRATEGY but not supported on this platform; see absl/base/options.h"
|
|
145
|
+
#endif
|
|
127
146
|
#endif
|
|
128
147
|
|
|
129
148
|
namespace absl {
|
|
@@ -399,7 +418,7 @@ struct HashWithSeed {
|
|
|
399
418
|
// Convenience function that combines `hash_state` with the byte representation
|
|
400
419
|
// of `value`.
|
|
401
420
|
template <typename H, typename T,
|
|
402
|
-
|
|
421
|
+
std::enable_if_t<FitsIn64Bits<T>::value, int> = 0>
|
|
403
422
|
H hash_bytes(H hash_state, const T& value) {
|
|
404
423
|
const unsigned char* start = reinterpret_cast<const unsigned char*>(&value);
|
|
405
424
|
uint64_t v;
|
|
@@ -416,7 +435,7 @@ H hash_bytes(H hash_state, const T& value) {
|
|
|
416
435
|
return CombineRaw()(std::move(hash_state), v);
|
|
417
436
|
}
|
|
418
437
|
template <typename H, typename T,
|
|
419
|
-
|
|
438
|
+
std::enable_if_t<!FitsIn64Bits<T>::value, int> = 0>
|
|
420
439
|
H hash_bytes(H hash_state, const T& value) {
|
|
421
440
|
const unsigned char* start = reinterpret_cast<const unsigned char*>(&value);
|
|
422
441
|
return H::combine_contiguous(std::move(hash_state), start, sizeof(value));
|
|
@@ -585,7 +604,7 @@ AbslHashValue(H hash_state, const std::pair<T1, T2>& p) {
|
|
|
585
604
|
// Helper function for hashing a tuple. The third argument should
|
|
586
605
|
// be an index_sequence running from 0 to tuple_size<Tuple> - 1.
|
|
587
606
|
template <typename H, typename Tuple, size_t... Is>
|
|
588
|
-
H hash_tuple(H hash_state, const Tuple& t,
|
|
607
|
+
H hash_tuple(H hash_state, const Tuple& t, std::index_sequence<Is...>) {
|
|
589
608
|
return H::combine(std::move(hash_state), std::get<Is>(t)...);
|
|
590
609
|
}
|
|
591
610
|
|
|
@@ -596,11 +615,11 @@ template <typename H, typename... Ts>
|
|
|
596
615
|
// for now.
|
|
597
616
|
H
|
|
598
617
|
#else // _MSC_VER
|
|
599
|
-
typename std::enable_if<
|
|
618
|
+
typename std::enable_if<std::conjunction<is_hashable<Ts>...>::value, H>::type
|
|
600
619
|
#endif // _MSC_VER
|
|
601
620
|
AbslHashValue(H hash_state, const std::tuple<Ts...>& t) {
|
|
602
621
|
return hash_internal::hash_tuple(std::move(hash_state), t,
|
|
603
|
-
|
|
622
|
+
std::make_index_sequence<sizeof...(Ts)>());
|
|
604
623
|
}
|
|
605
624
|
|
|
606
625
|
// -----------------------------------------------------------------------------
|
|
@@ -645,7 +664,7 @@ H AbslHashValue(H hash_state, absl::string_view str) {
|
|
|
645
664
|
|
|
646
665
|
// Support std::wstring, std::u16string and std::u32string.
|
|
647
666
|
template <typename Char, typename Alloc, typename H,
|
|
648
|
-
typename =
|
|
667
|
+
typename = std::enable_if_t<std::is_same<Char, wchar_t>::value ||
|
|
649
668
|
std::is_same<Char, char16_t>::value ||
|
|
650
669
|
std::is_same<Char, char32_t>::value>>
|
|
651
670
|
H AbslHashValue(
|
|
@@ -656,7 +675,7 @@ H AbslHashValue(
|
|
|
656
675
|
|
|
657
676
|
// Support std::wstring_view, std::u16string_view and std::u32string_view.
|
|
658
677
|
template <typename Char, typename H,
|
|
659
|
-
typename =
|
|
678
|
+
typename = std::enable_if_t<std::is_same<Char, wchar_t>::value ||
|
|
660
679
|
std::is_same<Char, char16_t>::value ||
|
|
661
680
|
std::is_same<Char, char32_t>::value>>
|
|
662
681
|
H AbslHashValue(H hash_state, std::basic_string_view<Char> str) {
|
|
@@ -675,7 +694,7 @@ H AbslHashValue(H hash_state, std::basic_string_view<Char> str) {
|
|
|
675
694
|
// Support std::filesystem::path. The SFINAE is required because some string
|
|
676
695
|
// types are implicitly convertible to std::filesystem::path.
|
|
677
696
|
template <typename Path, typename H,
|
|
678
|
-
typename =
|
|
697
|
+
typename = std::enable_if_t<
|
|
679
698
|
std::is_same_v<Path, std::filesystem::path>>>
|
|
680
699
|
H AbslHashValue(H hash_state, const Path& path) {
|
|
681
700
|
// This is implemented by deferring to the standard library to compute the
|
|
@@ -895,10 +914,10 @@ typename std::enable_if<is_hashable<T>::value, H>::type AbslHashValue(
|
|
|
895
914
|
return H::combine(std::move(hash_state), opt.get());
|
|
896
915
|
}
|
|
897
916
|
|
|
898
|
-
// AbslHashValue for hashing
|
|
917
|
+
// AbslHashValue for hashing std::optional
|
|
899
918
|
template <typename H, typename T>
|
|
900
919
|
typename std::enable_if<is_hashable<T>::value, H>::type AbslHashValue(
|
|
901
|
-
H hash_state, const
|
|
920
|
+
H hash_state, const std::optional<T>& opt) {
|
|
902
921
|
if (opt) hash_state = H::combine(std::move(hash_state), *opt);
|
|
903
922
|
return H::combine(std::move(hash_state), opt.has_value());
|
|
904
923
|
}
|
|
@@ -912,12 +931,12 @@ struct VariantVisitor {
|
|
|
912
931
|
}
|
|
913
932
|
};
|
|
914
933
|
|
|
915
|
-
// AbslHashValue for hashing
|
|
934
|
+
// AbslHashValue for hashing std::variant
|
|
916
935
|
template <typename H, typename... T>
|
|
917
|
-
typename std::enable_if<conjunction<is_hashable<T>...>::value, H>::type
|
|
918
|
-
AbslHashValue(H hash_state, const
|
|
936
|
+
typename std::enable_if<std::conjunction<is_hashable<T>...>::value, H>::type
|
|
937
|
+
AbslHashValue(H hash_state, const std::variant<T...>& v) {
|
|
919
938
|
if (!v.valueless_by_exception()) {
|
|
920
|
-
hash_state =
|
|
939
|
+
hash_state = std::visit(VariantVisitor<H>{std::move(hash_state)}, v);
|
|
921
940
|
}
|
|
922
941
|
return H::combine(std::move(hash_state), v.index());
|
|
923
942
|
}
|
|
@@ -1057,10 +1076,51 @@ inline uint32_t Read1To3(const unsigned char* p, size_t len) {
|
|
|
1057
1076
|
return mem0 | mem1;
|
|
1058
1077
|
}
|
|
1059
1078
|
|
|
1079
|
+
#ifdef ABSL_HASH_INTERNAL_HAS_CRC32
|
|
1080
|
+
|
|
1081
|
+
ABSL_ATTRIBUTE_ALWAYS_INLINE inline uint64_t CombineRawImpl(uint64_t state,
|
|
1082
|
+
uint64_t value) {
|
|
1083
|
+
// We use a union to access the high and low 32 bits of the state.
|
|
1084
|
+
union {
|
|
1085
|
+
uint64_t u64;
|
|
1086
|
+
struct {
|
|
1087
|
+
#ifdef ABSL_IS_LITTLE_ENDIAN
|
|
1088
|
+
uint32_t low, high;
|
|
1089
|
+
#else // big endian
|
|
1090
|
+
uint32_t high, low;
|
|
1091
|
+
#endif
|
|
1092
|
+
} u32s;
|
|
1093
|
+
} s;
|
|
1094
|
+
s.u64 = state;
|
|
1095
|
+
// The general idea here is to do two CRC32 operations in parallel using the
|
|
1096
|
+
// low and high 32 bits of state as CRC states. Note that: (1) when absl::Hash
|
|
1097
|
+
// is inlined into swisstable lookups, we know that the seed's high bits are
|
|
1098
|
+
// zero so s.u32s.high is available immediately. (2) We chose to multiply
|
|
1099
|
+
// value by 3 for the low CRC because (a) multiplication by 3 can be done in 1
|
|
1100
|
+
// cycle on x86/ARM and (b) multiplication has carry bits so it's nonlinear in
|
|
1101
|
+
// GF(2) and therefore ensures that the two CRCs are independent (unlike bit
|
|
1102
|
+
// rotation, XOR, etc). (3) We also tried using addition instead of
|
|
1103
|
+
// multiplication by 3, but (a) code size is larger and (b) if the input keys
|
|
1104
|
+
// all have 0s in the bits where the addition constant has 1s, then the
|
|
1105
|
+
// addition is equivalent to XOR and linear in GF(2). (4) The union makes it
|
|
1106
|
+
// easy for the compiler to understand that the high and low CRC states are
|
|
1107
|
+
// independent from each other so that when CombineRawImpl is repeated (e.g.
|
|
1108
|
+
// for std::pair<size_t, size_t>), the CRC chains can run in parallel. We
|
|
1109
|
+
// originally tried using bswaps rather than shifting by 32 bits (to get from
|
|
1110
|
+
// high to low bits) because bswap is one byte smaller in code size, but the
|
|
1111
|
+
// compiler couldn't understand that the CRC chains were independent.
|
|
1112
|
+
s.u32s.high =
|
|
1113
|
+
static_cast<uint32_t>(ABSL_HASH_INTERNAL_CRC32_U64(s.u32s.high, value));
|
|
1114
|
+
s.u32s.low = static_cast<uint32_t>(
|
|
1115
|
+
ABSL_HASH_INTERNAL_CRC32_U64(s.u32s.low, 3 * value));
|
|
1116
|
+
return s.u64;
|
|
1117
|
+
}
|
|
1118
|
+
#else // ABSL_HASH_INTERNAL_HAS_CRC32
|
|
1060
1119
|
ABSL_ATTRIBUTE_ALWAYS_INLINE inline uint64_t CombineRawImpl(uint64_t state,
|
|
1061
1120
|
uint64_t value) {
|
|
1062
1121
|
return Mix(state ^ value, kMul);
|
|
1063
1122
|
}
|
|
1123
|
+
#endif // ABSL_HASH_INTERNAL_HAS_CRC32
|
|
1064
1124
|
|
|
1065
1125
|
// Slow dispatch path for calls to CombineContiguousImpl with a size argument
|
|
1066
1126
|
// larger than inlined size. Has the same effect as calling
|
|
@@ -1219,8 +1279,7 @@ inline uint64_t CombineContiguousImpl(
|
|
|
1219
1279
|
}
|
|
1220
1280
|
#endif // ABSL_HASH_INTERNAL_HAS_CRC32
|
|
1221
1281
|
|
|
1222
|
-
#if defined(ABSL_INTERNAL_LEGACY_HASH_NAMESPACE)
|
|
1223
|
-
ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_
|
|
1282
|
+
#if defined(ABSL_INTERNAL_LEGACY_HASH_NAMESPACE)
|
|
1224
1283
|
#define ABSL_HASH_INTERNAL_SUPPORT_LEGACY_HASH_ 1
|
|
1225
1284
|
#else
|
|
1226
1285
|
#define ABSL_HASH_INTERNAL_SUPPORT_LEGACY_HASH_ 0
|
|
@@ -1254,14 +1313,14 @@ struct HashSelect {
|
|
|
1254
1313
|
struct UniquelyRepresentedProbe {
|
|
1255
1314
|
template <typename H, typename T>
|
|
1256
1315
|
static auto Invoke(H state, const T& value)
|
|
1257
|
-
->
|
|
1316
|
+
-> std::enable_if_t<is_uniquely_represented<T>::value, H> {
|
|
1258
1317
|
return hash_internal::hash_bytes(std::move(state), value);
|
|
1259
1318
|
}
|
|
1260
1319
|
};
|
|
1261
1320
|
|
|
1262
1321
|
struct HashValueProbe {
|
|
1263
1322
|
template <typename H, typename T>
|
|
1264
|
-
static auto Invoke(H state, const T& value) ->
|
|
1323
|
+
static auto Invoke(H state, const T& value) -> std::enable_if_t<
|
|
1265
1324
|
std::is_same<H,
|
|
1266
1325
|
decltype(AbslHashValue(std::move(state), value))>::value,
|
|
1267
1326
|
H> {
|
|
@@ -1272,7 +1331,7 @@ struct HashSelect {
|
|
|
1272
1331
|
struct LegacyHashProbe {
|
|
1273
1332
|
#if ABSL_HASH_INTERNAL_SUPPORT_LEGACY_HASH_
|
|
1274
1333
|
template <typename H, typename T>
|
|
1275
|
-
static auto Invoke(H state, const T& value) ->
|
|
1334
|
+
static auto Invoke(H state, const T& value) -> std::enable_if_t<
|
|
1276
1335
|
std::is_convertible<
|
|
1277
1336
|
decltype(ABSL_INTERNAL_LEGACY_HASH_NAMESPACE::hash<T>()(value)),
|
|
1278
1337
|
size_t>::value,
|
|
@@ -1287,7 +1346,7 @@ struct HashSelect {
|
|
|
1287
1346
|
struct StdHashProbe {
|
|
1288
1347
|
template <typename H, typename T>
|
|
1289
1348
|
static auto Invoke(H state, const T& value)
|
|
1290
|
-
->
|
|
1349
|
+
-> std::enable_if_t<type_traits_internal::IsHashable<T>::value, H> {
|
|
1291
1350
|
return hash_internal::hash_bytes(std::move(state), std::hash<T>{}(value));
|
|
1292
1351
|
}
|
|
1293
1352
|
};
|
|
@@ -1309,7 +1368,7 @@ struct HashSelect {
|
|
|
1309
1368
|
// Probe each implementation in order.
|
|
1310
1369
|
// disjunction provides short circuiting wrt instantiation.
|
|
1311
1370
|
template <typename T>
|
|
1312
|
-
using Apply =
|
|
1371
|
+
using Apply = std::disjunction< //
|
|
1313
1372
|
Probe<WeaklyMixedIntegerProbe, T>, //
|
|
1314
1373
|
Probe<UniquelyRepresentedProbe, T>, //
|
|
1315
1374
|
Probe<HashValueProbe, T>, //
|
|
@@ -1325,8 +1384,8 @@ struct is_hashable
|
|
|
1325
1384
|
class ABSL_DLL MixingHashState : public HashStateBase<MixingHashState> {
|
|
1326
1385
|
template <typename T>
|
|
1327
1386
|
using IntegralFastPath =
|
|
1328
|
-
conjunction<std::is_integral<T>, is_uniquely_represented<T>,
|
|
1329
|
-
|
|
1387
|
+
std::conjunction<std::is_integral<T>, is_uniquely_represented<T>,
|
|
1388
|
+
FitsIn64Bits<T>>;
|
|
1330
1389
|
|
|
1331
1390
|
public:
|
|
1332
1391
|
// Move only
|
|
@@ -1354,13 +1413,13 @@ class ABSL_DLL MixingHashState : public HashStateBase<MixingHashState> {
|
|
|
1354
1413
|
// Otherwise we would be instantiating and calling dozens of functions for
|
|
1355
1414
|
// something that is just one multiplication and a couple xor's.
|
|
1356
1415
|
// The result should be the same as running the whole algorithm, but faster.
|
|
1357
|
-
template <typename T,
|
|
1416
|
+
template <typename T, std::enable_if_t<IntegralFastPath<T>::value, int> = 0>
|
|
1358
1417
|
static size_t hash_with_seed(T value, size_t seed) {
|
|
1359
1418
|
return static_cast<size_t>(
|
|
1360
1419
|
CombineRawImpl(seed, static_cast<std::make_unsigned_t<T>>(value)));
|
|
1361
1420
|
}
|
|
1362
1421
|
|
|
1363
|
-
template <typename T,
|
|
1422
|
+
template <typename T, std::enable_if_t<!IntegralFastPath<T>::value, int> = 0>
|
|
1364
1423
|
static size_t hash_with_seed(const T& value, size_t seed) {
|
|
1365
1424
|
return static_cast<size_t>(combine(MixingHashState{seed}, value).state_);
|
|
1366
1425
|
}
|
|
@@ -1482,7 +1541,7 @@ struct HashImpl {
|
|
|
1482
1541
|
|
|
1483
1542
|
template <typename T>
|
|
1484
1543
|
struct Hash
|
|
1485
|
-
:
|
|
1544
|
+
: std::conditional_t<is_hashable<T>::value, HashImpl<T>, PoisonedHash> {};
|
|
1486
1545
|
|
|
1487
1546
|
template <typename H>
|
|
1488
1547
|
template <typename T, typename... Ts>
|
|
@@ -368,7 +368,7 @@ TEST(LowLevelHashTest, VerifyGolden) {
|
|
|
368
368
|
<< "We only maintain golden data for little endian 64 bit systems with "
|
|
369
369
|
"128 bit intristics.";
|
|
370
370
|
}
|
|
371
|
-
#elif defined(__SSE4_2__) && defined(__AES__)
|
|
371
|
+
#elif (defined(__SSE4_2__) && defined(__AES__))
|
|
372
372
|
constexpr uint64_t kGolden[kNumGoldenOutputs] = {
|
|
373
373
|
0xd6bdb2c9ba5e55f2, 0xffd3e23d4115a8ae, 0x2c3218ef486127de,
|
|
374
374
|
0x554fa7f3a262b886, 0x06304cbf82e312d3, 0x490b3fb5af80622c,
|
|
@@ -403,6 +403,41 @@ TEST(LowLevelHashTest, VerifyGolden) {
|
|
|
403
403
|
0x724110fb509e4376, 0xebe74b016b5cfb88, 0x3b0fe11dcf175fc9,
|
|
404
404
|
0x20b737b9c0490538, 0x0db21c429b45fd17,
|
|
405
405
|
};
|
|
406
|
+
#elif (defined(ABSL_INTERNAL_HAVE_ARM_NEON) && defined(__ARM_FEATURE_CRYPTO))
|
|
407
|
+
constexpr uint64_t kGolden[kNumGoldenOutputs] = {
|
|
408
|
+
0xe3de56d839559570, 0x77afbb8906ccf19a, 0xe66e02ad8e92c12f,
|
|
409
|
+
0x36cc6f2fe751bc64, 0xf4d28aea3ed69ade, 0xf246fd6a4ca33ab3,
|
|
410
|
+
0xcae9edaf829a6575, 0x11fa7c88bf4cc73a, 0x98c47bfbae3d8c02,
|
|
411
|
+
0x27545ea34451a56f, 0x14b4c1a27d26d2b2, 0x7613ca9857e7cbe0,
|
|
412
|
+
0x02efc8f12e71bb88, 0x9c1a83672eee7d5b, 0x2b89aa9cfde6d9b3,
|
|
413
|
+
0xabeb2cf68ab463dc, 0xfb3db51d62d71d28, 0x3177cc3e0927e344,
|
|
414
|
+
0xb5798fc1d348beb6, 0x212c471510859095, 0x191df651c270548d,
|
|
415
|
+
0x1b15d6b8e8cc3105, 0xdc51a9e369fbab13, 0xb674fd0372fab5aa,
|
|
416
|
+
0x048aec21666fc8d5, 0x8b15383bc4a7e244, 0xf8945c253a43469f,
|
|
417
|
+
0x513f31e6bf240064, 0xc37c6225063c266f, 0x2a6747f8952ec44c,
|
|
418
|
+
0xa7a0f11d3607f268, 0x9b58d5c889166fb3, 0xb75ca76a67212a39,
|
|
419
|
+
0x9a71a476bf4933f3, 0x3f049a71b475edf7, 0x7a49c8907a278e5e,
|
|
420
|
+
0xf9a78757d9355ac9, 0xbe1bd9d70ee46398, 0x600e24a76a359a39,
|
|
421
|
+
0x235905ade793a5f0, 0x940c36e0df8ec13a, 0x9300c551cb93a286,
|
|
422
|
+
0x5e265b90e4828aba, 0x42dee1626c647735, 0x8cd32910c1f17a8c,
|
|
423
|
+
0x642f44f3f8290fb0, 0xb73ee167c5f8655e, 0x9d05deadb2a47fe4,
|
|
424
|
+
0x03b359dff5351708, 0x19a6427c0ee9c907, 0x0692dc026847e0d9,
|
|
425
|
+
0xe4023ba608b25f1e, 0xf438ad7eea71dfc1, 0x205120c9355d4ac8,
|
|
426
|
+
0xd4cf2cb1f412c846, 0x82d7d98b87ecf53a, 0x2cc779469cc3d690,
|
|
427
|
+
0xf93545883141ce8e, 0x0f794c869b82a28a, 0x014e9fccfe7f7d9e,
|
|
428
|
+
0xb6953652e49e4e0a, 0x68035eabb056e9b6, 0xf1b3a6847e610274,
|
|
429
|
+
0x59dc584137c0cb55, 0xafb36238ad797ec6, 0xb9f331777a030104,
|
|
430
|
+
0x2899a97f98140d3b, 0x0ae342d8d4f80ad0, 0xcfb25544c873fbd1,
|
|
431
|
+
0xcb2498ca84b01a4c, 0x1a50e4a0d8db8406, 0x0afbf05b7c8c146e,
|
|
432
|
+
0x1b45ee2ee670d71b, 0xef9204d9fcc31075, 0x2a5750d2ef558495,
|
|
433
|
+
0x8e151888d0ce024e, 0x26882404dd58bcc9, 0x6c830f947bf2195f,
|
|
434
|
+
0x2ff0c1fa64bf8cfb, 0x8f108f869e11d224, 0x7ce757787a04fd76,
|
|
435
|
+
0xee55da944ebbbd85, 0x43563645bb00dcd0, 0x643848bf73336681,
|
|
436
|
+
0x050f54d0478ffd52, 0xc5c1bff1bc3c008c, 0x48fd0f2729c9402d,
|
|
437
|
+
0x7685b990e3e264af, 0x940dccac3264ed16, 0x688f94ee88c9ba90,
|
|
438
|
+
0xca112c7825f3944b, 0x584cb5ddba130be2, 0xb7ced01f7140dff6,
|
|
439
|
+
0xc10dcbb4e77168e6, 0xb5ea4360351ebaef,
|
|
440
|
+
};
|
|
406
441
|
#else
|
|
407
442
|
constexpr uint64_t kGolden[kNumGoldenOutputs] = {
|
|
408
443
|
0x669da02f8d009e0f, 0xceb19bf2255445cd, 0x0e746992d6d43a7c,
|
|
@@ -18,8 +18,11 @@
|
|
|
18
18
|
#include <algorithm>
|
|
19
19
|
#include <cstddef>
|
|
20
20
|
#include <cstdint>
|
|
21
|
+
#include <memory>
|
|
22
|
+
#include <optional>
|
|
21
23
|
#include <ostream>
|
|
22
24
|
#include <string>
|
|
25
|
+
#include <type_traits>
|
|
23
26
|
#include <vector>
|
|
24
27
|
|
|
25
28
|
#include "absl/hash/hash.h"
|
|
@@ -44,7 +47,7 @@ namespace hash_internal {
|
|
|
44
47
|
template <typename T>
|
|
45
48
|
class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
|
|
46
49
|
public:
|
|
47
|
-
SpyHashStateImpl() : error_(std::make_shared<
|
|
50
|
+
SpyHashStateImpl() : error_(std::make_shared<std::optional<std::string>>()) {
|
|
48
51
|
static_assert(std::is_void<T>::value, "");
|
|
49
52
|
}
|
|
50
53
|
|
|
@@ -198,7 +201,7 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
|
|
|
198
201
|
return state;
|
|
199
202
|
}
|
|
200
203
|
|
|
201
|
-
|
|
204
|
+
std::optional<std::string> error() const {
|
|
202
205
|
if (moved_from_) {
|
|
203
206
|
return "Returned a moved-from instance of the hash state object.";
|
|
204
207
|
}
|
|
@@ -212,7 +215,7 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
|
|
|
212
215
|
|
|
213
216
|
struct UnorderedCombinerCallback {
|
|
214
217
|
std::vector<std::string> element_hash_representations;
|
|
215
|
-
std::shared_ptr<
|
|
218
|
+
std::shared_ptr<std::optional<std::string>> error;
|
|
216
219
|
|
|
217
220
|
// The inner spy can have a different type.
|
|
218
221
|
template <typename U>
|
|
@@ -242,7 +245,7 @@ class SpyHashStateImpl : public HashStateBase<SpyHashStateImpl<T>> {
|
|
|
242
245
|
// This is a shared_ptr because we want all instances of the particular
|
|
243
246
|
// SpyHashState run to share the field. This way we can set the error for
|
|
244
247
|
// use-after-move and all the copies will see it.
|
|
245
|
-
std::shared_ptr<
|
|
248
|
+
std::shared_ptr<std::optional<std::string>> error_;
|
|
246
249
|
bool moved_from_ = false;
|
|
247
250
|
};
|
|
248
251
|
|
|
@@ -267,7 +270,7 @@ bool RunOnStartup<f>::run = (f(), true);
|
|
|
267
270
|
template <
|
|
268
271
|
typename T, typename U,
|
|
269
272
|
// Only trigger for when (T != U),
|
|
270
|
-
typename =
|
|
273
|
+
typename = std::enable_if_t<!std::is_same<T, U>::value>,
|
|
271
274
|
// This statement works in two ways:
|
|
272
275
|
// - First, it instantiates RunOnStartup and forces the initialization of
|
|
273
276
|
// `run`, which set the global variable.
|
|
@@ -209,6 +209,7 @@ cc_library(
|
|
|
209
209
|
"//absl/strings",
|
|
210
210
|
"//absl/strings:internal",
|
|
211
211
|
"//absl/types:optional",
|
|
212
|
+
"//absl/types:source_location",
|
|
212
213
|
"//absl/utility",
|
|
213
214
|
],
|
|
214
215
|
)
|
|
@@ -285,7 +286,6 @@ cc_test(
|
|
|
285
286
|
":vlog_is_on",
|
|
286
287
|
"//absl/base:log_severity",
|
|
287
288
|
"//absl/flags:flag",
|
|
288
|
-
"//absl/types:optional",
|
|
289
289
|
"@googletest//:gtest",
|
|
290
290
|
"@googletest//:gtest_main",
|
|
291
291
|
],
|
|
@@ -405,6 +405,7 @@ cc_test(
|
|
|
405
405
|
"//absl/log/internal:test_helpers",
|
|
406
406
|
"//absl/log/internal:test_matchers",
|
|
407
407
|
"//absl/strings",
|
|
408
|
+
"//absl/types:source_location",
|
|
408
409
|
"@googletest//:gtest",
|
|
409
410
|
"@googletest//:gtest_main",
|
|
410
411
|
],
|
|
@@ -501,7 +502,7 @@ cc_test(
|
|
|
501
502
|
"//absl/log/internal:test_matchers",
|
|
502
503
|
"//absl/strings",
|
|
503
504
|
"//absl/strings:str_format",
|
|
504
|
-
"//absl/types:
|
|
505
|
+
"//absl/types:source_location",
|
|
505
506
|
"@googletest//:gtest",
|
|
506
507
|
"@googletest//:gtest_main",
|
|
507
508
|
],
|
|
@@ -566,6 +567,7 @@ cc_test(
|
|
|
566
567
|
"//absl/log/internal:test_helpers",
|
|
567
568
|
"//absl/log/internal:test_matchers",
|
|
568
569
|
"//absl/strings",
|
|
570
|
+
"//absl/types:source_location",
|
|
569
571
|
"@googletest//:gtest",
|
|
570
572
|
"@googletest//:gtest_main",
|
|
571
573
|
],
|
|
@@ -586,6 +588,7 @@ cc_test(
|
|
|
586
588
|
"//absl/log/internal:test_matchers",
|
|
587
589
|
"//absl/strings",
|
|
588
590
|
"//absl/time",
|
|
591
|
+
"//absl/types:source_location",
|
|
589
592
|
"@googletest//:gtest",
|
|
590
593
|
"@googletest//:gtest_main",
|
|
591
594
|
],
|
|
@@ -215,6 +215,7 @@ absl_cc_library(
|
|
|
215
215
|
absl::memory
|
|
216
216
|
absl::nullability
|
|
217
217
|
absl::raw_logging_internal
|
|
218
|
+
absl::source_location
|
|
218
219
|
absl::span
|
|
219
220
|
absl::strerror
|
|
220
221
|
absl::strings
|
|
@@ -632,6 +633,7 @@ absl_cc_library(
|
|
|
632
633
|
absl::absl_log
|
|
633
634
|
absl::log_severity
|
|
634
635
|
absl::optional
|
|
636
|
+
absl::source_location
|
|
635
637
|
absl::strings
|
|
636
638
|
absl::strings_internal
|
|
637
639
|
absl::utility
|
|
@@ -757,7 +759,6 @@ absl_cc_library(
|
|
|
757
759
|
absl::nullability
|
|
758
760
|
absl::strings
|
|
759
761
|
absl::synchronization
|
|
760
|
-
absl::optional
|
|
761
762
|
)
|
|
762
763
|
|
|
763
764
|
absl_cc_library(
|
|
@@ -806,7 +807,6 @@ absl_cc_test(
|
|
|
806
807
|
absl::vlog_is_on
|
|
807
808
|
absl::log_severity
|
|
808
809
|
absl::flags
|
|
809
|
-
absl::optional
|
|
810
810
|
GTest::gmock_main
|
|
811
811
|
)
|
|
812
812
|
|
|
@@ -1016,8 +1016,8 @@ absl_cc_test(
|
|
|
1016
1016
|
absl::config
|
|
1017
1017
|
absl::log
|
|
1018
1018
|
absl::log_internal_test_matchers
|
|
1019
|
-
absl::optional
|
|
1020
1019
|
absl::scoped_mock_log
|
|
1020
|
+
absl::source_location
|
|
1021
1021
|
absl::str_format
|
|
1022
1022
|
absl::strings
|
|
1023
1023
|
GTest::gmock_main
|
|
@@ -1082,6 +1082,7 @@ absl_cc_test(
|
|
|
1082
1082
|
absl::log_streamer
|
|
1083
1083
|
absl::log_severity
|
|
1084
1084
|
absl::scoped_mock_log
|
|
1085
|
+
absl::source_location
|
|
1085
1086
|
absl::strings
|
|
1086
1087
|
GTest::gmock_main
|
|
1087
1088
|
)
|
|
@@ -1102,6 +1103,7 @@ absl_cc_test(
|
|
|
1102
1103
|
absl::log_internal_test_matchers
|
|
1103
1104
|
absl::log_sink
|
|
1104
1105
|
absl::scoped_mock_log
|
|
1106
|
+
absl::source_location
|
|
1105
1107
|
absl::strings
|
|
1106
1108
|
absl::time
|
|
1107
1109
|
GTest::gmock_main
|
|
@@ -63,8 +63,6 @@
|
|
|
63
63
|
#include "absl/log/internal/vlog_config.h" // IWYU pragma: export
|
|
64
64
|
#include "absl/strings/string_view.h"
|
|
65
65
|
|
|
66
|
-
// IWYU pragma: private, include "absl/log/log.h"
|
|
67
|
-
|
|
68
66
|
// This is expanded at the callsite to allow the compiler to optimize
|
|
69
67
|
// always-false cases out of the build.
|
|
70
68
|
// An ABSL_MAX_VLOG_VERBOSITY of 2 means that VLOG(3) and above should never
|
|
@@ -39,6 +39,9 @@ licenses(["notice"])
|
|
|
39
39
|
|
|
40
40
|
package_group(
|
|
41
41
|
name = "internal_users",
|
|
42
|
+
includes = [
|
|
43
|
+
"//absl:friends",
|
|
44
|
+
],
|
|
42
45
|
packages = [
|
|
43
46
|
"//absl/log",
|
|
44
47
|
],
|
|
@@ -105,6 +108,7 @@ cc_library(
|
|
|
105
108
|
copts = ABSL_DEFAULT_COPTS,
|
|
106
109
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
107
110
|
visibility = [
|
|
111
|
+
"//absl:friends",
|
|
108
112
|
"//absl/log:__pkg__",
|
|
109
113
|
],
|
|
110
114
|
deps = [
|
|
@@ -118,6 +122,11 @@ cc_library(
|
|
|
118
122
|
hdrs = ["flags.h"],
|
|
119
123
|
copts = ABSL_DEFAULT_COPTS,
|
|
120
124
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
125
|
+
visibility = [
|
|
126
|
+
":internal_users",
|
|
127
|
+
"//absl:friends",
|
|
128
|
+
"//absl/status:__pkg__",
|
|
129
|
+
],
|
|
121
130
|
deps = [
|
|
122
131
|
"//absl/flags:flag",
|
|
123
132
|
],
|
|
@@ -150,6 +159,7 @@ cc_library(
|
|
|
150
159
|
copts = ABSL_DEFAULT_COPTS,
|
|
151
160
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
152
161
|
visibility = [
|
|
162
|
+
"//absl:friends",
|
|
153
163
|
"//absl/log:__pkg__",
|
|
154
164
|
],
|
|
155
165
|
deps = [
|
|
@@ -182,6 +192,7 @@ cc_library(
|
|
|
182
192
|
copts = ABSL_DEFAULT_COPTS,
|
|
183
193
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
184
194
|
visibility = [
|
|
195
|
+
"//absl:friends",
|
|
185
196
|
"//absl/log:__pkg__",
|
|
186
197
|
],
|
|
187
198
|
deps = [
|
|
@@ -210,6 +221,7 @@ cc_library(
|
|
|
210
221
|
"//absl/strings",
|
|
211
222
|
"//absl/strings:internal",
|
|
212
223
|
"//absl/time",
|
|
224
|
+
"//absl/types:source_location",
|
|
213
225
|
"//absl/types:span",
|
|
214
226
|
],
|
|
215
227
|
)
|
|
@@ -458,7 +470,9 @@ cc_library(
|
|
|
458
470
|
copts = ABSL_DEFAULT_COPTS,
|
|
459
471
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
460
472
|
visibility = [
|
|
473
|
+
"//absl:friends",
|
|
461
474
|
"//absl/log:__subpackages__",
|
|
475
|
+
"//absl/status:__pkg__",
|
|
462
476
|
],
|
|
463
477
|
deps = [
|
|
464
478
|
":fnmatch",
|
|
@@ -470,7 +484,6 @@ cc_library(
|
|
|
470
484
|
"//absl/memory",
|
|
471
485
|
"//absl/strings",
|
|
472
486
|
"//absl/synchronization",
|
|
473
|
-
"//absl/types:optional",
|
|
474
487
|
],
|
|
475
488
|
)
|
|
476
489
|
|
|
@@ -556,6 +569,7 @@ cc_library(
|
|
|
556
569
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
557
570
|
visibility = [
|
|
558
571
|
"//absl:__subpackages__",
|
|
572
|
+
"//absl:friends",
|
|
559
573
|
],
|
|
560
574
|
deps = [
|
|
561
575
|
"//absl/base:config",
|
|
@@ -227,7 +227,8 @@ void LogMessage::LogMessageData::InitializeEncodingAndFormat() {
|
|
|
227
227
|
EncodeVarint(EventTag::kSeverity,
|
|
228
228
|
ProtoSeverity(entry.log_severity(), entry.verbosity()),
|
|
229
229
|
&encoded_remaining());
|
|
230
|
-
EncodeVarint(EventTag::kThreadId, entry.tid(),
|
|
230
|
+
EncodeVarint(EventTag::kThreadId, static_cast<uint64_t>(entry.tid()),
|
|
231
|
+
&encoded_remaining());
|
|
231
232
|
}
|
|
232
233
|
|
|
233
234
|
void LogMessage::LogMessageData::FinalizeEncodingAndFormat() {
|
|
@@ -278,8 +279,8 @@ LogMessage::LogMessage(const char* absl_nonnull file, int line,
|
|
|
278
279
|
: LogMessage(absl::string_view(file), line, severity) {}
|
|
279
280
|
LogMessage::LogMessage(absl::string_view file, int line,
|
|
280
281
|
absl::LogSeverity severity)
|
|
281
|
-
: data_(
|
|
282
|
-
|
|
282
|
+
: data_(
|
|
283
|
+
std::make_unique<LogMessageData>(file, line, severity, absl::Now())) {
|
|
283
284
|
data_->first_fatal = false;
|
|
284
285
|
data_->is_perror = false;
|
|
285
286
|
data_->fail_quietly = false;
|
|
@@ -720,7 +721,7 @@ void LogMessage::CopyToEncodedBufferWithStructuredProtoField(
|
|
|
720
721
|
}
|
|
721
722
|
|
|
722
723
|
// Write the string, truncating if necessary.
|
|
723
|
-
if (!EncodeStringTruncate(
|
|
724
|
+
if (!EncodeStringTruncate(tag_value, str, &encoded_remaining_copy)) {
|
|
724
725
|
// The length of the string itself did not fit; zero `encoded_remaining()`
|
|
725
726
|
// so the value is not encoded at all.
|
|
726
727
|
data_->encoded_remaining().remove_suffix(data_->encoded_remaining().size());
|
|
@@ -50,6 +50,8 @@
|
|
|
50
50
|
#include "absl/strings/has_absl_stringify.h"
|
|
51
51
|
#include "absl/strings/string_view.h"
|
|
52
52
|
#include "absl/time/time.h"
|
|
53
|
+
#include "absl/types/source_location.h"
|
|
54
|
+
#include "absl/types/span.h"
|
|
53
55
|
|
|
54
56
|
namespace absl {
|
|
55
57
|
ABSL_NAMESPACE_BEGIN
|
|
@@ -86,6 +88,11 @@ class LogMessage {
|
|
|
86
88
|
// Overrides the location inferred from the callsite. The string pointed to
|
|
87
89
|
// by `file` must be valid until the end of the statement.
|
|
88
90
|
LogMessage& AtLocation(absl::string_view file, int line);
|
|
91
|
+
// `loc` doesn't default to `absl::SourceLocation::current()` here since the
|
|
92
|
+
// callsite is already the default location for `LOG` statements.
|
|
93
|
+
LogMessage& AtLocation(absl::SourceLocation loc) {
|
|
94
|
+
return AtLocation(loc.file_name(), static_cast<int>(loc.line()));
|
|
95
|
+
}
|
|
89
96
|
// Omits the prefix from this line. The prefix includes metadata about the
|
|
90
97
|
// logged data such as source code location and timestamp.
|
|
91
98
|
LogMessage& NoPrefix();
|
|
@@ -172,6 +179,13 @@ class LogMessage {
|
|
|
172
179
|
LogMessage& operator<<(wchar_t* absl_nullable v);
|
|
173
180
|
LogMessage& operator<<(wchar_t v);
|
|
174
181
|
|
|
182
|
+
// Overload for absl::SourceLocation or the std::source_location alias.
|
|
183
|
+
LogMessage& operator<<(const absl::SourceLocation& loc) {
|
|
184
|
+
OstreamView view(*data_);
|
|
185
|
+
view.stream() << loc.file_name() << ':' << loc.line();
|
|
186
|
+
return *this;
|
|
187
|
+
}
|
|
188
|
+
|
|
175
189
|
// Handle stream manipulators e.g. std::endl.
|
|
176
190
|
LogMessage& operator<<(std::ostream& (*absl_nonnull m)(std::ostream& os));
|
|
177
191
|
LogMessage& operator<<(std::ios_base& (*absl_nonnull m)(std::ios_base& os));
|