re2 1.22.2 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -4
- package/binding.gyp +5 -1
- package/lib/addon.cc +4 -0
- package/lib/new.cc +1 -246
- package/lib/pattern.cc +252 -0
- package/lib/pattern.h +10 -0
- package/lib/set.cc +777 -0
- package/lib/wrapped_re2_set.h +42 -0
- package/package.json +21 -9
- package/re2.d.ts +46 -9
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +14 -24
- package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +3 -3
- package/vendor/abseil-cpp/CMake/README.md +2 -2
- package/vendor/abseil-cpp/CMakeLists.txt +3 -3
- package/vendor/abseil-cpp/MODULE.bazel +6 -9
- package/vendor/abseil-cpp/README.md +6 -8
- package/vendor/abseil-cpp/absl/abseil.podspec.gen.py +6 -4
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/algorithm/container.h +2 -19
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +4 -11
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +60 -45
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +57 -38
- package/vendor/abseil-cpp/absl/base/attributes.h +76 -7
- package/vendor/abseil-cpp/absl/base/attributes_test.cc +43 -0
- package/vendor/abseil-cpp/absl/base/call_once.h +11 -12
- package/vendor/abseil-cpp/absl/base/config.h +22 -129
- package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +0 -4
- package/vendor/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- package/vendor/abseil-cpp/absl/base/{internal/fast_type_id_test.cc → fast_type_id_test.cc} +34 -30
- package/vendor/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- package/vendor/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- package/vendor/abseil-cpp/absl/base/internal/endian.h +34 -38
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test.cc +85 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +97 -0
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -9
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
- package/vendor/abseil-cpp/absl/base/internal/poison.cc +7 -6
- package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +15 -28
- package/vendor/abseil-cpp/absl/base/internal/spinlock.h +65 -35
- package/vendor/abseil-cpp/absl/base/internal/spinlock_benchmark.cc +2 -2
- package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +2 -2
- package/vendor/abseil-cpp/absl/base/internal/thread_identity_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/base/internal/thread_identity_test.cc +4 -4
- package/vendor/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +4 -0
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- package/vendor/abseil-cpp/absl/base/no_destructor.h +11 -32
- package/vendor/abseil-cpp/absl/base/no_destructor_test.cc +0 -4
- package/vendor/abseil-cpp/absl/base/nullability.h +83 -72
- package/vendor/abseil-cpp/absl/base/nullability_test.cc +25 -64
- package/vendor/abseil-cpp/absl/base/options.h +3 -80
- package/vendor/abseil-cpp/absl/base/policy_checks.h +7 -7
- package/vendor/abseil-cpp/absl/base/raw_logging_test.cc +15 -0
- package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +50 -30
- package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -1
- package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +0 -1
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- package/vendor/abseil-cpp/absl/cleanup/cleanup_test.cc +0 -2
- package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +74 -1
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +73 -0
- package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +51 -9
- package/vendor/abseil-cpp/absl/container/btree_map.h +8 -6
- package/vendor/abseil-cpp/absl/container/btree_set.h +8 -6
- package/vendor/abseil-cpp/absl/container/btree_test.cc +89 -4
- package/vendor/abseil-cpp/absl/container/fixed_array.h +7 -15
- package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +17 -0
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +20 -15
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +8 -14
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +19 -14
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +46 -0
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +7 -6
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +28 -0
- package/vendor/abseil-cpp/absl/container/internal/btree.h +132 -29
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- package/vendor/abseil-cpp/absl/container/internal/common.h +43 -0
- package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +28 -24
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +4 -17
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +80 -17
- package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +32 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +13 -8
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults_test.cc +1 -52
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +9 -31
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +23 -32
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +5 -1
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +11 -23
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits_test.cc +14 -9
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +516 -0
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes_test.cc +259 -0
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -6
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +32 -13
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +8 -8
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- package/vendor/abseil-cpp/absl/container/internal/layout.h +26 -42
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +1506 -213
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +1095 -1658
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +3 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +31 -29
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +51 -20
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +79 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl_test.cc +66 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +707 -363
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +20 -15
- package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +0 -3
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +18 -13
- package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +3 -8
- package/vendor/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake +1 -1
- package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +9 -20
- package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +9 -20
- package/vendor/abseil-cpp/absl/copts/copts.py +24 -15
- package/vendor/abseil-cpp/absl/crc/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/crc/crc32c.cc +0 -4
- package/vendor/abseil-cpp/absl/crc/crc32c.h +7 -5
- package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +17 -4
- package/vendor/abseil-cpp/absl/crc/crc32c_test.cc +30 -0
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +17 -0
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
- package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +136 -165
- package/vendor/abseil-cpp/absl/crc/internal/gen_crc32c_consts.py +90 -0
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +7 -0
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +11 -10
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -14
- package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +161 -27
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +435 -1
- package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +55 -63
- package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -0
- package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +3 -0
- package/vendor/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- package/vendor/abseil-cpp/absl/flags/flag.h +4 -3
- package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +14 -13
- package/vendor/abseil-cpp/absl/flags/internal/flag.h +34 -34
- package/vendor/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
- package/vendor/abseil-cpp/absl/flags/internal/registry.h +4 -3
- package/vendor/abseil-cpp/absl/flags/internal/usage.cc +2 -2
- package/vendor/abseil-cpp/absl/flags/parse.cc +10 -6
- package/vendor/abseil-cpp/absl/flags/reflection.cc +9 -7
- package/vendor/abseil-cpp/absl/flags/usage.cc +2 -2
- package/vendor/abseil-cpp/absl/flags/usage_config.cc +2 -2
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +7 -6
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +2 -4
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +15 -15
- package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +10 -42
- package/vendor/abseil-cpp/absl/functional/function_ref.h +2 -9
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +10 -0
- package/vendor/abseil-cpp/absl/functional/function_type_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +112 -227
- package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- package/vendor/abseil-cpp/absl/functional/overload.h +0 -20
- package/vendor/abseil-cpp/absl/functional/overload_test.cc +1 -7
- package/vendor/abseil-cpp/absl/hash/BUILD.bazel +16 -9
- package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +6 -9
- package/vendor/abseil-cpp/absl/hash/hash.h +18 -0
- package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +3 -0
- package/vendor/abseil-cpp/absl/hash/hash_instantiated_test.cc +1 -1
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +131 -30
- package/vendor/abseil-cpp/absl/hash/hash_testing.h +20 -20
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +129 -17
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +326 -362
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +54 -151
- package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +14 -2
- package/vendor/abseil-cpp/absl/{strings/cord_buffer.cc → hash/internal/weakly_mixed_integer.h} +14 -6
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +7 -0
- package/vendor/abseil-cpp/absl/log/check.h +2 -1
- package/vendor/abseil-cpp/absl/log/check_test_impl.inc +308 -14
- package/vendor/abseil-cpp/absl/log/die_if_null.h +2 -2
- package/vendor/abseil-cpp/absl/log/flags_test.cc +7 -0
- package/vendor/abseil-cpp/absl/log/globals.h +4 -5
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +13 -9
- package/vendor/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- package/vendor/abseil-cpp/absl/log/internal/check_op.cc +24 -22
- package/vendor/abseil-cpp/absl/log/internal/check_op.h +149 -94
- package/vendor/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- package/vendor/abseil-cpp/absl/log/internal/conditions.h +7 -2
- package/vendor/abseil-cpp/absl/log/internal/fnmatch_test.cc +1 -0
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +84 -59
- package/vendor/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
- package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- package/vendor/abseil-cpp/absl/log/internal/proto.cc +3 -2
- package/vendor/abseil-cpp/absl/log/internal/proto.h +3 -3
- package/vendor/abseil-cpp/absl/log/internal/strip.h +4 -12
- package/vendor/abseil-cpp/absl/log/internal/structured.h +3 -7
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +9 -9
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- package/vendor/abseil-cpp/absl/log/internal/voidify.h +10 -4
- package/vendor/abseil-cpp/absl/log/log.h +48 -35
- package/vendor/abseil-cpp/absl/log/log_basic_test_impl.inc +45 -0
- package/vendor/abseil-cpp/absl/log/log_entry.cc +241 -19
- package/vendor/abseil-cpp/absl/log/log_entry.h +2 -0
- package/vendor/abseil-cpp/absl/log/log_format_test.cc +412 -6
- package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +20 -0
- package/vendor/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +15 -2
- package/vendor/abseil-cpp/absl/log/scoped_mock_log.h +7 -1
- package/vendor/abseil-cpp/absl/log/structured_test.cc +1 -0
- package/vendor/abseil-cpp/absl/memory/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/type_traits.h +46 -175
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +1 -478
- package/vendor/abseil-cpp/absl/numeric/BUILD.bazel +7 -3
- package/vendor/abseil-cpp/absl/numeric/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/numeric/bits.h +68 -2
- package/vendor/abseil-cpp/absl/numeric/bits_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/numeric/bits_test.cc +83 -0
- package/vendor/abseil-cpp/absl/numeric/int128.cc +0 -52
- package/vendor/abseil-cpp/absl/numeric/int128_benchmark.cc +14 -15
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +13 -8
- package/vendor/abseil-cpp/absl/numeric/internal/bits.h +39 -7
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +47 -0
- package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +38 -0
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +124 -0
- package/vendor/abseil-cpp/absl/profiling/hashtable.h +40 -0
- package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +462 -0
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +138 -0
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +7 -3
- package/vendor/abseil-cpp/absl/random/BUILD.bazel +6 -4
- package/vendor/abseil-cpp/absl/random/CMakeLists.txt +20 -19
- package/vendor/abseil-cpp/absl/random/benchmarks.cc +16 -23
- package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +7 -2
- package/vendor/abseil-cpp/absl/random/distributions.h +6 -8
- package/vendor/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +19 -20
- package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- package/vendor/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +24 -92
- package/vendor/abseil-cpp/absl/{base/inline_variable_test_b.cc → random/internal/entropy_pool.h} +14 -6
- package/vendor/abseil-cpp/absl/random/internal/entropy_pool_test.cc +119 -0
- package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +6 -7
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +39 -0
- package/vendor/abseil-cpp/absl/random/internal/randen_benchmarks.cc +8 -6
- package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- package/vendor/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- package/vendor/abseil-cpp/absl/random/internal/seed_material_test.cc +3 -0
- package/vendor/abseil-cpp/absl/random/mock_distributions_test.cc +5 -4
- package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +8 -10
- package/vendor/abseil-cpp/absl/random/random.h +88 -53
- package/vendor/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +26 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.cc +4 -3
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +194 -32
- package/vendor/abseil-cpp/absl/status/status.cc +4 -8
- package/vendor/abseil-cpp/absl/status/status.h +8 -8
- package/vendor/abseil-cpp/absl/{base/inline_variable_test_a.cc → status/status_benchmark.cc} +20 -10
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +65 -0
- package/vendor/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- package/vendor/abseil-cpp/absl/status/statusor.cc +2 -2
- package/vendor/abseil-cpp/absl/status/statusor.h +49 -102
- package/vendor/abseil-cpp/absl/status/statusor_benchmark.cc +480 -0
- package/vendor/abseil-cpp/absl/status/statusor_test.cc +323 -1
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +70 -34
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +6 -3
- package/vendor/abseil-cpp/absl/strings/ascii.cc +9 -9
- package/vendor/abseil-cpp/absl/strings/ascii.h +18 -18
- package/vendor/abseil-cpp/absl/strings/ascii_benchmark.cc +5 -8
- package/vendor/abseil-cpp/absl/strings/charconv.cc +21 -22
- package/vendor/abseil-cpp/absl/strings/charconv.h +5 -5
- package/vendor/abseil-cpp/absl/strings/charconv_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/charset_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/cord.cc +54 -58
- package/vendor/abseil-cpp/absl/strings/cord.h +94 -84
- package/vendor/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- package/vendor/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- package/vendor/abseil-cpp/absl/strings/cord_test.cc +23 -0
- package/vendor/abseil-cpp/absl/strings/cordz_test_helpers.h +4 -5
- package/vendor/abseil-cpp/absl/strings/escaping.cc +130 -149
- package/vendor/abseil-cpp/absl/strings/escaping.h +9 -10
- package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/escaping_test.cc +19 -9
- package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +6 -10
- package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +5 -9
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +2 -4
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_benchmark.cc +56 -0
- package/vendor/abseil-cpp/absl/strings/internal/memutil_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/internal/ostringstream_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +1 -6
- package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- package/vendor/abseil-cpp/absl/strings/internal/str_format/extension_test.cc +3 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +7 -2
- package/vendor/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- package/vendor/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- package/vendor/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- package/vendor/abseil-cpp/absl/strings/internal/utf8_test.cc +196 -3
- package/vendor/abseil-cpp/absl/strings/numbers.cc +53 -32
- package/vendor/abseil-cpp/absl/strings/numbers.h +87 -58
- package/vendor/abseil-cpp/absl/strings/numbers_benchmark.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +634 -120
- package/vendor/abseil-cpp/absl/strings/str_cat.cc +6 -7
- package/vendor/abseil-cpp/absl/strings/str_cat.h +32 -32
- package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +25 -1
- package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +2 -7
- package/vendor/abseil-cpp/absl/strings/str_format.h +18 -18
- package/vendor/abseil-cpp/absl/strings/str_format_test.cc +8 -14
- package/vendor/abseil-cpp/absl/strings/str_join_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/str_replace.cc +3 -3
- package/vendor/abseil-cpp/absl/strings/str_replace.h +6 -6
- package/vendor/abseil-cpp/absl/strings/str_replace_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/str_split.h +2 -2
- package/vendor/abseil-cpp/absl/strings/str_split_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/strings/string_view.cc +4 -9
- package/vendor/abseil-cpp/absl/strings/string_view.h +38 -39
- package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +4 -6
- package/vendor/abseil-cpp/absl/strings/string_view_test.cc +2 -50
- package/vendor/abseil-cpp/absl/strings/strip.h +4 -4
- package/vendor/abseil-cpp/absl/strings/substitute.cc +5 -4
- package/vendor/abseil-cpp/absl/strings/substitute.h +66 -64
- package/vendor/abseil-cpp/absl/strings/substitute_benchmark.cc +158 -0
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +6 -1
- package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +2 -1
- package/vendor/abseil-cpp/absl/synchronization/barrier.cc +1 -1
- package/vendor/abseil-cpp/absl/synchronization/barrier_test.cc +3 -3
- package/vendor/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
- package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
- package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_benchmark.cc +2 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_test.cc +6 -5
- package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- package/vendor/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/thread_pool.h +3 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/internal/waiter_test.cc +12 -3
- package/vendor/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- package/vendor/abseil-cpp/absl/synchronization/lifetime_test.cc +4 -4
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +27 -29
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +205 -126
- package/vendor/abseil-cpp/absl/synchronization/mutex_benchmark.cc +13 -31
- package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +183 -169
- package/vendor/abseil-cpp/absl/synchronization/notification.cc +5 -5
- package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
- package/vendor/abseil-cpp/absl/synchronization/notification_test.cc +3 -3
- package/vendor/abseil-cpp/absl/time/BUILD.bazel +9 -1
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +3 -1
- package/vendor/abseil-cpp/absl/time/civil_time.cc +1 -0
- package/vendor/abseil-cpp/absl/time/civil_time_test.cc +134 -0
- package/vendor/abseil-cpp/absl/time/clock.cc +11 -14
- package/vendor/abseil-cpp/absl/time/duration.cc +14 -9
- package/vendor/abseil-cpp/absl/time/duration_test.cc +6 -7
- package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +14 -3
- package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/cctz_benchmark.cc +4 -490
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.cc +515 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +33 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +41 -4
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +22 -23
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc +1 -488
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coyhaique +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +2 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +1 -1
- package/vendor/abseil-cpp/absl/time/time.h +24 -18
- package/vendor/abseil-cpp/absl/time/time_test.cc +26 -0
- package/vendor/abseil-cpp/absl/types/BUILD.bazel +11 -164
- package/vendor/abseil-cpp/absl/types/CMakeLists.txt +23 -167
- package/vendor/abseil-cpp/absl/types/any.h +9 -484
- package/vendor/abseil-cpp/absl/types/optional.h +7 -747
- package/vendor/abseil-cpp/absl/types/span.h +46 -19
- package/vendor/abseil-cpp/absl/types/span_test.cc +27 -0
- package/vendor/abseil-cpp/absl/types/variant.h +5 -784
- package/vendor/abseil-cpp/absl/types/variant_test.cc +43 -2597
- package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -41
- package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +0 -40
- package/vendor/abseil-cpp/absl/utility/utility.h +10 -185
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -3
- package/vendor/abseil-cpp/ci/cmake_common.sh +2 -2
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +12 -13
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +24 -21
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +12 -12
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +23 -22
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +20 -19
- package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +17 -17
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +10 -10
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +1 -1
- package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +1 -1
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +9 -10
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +9 -1
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +14 -6
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +14 -6
- package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +1 -1
- package/vendor/re2/.bazelrc +4 -4
- package/vendor/re2/.bcr/metadata.template.json +16 -0
- package/vendor/re2/.bcr/presubmit.yml +57 -0
- package/vendor/re2/.bcr/source.template.json +5 -0
- package/vendor/re2/.github/bazel.sh +1 -7
- package/vendor/re2/.github/workflows/ci-bazel.yml +5 -5
- package/vendor/re2/.github/workflows/ci-cmake.yml +4 -4
- package/vendor/re2/.github/workflows/ci.yml +5 -6
- package/vendor/re2/.github/workflows/pages.yml +3 -3
- package/vendor/re2/.github/workflows/python.yml +29 -24
- package/vendor/re2/.github/workflows/release-bazel.yml +42 -0
- package/vendor/re2/.github/workflows/release.yml +15 -4
- package/vendor/re2/BUILD.bazel +25 -0
- package/vendor/re2/CMakeLists.txt +100 -85
- package/vendor/re2/CONTRIBUTING.md +0 -1
- package/vendor/re2/MODULE.bazel +10 -10
- package/vendor/re2/Makefile +1 -1
- package/vendor/re2/README.md +259 -0
- package/vendor/re2/python/BUILD.bazel +8 -0
- package/vendor/re2/python/re2.py +1 -1
- package/vendor/re2/python/re2_test.py +6 -0
- package/vendor/re2/python/setup.py +3 -3
- package/vendor/re2/re2/bitmap256.cc +3 -4
- package/vendor/re2/re2/bitstate.cc +15 -10
- package/vendor/re2/re2/dfa.cc +1 -2
- package/vendor/re2/re2/parse.cc +3 -4
- package/vendor/re2/re2/prog.cc +1 -2
- package/vendor/re2/re2/prog.h +1 -0
- package/vendor/re2/re2/re2.cc +5 -0
- package/vendor/re2/re2/re2.h +9 -9
- package/vendor/re2/re2/set.cc +6 -0
- package/vendor/re2/re2/set.h +5 -0
- package/vendor/re2/re2/testing/re2_arg_test.cc +3 -3
- package/vendor/re2/re2/testing/re2_test.cc +8 -0
- package/vendor/re2/re2/testing/set_test.cc +5 -0
- package/vendor/re2/re2/walker-inl.h +1 -1
- package/vendor/abseil-cpp/WORKSPACE +0 -76
- package/vendor/abseil-cpp/WORKSPACE.bzlmod +0 -19
- package/vendor/abseil-cpp/absl/base/inline_variable_test.cc +0 -64
- package/vendor/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- package/vendor/abseil-cpp/absl/base/internal/inline_variable_testing.h +0 -46
- package/vendor/abseil-cpp/absl/base/internal/invoke.h +0 -241
- package/vendor/abseil-cpp/absl/base/internal/nullability_impl.h +0 -69
- package/vendor/abseil-cpp/absl/base/invoke_test.cc +0 -331
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -148
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -54
- package/vendor/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- package/vendor/abseil-cpp/absl/random/internal/pool_urbg_test.cc +0 -182
- package/vendor/abseil-cpp/absl/types/any_exception_safety_test.cc +0 -173
- package/vendor/abseil-cpp/absl/types/any_test.cc +0 -778
- package/vendor/abseil-cpp/absl/types/bad_any_cast.cc +0 -64
- package/vendor/abseil-cpp/absl/types/bad_any_cast.h +0 -75
- package/vendor/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- package/vendor/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- package/vendor/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- package/vendor/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- package/vendor/abseil-cpp/absl/types/internal/optional.h +0 -352
- package/vendor/abseil-cpp/absl/types/internal/variant.h +0 -1622
- package/vendor/abseil-cpp/absl/types/optional_exception_safety_test.cc +0 -292
- package/vendor/abseil-cpp/absl/types/optional_test.cc +0 -1615
- package/vendor/abseil-cpp/absl/types/variant_benchmark.cc +0 -222
- package/vendor/abseil-cpp/absl/types/variant_exception_safety_test.cc +0 -532
- package/vendor/abseil-cpp/absl/utility/internal/if_constexpr.h +0 -70
- package/vendor/abseil-cpp/absl/utility/internal/if_constexpr_test.cc +0 -79
- package/vendor/abseil-cpp/absl/utility/utility_test.cc +0 -239
- package/vendor/re2/.github/workflows/pr.yml +0 -34
- package/vendor/re2/README +0 -47
|
@@ -169,15 +169,25 @@ TEST(Unescape, BasicFunction) {
|
|
|
169
169
|
EXPECT_TRUE(absl::CUnescape(val.escaped, &out));
|
|
170
170
|
EXPECT_EQ(out, val.unescaped);
|
|
171
171
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
172
|
+
constexpr absl::string_view bad[] = {
|
|
173
|
+
"\\u1", // too short
|
|
174
|
+
"\\U1", // too short
|
|
175
|
+
"\\Uffffff", // exceeds 0x10ffff (largest Unicode)
|
|
176
|
+
"\\U00110000", // exceeds 0x10ffff (largest Unicode)
|
|
177
|
+
"\\uD835", // surrogate character (D800-DFFF)
|
|
178
|
+
"\\U0000DD04", // surrogate character (D800-DFFF)
|
|
179
|
+
"\\777", // exceeds 0xff
|
|
180
|
+
"\\xABCD", // exceeds 0xff
|
|
181
|
+
"endswith\\", // ends with "\"
|
|
182
|
+
"endswith\\x", // ends with "\x"
|
|
183
|
+
"endswith\\X", // ends with "\X"
|
|
184
|
+
"\\x.2345678", // non-hex follows "\x"
|
|
185
|
+
"\\X.2345678", // non-hex follows "\X"
|
|
186
|
+
"\\u.2345678", // non-hex follows "\U"
|
|
187
|
+
"\\U.2345678", // non-hex follows "\U"
|
|
188
|
+
"\\.unknown", // unknown escape sequence
|
|
189
|
+
};
|
|
190
|
+
for (const auto e : bad) {
|
|
181
191
|
std::string error;
|
|
182
192
|
std::string out;
|
|
183
193
|
EXPECT_FALSE(absl::CUnescape(e, &out, &error));
|
|
@@ -279,7 +279,7 @@ int BigUnsigned<max_words>::ReadDigits(const char* begin, const char* end,
|
|
|
279
279
|
// Either way, [begin, decimal_point) will contain the set of dropped digits
|
|
280
280
|
// that require an exponent adjustment.
|
|
281
281
|
const char* decimal_point = std::find(begin, end, '.');
|
|
282
|
-
exponent_adjust += (decimal_point - begin);
|
|
282
|
+
exponent_adjust += static_cast<int>(decimal_point - begin);
|
|
283
283
|
}
|
|
284
284
|
return exponent_adjust;
|
|
285
285
|
}
|
|
@@ -176,7 +176,7 @@ TEST(BigUnsigned, MultiplyByBigUnsigned) {
|
|
|
176
176
|
|
|
177
177
|
TEST(BigUnsigned, MultiplyByOverflow) {
|
|
178
178
|
{
|
|
179
|
-
// Check that
|
|
179
|
+
// Check that multiplication overflow predictably truncates.
|
|
180
180
|
|
|
181
181
|
// A big int with all bits on.
|
|
182
182
|
BigUnsigned<4> all_bits_on("340282366920938463463374607431768211455");
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
#include "absl/base/attributes.h"
|
|
26
26
|
#include "absl/base/config.h"
|
|
27
27
|
#include "absl/base/internal/endian.h"
|
|
28
|
-
#include "absl/base/internal/invoke.h"
|
|
29
28
|
#include "absl/base/macros.h"
|
|
30
29
|
#include "absl/base/nullability.h"
|
|
31
30
|
#include "absl/base/optimization.h"
|
|
@@ -358,16 +357,15 @@ struct CordRepExternal : public CordRep {
|
|
|
358
357
|
struct Rank0 {};
|
|
359
358
|
struct Rank1 : Rank0 {};
|
|
360
359
|
|
|
361
|
-
template <typename Releaser,
|
|
362
|
-
|
|
360
|
+
template <typename Releaser,
|
|
361
|
+
typename = ::std::invoke_result_t<Releaser, absl::string_view>>
|
|
363
362
|
void InvokeReleaser(Rank1, Releaser&& releaser, absl::string_view data) {
|
|
364
|
-
::
|
|
363
|
+
::std::invoke(std::forward<Releaser>(releaser), data);
|
|
365
364
|
}
|
|
366
365
|
|
|
367
|
-
template <typename Releaser,
|
|
368
|
-
typename = ::absl::base_internal::invoke_result_t<Releaser>>
|
|
366
|
+
template <typename Releaser, typename = ::std::invoke_result_t<Releaser>>
|
|
369
367
|
void InvokeReleaser(Rank0, Releaser&& releaser, absl::string_view) {
|
|
370
|
-
::
|
|
368
|
+
::std::invoke(std::forward<Releaser>(releaser));
|
|
371
369
|
}
|
|
372
370
|
|
|
373
371
|
// We use CompressedTuple so that we can benefit from EBCO.
|
|
@@ -637,7 +635,7 @@ class InlineData {
|
|
|
637
635
|
poison();
|
|
638
636
|
}
|
|
639
637
|
|
|
640
|
-
void CopyInlineToString(
|
|
638
|
+
void CopyInlineToString(std::string* dst) const {
|
|
641
639
|
assert(!is_tree());
|
|
642
640
|
// As Cord can store only 15 bytes it is smaller than std::string's
|
|
643
641
|
// small string optimization buffer size. Therefore we will always trigger
|
|
@@ -917,8 +915,6 @@ inline CordRep* CordRep::Ref(CordRep* rep) {
|
|
|
917
915
|
|
|
918
916
|
inline void CordRep::Unref(CordRep* rep) {
|
|
919
917
|
assert(rep != nullptr);
|
|
920
|
-
// Expect refcount to be 0. Avoiding the cost of an atomic decrement should
|
|
921
|
-
// typically outweigh the cost of an extra branch checking for ref == 1.
|
|
922
918
|
if (ABSL_PREDICT_FALSE(!rep->refcount.DecrementExpectHighRefcount())) {
|
|
923
919
|
Destroy(rep);
|
|
924
920
|
}
|
|
@@ -36,10 +36,6 @@ namespace absl {
|
|
|
36
36
|
ABSL_NAMESPACE_BEGIN
|
|
37
37
|
namespace cord_internal {
|
|
38
38
|
|
|
39
|
-
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
|
40
|
-
constexpr size_t CordRepBtree::kMaxCapacity;
|
|
41
|
-
#endif
|
|
42
|
-
|
|
43
39
|
namespace {
|
|
44
40
|
|
|
45
41
|
using NodeStack = CordRepBtree * [CordRepBtree::kMaxDepth];
|
|
@@ -54,7 +54,7 @@ static Queue& GlobalQueue() {
|
|
|
54
54
|
CordzHandle::CordzHandle(bool is_snapshot) : is_snapshot_(is_snapshot) {
|
|
55
55
|
Queue& global_queue = GlobalQueue();
|
|
56
56
|
if (is_snapshot) {
|
|
57
|
-
MutexLock lock(
|
|
57
|
+
MutexLock lock(global_queue.mutex);
|
|
58
58
|
CordzHandle* dq_tail = global_queue.dq_tail.load(std::memory_order_acquire);
|
|
59
59
|
if (dq_tail != nullptr) {
|
|
60
60
|
dq_prev_ = dq_tail;
|
|
@@ -69,7 +69,7 @@ CordzHandle::~CordzHandle() {
|
|
|
69
69
|
if (is_snapshot_) {
|
|
70
70
|
std::vector<CordzHandle*> to_delete;
|
|
71
71
|
{
|
|
72
|
-
MutexLock lock(
|
|
72
|
+
MutexLock lock(global_queue.mutex);
|
|
73
73
|
CordzHandle* next = dq_next_;
|
|
74
74
|
if (dq_prev_ == nullptr) {
|
|
75
75
|
// We were head of the queue, delete every CordzHandle until we reach
|
|
@@ -103,7 +103,7 @@ void CordzHandle::Delete(CordzHandle* handle) {
|
|
|
103
103
|
if (handle) {
|
|
104
104
|
Queue& queue = GlobalQueue();
|
|
105
105
|
if (!handle->SafeToDelete()) {
|
|
106
|
-
MutexLock lock(
|
|
106
|
+
MutexLock lock(queue.mutex);
|
|
107
107
|
CordzHandle* dq_tail = queue.dq_tail.load(std::memory_order_acquire);
|
|
108
108
|
if (dq_tail != nullptr) {
|
|
109
109
|
handle->dq_prev_ = dq_tail;
|
|
@@ -119,7 +119,7 @@ void CordzHandle::Delete(CordzHandle* handle) {
|
|
|
119
119
|
std::vector<const CordzHandle*> CordzHandle::DiagnosticsGetDeleteQueue() {
|
|
120
120
|
std::vector<const CordzHandle*> handles;
|
|
121
121
|
Queue& global_queue = GlobalQueue();
|
|
122
|
-
MutexLock lock(
|
|
122
|
+
MutexLock lock(global_queue.mutex);
|
|
123
123
|
CordzHandle* dq_tail = global_queue.dq_tail.load(std::memory_order_acquire);
|
|
124
124
|
for (const CordzHandle* p = dq_tail; p; p = p->dq_prev_) {
|
|
125
125
|
handles.push_back(p);
|
|
@@ -134,7 +134,7 @@ bool CordzHandle::DiagnosticsHandleIsSafeToInspect(
|
|
|
134
134
|
if (handle->is_snapshot_) return false;
|
|
135
135
|
bool snapshot_found = false;
|
|
136
136
|
Queue& global_queue = GlobalQueue();
|
|
137
|
-
MutexLock lock(
|
|
137
|
+
MutexLock lock(global_queue.mutex);
|
|
138
138
|
for (const CordzHandle* p = global_queue.dq_tail; p; p = p->dq_prev_) {
|
|
139
139
|
if (p == handle) return !snapshot_found;
|
|
140
140
|
if (p == this) snapshot_found = true;
|
|
@@ -151,7 +151,7 @@ CordzHandle::DiagnosticsGetSafeToInspectDeletedHandles() {
|
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
Queue& global_queue = GlobalQueue();
|
|
154
|
-
MutexLock lock(
|
|
154
|
+
MutexLock lock(global_queue.mutex);
|
|
155
155
|
for (const CordzHandle* p = dq_next_; p != nullptr; p = p->dq_next_) {
|
|
156
156
|
if (!p->is_snapshot()) {
|
|
157
157
|
handles.push_back(p);
|
|
@@ -34,10 +34,6 @@ namespace absl {
|
|
|
34
34
|
ABSL_NAMESPACE_BEGIN
|
|
35
35
|
namespace cord_internal {
|
|
36
36
|
|
|
37
|
-
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
|
38
|
-
constexpr size_t CordzInfo::kMaxStackDepth;
|
|
39
|
-
#endif
|
|
40
|
-
|
|
41
37
|
ABSL_CONST_INIT CordzInfo::List CordzInfo::global_list_{absl::kConstInit};
|
|
42
38
|
|
|
43
39
|
namespace {
|
|
@@ -331,7 +327,7 @@ CordzInfo::~CordzInfo() {
|
|
|
331
327
|
}
|
|
332
328
|
|
|
333
329
|
void CordzInfo::Track() {
|
|
334
|
-
SpinLockHolder l(
|
|
330
|
+
SpinLockHolder l(list_->mutex);
|
|
335
331
|
|
|
336
332
|
CordzInfo* const head = list_->head.load(std::memory_order_acquire);
|
|
337
333
|
if (head != nullptr) {
|
|
@@ -344,7 +340,7 @@ void CordzInfo::Track() {
|
|
|
344
340
|
void CordzInfo::Untrack() {
|
|
345
341
|
ODRCheck();
|
|
346
342
|
{
|
|
347
|
-
SpinLockHolder l(
|
|
343
|
+
SpinLockHolder l(list_->mutex);
|
|
348
344
|
|
|
349
345
|
CordzInfo* const head = list_->head.load(std::memory_order_acquire);
|
|
350
346
|
CordzInfo* const next = ci_next_.load(std::memory_order_acquire);
|
|
@@ -374,7 +370,7 @@ void CordzInfo::Untrack() {
|
|
|
374
370
|
|
|
375
371
|
// We are likely part of a snapshot, extend the life of the CordRep
|
|
376
372
|
{
|
|
377
|
-
absl::MutexLock lock(
|
|
373
|
+
absl::MutexLock lock(mutex_);
|
|
378
374
|
if (rep_) CordRep::Ref(rep_);
|
|
379
375
|
}
|
|
380
376
|
CordzHandle::Delete(this);
|
|
@@ -382,14 +378,14 @@ void CordzInfo::Untrack() {
|
|
|
382
378
|
|
|
383
379
|
void CordzInfo::Lock(MethodIdentifier method)
|
|
384
380
|
ABSL_EXCLUSIVE_LOCK_FUNCTION(mutex_) {
|
|
385
|
-
mutex_.
|
|
381
|
+
mutex_.lock();
|
|
386
382
|
update_tracker_.LossyAdd(method);
|
|
387
383
|
assert(rep_);
|
|
388
384
|
}
|
|
389
385
|
|
|
390
386
|
void CordzInfo::Unlock() ABSL_UNLOCK_FUNCTION(mutex_) {
|
|
391
387
|
bool tracked = rep_ != nullptr;
|
|
392
|
-
mutex_.
|
|
388
|
+
mutex_.unlock();
|
|
393
389
|
if (!tracked) {
|
|
394
390
|
Untrack();
|
|
395
391
|
}
|
|
@@ -191,9 +191,7 @@ class ABSL_LOCKABLE CordzInfo : public CordzHandle {
|
|
|
191
191
|
// Global cordz info list. CordzInfo stores a pointer to the global list
|
|
192
192
|
// instance to harden against ODR violations.
|
|
193
193
|
struct List {
|
|
194
|
-
constexpr explicit List(absl::ConstInitType)
|
|
195
|
-
: mutex(absl::kConstInit,
|
|
196
|
-
absl::base_internal::SCHEDULE_COOPERATIVE_AND_KERNEL) {}
|
|
194
|
+
constexpr explicit List(absl::ConstInitType) {}
|
|
197
195
|
|
|
198
196
|
SpinLock mutex;
|
|
199
197
|
std::atomic<CordzInfo*> head ABSL_GUARDED_BY(mutex){nullptr};
|
|
@@ -292,7 +290,7 @@ inline void CordzInfo::SetCordRep(CordRep* rep) {
|
|
|
292
290
|
inline void CordzInfo::UnsafeSetCordRep(CordRep* rep) { rep_ = rep; }
|
|
293
291
|
|
|
294
292
|
inline CordRep* CordzInfo::RefCordRep() const ABSL_LOCKS_EXCLUDED(mutex_) {
|
|
295
|
-
MutexLock lock(
|
|
293
|
+
MutexLock lock(mutex_);
|
|
296
294
|
return rep_ ? CordRep::Ref(rep_) : nullptr;
|
|
297
295
|
}
|
|
298
296
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Copyright 2022 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 <string>
|
|
16
|
+
|
|
17
|
+
#include "absl/strings/internal/damerau_levenshtein_distance.h"
|
|
18
|
+
#include "benchmark/benchmark.h"
|
|
19
|
+
|
|
20
|
+
namespace {
|
|
21
|
+
|
|
22
|
+
std::string MakeTestString(int desired_length, int num_edits) {
|
|
23
|
+
std::string test(desired_length, 'x');
|
|
24
|
+
for (int i = 0; (i < num_edits) && (i * 8 < desired_length); ++i) {
|
|
25
|
+
test[i * 8] = 'y';
|
|
26
|
+
}
|
|
27
|
+
return test;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
void BenchmarkArgs(benchmark::internal::Benchmark* benchmark) {
|
|
31
|
+
// Each column is 8 bytes.
|
|
32
|
+
const auto string_size = {1, 8, 64, 100};
|
|
33
|
+
const auto num_edits = {1, 2, 16, 16, 64, 80};
|
|
34
|
+
const auto distance_cap = {1, 2, 3, 16, 64, 80};
|
|
35
|
+
for (const int s : string_size) {
|
|
36
|
+
for (const int n : num_edits) {
|
|
37
|
+
for (const int d : distance_cap) {
|
|
38
|
+
if (n > s) continue;
|
|
39
|
+
benchmark->Args({s, n, d});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
using absl::strings_internal::CappedDamerauLevenshteinDistance;
|
|
46
|
+
void BM_Distance(benchmark::State& state) {
|
|
47
|
+
std::string s1 = MakeTestString(state.range(0), 0);
|
|
48
|
+
std::string s2 = MakeTestString(state.range(0), state.range(1));
|
|
49
|
+
const size_t cap = state.range(2);
|
|
50
|
+
for (auto _ : state) {
|
|
51
|
+
CappedDamerauLevenshteinDistance(s1, s2, cap);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
BENCHMARK(BM_Distance)->Apply(BenchmarkArgs);
|
|
55
|
+
|
|
56
|
+
} // namespace
|
|
@@ -12,13 +12,12 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
|
|
15
|
-
#include "absl/strings/internal/memutil.h"
|
|
16
|
-
|
|
17
15
|
#include <algorithm>
|
|
18
16
|
#include <cstdlib>
|
|
19
17
|
|
|
20
|
-
#include "benchmark/benchmark.h"
|
|
21
18
|
#include "absl/strings/ascii.h"
|
|
19
|
+
#include "absl/strings/internal/memutil.h"
|
|
20
|
+
#include "benchmark/benchmark.h"
|
|
22
21
|
|
|
23
22
|
// We fill the haystack with aaaaaaaaaaaaaaaaaa...aaaab.
|
|
24
23
|
// That gives us:
|
|
@@ -12,11 +12,10 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
|
|
15
|
-
#include "absl/strings/internal/ostringstream.h"
|
|
16
|
-
|
|
17
15
|
#include <sstream>
|
|
18
16
|
#include <string>
|
|
19
17
|
|
|
18
|
+
#include "absl/strings/internal/ostringstream.h"
|
|
20
19
|
#include "benchmark/benchmark.h"
|
|
21
20
|
|
|
22
21
|
namespace {
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
#include <cstring>
|
|
27
27
|
#include <cwchar>
|
|
28
28
|
#include <string>
|
|
29
|
+
#include <string_view>
|
|
29
30
|
#include <type_traits>
|
|
30
31
|
|
|
31
32
|
#include "absl/base/config.h"
|
|
@@ -34,13 +35,10 @@
|
|
|
34
35
|
#include "absl/numeric/int128.h"
|
|
35
36
|
#include "absl/strings/internal/str_format/extension.h"
|
|
36
37
|
#include "absl/strings/internal/str_format/float_conversion.h"
|
|
38
|
+
#include "absl/strings/internal/utf8.h"
|
|
37
39
|
#include "absl/strings/numbers.h"
|
|
38
40
|
#include "absl/strings/string_view.h"
|
|
39
41
|
|
|
40
|
-
#if defined(ABSL_HAVE_STD_STRING_VIEW)
|
|
41
|
-
#include <string_view>
|
|
42
|
-
#endif
|
|
43
|
-
|
|
44
42
|
namespace absl {
|
|
45
43
|
ABSL_NAMESPACE_BEGIN
|
|
46
44
|
namespace str_format_internal {
|
|
@@ -311,68 +309,16 @@ inline bool ConvertStringArg(string_view v, const FormatConversionSpecImpl conv,
|
|
|
311
309
|
conv.has_left_flag());
|
|
312
310
|
}
|
|
313
311
|
|
|
314
|
-
struct ShiftState {
|
|
315
|
-
bool saw_high_surrogate = false;
|
|
316
|
-
uint8_t bits = 0;
|
|
317
|
-
};
|
|
318
|
-
|
|
319
|
-
// Converts `v` from UTF-16 or UTF-32 to UTF-8 and writes to `buf`. `buf` is
|
|
320
|
-
// assumed to have enough space for the output. `s` is used to carry state
|
|
321
|
-
// between successive calls with a UTF-16 surrogate pair. Returns the number of
|
|
322
|
-
// chars written, or `static_cast<size_t>(-1)` on failure.
|
|
323
|
-
//
|
|
324
|
-
// This is basically std::wcrtomb(), but always outputting UTF-8 instead of
|
|
325
|
-
// respecting the current locale.
|
|
326
|
-
inline size_t WideToUtf8(wchar_t wc, char *buf, ShiftState &s) {
|
|
327
|
-
const auto v = static_cast<uint32_t>(wc);
|
|
328
|
-
if (v < 0x80) {
|
|
329
|
-
*buf = static_cast<char>(v);
|
|
330
|
-
return 1;
|
|
331
|
-
} else if (v < 0x800) {
|
|
332
|
-
*buf++ = static_cast<char>(0xc0 | (v >> 6));
|
|
333
|
-
*buf = static_cast<char>(0x80 | (v & 0x3f));
|
|
334
|
-
return 2;
|
|
335
|
-
} else if (v < 0xd800 || (v - 0xe000) < 0x2000) {
|
|
336
|
-
*buf++ = static_cast<char>(0xe0 | (v >> 12));
|
|
337
|
-
*buf++ = static_cast<char>(0x80 | ((v >> 6) & 0x3f));
|
|
338
|
-
*buf = static_cast<char>(0x80 | (v & 0x3f));
|
|
339
|
-
return 3;
|
|
340
|
-
} else if ((v - 0x10000) < 0x100000) {
|
|
341
|
-
*buf++ = static_cast<char>(0xf0 | (v >> 18));
|
|
342
|
-
*buf++ = static_cast<char>(0x80 | ((v >> 12) & 0x3f));
|
|
343
|
-
*buf++ = static_cast<char>(0x80 | ((v >> 6) & 0x3f));
|
|
344
|
-
*buf = static_cast<char>(0x80 | (v & 0x3f));
|
|
345
|
-
return 4;
|
|
346
|
-
} else if (v < 0xdc00) {
|
|
347
|
-
s.saw_high_surrogate = true;
|
|
348
|
-
s.bits = static_cast<uint8_t>(v & 0x3);
|
|
349
|
-
const uint8_t high_bits = ((v >> 6) & 0xf) + 1;
|
|
350
|
-
*buf++ = static_cast<char>(0xf0 | (high_bits >> 2));
|
|
351
|
-
*buf =
|
|
352
|
-
static_cast<char>(0x80 | static_cast<uint8_t>((high_bits & 0x3) << 4) |
|
|
353
|
-
static_cast<uint8_t>((v >> 2) & 0xf));
|
|
354
|
-
return 2;
|
|
355
|
-
} else if (v < 0xe000 && s.saw_high_surrogate) {
|
|
356
|
-
*buf++ = static_cast<char>(0x80 | static_cast<uint8_t>(s.bits << 4) |
|
|
357
|
-
static_cast<uint8_t>((v >> 6) & 0xf));
|
|
358
|
-
*buf = static_cast<char>(0x80 | (v & 0x3f));
|
|
359
|
-
s.saw_high_surrogate = false;
|
|
360
|
-
s.bits = 0;
|
|
361
|
-
return 2;
|
|
362
|
-
} else {
|
|
363
|
-
return static_cast<size_t>(-1);
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
|
|
367
312
|
inline bool ConvertStringArg(const wchar_t *v,
|
|
368
313
|
size_t len,
|
|
369
314
|
const FormatConversionSpecImpl conv,
|
|
370
315
|
FormatSinkImpl *sink) {
|
|
371
316
|
FixedArray<char> mb(len * 4);
|
|
372
|
-
ShiftState s;
|
|
317
|
+
strings_internal::ShiftState s;
|
|
373
318
|
size_t chars_written = 0;
|
|
374
319
|
for (size_t i = 0; i < len; ++i) {
|
|
375
|
-
const size_t chars =
|
|
320
|
+
const size_t chars =
|
|
321
|
+
strings_internal::WideToUtf8(v[i], &mb[chars_written], s);
|
|
376
322
|
if (chars == static_cast<size_t>(-1)) { return false; }
|
|
377
323
|
chars_written += chars;
|
|
378
324
|
}
|
|
@@ -382,8 +328,8 @@ inline bool ConvertStringArg(const wchar_t *v,
|
|
|
382
328
|
bool ConvertWCharTImpl(wchar_t v, const FormatConversionSpecImpl conv,
|
|
383
329
|
FormatSinkImpl *sink) {
|
|
384
330
|
char mb[4];
|
|
385
|
-
ShiftState s;
|
|
386
|
-
const size_t chars_written = WideToUtf8(v, mb, s);
|
|
331
|
+
strings_internal::ShiftState s;
|
|
332
|
+
const size_t chars_written = strings_internal::WideToUtf8(v, mb, s);
|
|
387
333
|
return chars_written != static_cast<size_t>(-1) && !s.saw_high_surrogate &&
|
|
388
334
|
ConvertStringArg(string_view(mb, chars_written), conv, sink);
|
|
389
335
|
}
|
|
@@ -510,13 +456,11 @@ StringConvertResult FormatConvertImpl(string_view v,
|
|
|
510
456
|
return {ConvertStringArg(v, conv, sink)};
|
|
511
457
|
}
|
|
512
458
|
|
|
513
|
-
#if defined(ABSL_HAVE_STD_STRING_VIEW)
|
|
514
459
|
StringConvertResult FormatConvertImpl(std::wstring_view v,
|
|
515
460
|
const FormatConversionSpecImpl conv,
|
|
516
461
|
FormatSinkImpl* sink) {
|
|
517
462
|
return {ConvertStringArg(v.data(), v.size(), conv, sink)};
|
|
518
463
|
}
|
|
519
|
-
#endif
|
|
520
464
|
|
|
521
465
|
StringPtrConvertResult FormatConvertImpl(const char* v,
|
|
522
466
|
const FormatConversionSpecImpl conv,
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
#include <memory>
|
|
27
27
|
#include <sstream>
|
|
28
28
|
#include <string>
|
|
29
|
+
#include <string_view>
|
|
29
30
|
#include <type_traits>
|
|
30
31
|
#include <utility>
|
|
31
32
|
|
|
@@ -37,10 +38,6 @@
|
|
|
37
38
|
#include "absl/strings/internal/str_format/extension.h"
|
|
38
39
|
#include "absl/strings/string_view.h"
|
|
39
40
|
|
|
40
|
-
#if defined(ABSL_HAVE_STD_STRING_VIEW)
|
|
41
|
-
#include <string_view>
|
|
42
|
-
#endif
|
|
43
|
-
|
|
44
41
|
namespace absl {
|
|
45
42
|
ABSL_NAMESPACE_BEGIN
|
|
46
43
|
|
|
@@ -228,7 +225,6 @@ StringConvertResult FormatConvertImpl(const std::wstring& v,
|
|
|
228
225
|
StringConvertResult FormatConvertImpl(string_view v,
|
|
229
226
|
FormatConversionSpecImpl conv,
|
|
230
227
|
FormatSinkImpl* sink);
|
|
231
|
-
#if defined(ABSL_HAVE_STD_STRING_VIEW)
|
|
232
228
|
StringConvertResult FormatConvertImpl(std::wstring_view v,
|
|
233
229
|
FormatConversionSpecImpl conv,
|
|
234
230
|
FormatSinkImpl* sink);
|
|
@@ -239,7 +235,6 @@ inline StringConvertResult FormatConvertImpl(std::string_view v,
|
|
|
239
235
|
return FormatConvertImpl(absl::string_view(v.data(), v.size()), conv, sink);
|
|
240
236
|
}
|
|
241
237
|
#endif // !ABSL_USES_STD_STRING_VIEW
|
|
242
|
-
#endif // ABSL_HAVE_STD_STRING_VIEW
|
|
243
238
|
|
|
244
239
|
using StringPtrConvertResult = ArgConvertResult<FormatConversionCharSetUnion(
|
|
245
240
|
FormatConversionCharSetInternal::s,
|
|
@@ -651,15 +646,10 @@ class FormatArgImpl {
|
|
|
651
646
|
ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(const wchar_t*, __VA_ARGS__); \
|
|
652
647
|
ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(std::wstring, __VA_ARGS__)
|
|
653
648
|
|
|
654
|
-
#if defined(ABSL_HAVE_STD_STRING_VIEW)
|
|
655
649
|
#define ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_(...) \
|
|
656
650
|
ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_NO_WSTRING_VIEW_( \
|
|
657
651
|
__VA_ARGS__); \
|
|
658
652
|
ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(std::wstring_view, __VA_ARGS__)
|
|
659
|
-
#else
|
|
660
|
-
#define ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_(...) \
|
|
661
|
-
ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_NO_WSTRING_VIEW_(__VA_ARGS__)
|
|
662
|
-
#endif
|
|
663
653
|
|
|
664
654
|
ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_(extern);
|
|
665
655
|
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
#include <set>
|
|
28
28
|
#include <sstream>
|
|
29
29
|
#include <string>
|
|
30
|
+
#include <string_view>
|
|
30
31
|
#include <thread> // NOLINT
|
|
31
32
|
#include <type_traits>
|
|
32
33
|
#include <vector>
|
|
@@ -46,10 +47,6 @@
|
|
|
46
47
|
#include "absl/types/optional.h"
|
|
47
48
|
#include "absl/types/span.h"
|
|
48
49
|
|
|
49
|
-
#if defined(ABSL_HAVE_STD_STRING_VIEW)
|
|
50
|
-
#include <string_view>
|
|
51
|
-
#endif
|
|
52
|
-
|
|
53
50
|
namespace absl {
|
|
54
51
|
ABSL_NAMESPACE_BEGIN
|
|
55
52
|
namespace str_format_internal {
|
|
@@ -322,10 +319,8 @@ TEST_F(FormatConvertTest, BasicString) {
|
|
|
322
319
|
TestStringConvert(std::string("hello"));
|
|
323
320
|
TestStringConvert(std::wstring(L"hello"));
|
|
324
321
|
TestStringConvert(string_view("hello"));
|
|
325
|
-
#if defined(ABSL_HAVE_STD_STRING_VIEW)
|
|
326
322
|
TestStringConvert(std::string_view("hello"));
|
|
327
323
|
TestStringConvert(std::wstring_view(L"hello"));
|
|
328
|
-
#endif // ABSL_HAVE_STD_STRING_VIEW
|
|
329
324
|
}
|
|
330
325
|
|
|
331
326
|
TEST_F(FormatConvertTest, NullString) {
|
|
@@ -33,28 +33,6 @@ std::string FlagsToString(Flags v) {
|
|
|
33
33
|
return s;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
|
37
|
-
|
|
38
|
-
#define ABSL_INTERNAL_X_VAL(id) \
|
|
39
|
-
constexpr absl::FormatConversionChar FormatConversionCharInternal::id;
|
|
40
|
-
ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_X_VAL, )
|
|
41
|
-
#undef ABSL_INTERNAL_X_VAL
|
|
42
|
-
// NOLINTNEXTLINE(readability-redundant-declaration)
|
|
43
|
-
constexpr absl::FormatConversionChar FormatConversionCharInternal::kNone;
|
|
44
|
-
|
|
45
|
-
#define ABSL_INTERNAL_CHAR_SET_CASE(c) \
|
|
46
|
-
constexpr FormatConversionCharSet FormatConversionCharSetInternal::c;
|
|
47
|
-
ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_CHAR_SET_CASE, )
|
|
48
|
-
#undef ABSL_INTERNAL_CHAR_SET_CASE
|
|
49
|
-
|
|
50
|
-
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kStar;
|
|
51
|
-
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kIntegral;
|
|
52
|
-
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kFloating;
|
|
53
|
-
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kNumeric;
|
|
54
|
-
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kPointer;
|
|
55
|
-
|
|
56
|
-
#endif // ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
|
57
|
-
|
|
58
36
|
bool FormatSinkImpl::PutPaddedString(string_view value, int width,
|
|
59
37
|
int precision, bool left) {
|
|
60
38
|
size_t space_remaining = 0;
|
|
@@ -16,11 +16,13 @@
|
|
|
16
16
|
|
|
17
17
|
#include "absl/strings/internal/str_format/extension.h"
|
|
18
18
|
|
|
19
|
+
#include <cstddef>
|
|
19
20
|
#include <random>
|
|
20
21
|
#include <string>
|
|
21
22
|
|
|
22
23
|
#include "gmock/gmock.h"
|
|
23
24
|
#include "gtest/gtest.h"
|
|
25
|
+
#include "absl/random/random.h"
|
|
24
26
|
#include "absl/strings/str_format.h"
|
|
25
27
|
#include "absl/strings/string_view.h"
|
|
26
28
|
|
|
@@ -44,8 +46,7 @@ class UserDefinedType {
|
|
|
44
46
|
namespace {
|
|
45
47
|
|
|
46
48
|
std::string MakeRandomString(size_t len) {
|
|
47
|
-
|
|
48
|
-
std::mt19937 gen(rd());
|
|
49
|
+
absl::InsecureBitGen gen;
|
|
49
50
|
std::uniform_int_distribution<> dis('a', 'z');
|
|
50
51
|
std::string s(len, '0');
|
|
51
52
|
for (char& c : s) {
|
|
@@ -33,9 +33,11 @@ struct ClearErrnoGuard {
|
|
|
33
33
|
|
|
34
34
|
void BufferRawSink::Write(string_view v) {
|
|
35
35
|
size_t to_write = std::min(v.size(), size_);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
if (to_write > 0) {
|
|
37
|
+
std::memcpy(buffer_, v.data(), to_write);
|
|
38
|
+
buffer_ += to_write;
|
|
39
|
+
size_ -= to_write;
|
|
40
|
+
}
|
|
39
41
|
total_written_ += v.size();
|
|
40
42
|
}
|
|
41
43
|
|
|
@@ -132,8 +132,10 @@ class ParsedFormatBase {
|
|
|
132
132
|
has_error_ = other.has_error_;
|
|
133
133
|
items_ = other.items_;
|
|
134
134
|
size_t text_size = items_.empty() ? 0 : items_.back().text_end;
|
|
135
|
-
data_
|
|
136
|
-
|
|
135
|
+
data_ = std::make_unique<char[]>(text_size);
|
|
136
|
+
if (text_size > 0) {
|
|
137
|
+
memcpy(data_.get(), other.data_.get(), text_size);
|
|
138
|
+
}
|
|
137
139
|
return *this;
|
|
138
140
|
}
|
|
139
141
|
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
#include <utility>
|
|
44
44
|
|
|
45
45
|
#include "absl/base/config.h"
|
|
46
|
+
#include "absl/base/internal/iterator_traits.h"
|
|
46
47
|
#include "absl/base/internal/raw_logging.h"
|
|
47
48
|
#include "absl/strings/internal/ostringstream.h"
|
|
48
49
|
#include "absl/strings/internal/resize_uninitialized.h"
|
|
@@ -228,9 +229,8 @@ std::string JoinAlgorithm(Iterator start, Iterator end, absl::string_view s,
|
|
|
228
229
|
// range will be traversed twice: once to calculate the total needed size, and
|
|
229
230
|
// then again to copy the elements and delimiters to the output string.
|
|
230
231
|
template <typename Iterator,
|
|
231
|
-
typename =
|
|
232
|
-
|
|
233
|
-
std::forward_iterator_tag>::value>::type>
|
|
232
|
+
typename = std::enable_if_t<
|
|
233
|
+
base_internal::IsAtLeastForwardIterator<Iterator>::value>>
|
|
234
234
|
std::string JoinAlgorithm(Iterator start, Iterator end, absl::string_view s,
|
|
235
235
|
NoFormatter) {
|
|
236
236
|
std::string result;
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
#define ABSL_STRINGS_INTERNAL_STR_SPLIT_INTERNAL_H_
|
|
31
31
|
|
|
32
32
|
#include <array>
|
|
33
|
+
#include <cassert>
|
|
33
34
|
#include <cstddef>
|
|
34
35
|
#include <initializer_list>
|
|
35
36
|
#include <iterator>
|
|
@@ -58,8 +59,12 @@ namespace strings_internal {
|
|
|
58
59
|
class ConvertibleToStringView {
|
|
59
60
|
public:
|
|
60
61
|
ConvertibleToStringView(const char* s) // NOLINT(runtime/explicit)
|
|
61
|
-
: value_(s) {
|
|
62
|
-
|
|
62
|
+
: value_(s) {
|
|
63
|
+
assert(s != nullptr);
|
|
64
|
+
}
|
|
65
|
+
ConvertibleToStringView(char* s) : value_(s) { // NOLINT(runtime/explicit)
|
|
66
|
+
assert(s != nullptr);
|
|
67
|
+
}
|
|
63
68
|
ConvertibleToStringView(absl::string_view s) // NOLINT(runtime/explicit)
|
|
64
69
|
: value_(s) {}
|
|
65
70
|
ConvertibleToStringView(const std::string& s) // NOLINT(runtime/explicit)
|