re2 1.24.0 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +15 -20
- package/README.md +63 -4
- package/binding.gyp +1 -2
- package/lib/addon.cc +9 -5
- package/lib/exec.cc +4 -4
- package/lib/match.cc +4 -4
- package/lib/new.cc +6 -6
- package/lib/pattern.cc +148 -1
- package/lib/replace.cc +5 -4
- package/lib/search.cc +1 -1
- package/lib/set.cc +85 -10
- package/lib/test.cc +1 -1
- package/lib/unicode_properties.h +15840 -0
- package/lib/wrapped_re2.h +40 -4
- package/lib/wrapped_re2_set.h +3 -1
- package/llms-full.txt +497 -0
- package/llms.txt +135 -0
- package/package.json +19 -11
- package/re2.d.ts +2 -0
- package/re2.js +1 -0
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +87 -74
- package/vendor/abseil-cpp/CMakeLists.txt +3 -3
- package/vendor/abseil-cpp/FAQ.md +130 -79
- package/vendor/abseil-cpp/MODULE.bazel +6 -7
- package/vendor/abseil-cpp/absl/BUILD.bazel +6 -0
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/algorithm/algorithm.h +34 -2
- package/vendor/abseil-cpp/absl/algorithm/container.h +164 -17
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +390 -13
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +53 -6
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +28 -4
- package/vendor/abseil-cpp/absl/base/attributes.h +61 -42
- package/vendor/abseil-cpp/absl/base/call_once.h +1 -0
- package/vendor/abseil-cpp/absl/base/casts.h +8 -1
- package/vendor/abseil-cpp/absl/base/casts_test.cc +3 -6
- package/vendor/abseil-cpp/absl/base/config.h +53 -9
- package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +9 -9
- package/vendor/abseil-cpp/absl/base/fast_type_id.h +30 -2
- package/vendor/abseil-cpp/absl/base/fast_type_id_test.cc +3 -0
- package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +15 -12
- package/vendor/abseil-cpp/absl/base/internal/hardening.h +136 -0
- package/vendor/abseil-cpp/absl/base/internal/hardening_test.cc +168 -0
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +2 -2
- package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -0
- package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
- package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +1 -2
- package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
- package/vendor/abseil-cpp/absl/base/macros.h +36 -20
- package/vendor/abseil-cpp/absl/base/nullability.h +4 -3
- package/vendor/abseil-cpp/absl/base/optimization.h +3 -2
- package/vendor/abseil-cpp/absl/base/optimization_test.cc +4 -3
- package/vendor/abseil-cpp/absl/base/options.h +55 -1
- package/vendor/abseil-cpp/absl/base/policy_checks.h +5 -5
- package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
- package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
- package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +19 -28
- package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +3 -2
- package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +19 -7
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +6 -5
- package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +3 -5
- package/vendor/abseil-cpp/absl/container/btree_set.h +5 -5
- package/vendor/abseil-cpp/absl/container/btree_test.cc +11 -14
- package/vendor/abseil-cpp/absl/container/chunked_queue.h +8 -6
- package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +5 -5
- package/vendor/abseil-cpp/absl/container/fixed_array.h +14 -13
- package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +3 -3
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +18 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +34 -1
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +21 -7
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +39 -7
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +29 -29
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2 -2
- package/vendor/abseil-cpp/absl/container/internal/btree.h +32 -24
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +16 -17
- package/vendor/abseil-cpp/absl/container/internal/common.h +6 -5
- package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +16 -16
- package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +13 -13
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +41 -31
- package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +2 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +4 -4
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +27 -19
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -2
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -17
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +12 -30
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +28 -28
- package/vendor/abseil-cpp/absl/container/internal/layout.h +13 -13
- package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +3 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +60 -62
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +59 -39
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +619 -326
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +25 -2
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +4 -4
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +575 -159
- package/vendor/abseil-cpp/absl/container/linked_hash_map.h +2 -2
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +27 -15
- package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +34 -0
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +25 -11
- package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +39 -7
- package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +7 -4
- package/vendor/abseil-cpp/absl/crc/BUILD.bazel +0 -1
- package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +2 -3
- package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +2 -1
- package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +6 -6
- package/vendor/abseil-cpp/absl/crc/internal/crc.cc +4 -6
- package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
- package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +143 -81
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +9 -31
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +3 -33
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
- package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +2 -1
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +12 -2
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +2 -3
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -0
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -4
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +46 -36
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +18 -58
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +5 -48
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +10 -124
- package/vendor/abseil-cpp/absl/debugging/symbolize.cc +20 -2
- package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +58 -106
- package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +37 -36
- package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -3
- package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +1 -1
- package/vendor/abseil-cpp/absl/flags/commandlineflag.h +8 -6
- package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +1 -1
- package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +5 -5
- package/vendor/abseil-cpp/absl/flags/flag_test.cc +30 -30
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +4 -4
- package/vendor/abseil-cpp/absl/flags/internal/flag.h +6 -6
- package/vendor/abseil-cpp/absl/flags/marshalling.h +2 -28
- package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +12 -11
- package/vendor/abseil-cpp/absl/flags/reflection_test.cc +1 -1
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +26 -1
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +29 -1
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +13 -14
- package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +46 -47
- package/vendor/abseil-cpp/absl/functional/bind_back.h +79 -0
- package/vendor/abseil-cpp/absl/functional/bind_back_test.cc +237 -0
- package/vendor/abseil-cpp/absl/functional/bind_front.h +7 -1
- package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +4 -4
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +2 -2
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +28 -28
- package/vendor/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
- package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
- package/vendor/abseil-cpp/absl/functional/overload_test.cc +13 -13
- package/vendor/abseil-cpp/absl/hash/BUILD.bazel +1 -2
- package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +1 -2
- package/vendor/abseil-cpp/absl/hash/hash.h +1 -1
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +14 -20
- package/vendor/abseil-cpp/absl/hash/hash_testing.h +11 -9
- package/vendor/abseil-cpp/absl/hash/internal/city.cc +39 -51
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +165 -47
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +86 -27
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +36 -1
- package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +8 -5
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +5 -2
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +5 -3
- package/vendor/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +15 -1
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -4
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +14 -0
- package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -1
- package/vendor/abseil-cpp/absl/log/internal/proto.cc +13 -0
- package/vendor/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
- package/vendor/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
- package/vendor/abseil-cpp/absl/log/internal/structured_proto_test.cc +3 -3
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +2 -2
- package/vendor/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +3 -3
- package/vendor/abseil-cpp/absl/log/log_format_test.cc +19 -2
- package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +18 -0
- package/vendor/abseil-cpp/absl/log/log_streamer.h +29 -2
- package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +18 -0
- package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +1 -1
- package/vendor/abseil-cpp/absl/log/vlog_is_on.h +0 -2
- package/vendor/abseil-cpp/absl/log/vlog_is_on_test.cc +6 -5
- package/vendor/abseil-cpp/absl/memory/memory.h +55 -5
- package/vendor/abseil-cpp/absl/memory/memory_test.cc +55 -1
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires.h +1 -1
- package/vendor/abseil-cpp/absl/meta/type_traits.h +119 -55
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +7 -7
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +6 -6
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +3 -1
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +0 -4
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +32 -33
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +25 -2
- package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +8 -5
- package/vendor/abseil-cpp/absl/random/BUILD.bazel +13 -1
- package/vendor/abseil-cpp/absl/random/CMakeLists.txt +23 -2
- package/vendor/abseil-cpp/absl/random/benchmarks.cc +1 -1
- package/vendor/abseil-cpp/absl/random/beta_distribution.h +2 -2
- package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
- package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +43 -0
- package/vendor/abseil-cpp/absl/random/discrete_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/distributions.h +17 -17
- package/vendor/abseil-cpp/absl/random/distributions_test.cc +4 -4
- package/vendor/abseil-cpp/absl/random/exponential_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +4 -2
- package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
- package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +14 -40
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +2 -2
- package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
- package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
- package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +3 -2
- package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +4 -4
- package/vendor/abseil-cpp/absl/random/internal/seed_material.h +2 -1
- package/vendor/abseil-cpp/absl/random/internal/traits.h +21 -0
- package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +5 -0
- package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
- package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +2 -1
- package/vendor/abseil-cpp/absl/random/mocking_access.h +74 -0
- package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +9 -19
- package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +81 -0
- package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +26 -2
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +22 -8
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +43 -43
- package/vendor/abseil-cpp/absl/status/status.cc +62 -70
- package/vendor/abseil-cpp/absl/status/status.h +249 -23
- package/vendor/abseil-cpp/absl/status/status_benchmark.cc +12 -0
- package/vendor/abseil-cpp/absl/status/status_builder.cc +196 -0
- package/vendor/abseil-cpp/absl/status/status_builder.h +978 -0
- package/vendor/abseil-cpp/absl/status/status_builder_test.cc +380 -0
- package/vendor/abseil-cpp/absl/status/status_macros.h +484 -0
- package/vendor/abseil-cpp/absl/status/status_macros_test.cc +634 -0
- package/vendor/abseil-cpp/absl/status/status_matchers.h +2 -1
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +3 -4
- package/vendor/abseil-cpp/absl/status/status_payload_printer.h +3 -2
- package/vendor/abseil-cpp/absl/status/status_test.cc +443 -13
- package/vendor/abseil-cpp/absl/status/statusor.h +69 -36
- package/vendor/abseil-cpp/absl/status/statusor_test.cc +132 -35
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +42 -7
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +33 -4
- package/vendor/abseil-cpp/absl/strings/ascii.h +1 -2
- package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +5 -5
- package/vendor/abseil-cpp/absl/strings/cord.cc +26 -7
- package/vendor/abseil-cpp/absl/strings/cord.h +23 -13
- package/vendor/abseil-cpp/absl/strings/cord_buffer.h +4 -2
- package/vendor/abseil-cpp/absl/strings/cord_test.cc +85 -9
- package/vendor/abseil-cpp/absl/strings/escaping.cc +183 -35
- package/vendor/abseil-cpp/absl/strings/escaping.h +12 -2
- package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +1 -3
- package/vendor/abseil-cpp/absl/strings/escaping_test.cc +22 -18
- package/vendor/abseil-cpp/absl/strings/has_absl_stringify_test.cc +2 -2
- package/vendor/abseil-cpp/absl/strings/has_ostream_operator_test.cc +2 -2
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +10 -10
- package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
- package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
- package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
- package/vendor/abseil-cpp/absl/strings/internal/escaping.h +2 -26
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +23 -2
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +6 -2
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -24
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +16 -41
- package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
- package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
- package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +12 -20
- package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +510 -307
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -1
- package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +9 -10
- package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +6 -5
- package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
- package/vendor/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
- package/vendor/abseil-cpp/absl/strings/internal/stringify_stream_test.cc +111 -0
- package/vendor/abseil-cpp/absl/strings/numbers.cc +406 -0
- package/vendor/abseil-cpp/absl/strings/numbers.h +4 -0
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +33 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +10 -6
- package/vendor/abseil-cpp/absl/strings/str_cat.h +36 -1
- package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +28 -0
- package/vendor/abseil-cpp/absl/strings/str_join_test.cc +4 -4
- package/vendor/abseil-cpp/absl/strings/str_split.h +11 -6
- package/vendor/abseil-cpp/absl/strings/str_split_test.cc +13 -0
- package/vendor/abseil-cpp/absl/strings/substitute.h +2 -2
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +3 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +21 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +13 -0
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +32 -2
- package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +17 -3
- package/vendor/abseil-cpp/absl/time/BUILD.bazel +80 -0
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +73 -0
- package/vendor/abseil-cpp/absl/time/clock.h +3 -0
- package/vendor/abseil-cpp/absl/time/clock_interface.cc +71 -0
- package/vendor/abseil-cpp/absl/time/clock_interface.h +93 -0
- package/vendor/abseil-cpp/absl/time/clock_interface_test.cc +128 -0
- package/vendor/abseil-cpp/absl/time/format.cc +3 -10
- package/vendor/abseil-cpp/absl/time/format_test.cc +12 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +90 -89
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +80 -5
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +1 -2
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +3 -3
- package/vendor/abseil-cpp/absl/time/simulated_clock.cc +225 -0
- package/vendor/abseil-cpp/absl/time/simulated_clock.h +109 -0
- package/vendor/abseil-cpp/absl/time/simulated_clock_test.cc +614 -0
- package/vendor/abseil-cpp/absl/types/BUILD.bazel +116 -0
- package/vendor/abseil-cpp/absl/types/CMakeLists.txt +100 -0
- package/vendor/abseil-cpp/absl/types/any.h +26 -4
- package/vendor/abseil-cpp/absl/types/any_span.h +1067 -0
- package/vendor/abseil-cpp/absl/types/any_span_benchmark.cc +258 -0
- package/vendor/abseil-cpp/absl/types/any_span_test.cc +1210 -0
- package/vendor/abseil-cpp/absl/types/compare.h +4 -4
- package/vendor/abseil-cpp/absl/types/internal/any_span.h +477 -0
- package/vendor/abseil-cpp/absl/types/internal/span.h +5 -6
- package/vendor/abseil-cpp/absl/types/optional.h +30 -3
- package/vendor/abseil-cpp/absl/types/optional_ref.h +295 -0
- package/vendor/abseil-cpp/absl/types/optional_ref_test.cc +370 -0
- package/vendor/abseil-cpp/absl/types/source_location.cc +18 -0
- package/vendor/abseil-cpp/absl/types/source_location.h +172 -0
- package/vendor/abseil-cpp/absl/types/source_location_test.cc +139 -0
- package/vendor/abseil-cpp/absl/types/span.h +19 -23
- package/vendor/abseil-cpp/absl/types/variant.h +75 -18
- package/vendor/abseil-cpp/absl/types/variant_test.cc +23 -23
- package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/utility/utility.h +99 -16
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -0
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +10 -4
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +13 -6
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +10 -4
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +12 -5
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +9 -2
- package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +10 -3
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +8 -2
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +4 -3
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +2 -2
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -1
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
|
@@ -46,7 +46,6 @@
|
|
|
46
46
|
#include "absl/base/internal/iterator_traits.h"
|
|
47
47
|
#include "absl/base/internal/raw_logging.h"
|
|
48
48
|
#include "absl/strings/internal/ostringstream.h"
|
|
49
|
-
#include "absl/strings/internal/resize_uninitialized.h"
|
|
50
49
|
#include "absl/strings/resize_and_overwrite.h"
|
|
51
50
|
#include "absl/strings/str_cat.h"
|
|
52
51
|
#include "absl/strings/string_view.h"
|
|
@@ -172,28 +172,27 @@ class SplitIterator {
|
|
|
172
172
|
template <typename T, typename = void>
|
|
173
173
|
struct HasMappedType : std::false_type {};
|
|
174
174
|
template <typename T>
|
|
175
|
-
struct HasMappedType<T,
|
|
176
|
-
|
|
175
|
+
struct HasMappedType<T, std::void_t<typename T::mapped_type>> : std::true_type {
|
|
176
|
+
};
|
|
177
177
|
|
|
178
178
|
// HasValueType<T>::value is true iff there exists a type T::value_type.
|
|
179
179
|
template <typename T, typename = void>
|
|
180
180
|
struct HasValueType : std::false_type {};
|
|
181
181
|
template <typename T>
|
|
182
|
-
struct HasValueType<T,
|
|
183
|
-
};
|
|
182
|
+
struct HasValueType<T, std::void_t<typename T::value_type>> : std::true_type {};
|
|
184
183
|
|
|
185
184
|
// HasConstIterator<T>::value is true iff there exists a type T::const_iterator.
|
|
186
185
|
template <typename T, typename = void>
|
|
187
186
|
struct HasConstIterator : std::false_type {};
|
|
188
187
|
template <typename T>
|
|
189
|
-
struct HasConstIterator<T,
|
|
188
|
+
struct HasConstIterator<T, std::void_t<typename T::const_iterator>>
|
|
190
189
|
: std::true_type {};
|
|
191
190
|
|
|
192
191
|
// HasEmplace<T>::value is true iff there exists a method T::emplace().
|
|
193
192
|
template <typename T, typename = void>
|
|
194
193
|
struct HasEmplace : std::false_type {};
|
|
195
194
|
template <typename T>
|
|
196
|
-
struct HasEmplace<T,
|
|
195
|
+
struct HasEmplace<T, std::void_t<decltype(std::declval<T>().emplace())>>
|
|
197
196
|
: std::true_type {};
|
|
198
197
|
|
|
199
198
|
// IsInitializerList<T>::value is true iff T is an std::initializer_list. More
|
|
@@ -203,7 +202,7 @@ template <typename T>
|
|
|
203
202
|
std::true_type IsInitializerListDispatch(std::initializer_list<T>*);
|
|
204
203
|
template <typename T>
|
|
205
204
|
struct IsInitializerList
|
|
206
|
-
: decltype(IsInitializerListDispatch(static_cast<T*>(nullptr)))
|
|
205
|
+
: decltype(IsInitializerListDispatch(static_cast<T*>(nullptr))){};
|
|
207
206
|
|
|
208
207
|
// A SplitterIsConvertibleTo<C>::type alias exists iff the specified condition
|
|
209
208
|
// is true for type 'C'.
|
|
@@ -224,7 +223,7 @@ struct SplitterIsConvertibleToImpl<C, true, false>
|
|
|
224
223
|
|
|
225
224
|
template <typename C>
|
|
226
225
|
struct SplitterIsConvertibleToImpl<C, true, true>
|
|
227
|
-
:
|
|
226
|
+
: std::conjunction<
|
|
228
227
|
std::is_constructible<typename C::key_type, absl::string_view>,
|
|
229
228
|
std::is_constructible<typename C::mapped_type, absl::string_view>> {};
|
|
230
229
|
|
|
@@ -494,7 +493,7 @@ class Splitter {
|
|
|
494
493
|
// Inserts the key and an empty value into the map, returning an iterator to
|
|
495
494
|
// the inserted item. We use emplace() if available, otherwise insert().
|
|
496
495
|
template <typename M>
|
|
497
|
-
static
|
|
496
|
+
static std::enable_if_t<HasEmplace<M>::value, iterator> InsertOrEmplace(
|
|
498
497
|
M* m, absl::string_view key) {
|
|
499
498
|
// Use piecewise_construct to support old versions of gcc in which pair
|
|
500
499
|
// constructor can't otherwise construct string from string_view.
|
|
@@ -502,7 +501,7 @@ class Splitter {
|
|
|
502
501
|
std::tuple<>()));
|
|
503
502
|
}
|
|
504
503
|
template <typename M>
|
|
505
|
-
static
|
|
504
|
+
static std::enable_if_t<!HasEmplace<M>::value, iterator> InsertOrEmplace(
|
|
506
505
|
M* m, absl::string_view key) {
|
|
507
506
|
return ToIter(m->insert(std::make_pair(First(key), Second(""))));
|
|
508
507
|
}
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
#include "absl/strings/internal/string_constant.h"
|
|
16
16
|
|
|
17
|
-
#include
|
|
17
|
+
#include <type_traits>
|
|
18
|
+
|
|
18
19
|
#include "gmock/gmock.h"
|
|
19
20
|
#include "gtest/gtest.h"
|
|
20
21
|
|
|
@@ -34,10 +35,10 @@ TEST(StringConstant, Traits) {
|
|
|
34
35
|
|
|
35
36
|
EXPECT_TRUE(std::is_empty<T>::value);
|
|
36
37
|
EXPECT_TRUE(std::is_trivial<T>::value);
|
|
37
|
-
EXPECT_TRUE(
|
|
38
|
-
EXPECT_TRUE(
|
|
39
|
-
EXPECT_TRUE(
|
|
40
|
-
EXPECT_TRUE(
|
|
38
|
+
EXPECT_TRUE(std::is_trivially_default_constructible<T>::value);
|
|
39
|
+
EXPECT_TRUE(std::is_trivially_copy_constructible<T>::value);
|
|
40
|
+
EXPECT_TRUE(std::is_trivially_move_constructible<T>::value);
|
|
41
|
+
EXPECT_TRUE(std::is_trivially_destructible<T>::value);
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
TEST(StringConstant, MakeFromCallable) {
|
|
@@ -15,11 +15,14 @@
|
|
|
15
15
|
#ifndef ABSL_STRINGS_INTERNAL_STRINGIFY_SINK_H_
|
|
16
16
|
#define ABSL_STRINGS_INTERNAL_STRINGIFY_SINK_H_
|
|
17
17
|
|
|
18
|
+
#include <array>
|
|
18
19
|
#include <string>
|
|
19
20
|
#include <type_traits>
|
|
20
21
|
#include <utility>
|
|
21
22
|
|
|
23
|
+
#include "absl/strings/numbers.h"
|
|
22
24
|
#include "absl/strings/string_view.h"
|
|
25
|
+
#include "absl/types/source_location.h"
|
|
23
26
|
|
|
24
27
|
namespace absl {
|
|
25
28
|
ABSL_NAMESPACE_BEGIN
|
|
@@ -51,6 +54,15 @@ string_view ExtractStringification(StringifySink& sink, const T& v) {
|
|
|
51
54
|
|
|
52
55
|
} // namespace strings_internal
|
|
53
56
|
|
|
57
|
+
template <typename Sink>
|
|
58
|
+
void AbslStringify(Sink& sink, SourceLocation l) {
|
|
59
|
+
sink.Append(l.file_name());
|
|
60
|
+
sink.Append(":");
|
|
61
|
+
std::array<char, numbers_internal::kFastToBufferSize> buffer;
|
|
62
|
+
numbers_internal::FastIntToBuffer(l.line(), buffer.data());
|
|
63
|
+
sink.Append(buffer.data());
|
|
64
|
+
}
|
|
65
|
+
|
|
54
66
|
ABSL_NAMESPACE_END
|
|
55
67
|
} // namespace absl
|
|
56
68
|
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// Copyright 2026 The Abseil Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
//
|
|
15
|
+
// -----------------------------------------------------------------------------
|
|
16
|
+
// File: stringify_stream.h
|
|
17
|
+
// -----------------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
#ifndef ABSL_STRINGS_INTERNAL_STRINGIFY_STREAM_H_
|
|
20
|
+
#define ABSL_STRINGS_INTERNAL_STRINGIFY_STREAM_H_
|
|
21
|
+
|
|
22
|
+
// StringifyStream is an adaptor for any std::ostream, that provides a
|
|
23
|
+
// stream insertion (<<) operator with the following behavior when inserting
|
|
24
|
+
// some value of type T:
|
|
25
|
+
//
|
|
26
|
+
// - If there is a suitable overload of operator<< already defined for T, it
|
|
27
|
+
// will be used.
|
|
28
|
+
//
|
|
29
|
+
// - If there is no operator<< overload, but there is an AbslStringify defined
|
|
30
|
+
// for T, it will be used as a fallback.
|
|
31
|
+
//
|
|
32
|
+
// - Otherwise it is a compilation error.
|
|
33
|
+
//
|
|
34
|
+
// For reference, AbslStringify typically has the form:
|
|
35
|
+
//
|
|
36
|
+
// struct Foo {
|
|
37
|
+
// template <typename Sink>
|
|
38
|
+
// friend void AbslStringify(Sink& sink, const Foo& foo) { ... }
|
|
39
|
+
// };
|
|
40
|
+
//
|
|
41
|
+
// This permits the following usage, for example:
|
|
42
|
+
//
|
|
43
|
+
// StringifyStream(std::cout) << Foo();
|
|
44
|
+
//
|
|
45
|
+
|
|
46
|
+
#include <cstddef>
|
|
47
|
+
#include <ostream>
|
|
48
|
+
#include <string>
|
|
49
|
+
#include <type_traits>
|
|
50
|
+
#include <utility>
|
|
51
|
+
|
|
52
|
+
#include "absl/base/config.h"
|
|
53
|
+
#include "absl/strings/string_view.h"
|
|
54
|
+
|
|
55
|
+
namespace absl {
|
|
56
|
+
ABSL_NAMESPACE_BEGIN
|
|
57
|
+
|
|
58
|
+
namespace strings_internal {
|
|
59
|
+
|
|
60
|
+
class StringifyStream {
|
|
61
|
+
public:
|
|
62
|
+
// Constructor: adapts (but does not take ownership of) some underlying
|
|
63
|
+
// std::ostream instance.
|
|
64
|
+
explicit StringifyStream(std::ostream& os) : sink_{os} {}
|
|
65
|
+
|
|
66
|
+
// Stream insertion: delegate to an overload of operator<< if defined for type
|
|
67
|
+
// T, otherwise fall back to AbslStringify for T.
|
|
68
|
+
template <typename T>
|
|
69
|
+
friend StringifyStream& operator<<(StringifyStream& stream, const T& t) {
|
|
70
|
+
if constexpr (HasStreamInsertion<T>::value) {
|
|
71
|
+
stream.sink_.os << t;
|
|
72
|
+
} else {
|
|
73
|
+
AbslStringify(stream.sink_, t);
|
|
74
|
+
}
|
|
75
|
+
return stream;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Rvalue-ref overload, required when the StringifyStream parameter hasn't
|
|
79
|
+
// been bound to a variable.
|
|
80
|
+
template <typename T>
|
|
81
|
+
friend StringifyStream& operator<<(StringifyStream&& stream, const T& t) {
|
|
82
|
+
return stream << t;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Overload for things like << std::endl which need an explicit type in order
|
|
86
|
+
// to resolve to the appropriate overload or template instantiation.
|
|
87
|
+
StringifyStream& operator<<(std::ostream& (*func)(std::ostream&)) {
|
|
88
|
+
sink_.os << func;
|
|
89
|
+
return *this;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private:
|
|
93
|
+
// Abseil "stringify sink" concept (stringify_sink.h)
|
|
94
|
+
struct Sink {
|
|
95
|
+
std::ostream& os;
|
|
96
|
+
void Append(size_t count, char ch) { os << std::string(count, ch); }
|
|
97
|
+
void Append(absl::string_view v) { os << v; }
|
|
98
|
+
friend void AbslFormatFlush(Sink* sink, absl::string_view v) {
|
|
99
|
+
sink->Append(v);
|
|
100
|
+
}
|
|
101
|
+
} sink_;
|
|
102
|
+
|
|
103
|
+
// SFINAE helper to identify types with a defined operator<< overload.
|
|
104
|
+
template <typename T, typename = void>
|
|
105
|
+
struct HasStreamInsertion : std::false_type {};
|
|
106
|
+
|
|
107
|
+
template <typename T>
|
|
108
|
+
struct HasStreamInsertion<T,
|
|
109
|
+
std::void_t<decltype(std::declval<std::ostream&>()
|
|
110
|
+
<< std::declval<const T&>())>>
|
|
111
|
+
: std::true_type {};
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
} // namespace strings_internal
|
|
115
|
+
|
|
116
|
+
ABSL_NAMESPACE_END
|
|
117
|
+
} // namespace absl
|
|
118
|
+
|
|
119
|
+
#endif // ABSL_STRINGS_INTERNAL_STRINGIFY_STREAM_H_
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Copyright 2026 The Abseil Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#include "absl/strings/internal/stringify_stream.h"
|
|
16
|
+
|
|
17
|
+
#include <cstddef>
|
|
18
|
+
#include <iomanip>
|
|
19
|
+
#include <ostream>
|
|
20
|
+
#include <sstream>
|
|
21
|
+
|
|
22
|
+
#include "gtest/gtest.h"
|
|
23
|
+
#include "absl/base/config.h"
|
|
24
|
+
#include "absl/strings/str_format.h"
|
|
25
|
+
#include "absl/strings/string_view.h"
|
|
26
|
+
|
|
27
|
+
namespace absl {
|
|
28
|
+
ABSL_NAMESPACE_BEGIN
|
|
29
|
+
namespace strings_internal {
|
|
30
|
+
namespace {
|
|
31
|
+
|
|
32
|
+
// Exercises the Append(size_t, char) overload
|
|
33
|
+
struct AppendNCharsTest {
|
|
34
|
+
size_t count;
|
|
35
|
+
char ch;
|
|
36
|
+
|
|
37
|
+
template <typename Sink>
|
|
38
|
+
friend void AbslStringify(Sink& sink, const AppendNCharsTest& t) {
|
|
39
|
+
sink.Append(t.count, t.ch);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
TEST(StringifyStreamTest, AppendNChars) {
|
|
43
|
+
std::ostringstream os;
|
|
44
|
+
StringifyStream(os) << AppendNCharsTest{5, 'a'};
|
|
45
|
+
EXPECT_EQ(os.str(), "aaaaa");
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Exercises the Append(absl::string_view) overload
|
|
49
|
+
struct AppendStringViewTest {
|
|
50
|
+
absl::string_view v;
|
|
51
|
+
|
|
52
|
+
template <typename Sink>
|
|
53
|
+
friend void AbslStringify(Sink& sink, const AppendStringViewTest& t) {
|
|
54
|
+
sink.Append(t.v);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
TEST(StringifyStreamTest, AppendStringView) {
|
|
58
|
+
std::ostringstream os;
|
|
59
|
+
StringifyStream(os) << AppendStringViewTest{"abc"};
|
|
60
|
+
EXPECT_EQ(os.str(), "abc");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Exercises AbslFormatFlush(OStringStreamSink*, absl::string_view v)
|
|
64
|
+
struct AbslFormatFlushTest {
|
|
65
|
+
absl::string_view a, b, c;
|
|
66
|
+
|
|
67
|
+
template <typename Sink>
|
|
68
|
+
friend void AbslStringify(Sink& sink, const AbslFormatFlushTest& t) {
|
|
69
|
+
absl::Format(&sink, "%s, %s, %s", t.a, t.b, t.c);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
TEST(StringifyStreamTest, AbslFormatFlush) {
|
|
73
|
+
std::ostringstream os;
|
|
74
|
+
StringifyStream(os) << AbslFormatFlushTest{"a", "b", "c"};
|
|
75
|
+
EXPECT_EQ(os.str(), "a, b, c");
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// If overloads of both AbslStringify and operator<< are defined for the type,
|
|
79
|
+
// the operator<< overload should take precedence.
|
|
80
|
+
struct PreferStreamInsertionOverAbslStringifyTest {
|
|
81
|
+
friend std::ostream& operator<<( // NOLINT(clang-diagnostic-unused-function)
|
|
82
|
+
std::ostream& os, const PreferStreamInsertionOverAbslStringifyTest&) {
|
|
83
|
+
return os << "good";
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
template <typename Sink>
|
|
87
|
+
friend void AbslStringify // NOLINT(clang-diagnostic-unused-function)
|
|
88
|
+
(Sink& sink, const PreferStreamInsertionOverAbslStringifyTest&) {
|
|
89
|
+
sink.Append("bad");
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
TEST(StringifyStreamTest, PreferStreamInsertionOverAbslStringify) {
|
|
93
|
+
std::ostringstream os;
|
|
94
|
+
StringifyStream(os) << PreferStreamInsertionOverAbslStringifyTest{};
|
|
95
|
+
EXPECT_EQ(os.str(), "good");
|
|
96
|
+
}
|
|
97
|
+
TEST(StringifyStreamTest, SupportEndl) {
|
|
98
|
+
std::ostringstream os;
|
|
99
|
+
StringifyStream(os) << std::endl;
|
|
100
|
+
EXPECT_EQ(os.str(), "\n");
|
|
101
|
+
}
|
|
102
|
+
TEST(StringifyStreamTest, SupportSetbase) {
|
|
103
|
+
std::ostringstream os;
|
|
104
|
+
StringifyStream(os) << std::setbase(16) << 255;
|
|
105
|
+
EXPECT_EQ(os.str(), "ff");
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
} // namespace
|
|
109
|
+
} // namespace strings_internal
|
|
110
|
+
ABSL_NAMESPACE_END
|
|
111
|
+
} // namespace absl
|