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
|
@@ -2518,6 +2518,10 @@ static void VerifyCharIterator(const absl::Cord& cord) {
|
|
|
2518
2518
|
absl::Cord::CharRange range = cord.Chars();
|
|
2519
2519
|
EXPECT_EQ(range.begin() == range.end(), cord.empty());
|
|
2520
2520
|
EXPECT_EQ(range.begin() != range.end(), !cord.empty());
|
|
2521
|
+
EXPECT_EQ(absl::Cord::Distance(range.begin(), range.end()),
|
|
2522
|
+
static_cast<ptrdiff_t>(cord.size()));
|
|
2523
|
+
EXPECT_EQ(absl::Cord::Distance(range.end(), range.begin()),
|
|
2524
|
+
-static_cast<ptrdiff_t>(cord.size()));
|
|
2521
2525
|
|
|
2522
2526
|
size_t i = 0;
|
|
2523
2527
|
absl::Cord::CharIterator pre_iter = cord.char_begin();
|
|
@@ -2548,19 +2552,29 @@ static void VerifyCharIterator(const absl::Cord& cord) {
|
|
|
2548
2552
|
absl::Cord::CharIterator advance_iter = range.begin();
|
|
2549
2553
|
absl::Cord::Advance(&advance_iter, i);
|
|
2550
2554
|
EXPECT_EQ(pre_iter, advance_iter);
|
|
2555
|
+
EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
|
|
2556
|
+
static_cast<ptrdiff_t>(i));
|
|
2551
2557
|
|
|
2552
2558
|
advance_iter = range.begin();
|
|
2553
2559
|
EXPECT_EQ(absl::Cord::AdvanceAndRead(&advance_iter, i), cord.Subcord(0, i));
|
|
2554
2560
|
EXPECT_EQ(pre_iter, advance_iter);
|
|
2561
|
+
EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
|
|
2562
|
+
static_cast<ptrdiff_t>(i));
|
|
2555
2563
|
|
|
2556
2564
|
advance_iter = pre_iter;
|
|
2557
2565
|
absl::Cord::Advance(&advance_iter, cord.size() - i);
|
|
2558
2566
|
EXPECT_EQ(range.end(), advance_iter);
|
|
2567
|
+
EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
|
|
2568
|
+
static_cast<ptrdiff_t>(cord.size()));
|
|
2569
|
+
EXPECT_EQ(absl::Cord::Distance(advance_iter, range.end()), 0);
|
|
2559
2570
|
|
|
2560
2571
|
advance_iter = pre_iter;
|
|
2561
2572
|
EXPECT_EQ(absl::Cord::AdvanceAndRead(&advance_iter, cord.size() - i),
|
|
2562
2573
|
cord.Subcord(i, cord.size() - i));
|
|
2563
2574
|
EXPECT_EQ(range.end(), advance_iter);
|
|
2575
|
+
EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
|
|
2576
|
+
static_cast<ptrdiff_t>(cord.size()));
|
|
2577
|
+
EXPECT_EQ(absl::Cord::Distance(advance_iter, range.end()), 0);
|
|
2564
2578
|
|
|
2565
2579
|
++i;
|
|
2566
2580
|
++pre_iter;
|
|
@@ -2642,16 +2656,25 @@ TEST_P(CordTest, CharIteratorAdvanceAndRead) {
|
|
|
2642
2656
|
|
|
2643
2657
|
MaybeHarden(cord);
|
|
2644
2658
|
|
|
2659
|
+
|
|
2645
2660
|
for (size_t chunk_size :
|
|
2646
2661
|
{kChunkSize1, kChunkSize2, kChunkSize3, kChunkSize4}) {
|
|
2647
2662
|
absl::Cord::CharIterator it = cord.char_begin();
|
|
2663
|
+
size_t it_remaining = cord.size();
|
|
2664
|
+
size_t it_advanced = 0;
|
|
2648
2665
|
size_t offset = 0;
|
|
2649
2666
|
while (offset < data.length()) {
|
|
2667
|
+
EXPECT_EQ(absl::Cord::Distance(it, cord.char_end()), it_remaining);
|
|
2668
|
+
EXPECT_EQ(absl::Cord::Distance(cord.char_begin(), it), it_advanced);
|
|
2650
2669
|
const size_t n = std::min<size_t>(data.length() - offset, chunk_size);
|
|
2651
2670
|
absl::Cord chunk = cord.AdvanceAndRead(&it, n);
|
|
2652
2671
|
ASSERT_EQ(chunk.size(), n);
|
|
2653
2672
|
ASSERT_EQ(chunk.Compare(data.substr(offset, n)), 0);
|
|
2654
2673
|
offset += n;
|
|
2674
|
+
it_remaining -= n;
|
|
2675
|
+
it_advanced += n;
|
|
2676
|
+
EXPECT_EQ(absl::Cord::Distance(it, cord.char_end()), it_remaining);
|
|
2677
|
+
EXPECT_EQ(absl::Cord::Distance(cord.char_begin(), it), it_advanced);
|
|
2655
2678
|
}
|
|
2656
2679
|
}
|
|
2657
2680
|
}
|
|
@@ -34,16 +34,15 @@ namespace absl {
|
|
|
34
34
|
ABSL_NAMESPACE_BEGIN
|
|
35
35
|
|
|
36
36
|
// Returns the CordzInfo for the cord, or nullptr if the cord is not sampled.
|
|
37
|
-
inline
|
|
37
|
+
inline const cord_internal::CordzInfo* GetCordzInfoForTesting(
|
|
38
38
|
const Cord& cord) {
|
|
39
39
|
if (!cord.contents_.is_tree()) return nullptr;
|
|
40
40
|
return cord.contents_.cordz_info();
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
// Returns true if the provided cordz_info is in the list of sampled cords.
|
|
44
|
-
inline bool CordzInfoIsListed(
|
|
45
|
-
|
|
46
|
-
cord_internal::CordzSampleToken token = {}) {
|
|
44
|
+
inline bool CordzInfoIsListed(const cord_internal::CordzInfo* cordz_info,
|
|
45
|
+
cord_internal::CordzSampleToken token = {}) {
|
|
47
46
|
for (const cord_internal::CordzInfo& info : token) {
|
|
48
47
|
if (cordz_info == &info) return true;
|
|
49
48
|
}
|
|
@@ -121,7 +120,7 @@ class CordzSamplingIntervalHelper {
|
|
|
121
120
|
|
|
122
121
|
// Wrapper struct managing a small CordRep `rep`
|
|
123
122
|
struct TestCordRep {
|
|
124
|
-
|
|
123
|
+
cord_internal::CordRepFlat* rep;
|
|
125
124
|
|
|
126
125
|
TestCordRep() {
|
|
127
126
|
rep = cord_internal::CordRepFlat::New(100);
|
|
@@ -59,7 +59,7 @@ inline unsigned int hex_digit_to_int(char c) {
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
inline bool IsSurrogate(char32_t c, absl::string_view src,
|
|
62
|
-
|
|
62
|
+
std::string* absl_nullable error) {
|
|
63
63
|
if (c >= 0xD800 && c <= 0xDFFF) {
|
|
64
64
|
if (error) {
|
|
65
65
|
*error = absl::StrCat("invalid surrogate character (0xD800-DFFF): \\",
|
|
@@ -76,49 +76,49 @@ inline bool IsSurrogate(char32_t c, absl::string_view src,
|
|
|
76
76
|
//
|
|
77
77
|
// Unescapes C escape sequences and is the reverse of CEscape().
|
|
78
78
|
//
|
|
79
|
-
// If
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
79
|
+
// If `src` is valid, stores the unescaped string `dst`, and returns
|
|
80
|
+
// true. Otherwise returns false and optionally stores the error
|
|
81
|
+
// description in `error`. Set `error` to nullptr to disable error
|
|
82
|
+
// reporting.
|
|
83
83
|
//
|
|
84
|
-
//
|
|
85
|
-
// 'source' and 'dest' may be the same.
|
|
86
|
-
//
|
|
87
|
-
// NOTE: any changes to this function must also be reflected in the older
|
|
88
|
-
// UnescapeCEscapeSequences().
|
|
84
|
+
// `src` and `dst` may use the same underlying buffer.
|
|
89
85
|
// ----------------------------------------------------------------------
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
86
|
+
|
|
87
|
+
bool CUnescapeInternal(absl::string_view src, bool leave_nulls_escaped,
|
|
88
|
+
std::string* absl_nonnull dst,
|
|
89
|
+
std::string* absl_nullable error) {
|
|
90
|
+
strings_internal::STLStringResizeUninitialized(dst, src.size());
|
|
91
|
+
|
|
92
|
+
absl::string_view::size_type p = 0; // Current src position.
|
|
93
|
+
std::string::size_type d = 0; // Current dst position.
|
|
94
|
+
|
|
95
|
+
// When unescaping in-place, skip any prefix that does not have escaping.
|
|
96
|
+
if (src.data() == dst->data()) {
|
|
97
|
+
while (p < src.size() && src[p] != '\\') p++, d++;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
while (p < src.size()) {
|
|
101
|
+
if (src[p] != '\\') {
|
|
102
|
+
(*dst)[d++] = src[p++];
|
|
105
103
|
} else {
|
|
106
|
-
if (++p
|
|
107
|
-
if (error
|
|
104
|
+
if (++p >= src.size()) { // skip past the '\\'
|
|
105
|
+
if (error != nullptr) {
|
|
106
|
+
*error = "String cannot end with \\";
|
|
107
|
+
}
|
|
108
108
|
return false;
|
|
109
109
|
}
|
|
110
|
-
switch (
|
|
111
|
-
case 'a': *d++ = '\a'; break;
|
|
112
|
-
case 'b': *d++ = '\b'; break;
|
|
113
|
-
case 'f': *d++ = '\f'; break;
|
|
114
|
-
case 'n': *d++ = '\n'; break;
|
|
115
|
-
case 'r': *d++ = '\r'; break;
|
|
116
|
-
case 't': *d++ = '\t'; break;
|
|
117
|
-
case 'v': *d++ = '\v'; break;
|
|
118
|
-
case '\\': *d++ = '\\'; break;
|
|
119
|
-
case '?': *d++ = '\?'; break;
|
|
120
|
-
case '\'': *d++ = '\''; break;
|
|
121
|
-
case '"': *d++ = '\"'; break;
|
|
110
|
+
switch (src[p]) {
|
|
111
|
+
case 'a': (*dst)[d++] = '\a'; break;
|
|
112
|
+
case 'b': (*dst)[d++] = '\b'; break;
|
|
113
|
+
case 'f': (*dst)[d++] = '\f'; break;
|
|
114
|
+
case 'n': (*dst)[d++] = '\n'; break;
|
|
115
|
+
case 'r': (*dst)[d++] = '\r'; break;
|
|
116
|
+
case 't': (*dst)[d++] = '\t'; break;
|
|
117
|
+
case 'v': (*dst)[d++] = '\v'; break;
|
|
118
|
+
case '\\': (*dst)[d++] = '\\'; break;
|
|
119
|
+
case '?': (*dst)[d++] = '\?'; break;
|
|
120
|
+
case '\'': (*dst)[d++] = '\''; break;
|
|
121
|
+
case '"': (*dst)[d++] = '\"'; break;
|
|
122
122
|
case '0':
|
|
123
123
|
case '1':
|
|
124
124
|
case '2':
|
|
@@ -128,188 +128,170 @@ bool CUnescapeInternal(absl::string_view source, bool leave_nulls_escaped,
|
|
|
128
128
|
case '6':
|
|
129
129
|
case '7': {
|
|
130
130
|
// octal digit: 1 to 3 digits
|
|
131
|
-
|
|
132
|
-
unsigned int ch = static_cast<unsigned int>(
|
|
133
|
-
if (p <
|
|
134
|
-
ch = ch * 8 + static_cast<unsigned int>(
|
|
135
|
-
if (p <
|
|
136
|
-
ch = ch * 8 + static_cast<unsigned int>(
|
|
131
|
+
auto octal_start = p;
|
|
132
|
+
unsigned int ch = static_cast<unsigned int>(src[p] - '0'); // digit 1
|
|
133
|
+
if (p + 1 < src.size() && is_octal_digit(src[p + 1]))
|
|
134
|
+
ch = ch * 8 + static_cast<unsigned int>(src[++p] - '0'); // digit 2
|
|
135
|
+
if (p + 1 < src.size() && is_octal_digit(src[p + 1]))
|
|
136
|
+
ch = ch * 8 + static_cast<unsigned int>(src[++p] - '0'); // digit 3
|
|
137
137
|
if (ch > 0xff) {
|
|
138
|
-
if (error) {
|
|
139
|
-
*error =
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
138
|
+
if (error != nullptr) {
|
|
139
|
+
*error =
|
|
140
|
+
"Value of \\" +
|
|
141
|
+
std::string(src.substr(octal_start, p + 1 - octal_start)) +
|
|
142
|
+
" exceeds 0xff";
|
|
143
143
|
}
|
|
144
144
|
return false;
|
|
145
145
|
}
|
|
146
146
|
if ((ch == 0) && leave_nulls_escaped) {
|
|
147
147
|
// Copy the escape sequence for the null character
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
(*dst)[d++] = '\\';
|
|
149
|
+
while (octal_start <= p) {
|
|
150
|
+
(*dst)[d++] = src[octal_start++];
|
|
151
|
+
}
|
|
152
152
|
break;
|
|
153
153
|
}
|
|
154
|
-
*d++ = static_cast<char>(ch);
|
|
154
|
+
(*dst)[d++] = static_cast<char>(ch);
|
|
155
155
|
break;
|
|
156
156
|
}
|
|
157
157
|
case 'x':
|
|
158
158
|
case 'X': {
|
|
159
|
-
if (p >=
|
|
160
|
-
if (error
|
|
159
|
+
if (p + 1 >= src.size()) {
|
|
160
|
+
if (error != nullptr) {
|
|
161
|
+
*error = "String cannot end with \\x";
|
|
162
|
+
}
|
|
161
163
|
return false;
|
|
162
|
-
} else if (!absl::ascii_isxdigit(
|
|
163
|
-
|
|
164
|
+
} else if (!absl::ascii_isxdigit(
|
|
165
|
+
static_cast<unsigned char>(src[p + 1]))) {
|
|
166
|
+
if (error != nullptr) {
|
|
167
|
+
*error = "\\x cannot be followed by a non-hex digit";
|
|
168
|
+
}
|
|
164
169
|
return false;
|
|
165
170
|
}
|
|
166
171
|
unsigned int ch = 0;
|
|
167
|
-
|
|
168
|
-
while (p <
|
|
169
|
-
absl::ascii_isxdigit(static_cast<unsigned char>(p
|
|
172
|
+
auto hex_start = p;
|
|
173
|
+
while (p + 1 < src.size() &&
|
|
174
|
+
absl::ascii_isxdigit(static_cast<unsigned char>(src[p + 1]))) {
|
|
170
175
|
// Arbitrarily many hex digits
|
|
171
|
-
ch = (ch << 4) + hex_digit_to_int(
|
|
176
|
+
ch = (ch << 4) + hex_digit_to_int(src[++p]);
|
|
177
|
+
}
|
|
172
178
|
if (ch > 0xFF) {
|
|
173
|
-
if (error) {
|
|
179
|
+
if (error != nullptr) {
|
|
174
180
|
*error = "Value of \\" +
|
|
175
|
-
std::string(hex_start,
|
|
176
|
-
static_cast<size_t>(p + 1 - hex_start)) +
|
|
181
|
+
std::string(src.substr(hex_start, p + 1 - hex_start)) +
|
|
177
182
|
" exceeds 0xff";
|
|
178
183
|
}
|
|
179
184
|
return false;
|
|
180
185
|
}
|
|
181
186
|
if ((ch == 0) && leave_nulls_escaped) {
|
|
182
187
|
// Copy the escape sequence for the null character
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
188
|
+
(*dst)[d++] = '\\';
|
|
189
|
+
while (hex_start <= p) {
|
|
190
|
+
(*dst)[d++] = src[hex_start++];
|
|
191
|
+
}
|
|
187
192
|
break;
|
|
188
193
|
}
|
|
189
|
-
*d++ = static_cast<char>(ch);
|
|
194
|
+
(*dst)[d++] = static_cast<char>(ch);
|
|
190
195
|
break;
|
|
191
196
|
}
|
|
192
197
|
case 'u': {
|
|
193
198
|
// \uhhhh => convert 4 hex digits to UTF-8
|
|
194
199
|
char32_t rune = 0;
|
|
195
|
-
|
|
196
|
-
if (p + 4 >=
|
|
197
|
-
if (error) {
|
|
198
|
-
*error = "\\u must be followed by 4 hex digits
|
|
199
|
-
std::string(hex_start,
|
|
200
|
-
static_cast<size_t>(p + 1 - hex_start));
|
|
200
|
+
auto hex_start = p;
|
|
201
|
+
if (p + 4 >= src.size()) {
|
|
202
|
+
if (error != nullptr) {
|
|
203
|
+
*error = "\\u must be followed by 4 hex digits";
|
|
201
204
|
}
|
|
202
205
|
return false;
|
|
203
206
|
}
|
|
204
207
|
for (int i = 0; i < 4; ++i) {
|
|
205
208
|
// Look one char ahead.
|
|
206
|
-
if (absl::ascii_isxdigit(static_cast<unsigned char>(p
|
|
207
|
-
rune = (rune << 4) + hex_digit_to_int(
|
|
209
|
+
if (absl::ascii_isxdigit(static_cast<unsigned char>(src[p + 1]))) {
|
|
210
|
+
rune = (rune << 4) + hex_digit_to_int(src[++p]);
|
|
208
211
|
} else {
|
|
209
|
-
if (error) {
|
|
212
|
+
if (error != nullptr) {
|
|
210
213
|
*error = "\\u must be followed by 4 hex digits: \\" +
|
|
211
|
-
std::string(hex_start,
|
|
212
|
-
static_cast<size_t>(p + 1 - hex_start));
|
|
214
|
+
std::string(src.substr(hex_start, p + 1 - hex_start));
|
|
213
215
|
}
|
|
214
216
|
return false;
|
|
215
217
|
}
|
|
216
218
|
}
|
|
217
219
|
if ((rune == 0) && leave_nulls_escaped) {
|
|
218
220
|
// Copy the escape sequence for the null character
|
|
219
|
-
*d++ = '\\';
|
|
220
|
-
|
|
221
|
-
|
|
221
|
+
(*dst)[d++] = '\\';
|
|
222
|
+
while (hex_start <= p) {
|
|
223
|
+
(*dst)[d++] = src[hex_start++];
|
|
224
|
+
}
|
|
222
225
|
break;
|
|
223
226
|
}
|
|
224
|
-
if (IsSurrogate(rune,
|
|
227
|
+
if (IsSurrogate(rune, src.substr(hex_start, 5), error)) {
|
|
225
228
|
return false;
|
|
226
229
|
}
|
|
227
|
-
d += strings_internal::EncodeUTF8Char(d, rune);
|
|
230
|
+
d += strings_internal::EncodeUTF8Char(dst->data() + d, rune);
|
|
228
231
|
break;
|
|
229
232
|
}
|
|
230
233
|
case 'U': {
|
|
231
234
|
// \Uhhhhhhhh => convert 8 hex digits to UTF-8
|
|
232
235
|
char32_t rune = 0;
|
|
233
|
-
|
|
234
|
-
if (p + 8 >=
|
|
235
|
-
if (error) {
|
|
236
|
-
*error = "\\U must be followed by 8 hex digits
|
|
237
|
-
std::string(hex_start,
|
|
238
|
-
static_cast<size_t>(p + 1 - hex_start));
|
|
236
|
+
auto hex_start = p;
|
|
237
|
+
if (p + 8 >= src.size()) {
|
|
238
|
+
if (error != nullptr) {
|
|
239
|
+
*error = "\\U must be followed by 8 hex digits";
|
|
239
240
|
}
|
|
240
241
|
return false;
|
|
241
242
|
}
|
|
242
243
|
for (int i = 0; i < 8; ++i) {
|
|
243
244
|
// Look one char ahead.
|
|
244
|
-
if (absl::ascii_isxdigit(static_cast<unsigned char>(p
|
|
245
|
+
if (absl::ascii_isxdigit(static_cast<unsigned char>(src[p + 1]))) {
|
|
245
246
|
// Don't change rune until we're sure this
|
|
246
247
|
// is within the Unicode limit, but do advance p.
|
|
247
|
-
uint32_t newrune = (rune << 4) + hex_digit_to_int(
|
|
248
|
+
uint32_t newrune = (rune << 4) + hex_digit_to_int(src[++p]);
|
|
248
249
|
if (newrune > 0x10FFFF) {
|
|
249
|
-
if (error) {
|
|
250
|
-
*error =
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
250
|
+
if (error != nullptr) {
|
|
251
|
+
*error =
|
|
252
|
+
"Value of \\" +
|
|
253
|
+
std::string(src.substr(hex_start, p + 1 - hex_start)) +
|
|
254
|
+
" exceeds Unicode limit (0x10FFFF)";
|
|
254
255
|
}
|
|
255
256
|
return false;
|
|
256
257
|
} else {
|
|
257
258
|
rune = newrune;
|
|
258
259
|
}
|
|
259
260
|
} else {
|
|
260
|
-
if (error) {
|
|
261
|
+
if (error != nullptr) {
|
|
261
262
|
*error = "\\U must be followed by 8 hex digits: \\" +
|
|
262
|
-
std::string(hex_start,
|
|
263
|
-
static_cast<size_t>(p + 1 - hex_start));
|
|
263
|
+
std::string(src.substr(hex_start, p + 1 - hex_start));
|
|
264
264
|
}
|
|
265
265
|
return false;
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
if ((rune == 0) && leave_nulls_escaped) {
|
|
269
269
|
// Copy the escape sequence for the null character
|
|
270
|
-
*d++ = '\\';
|
|
271
|
-
|
|
272
|
-
|
|
270
|
+
(*dst)[d++] = '\\';
|
|
271
|
+
// U00000000
|
|
272
|
+
while (hex_start <= p) {
|
|
273
|
+
(*dst)[d++] = src[hex_start++];
|
|
274
|
+
}
|
|
273
275
|
break;
|
|
274
276
|
}
|
|
275
|
-
if (IsSurrogate(rune,
|
|
277
|
+
if (IsSurrogate(rune, src.substr(hex_start, 9), error)) {
|
|
276
278
|
return false;
|
|
277
279
|
}
|
|
278
|
-
d += strings_internal::EncodeUTF8Char(d, rune);
|
|
280
|
+
d += strings_internal::EncodeUTF8Char(dst->data() + d, rune);
|
|
279
281
|
break;
|
|
280
282
|
}
|
|
281
283
|
default: {
|
|
282
|
-
if (error
|
|
284
|
+
if (error != nullptr) {
|
|
285
|
+
*error = std::string("Unknown escape sequence: \\") + src[p];
|
|
286
|
+
}
|
|
283
287
|
return false;
|
|
284
288
|
}
|
|
285
289
|
}
|
|
286
|
-
p++;
|
|
290
|
+
p++; // Read past letter we escaped.
|
|
287
291
|
}
|
|
288
292
|
}
|
|
289
|
-
*dest_len = d - dest;
|
|
290
|
-
return true;
|
|
291
|
-
}
|
|
292
293
|
|
|
293
|
-
|
|
294
|
-
// CUnescapeInternal()
|
|
295
|
-
//
|
|
296
|
-
// Same as above but uses a std::string for output. 'source' and 'dest'
|
|
297
|
-
// may be the same.
|
|
298
|
-
// ----------------------------------------------------------------------
|
|
299
|
-
bool CUnescapeInternal(absl::string_view source, bool leave_nulls_escaped,
|
|
300
|
-
absl::Nonnull<std::string*> dest,
|
|
301
|
-
absl::Nullable<std::string*> error) {
|
|
302
|
-
strings_internal::STLStringResizeUninitialized(dest, source.size());
|
|
303
|
-
|
|
304
|
-
ptrdiff_t dest_size;
|
|
305
|
-
if (!CUnescapeInternal(source,
|
|
306
|
-
leave_nulls_escaped,
|
|
307
|
-
&(*dest)[0],
|
|
308
|
-
&dest_size,
|
|
309
|
-
error)) {
|
|
310
|
-
return false;
|
|
311
|
-
}
|
|
312
|
-
dest->erase(static_cast<size_t>(dest_size));
|
|
294
|
+
dst->erase(d);
|
|
313
295
|
return true;
|
|
314
296
|
}
|
|
315
297
|
|
|
@@ -450,7 +432,7 @@ inline size_t CEscapedLength(absl::string_view src) {
|
|
|
450
432
|
}
|
|
451
433
|
|
|
452
434
|
void CEscapeAndAppendInternal(absl::string_view src,
|
|
453
|
-
|
|
435
|
+
std::string* absl_nonnull dest) {
|
|
454
436
|
size_t escaped_len = CEscapedLength(src);
|
|
455
437
|
if (escaped_len == src.size()) {
|
|
456
438
|
dest->append(src.data(), src.size());
|
|
@@ -479,10 +461,10 @@ void CEscapeAndAppendInternal(absl::string_view src,
|
|
|
479
461
|
|
|
480
462
|
// Reverses the mapping in Base64EscapeInternal; see that method's
|
|
481
463
|
// documentation for details of the mapping.
|
|
482
|
-
bool Base64UnescapeInternal(
|
|
483
|
-
|
|
464
|
+
bool Base64UnescapeInternal(const char* absl_nullable src_param, size_t szsrc,
|
|
465
|
+
char* absl_nullable dest, size_t szdest,
|
|
484
466
|
const std::array<signed char, 256>& unbase64,
|
|
485
|
-
|
|
467
|
+
size_t* absl_nonnull len) {
|
|
486
468
|
static const char kPad64Equals = '=';
|
|
487
469
|
static const char kPad64Dot = '.';
|
|
488
470
|
|
|
@@ -818,8 +800,8 @@ constexpr std::array<signed char, 256> kUnWebSafeBase64 = {
|
|
|
818
800
|
/* clang-format on */
|
|
819
801
|
|
|
820
802
|
template <typename String>
|
|
821
|
-
bool Base64UnescapeInternal(
|
|
822
|
-
|
|
803
|
+
bool Base64UnescapeInternal(const char* absl_nullable src, size_t slen,
|
|
804
|
+
String* absl_nonnull dest,
|
|
823
805
|
const std::array<signed char, 256>& unbase64) {
|
|
824
806
|
// Determine the size of the output string. Base64 encodes every 3 bytes into
|
|
825
807
|
// 4 characters. Any leftover chars are added directly for good measure.
|
|
@@ -888,7 +870,7 @@ constexpr std::array<signed char, 256> kHexValueStrict = {
|
|
|
888
870
|
// or a string. This works because we use the [] operator to access
|
|
889
871
|
// individual characters at a time.
|
|
890
872
|
template <typename T>
|
|
891
|
-
void HexStringToBytesInternal(
|
|
873
|
+
void HexStringToBytesInternal(const char* absl_nullable from, T to,
|
|
892
874
|
size_t num) {
|
|
893
875
|
for (size_t i = 0; i < num; i++) {
|
|
894
876
|
to[i] = static_cast<char>(kHexValueLenient[from[i * 2] & 0xFF] << 4) +
|
|
@@ -899,7 +881,7 @@ void HexStringToBytesInternal(absl::Nullable<const char*> from, T to,
|
|
|
899
881
|
// This is a templated function so that T can be either a char* or a
|
|
900
882
|
// std::string.
|
|
901
883
|
template <typename T>
|
|
902
|
-
void BytesToHexStringInternal(
|
|
884
|
+
void BytesToHexStringInternal(const unsigned char* absl_nullable src, T dest,
|
|
903
885
|
size_t num) {
|
|
904
886
|
auto dest_ptr = &dest[0];
|
|
905
887
|
for (auto src_ptr = src; src_ptr != (src + num); ++src_ptr, dest_ptr += 2) {
|
|
@@ -915,8 +897,8 @@ void BytesToHexStringInternal(absl::Nullable<const unsigned char*> src, T dest,
|
|
|
915
897
|
//
|
|
916
898
|
// See CUnescapeInternal() for implementation details.
|
|
917
899
|
// ----------------------------------------------------------------------
|
|
918
|
-
bool CUnescape(absl::string_view source,
|
|
919
|
-
|
|
900
|
+
bool CUnescape(absl::string_view source, std::string* absl_nonnull dest,
|
|
901
|
+
std::string* absl_nullable error) {
|
|
920
902
|
return CUnescapeInternal(source, kUnescapeNulls, dest, error);
|
|
921
903
|
}
|
|
922
904
|
|
|
@@ -938,23 +920,23 @@ std::string Utf8SafeCHexEscape(absl::string_view src) {
|
|
|
938
920
|
return CEscapeInternal(src, true, true);
|
|
939
921
|
}
|
|
940
922
|
|
|
941
|
-
bool Base64Unescape(absl::string_view src,
|
|
923
|
+
bool Base64Unescape(absl::string_view src, std::string* absl_nonnull dest) {
|
|
942
924
|
return Base64UnescapeInternal(src.data(), src.size(), dest, kUnBase64);
|
|
943
925
|
}
|
|
944
926
|
|
|
945
927
|
bool WebSafeBase64Unescape(absl::string_view src,
|
|
946
|
-
|
|
928
|
+
std::string* absl_nonnull dest) {
|
|
947
929
|
return Base64UnescapeInternal(src.data(), src.size(), dest, kUnWebSafeBase64);
|
|
948
930
|
}
|
|
949
931
|
|
|
950
|
-
void Base64Escape(absl::string_view src,
|
|
932
|
+
void Base64Escape(absl::string_view src, std::string* absl_nonnull dest) {
|
|
951
933
|
strings_internal::Base64EscapeInternal(
|
|
952
934
|
reinterpret_cast<const unsigned char*>(src.data()), src.size(), dest,
|
|
953
935
|
true, strings_internal::kBase64Chars);
|
|
954
936
|
}
|
|
955
937
|
|
|
956
938
|
void WebSafeBase64Escape(absl::string_view src,
|
|
957
|
-
|
|
939
|
+
std::string* absl_nonnull dest) {
|
|
958
940
|
strings_internal::Base64EscapeInternal(
|
|
959
941
|
reinterpret_cast<const unsigned char*>(src.data()), src.size(), dest,
|
|
960
942
|
false, strings_internal::kWebSafeBase64Chars);
|
|
@@ -976,8 +958,7 @@ std::string WebSafeBase64Escape(absl::string_view src) {
|
|
|
976
958
|
return dest;
|
|
977
959
|
}
|
|
978
960
|
|
|
979
|
-
bool HexStringToBytes(absl::string_view hex,
|
|
980
|
-
absl::Nonnull<std::string*> bytes) {
|
|
961
|
+
bool HexStringToBytes(absl::string_view hex, std::string* absl_nonnull bytes) {
|
|
981
962
|
std::string output;
|
|
982
963
|
|
|
983
964
|
size_t num_bytes = hex.size() / 2;
|
|
@@ -71,12 +71,12 @@ ABSL_NAMESPACE_BEGIN
|
|
|
71
71
|
// ...
|
|
72
72
|
// }
|
|
73
73
|
// EXPECT_EQ(unescaped_s, "foo\rbar\nbaz\t");
|
|
74
|
-
bool CUnescape(absl::string_view source,
|
|
75
|
-
|
|
74
|
+
bool CUnescape(absl::string_view source, std::string* absl_nonnull dest,
|
|
75
|
+
std::string* absl_nullable error);
|
|
76
76
|
|
|
77
77
|
// Overload of `CUnescape()` with no error reporting.
|
|
78
78
|
inline bool CUnescape(absl::string_view source,
|
|
79
|
-
|
|
79
|
+
std::string* absl_nonnull dest) {
|
|
80
80
|
return CUnescape(source, dest, nullptr);
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -126,7 +126,7 @@ std::string Utf8SafeCHexEscape(absl::string_view src);
|
|
|
126
126
|
// Encodes a `src` string into a base64-encoded 'dest' string with padding
|
|
127
127
|
// characters. This function conforms with RFC 4648 section 4 (base64) and RFC
|
|
128
128
|
// 2045.
|
|
129
|
-
void Base64Escape(absl::string_view src,
|
|
129
|
+
void Base64Escape(absl::string_view src, std::string* absl_nonnull dest);
|
|
130
130
|
std::string Base64Escape(absl::string_view src);
|
|
131
131
|
|
|
132
132
|
// WebSafeBase64Escape()
|
|
@@ -134,8 +134,7 @@ std::string Base64Escape(absl::string_view src);
|
|
|
134
134
|
// Encodes a `src` string into a base64 string, like Base64Escape() does, but
|
|
135
135
|
// outputs '-' instead of '+' and '_' instead of '/', and does not pad 'dest'.
|
|
136
136
|
// This function conforms with RFC 4648 section 5 (base64url).
|
|
137
|
-
void WebSafeBase64Escape(absl::string_view src,
|
|
138
|
-
absl::Nonnull<std::string*> dest);
|
|
137
|
+
void WebSafeBase64Escape(absl::string_view src, std::string* absl_nonnull dest);
|
|
139
138
|
std::string WebSafeBase64Escape(absl::string_view src);
|
|
140
139
|
|
|
141
140
|
// Base64Unescape()
|
|
@@ -145,7 +144,7 @@ std::string WebSafeBase64Escape(absl::string_view src);
|
|
|
145
144
|
// `src` contains invalid characters, `dest` is cleared and returns `false`.
|
|
146
145
|
// If padding is included (note that `Base64Escape()` does produce it), it must
|
|
147
146
|
// be correct. In the padding, '=' and '.' are treated identically.
|
|
148
|
-
bool Base64Unescape(absl::string_view src,
|
|
147
|
+
bool Base64Unescape(absl::string_view src, std::string* absl_nonnull dest);
|
|
149
148
|
|
|
150
149
|
// WebSafeBase64Unescape()
|
|
151
150
|
//
|
|
@@ -155,7 +154,7 @@ bool Base64Unescape(absl::string_view src, absl::Nonnull<std::string*> dest);
|
|
|
155
154
|
// included (note that `WebSafeBase64Escape()` does not produce it), it must be
|
|
156
155
|
// correct. In the padding, '=' and '.' are treated identically.
|
|
157
156
|
bool WebSafeBase64Unescape(absl::string_view src,
|
|
158
|
-
|
|
157
|
+
std::string* absl_nonnull dest);
|
|
159
158
|
|
|
160
159
|
// HexStringToBytes()
|
|
161
160
|
//
|
|
@@ -163,8 +162,8 @@ bool WebSafeBase64Unescape(absl::string_view src,
|
|
|
163
162
|
// output string. If `hex` does not consist of valid hexadecimal data, this
|
|
164
163
|
// function returns false and leaves `bytes` in an unspecified state. Returns
|
|
165
164
|
// true on success.
|
|
166
|
-
|
|
167
|
-
|
|
165
|
+
[[nodiscard]] bool HexStringToBytes(absl::string_view hex,
|
|
166
|
+
std::string* absl_nonnull bytes);
|
|
168
167
|
|
|
169
168
|
// HexStringToBytes()
|
|
170
169
|
//
|
|
@@ -12,18 +12,17 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
|
|
15
|
-
#include "absl/strings/escaping.h"
|
|
16
|
-
|
|
17
15
|
#include <cstdint>
|
|
18
16
|
#include <memory>
|
|
19
17
|
#include <random>
|
|
20
18
|
#include <string>
|
|
21
19
|
|
|
22
|
-
#include "benchmark/benchmark.h"
|
|
23
20
|
#include "absl/base/internal/raw_logging.h"
|
|
21
|
+
#include "absl/strings/escaping.h"
|
|
24
22
|
#include "absl/strings/internal/escaping_test_common.h"
|
|
25
23
|
#include "absl/strings/str_cat.h"
|
|
26
24
|
#include "absl/strings/string_view.h"
|
|
25
|
+
#include "benchmark/benchmark.h"
|
|
27
26
|
|
|
28
27
|
namespace {
|
|
29
28
|
|