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
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// Copyright 2017 The Abseil Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
//
|
|
15
|
+
// -----------------------------------------------------------------------------
|
|
16
|
+
// File: source_location.h
|
|
17
|
+
// -----------------------------------------------------------------------------
|
|
18
|
+
//
|
|
19
|
+
// absl::SourceLocation provides source-code location info for C++17 and later.
|
|
20
|
+
//
|
|
21
|
+
// Critically, it is a **view type** (like std::string_view). Unlike
|
|
22
|
+
// std::source_location, it is not permanently valid and must not outlive its
|
|
23
|
+
// source. Using an invalid location is an error and may result in warnings
|
|
24
|
+
// or crashes.
|
|
25
|
+
//
|
|
26
|
+
// Additionally, it does not guarantee the retention of all caller information
|
|
27
|
+
// (e.g. column or function name) and may e.g. return unspecified values for
|
|
28
|
+
// performance reasons.
|
|
29
|
+
//
|
|
30
|
+
// To define a function that has access to the source location of the
|
|
31
|
+
// callsite, define it with a parameter of type `absl::SourceLocation`. The
|
|
32
|
+
// caller can then invoke the function, passing
|
|
33
|
+
// `absl::SourceLocation::current()` as the argument.
|
|
34
|
+
//
|
|
35
|
+
// If at all possible, make the `absl::SourceLocation` parameter be the
|
|
36
|
+
// function's last parameter. That way, when `std::source_location` is
|
|
37
|
+
// available, you will be able to switch to it, and give the parameter a default
|
|
38
|
+
// argument of `std::source_location::current()`. Users will then be able to
|
|
39
|
+
// omit that argument, and the default will automatically capture the location
|
|
40
|
+
// of the callsite.
|
|
41
|
+
|
|
42
|
+
#ifndef ABSL_TYPES_SOURCE_LOCATION_H_
|
|
43
|
+
#define ABSL_TYPES_SOURCE_LOCATION_H_
|
|
44
|
+
|
|
45
|
+
#include <cstdint>
|
|
46
|
+
#include <type_traits>
|
|
47
|
+
|
|
48
|
+
#include "absl/base/config.h"
|
|
49
|
+
#include "absl/base/nullability.h"
|
|
50
|
+
|
|
51
|
+
// This needs to come after absl/base/config.h, which is responsible for
|
|
52
|
+
// defining ABSL_HAVE_STD_SOURCE_LOCATION
|
|
53
|
+
#ifdef ABSL_HAVE_STD_SOURCE_LOCATION
|
|
54
|
+
#include <source_location> // NOLINT(build/c++20)
|
|
55
|
+
#endif
|
|
56
|
+
|
|
57
|
+
// For OSS release, whether to alias to std::source_location is configurable via
|
|
58
|
+
// config.h/options.h, similar to std::string_view/variant/etc.
|
|
59
|
+
#if defined(ABSL_USES_STD_SOURCE_LOCATION) && \
|
|
60
|
+
defined(ABSL_HAVE_STD_SOURCE_LOCATION)
|
|
61
|
+
namespace absl {
|
|
62
|
+
ABSL_NAMESPACE_BEGIN
|
|
63
|
+
using SourceLocation = std::source_location;
|
|
64
|
+
ABSL_NAMESPACE_END
|
|
65
|
+
} // namespace absl
|
|
66
|
+
|
|
67
|
+
#else // ABSL_HAVE_STD_SOURCE_LOCATION
|
|
68
|
+
|
|
69
|
+
namespace absl {
|
|
70
|
+
ABSL_NAMESPACE_BEGIN
|
|
71
|
+
|
|
72
|
+
// C++17-compatible class representing a specific location in the source code of
|
|
73
|
+
// a program. Similar to std::source_location, but with a few key differences
|
|
74
|
+
// explained above.
|
|
75
|
+
class SourceLocation {
|
|
76
|
+
struct PrivateTag {
|
|
77
|
+
private:
|
|
78
|
+
explicit PrivateTag() = default;
|
|
79
|
+
friend class SourceLocation;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
public:
|
|
83
|
+
// Avoid this constructor; it populates the object with dummy values.
|
|
84
|
+
SourceLocation() = default;
|
|
85
|
+
|
|
86
|
+
#ifdef ABSL_HAVE_STD_SOURCE_LOCATION
|
|
87
|
+
constexpr SourceLocation( // NOLINT(google-explicit-constructor)
|
|
88
|
+
std::source_location loc)
|
|
89
|
+
: SourceLocation(loc.line(), loc.file_name()) {}
|
|
90
|
+
#endif
|
|
91
|
+
|
|
92
|
+
#ifdef ABSL_INTERNAL_HAVE_BUILTIN_LINE_FILE
|
|
93
|
+
// SourceLocation::current
|
|
94
|
+
//
|
|
95
|
+
// Creates a `SourceLocation` based on the current source location. Currently,
|
|
96
|
+
// it only captures file and line information for efficiency purposes, but
|
|
97
|
+
// that is subject to change. APIs that accept a `SourceLocation` as a default
|
|
98
|
+
// parameter can use this to capture their caller's locations.
|
|
99
|
+
//
|
|
100
|
+
// Example:
|
|
101
|
+
//
|
|
102
|
+
// void TracedAdd(int i, SourceLocation loc = SourceLocation::current()) {
|
|
103
|
+
// std::cout << loc.file_name() << ":" << loc.line() << " added " << i;
|
|
104
|
+
// ...
|
|
105
|
+
// }
|
|
106
|
+
//
|
|
107
|
+
// void UserCode() {
|
|
108
|
+
// TracedAdd(1);
|
|
109
|
+
// TracedAdd(2);
|
|
110
|
+
// }
|
|
111
|
+
static constexpr SourceLocation current(
|
|
112
|
+
PrivateTag = PrivateTag{}, std::uint_least32_t line = __builtin_LINE(),
|
|
113
|
+
const char* absl_nonnull file_name = __builtin_FILE()) {
|
|
114
|
+
return SourceLocation(line, file_name);
|
|
115
|
+
}
|
|
116
|
+
#else
|
|
117
|
+
// Creates a dummy `SourceLocation` of "<source_location>" at line number 1,
|
|
118
|
+
// if no `SourceLocation::current()` implementation is available.
|
|
119
|
+
static constexpr SourceLocation current() {
|
|
120
|
+
return SourceLocation(1, "<source_location>");
|
|
121
|
+
}
|
|
122
|
+
#endif
|
|
123
|
+
// The line number of the captured source location, or an unspecified value
|
|
124
|
+
// if this information is not available.
|
|
125
|
+
constexpr std::uint_least32_t line() const noexcept { return line_; }
|
|
126
|
+
|
|
127
|
+
// The column number of the captured source location, or an unspecified value
|
|
128
|
+
// if this information is not available.
|
|
129
|
+
constexpr std::uint_least32_t column() const noexcept { return 0; }
|
|
130
|
+
|
|
131
|
+
// The file name of the captured source location, or an unspecified string
|
|
132
|
+
// if this information is not available. Guaranteed to never be NULL.
|
|
133
|
+
constexpr const char* absl_nonnull file_name() const noexcept {
|
|
134
|
+
return file_name_;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// The function name of the captured source location, or an unspecified string
|
|
138
|
+
// if this information is not available. Guaranteed to never be NULL.
|
|
139
|
+
//
|
|
140
|
+
// NOTE: Currently, we deliberately avoid providing the function name, as it
|
|
141
|
+
// can bloat binary sizes and is non-critical. This may change in the future.
|
|
142
|
+
constexpr const char* absl_nonnull function_name() const noexcept {
|
|
143
|
+
return "";
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
private:
|
|
147
|
+
// `file_name` must outlive all copies of the `absl::SourceLocation` object,
|
|
148
|
+
// so in practice it should be a string literal.
|
|
149
|
+
constexpr SourceLocation(std::uint_least32_t line,
|
|
150
|
+
const char* absl_nonnull file_name)
|
|
151
|
+
: line_(line), file_name_(file_name) {}
|
|
152
|
+
|
|
153
|
+
// We would use [[maybe_unused]] here, but it doesn't work on all supported
|
|
154
|
+
// toolchains at the moment.
|
|
155
|
+
friend constexpr int UseUnused() {
|
|
156
|
+
static_assert(SourceLocation(0, nullptr).unused_column_ == 0,
|
|
157
|
+
"Use the otherwise-unused member.");
|
|
158
|
+
return 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// "unused" members are present to minimize future changes in the size of this
|
|
162
|
+
// type.
|
|
163
|
+
std::uint_least32_t line_ = 0;
|
|
164
|
+
std::uint_least32_t unused_column_ = 0;
|
|
165
|
+
const char* absl_nonnull file_name_ = "";
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
ABSL_NAMESPACE_END
|
|
169
|
+
} // namespace absl
|
|
170
|
+
#endif // ABSL_HAVE_STD_SOURCE_LOCATION
|
|
171
|
+
|
|
172
|
+
#endif // ABSL_TYPES_SOURCE_LOCATION_H_
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// Copyright 2017 The Abseil Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#include "absl/types/source_location.h"
|
|
16
|
+
|
|
17
|
+
#include "absl/base/config.h"
|
|
18
|
+
|
|
19
|
+
#ifdef ABSL_HAVE_STD_SOURCE_LOCATION
|
|
20
|
+
#include <source_location> // NOLINT(build/c++20)
|
|
21
|
+
#endif
|
|
22
|
+
#include <type_traits>
|
|
23
|
+
|
|
24
|
+
#include "gmock/gmock.h"
|
|
25
|
+
#include "gtest/gtest.h"
|
|
26
|
+
#include "absl/strings/string_view.h"
|
|
27
|
+
|
|
28
|
+
namespace {
|
|
29
|
+
|
|
30
|
+
using ::absl::SourceLocation;
|
|
31
|
+
using ::testing::EndsWith;
|
|
32
|
+
|
|
33
|
+
TEST(SourceLocationTest, DefaultConstructionWorks) {
|
|
34
|
+
static_assert(!std::is_trivially_default_constructible_v<SourceLocation>);
|
|
35
|
+
static_assert(std::is_nothrow_default_constructible_v<SourceLocation>);
|
|
36
|
+
constexpr SourceLocation loc1 [[maybe_unused]];
|
|
37
|
+
SourceLocation loc2 [[maybe_unused]]{};
|
|
38
|
+
EXPECT_EQ(loc1.line(), loc2.line());
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
#ifdef ABSL_INTERNAL_HAVE_BUILTIN_LINE_FILE
|
|
42
|
+
|
|
43
|
+
TEST(SourceLocationTest, ConstexprMembers) {
|
|
44
|
+
constexpr SourceLocation loc1 = absl::SourceLocation::current();
|
|
45
|
+
const SourceLocation loc2 = absl::SourceLocation::current();
|
|
46
|
+
EXPECT_EQ(loc1.line(), loc2.line() - 1);
|
|
47
|
+
EXPECT_EQ(absl::string_view(loc1.file_name()), loc2.file_name());
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
TEST(SourceLocationTest, ConversionFromStdSourceLocationWorks) {
|
|
51
|
+
#ifndef ABSL_HAVE_STD_SOURCE_LOCATION
|
|
52
|
+
GTEST_SKIP() << "std::source_location is not available";
|
|
53
|
+
#else
|
|
54
|
+
constexpr SourceLocation loc1 = std::source_location::current();
|
|
55
|
+
const std::source_location loc2 = std::source_location::current();
|
|
56
|
+
EXPECT_EQ(loc1.line(), loc2.line() - 1);
|
|
57
|
+
EXPECT_EQ(absl::string_view(loc1.file_name()), loc2.file_name());
|
|
58
|
+
#endif
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
TEST(SourceLocationTest, CopyConstructionWorks) {
|
|
62
|
+
constexpr SourceLocation location = absl::SourceLocation::current();
|
|
63
|
+
constexpr int line = __LINE__ - 1;
|
|
64
|
+
|
|
65
|
+
EXPECT_EQ(location.line(), line);
|
|
66
|
+
EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
TEST(SourceLocationTest, CopyAssignmentWorks) {
|
|
70
|
+
SourceLocation location;
|
|
71
|
+
location = absl::SourceLocation::current();
|
|
72
|
+
constexpr int line = __LINE__ - 1;
|
|
73
|
+
|
|
74
|
+
EXPECT_EQ(location.line(), line);
|
|
75
|
+
EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
SourceLocation Echo(const SourceLocation& location) { return location; }
|
|
79
|
+
|
|
80
|
+
TEST(SourceLocationTest, ExpectedUsageWorks) {
|
|
81
|
+
SourceLocation location = Echo(absl::SourceLocation::current());
|
|
82
|
+
constexpr int line = __LINE__ - 1;
|
|
83
|
+
|
|
84
|
+
EXPECT_EQ(location.line(), line);
|
|
85
|
+
EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
TEST(SourceLocationTest, CurrentWorks) {
|
|
89
|
+
constexpr SourceLocation location = SourceLocation::current();
|
|
90
|
+
constexpr int line = __LINE__ - 1;
|
|
91
|
+
|
|
92
|
+
EXPECT_EQ(location.line(), line);
|
|
93
|
+
EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
SourceLocation FuncWithDefaultParam(
|
|
97
|
+
SourceLocation loc = SourceLocation::current()) {
|
|
98
|
+
return loc;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
TEST(SourceLocationTest, CurrentWorksAsDefaultParam) {
|
|
102
|
+
SourceLocation location = FuncWithDefaultParam();
|
|
103
|
+
constexpr int line = __LINE__ - 1;
|
|
104
|
+
|
|
105
|
+
EXPECT_EQ(location.line(), line);
|
|
106
|
+
EXPECT_THAT(location.file_name(), EndsWith("source_location_test.cc"));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
#endif
|
|
110
|
+
|
|
111
|
+
template <typename T>
|
|
112
|
+
bool TryPassLineAndFile(decltype(T::current(0, ""))*) {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
template <typename T>
|
|
116
|
+
bool TryPassLineAndFile(decltype(T::current({}, 0, ""))*) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
template <typename T>
|
|
120
|
+
bool TryPassLineAndFile(decltype(T::current(typename T::Tag{}, 0, ""))*) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
template <typename T>
|
|
124
|
+
bool TryPassLineAndFile(...) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
TEST(SourceLocationTest, CantPassLineAndFile) {
|
|
129
|
+
#ifdef ABSL_HAVE_STD_SOURCE_LOCATION
|
|
130
|
+
using StdSourceLocation = std::source_location;
|
|
131
|
+
#else
|
|
132
|
+
using StdSourceLocation = void;
|
|
133
|
+
#endif
|
|
134
|
+
if constexpr (!std::is_same_v<absl::SourceLocation, StdSourceLocation>) {
|
|
135
|
+
EXPECT_FALSE(TryPassLineAndFile<absl::SourceLocation>(nullptr));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
} // namespace
|
|
@@ -30,18 +30,17 @@
|
|
|
30
30
|
// `Span<const T>` when such types may be difficult to identify due to issues
|
|
31
31
|
// with implicit conversion.
|
|
32
32
|
//
|
|
33
|
-
// The C++20
|
|
33
|
+
// The C++20 standard includes a `std::span` type. As of January 2026, the
|
|
34
34
|
// differences between `absl::Span` and `std::span` are:
|
|
35
35
|
// * `absl::Span` has `operator==` (which is likely a design bug,
|
|
36
36
|
// per https://abseil.io/blog/20180531-regular-types)
|
|
37
37
|
// * `absl::Span` has the factory functions `MakeSpan()` and
|
|
38
38
|
// `MakeConstSpan()`
|
|
39
39
|
// * bounds-checked access to `absl::Span` is accomplished with `at()`
|
|
40
|
+
// however `std::span` now supports the same as of the draft C++26 standard
|
|
40
41
|
// * `absl::Span` has compiler-provided move and copy constructors and
|
|
41
42
|
// assignment. This is due to them being specified as `constexpr`, but that
|
|
42
43
|
// implies const in C++11.
|
|
43
|
-
// * A read-only `absl::Span<const T>` can be implicitly constructed from an
|
|
44
|
-
// initializer list.
|
|
45
44
|
// * `absl::Span` has no `bytes()`, `size_bytes()`, `as_bytes()`, or
|
|
46
45
|
// `as_writable_bytes()` methods
|
|
47
46
|
// * `absl::Span` has no static extent template parameter, nor constructors
|
|
@@ -65,11 +64,12 @@
|
|
|
65
64
|
|
|
66
65
|
#include "absl/base/attributes.h"
|
|
67
66
|
#include "absl/base/config.h"
|
|
68
|
-
#include "absl/base/internal/
|
|
67
|
+
#include "absl/base/internal/hardening.h"
|
|
69
68
|
#include "absl/base/macros.h"
|
|
70
69
|
#include "absl/base/nullability.h"
|
|
71
70
|
#include "absl/base/optimization.h"
|
|
72
71
|
#include "absl/base/port.h" // TODO(strel): remove this include
|
|
72
|
+
#include "absl/base/throw_delegate.h"
|
|
73
73
|
#include "absl/hash/internal/weakly_mixed_integer.h"
|
|
74
74
|
#include "absl/meta/type_traits.h"
|
|
75
75
|
#include "absl/types/internal/span.h"
|
|
@@ -205,7 +205,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
205
205
|
|
|
206
206
|
public:
|
|
207
207
|
using element_type = T;
|
|
208
|
-
using value_type =
|
|
208
|
+
using value_type = std::remove_cv_t<T>;
|
|
209
209
|
// TODO(b/316099902) - pointer should be absl_nullable, but this makes it hard
|
|
210
210
|
// to recognize foreach loops as safe. absl_nullability_unknown is currently
|
|
211
211
|
// used to suppress -Wnullability-completeness warnings.
|
|
@@ -336,7 +336,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
336
336
|
//
|
|
337
337
|
// Returns a reference to the i'th element of this span.
|
|
338
338
|
constexpr reference operator[](size_type i) const noexcept {
|
|
339
|
-
|
|
339
|
+
absl::base_internal::HardeningAssertLT(i, size());
|
|
340
340
|
return ptr_[i];
|
|
341
341
|
}
|
|
342
342
|
|
|
@@ -346,8 +346,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
346
346
|
constexpr reference at(size_type i) const {
|
|
347
347
|
return ABSL_PREDICT_TRUE(i < size()) //
|
|
348
348
|
? *(data() + i)
|
|
349
|
-
: (
|
|
350
|
-
"Span::at failed bounds check"),
|
|
349
|
+
: (ThrowStdOutOfRange("Span::at failed bounds check"),
|
|
351
350
|
*(data() + i));
|
|
352
351
|
}
|
|
353
352
|
|
|
@@ -356,7 +355,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
356
355
|
// Returns a reference to the first element of this span. The span must not
|
|
357
356
|
// be empty.
|
|
358
357
|
constexpr reference front() const noexcept {
|
|
359
|
-
|
|
358
|
+
absl::base_internal::HardeningAssertGT(size(), static_cast<size_t>(0));
|
|
360
359
|
return *data();
|
|
361
360
|
}
|
|
362
361
|
|
|
@@ -365,7 +364,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
365
364
|
// Returns a reference to the last element of this span. The span must not
|
|
366
365
|
// be empty.
|
|
367
366
|
constexpr reference back() const noexcept {
|
|
368
|
-
|
|
367
|
+
absl::base_internal::HardeningAssertGT(size(), static_cast<size_t>(0));
|
|
369
368
|
return *(data() + size() - 1);
|
|
370
369
|
}
|
|
371
370
|
|
|
@@ -431,7 +430,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
431
430
|
//
|
|
432
431
|
// Removes the first `n` elements from the span.
|
|
433
432
|
void remove_prefix(size_type n) noexcept {
|
|
434
|
-
|
|
433
|
+
absl::base_internal::HardeningAssertGE(size(), n);
|
|
435
434
|
ptr_ += n;
|
|
436
435
|
len_ -= n;
|
|
437
436
|
}
|
|
@@ -440,7 +439,7 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
440
439
|
//
|
|
441
440
|
// Removes the last `n` elements from the span.
|
|
442
441
|
void remove_suffix(size_type n) noexcept {
|
|
443
|
-
|
|
442
|
+
absl::base_internal::HardeningAssertGE(size(), n);
|
|
444
443
|
len_ -= n;
|
|
445
444
|
}
|
|
446
445
|
|
|
@@ -466,9 +465,8 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
466
465
|
// absl::MakeSpan(vec).subspan(4); // {}
|
|
467
466
|
// absl::MakeSpan(vec).subspan(5); // throws std::out_of_range
|
|
468
467
|
constexpr Span subspan(size_type pos = 0, size_type len = npos) const {
|
|
469
|
-
return (pos <= size())
|
|
470
|
-
|
|
471
|
-
: (base_internal::ThrowStdOutOfRange("pos > size()"), Span());
|
|
468
|
+
return (pos <= size()) ? Span(data() + pos, (std::min)(size() - pos, len))
|
|
469
|
+
: (ThrowStdOutOfRange("pos > size()"), Span());
|
|
472
470
|
}
|
|
473
471
|
|
|
474
472
|
// Span::first()
|
|
@@ -483,9 +481,8 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
483
481
|
// absl::MakeSpan(vec).first(3); // {10, 11, 12}
|
|
484
482
|
// absl::MakeSpan(vec).first(5); // throws std::out_of_range
|
|
485
483
|
constexpr Span first(size_type len) const {
|
|
486
|
-
return (len <= size())
|
|
487
|
-
|
|
488
|
-
: (base_internal::ThrowStdOutOfRange("len > size()"), Span());
|
|
484
|
+
return (len <= size()) ? Span(data(), len)
|
|
485
|
+
: (ThrowStdOutOfRange("len > size()"), Span());
|
|
489
486
|
}
|
|
490
487
|
|
|
491
488
|
// Span::last()
|
|
@@ -500,9 +497,8 @@ class ABSL_ATTRIBUTE_VIEW Span {
|
|
|
500
497
|
// absl::MakeSpan(vec).last(3); // {11, 12, 13}
|
|
501
498
|
// absl::MakeSpan(vec).last(5); // throws std::out_of_range
|
|
502
499
|
constexpr Span last(size_type len) const {
|
|
503
|
-
return (len <= size())
|
|
504
|
-
|
|
505
|
-
: (base_internal::ThrowStdOutOfRange("len > size()"), Span());
|
|
500
|
+
return (len <= size()) ? Span(size() - len + data(), len)
|
|
501
|
+
: (ThrowStdOutOfRange("len > size()"), Span());
|
|
506
502
|
}
|
|
507
503
|
|
|
508
504
|
// Support for absl::Hash.
|
|
@@ -742,7 +738,7 @@ constexpr Span<T> MakeSpan(T* absl_nullable ptr ABSL_ATTRIBUTE_LIFETIME_BOUND,
|
|
|
742
738
|
template <int&... ExplicitArgumentBarrier, typename T>
|
|
743
739
|
Span<T> MakeSpan(T* absl_nullable begin ABSL_ATTRIBUTE_LIFETIME_BOUND,
|
|
744
740
|
T* absl_nullable end) noexcept {
|
|
745
|
-
|
|
741
|
+
absl::base_internal::HardeningAssertLE(begin, end);
|
|
746
742
|
return Span<T>(begin, static_cast<size_t>(end - begin));
|
|
747
743
|
}
|
|
748
744
|
|
|
@@ -803,7 +799,7 @@ template <int&... ExplicitArgumentBarrier, typename T>
|
|
|
803
799
|
Span<const T> MakeConstSpan(T* absl_nullable begin
|
|
804
800
|
ABSL_ATTRIBUTE_LIFETIME_BOUND,
|
|
805
801
|
T* absl_nullable end) noexcept {
|
|
806
|
-
|
|
802
|
+
absl::base_internal::HardeningAssertLE(begin, end);
|
|
807
803
|
return Span<const T>(begin, end - begin);
|
|
808
804
|
}
|
|
809
805
|
|
|
@@ -23,25 +23,82 @@
|
|
|
23
23
|
#ifndef ABSL_TYPES_VARIANT_H_
|
|
24
24
|
#define ABSL_TYPES_VARIANT_H_
|
|
25
25
|
|
|
26
|
+
#include <stddef.h>
|
|
27
|
+
|
|
26
28
|
#include <variant>
|
|
27
29
|
|
|
28
30
|
#include "absl/base/config.h"
|
|
31
|
+
#include "absl/base/macros.h"
|
|
29
32
|
#include "absl/utility/utility.h"
|
|
30
33
|
|
|
31
34
|
namespace absl {
|
|
32
35
|
ABSL_NAMESPACE_BEGIN
|
|
33
|
-
|
|
34
|
-
using
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
|
|
37
|
+
using bad_variant_access ABSL_REFACTOR_INLINE
|
|
38
|
+
= std::bad_variant_access;
|
|
39
|
+
|
|
40
|
+
template <size_t I, typename... Args>
|
|
41
|
+
[[deprecated]] constexpr auto get(Args&&... args)
|
|
42
|
+
-> decltype(std::get<I>(std::forward<Args>(args)...)) {
|
|
43
|
+
return std::get<I>(std::forward<Args>(args)...);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
template <typename T, typename... Args>
|
|
47
|
+
[[deprecated]] constexpr decltype(std::get<T>(std::declval<Args>()...)) get(
|
|
48
|
+
Args&&... args) {
|
|
49
|
+
return std::get<T>(std::forward<Args>(args)...);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
template <size_t I, typename... Args>
|
|
53
|
+
[[deprecated]] constexpr decltype(std::get_if<I>(std::declval<Args>()...))
|
|
54
|
+
get_if(Args&&... args) {
|
|
55
|
+
return std::get_if<I>(std::forward<Args>(args)...);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
template <typename T, typename... Args>
|
|
59
|
+
[[deprecated]] constexpr decltype(std::get_if<T>(std::declval<Args>()...))
|
|
60
|
+
get_if(Args&&... args) {
|
|
61
|
+
return std::get_if<T>(std::forward<Args>(args)...);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
template <typename T, typename... Args>
|
|
65
|
+
[[deprecated]] constexpr decltype(std::holds_alternative<T>(
|
|
66
|
+
std::declval<Args>()...))
|
|
67
|
+
holds_alternative(Args&&... args) {
|
|
68
|
+
return std::holds_alternative<T>(std::forward<Args>(args)...);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
using monostate ABSL_REFACTOR_INLINE
|
|
72
|
+
= std::monostate;
|
|
73
|
+
|
|
74
|
+
template <typename... Types>
|
|
75
|
+
using variant ABSL_REFACTOR_INLINE
|
|
76
|
+
= std::variant<Types...>;
|
|
77
|
+
|
|
78
|
+
template <size_t I, typename T>
|
|
79
|
+
using variant_alternative ABSL_REFACTOR_INLINE
|
|
80
|
+
= std::variant_alternative<I, T>;
|
|
81
|
+
|
|
82
|
+
template <size_t I, typename T>
|
|
83
|
+
using variant_alternative_t ABSL_REFACTOR_INLINE
|
|
84
|
+
= std::variant_alternative_t<I, T>;
|
|
85
|
+
|
|
86
|
+
inline constexpr size_t variant_npos ABSL_REFACTOR_INLINE
|
|
87
|
+
= std::variant_npos;
|
|
88
|
+
|
|
89
|
+
template <typename T>
|
|
90
|
+
using variant_size ABSL_REFACTOR_INLINE
|
|
91
|
+
= std::variant_size<T>;
|
|
92
|
+
|
|
93
|
+
template <typename T>
|
|
94
|
+
inline constexpr size_t variant_size_v ABSL_REFACTOR_INLINE
|
|
95
|
+
= std::variant_size_v<T>;
|
|
96
|
+
|
|
97
|
+
template <typename... Args>
|
|
98
|
+
[[deprecated]] constexpr decltype(std::visit(std::declval<Args>()...)) visit(
|
|
99
|
+
Args&&... args) {
|
|
100
|
+
return std::visit(std::forward<Args>(args)...);
|
|
101
|
+
}
|
|
45
102
|
|
|
46
103
|
namespace variant_internal {
|
|
47
104
|
// Helper visitor for converting a variant<Ts...>` into another type (mostly
|
|
@@ -57,23 +114,23 @@ struct ConversionVisitor {
|
|
|
57
114
|
|
|
58
115
|
// ConvertVariantTo()
|
|
59
116
|
//
|
|
60
|
-
// Helper functions to convert an `
|
|
117
|
+
// Helper functions to convert an `std::variant` to a variant of another set of
|
|
61
118
|
// types, provided that the alternative type of the new variant type can be
|
|
62
119
|
// converted from any type in the source variant.
|
|
63
120
|
//
|
|
64
121
|
// Example:
|
|
65
122
|
//
|
|
66
|
-
//
|
|
123
|
+
// std::variant<name1, name2, float> InternalReq(const Req&);
|
|
67
124
|
//
|
|
68
125
|
// // name1 and name2 are convertible to name
|
|
69
|
-
//
|
|
70
|
-
// return absl::ConvertVariantTo<
|
|
126
|
+
// std::variant<name, float> ExternalReq(const Req& req) {
|
|
127
|
+
// return absl::ConvertVariantTo<std::variant<name, float>>(
|
|
71
128
|
// InternalReq(req));
|
|
72
129
|
// }
|
|
73
130
|
template <typename To, typename Variant>
|
|
74
131
|
To ConvertVariantTo(Variant&& variant) {
|
|
75
|
-
return
|
|
76
|
-
|
|
132
|
+
return std::visit(variant_internal::ConversionVisitor<To>{},
|
|
133
|
+
std::forward<Variant>(variant));
|
|
77
134
|
}
|
|
78
135
|
|
|
79
136
|
ABSL_NAMESPACE_END
|