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
|
@@ -57,7 +57,7 @@ template <typename T>
|
|
|
57
57
|
using Flag = flags_internal::Flag<T>;
|
|
58
58
|
|
|
59
59
|
template <typename T>
|
|
60
|
-
|
|
60
|
+
[[nodiscard]] T GetFlag(const absl::Flag<T>& flag);
|
|
61
61
|
|
|
62
62
|
template <typename T>
|
|
63
63
|
void SetFlag(absl::Flag<T>* flag, const T& v);
|
|
@@ -601,17 +601,17 @@ class FlagImpl final : public CommandLineFlag {
|
|
|
601
601
|
data_guard_{} {}
|
|
602
602
|
|
|
603
603
|
// Constant access methods
|
|
604
|
-
int64_t ReadOneWord() const ABSL_LOCKS_EXCLUDED(
|
|
605
|
-
bool ReadOneBool() const ABSL_LOCKS_EXCLUDED(
|
|
606
|
-
void Read(void* dst) const override ABSL_LOCKS_EXCLUDED(
|
|
607
|
-
void Read(bool* value) const ABSL_LOCKS_EXCLUDED(
|
|
604
|
+
int64_t ReadOneWord() const ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
605
|
+
bool ReadOneBool() const ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
606
|
+
void Read(void* dst) const override ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
607
|
+
void Read(bool* value) const ABSL_LOCKS_EXCLUDED(DataGuard()) {
|
|
608
608
|
*value = ReadOneBool();
|
|
609
609
|
}
|
|
610
610
|
template <typename T,
|
|
611
611
|
absl::enable_if_t<flags_internal::StorageKind<T>() ==
|
|
612
612
|
FlagValueStorageKind::kOneWordAtomic,
|
|
613
613
|
int> = 0>
|
|
614
|
-
void Read(T* value) const ABSL_LOCKS_EXCLUDED(
|
|
614
|
+
void Read(T* value) const ABSL_LOCKS_EXCLUDED(DataGuard()) {
|
|
615
615
|
int64_t v = ReadOneWord();
|
|
616
616
|
std::memcpy(value, static_cast<const void*>(&v), sizeof(T));
|
|
617
617
|
}
|
|
@@ -619,17 +619,17 @@ class FlagImpl final : public CommandLineFlag {
|
|
|
619
619
|
typename std::enable_if<flags_internal::StorageKind<T>() ==
|
|
620
620
|
FlagValueStorageKind::kValueAndInitBit,
|
|
621
621
|
int>::type = 0>
|
|
622
|
-
void Read(T* value) const ABSL_LOCKS_EXCLUDED(
|
|
622
|
+
void Read(T* value) const ABSL_LOCKS_EXCLUDED(DataGuard()) {
|
|
623
623
|
*value = absl::bit_cast<FlagValueAndInitBit<T>>(ReadOneWord()).value;
|
|
624
624
|
}
|
|
625
625
|
|
|
626
626
|
// Mutating access methods
|
|
627
|
-
void Write(const void* src) ABSL_LOCKS_EXCLUDED(
|
|
627
|
+
void Write(const void* src) ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
628
628
|
|
|
629
629
|
// Interfaces to operate on callbacks.
|
|
630
630
|
void SetCallback(const FlagCallbackFunc mutation_callback)
|
|
631
|
-
ABSL_LOCKS_EXCLUDED(
|
|
632
|
-
void InvokeCallback() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
|
631
|
+
ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
632
|
+
void InvokeCallback() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(DataGuard());
|
|
633
633
|
|
|
634
634
|
// Used in read/write operations to validate source/target has correct type.
|
|
635
635
|
// For example if flag is declared as absl::Flag<int> FLAGS_foo, a call to
|
|
@@ -646,11 +646,11 @@ class FlagImpl final : public CommandLineFlag {
|
|
|
646
646
|
friend class FlagState;
|
|
647
647
|
|
|
648
648
|
// Ensures that `data_guard_` is initialized and returns it.
|
|
649
|
-
absl::Mutex
|
|
649
|
+
absl::Mutex& DataGuard() const
|
|
650
650
|
ABSL_LOCK_RETURNED(reinterpret_cast<absl::Mutex*>(data_guard_));
|
|
651
651
|
// Returns heap allocated value of type T initialized with default value.
|
|
652
652
|
std::unique_ptr<void, DynValueDeleter> MakeInitValue() const
|
|
653
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
|
653
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(DataGuard());
|
|
654
654
|
// Flag initialization called via absl::call_once.
|
|
655
655
|
void Init();
|
|
656
656
|
|
|
@@ -676,16 +676,15 @@ class FlagImpl final : public CommandLineFlag {
|
|
|
676
676
|
// returns new value. Otherwise returns nullptr.
|
|
677
677
|
std::unique_ptr<void, DynValueDeleter> TryParse(absl::string_view value,
|
|
678
678
|
std::string& err) const
|
|
679
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
|
679
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(DataGuard());
|
|
680
680
|
// Stores the flag value based on the pointer to the source.
|
|
681
681
|
void StoreValue(const void* src, ValueSource source)
|
|
682
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
|
682
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(DataGuard());
|
|
683
683
|
|
|
684
684
|
// Copy the flag data, protected by `seq_lock_` into `dst`.
|
|
685
685
|
//
|
|
686
686
|
// REQUIRES: ValueStorageKind() == kSequenceLocked.
|
|
687
|
-
void ReadSequenceLockedData(void* dst) const
|
|
688
|
-
ABSL_LOCKS_EXCLUDED(*DataGuard());
|
|
687
|
+
void ReadSequenceLockedData(void* dst) const ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
689
688
|
|
|
690
689
|
FlagHelpKind HelpSourceKind() const {
|
|
691
690
|
return static_cast<FlagHelpKind>(help_source_kind_);
|
|
@@ -694,7 +693,7 @@ class FlagImpl final : public CommandLineFlag {
|
|
|
694
693
|
return static_cast<FlagValueStorageKind>(value_storage_kind_);
|
|
695
694
|
}
|
|
696
695
|
FlagDefaultKind DefaultKind() const
|
|
697
|
-
ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
|
696
|
+
ABSL_EXCLUSIVE_LOCKS_REQUIRED(DataGuard()) {
|
|
698
697
|
return static_cast<FlagDefaultKind>(def_kind_);
|
|
699
698
|
}
|
|
700
699
|
|
|
@@ -705,30 +704,30 @@ class FlagImpl final : public CommandLineFlag {
|
|
|
705
704
|
std::string Help() const override;
|
|
706
705
|
FlagFastTypeId TypeId() const override;
|
|
707
706
|
bool IsSpecifiedOnCommandLine() const override
|
|
708
|
-
ABSL_LOCKS_EXCLUDED(
|
|
709
|
-
std::string DefaultValue() const override ABSL_LOCKS_EXCLUDED(
|
|
710
|
-
std::string CurrentValue() const override ABSL_LOCKS_EXCLUDED(
|
|
707
|
+
ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
708
|
+
std::string DefaultValue() const override ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
709
|
+
std::string CurrentValue() const override ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
711
710
|
bool ValidateInputValue(absl::string_view value) const override
|
|
712
|
-
ABSL_LOCKS_EXCLUDED(
|
|
711
|
+
ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
713
712
|
void CheckDefaultValueParsingRoundtrip() const override
|
|
714
|
-
ABSL_LOCKS_EXCLUDED(
|
|
713
|
+
ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
715
714
|
|
|
716
|
-
int64_t ModificationCount() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(
|
|
715
|
+
int64_t ModificationCount() const ABSL_EXCLUSIVE_LOCKS_REQUIRED(DataGuard());
|
|
717
716
|
|
|
718
717
|
// Interfaces to save and restore flags to/from persistent state.
|
|
719
718
|
// Returns current flag state or nullptr if flag does not support
|
|
720
719
|
// saving and restoring a state.
|
|
721
720
|
std::unique_ptr<FlagStateInterface> SaveState() override
|
|
722
|
-
ABSL_LOCKS_EXCLUDED(
|
|
721
|
+
ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
723
722
|
|
|
724
723
|
// Restores the flag state to the supplied state object. If there is
|
|
725
724
|
// nothing to restore returns false. Otherwise returns true.
|
|
726
725
|
bool RestoreState(const FlagState& flag_state)
|
|
727
|
-
ABSL_LOCKS_EXCLUDED(
|
|
726
|
+
ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
728
727
|
|
|
729
728
|
bool ParseFrom(absl::string_view value, FlagSettingMode set_mode,
|
|
730
729
|
ValueSource source, std::string& error) override
|
|
731
|
-
ABSL_LOCKS_EXCLUDED(
|
|
730
|
+
ABSL_LOCKS_EXCLUDED(DataGuard());
|
|
732
731
|
|
|
733
732
|
// Immutable flag's state.
|
|
734
733
|
|
|
@@ -758,9 +757,9 @@ class FlagImpl final : public CommandLineFlag {
|
|
|
758
757
|
// locks.
|
|
759
758
|
uint8_t def_kind_ : 2;
|
|
760
759
|
// Has this flag's value been modified?
|
|
761
|
-
bool modified_ : 1 ABSL_GUARDED_BY(
|
|
760
|
+
bool modified_ : 1 ABSL_GUARDED_BY(DataGuard());
|
|
762
761
|
// Has this flag been specified on command line.
|
|
763
|
-
bool on_command_line_ : 1 ABSL_GUARDED_BY(
|
|
762
|
+
bool on_command_line_ : 1 ABSL_GUARDED_BY(DataGuard());
|
|
764
763
|
|
|
765
764
|
// Unique tag for absl::call_once call to initialize this flag.
|
|
766
765
|
absl::once_flag init_control_;
|
|
@@ -769,7 +768,7 @@ class FlagImpl final : public CommandLineFlag {
|
|
|
769
768
|
flags_internal::SequenceLock seq_lock_;
|
|
770
769
|
|
|
771
770
|
// Optional flag's callback and absl::Mutex to guard the invocations.
|
|
772
|
-
FlagCallback* callback_ ABSL_GUARDED_BY(
|
|
771
|
+
FlagCallback* callback_ ABSL_GUARDED_BY(DataGuard());
|
|
773
772
|
// Either a pointer to the function generating the default value based on the
|
|
774
773
|
// value specified in ABSL_FLAG or pointer to the dynamically set default
|
|
775
774
|
// value via SetCommandLineOptionWithMode. def_kind_ is used to distinguish
|
|
@@ -783,7 +782,7 @@ class FlagImpl final : public CommandLineFlag {
|
|
|
783
782
|
// heap allocation during initialization, which is both slows program startup
|
|
784
783
|
// and can fail. Using reserved space + placement new allows us to avoid both
|
|
785
784
|
// problems.
|
|
786
|
-
alignas(absl::Mutex) mutable char data_guard_[sizeof(absl::Mutex)];
|
|
785
|
+
alignas(absl::Mutex) mutable unsigned char data_guard_[sizeof(absl::Mutex)];
|
|
787
786
|
};
|
|
788
787
|
#if defined(__GNUC__) && !defined(__clang__)
|
|
789
788
|
#pragma GCC diagnostic pop
|
|
@@ -828,7 +827,7 @@ class Flag {
|
|
|
828
827
|
U u;
|
|
829
828
|
|
|
830
829
|
#if !defined(NDEBUG)
|
|
831
|
-
impl_.AssertValidType(
|
|
830
|
+
impl_.AssertValidType(absl::FastTypeId<T>(), &GenRuntimeTypeId<T>);
|
|
832
831
|
#endif
|
|
833
832
|
|
|
834
833
|
if (ABSL_PREDICT_FALSE(!value_.Get(impl_.seq_lock_, u.value))) {
|
|
@@ -837,7 +836,7 @@ class Flag {
|
|
|
837
836
|
return std::move(u.value);
|
|
838
837
|
}
|
|
839
838
|
void Set(const T& v) {
|
|
840
|
-
impl_.AssertValidType(
|
|
839
|
+
impl_.AssertValidType(absl::FastTypeId<T>(), &GenRuntimeTypeId<T>);
|
|
841
840
|
impl_.Write(&v);
|
|
842
841
|
}
|
|
843
842
|
|
|
@@ -876,7 +875,8 @@ class FlagImplPeer {
|
|
|
876
875
|
template <typename T>
|
|
877
876
|
void* FlagOps(FlagOp op, const void* v1, void* v2, void* v3) {
|
|
878
877
|
struct AlignedSpace {
|
|
879
|
-
alignas(MaskedPointer::RequiredAlignment()) alignas(
|
|
878
|
+
alignas(MaskedPointer::RequiredAlignment()) alignas(
|
|
879
|
+
T) unsigned char buf[sizeof(T)];
|
|
880
880
|
};
|
|
881
881
|
using Allocator = std::allocator<AlignedSpace>;
|
|
882
882
|
switch (op) {
|
|
@@ -901,7 +901,7 @@ void* FlagOps(FlagOp op, const void* v1, void* v2, void* v3) {
|
|
|
901
901
|
case FlagOp::kSizeof:
|
|
902
902
|
return reinterpret_cast<void*>(static_cast<uintptr_t>(sizeof(T)));
|
|
903
903
|
case FlagOp::kFastTypeId:
|
|
904
|
-
return const_cast<void*>(
|
|
904
|
+
return const_cast<void*>(absl::FastTypeId<T>());
|
|
905
905
|
case FlagOp::kRuntimeTypeId:
|
|
906
906
|
return const_cast<std::type_info*>(GenRuntimeTypeId<T>());
|
|
907
907
|
case FlagOp::kParse: {
|
|
@@ -29,9 +29,9 @@ namespace absl {
|
|
|
29
29
|
ABSL_NAMESPACE_BEGIN
|
|
30
30
|
namespace flags_internal {
|
|
31
31
|
|
|
32
|
-
static absl::Mutex
|
|
32
|
+
static absl::Mutex& ProgramNameMutex() {
|
|
33
33
|
static absl::NoDestructor<absl::Mutex> mutex;
|
|
34
|
-
return mutex
|
|
34
|
+
return *mutex;
|
|
35
35
|
}
|
|
36
36
|
ABSL_CONST_INIT static std::string* program_name ABSL_GUARDED_BY(
|
|
37
37
|
ProgramNameMutex()) ABSL_PT_GUARDED_BY(ProgramNameMutex()) = nullptr;
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
#include <functional>
|
|
20
20
|
|
|
21
21
|
#include "absl/base/config.h"
|
|
22
|
+
#include "absl/base/fast_type_id.h"
|
|
22
23
|
#include "absl/flags/commandlineflag.h"
|
|
23
24
|
#include "absl/flags/internal/commandlineflag.h"
|
|
24
25
|
#include "absl/strings/string_view.h"
|
|
@@ -73,7 +74,7 @@ void FinalizeRegistry();
|
|
|
73
74
|
//
|
|
74
75
|
|
|
75
76
|
// Retire flag with name "name" and type indicated by ops.
|
|
76
|
-
void Retire(const char* name, FlagFastTypeId type_id, char* buf);
|
|
77
|
+
void Retire(const char* name, FlagFastTypeId type_id, unsigned char* buf);
|
|
77
78
|
|
|
78
79
|
constexpr size_t kRetiredFlagObjSize = 3 * sizeof(void*);
|
|
79
80
|
constexpr size_t kRetiredFlagObjAlignment = alignof(void*);
|
|
@@ -83,11 +84,11 @@ template <typename T>
|
|
|
83
84
|
class RetiredFlag {
|
|
84
85
|
public:
|
|
85
86
|
void Retire(const char* flag_name) {
|
|
86
|
-
flags_internal::Retire(flag_name,
|
|
87
|
+
flags_internal::Retire(flag_name, absl::FastTypeId<T>(), buf_);
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
private:
|
|
90
|
-
alignas(kRetiredFlagObjAlignment) char buf_[kRetiredFlagObjSize];
|
|
91
|
+
alignas(kRetiredFlagObjAlignment) unsigned char buf_[kRetiredFlagObjSize];
|
|
91
92
|
};
|
|
92
93
|
|
|
93
94
|
} // namespace flags_internal
|
|
@@ -434,9 +434,9 @@ HelpMode HandleUsageFlags(std::ostream& out,
|
|
|
434
434
|
|
|
435
435
|
namespace {
|
|
436
436
|
|
|
437
|
-
absl::Mutex
|
|
437
|
+
absl::Mutex& HelpAttributesMutex() {
|
|
438
438
|
static absl::NoDestructor<absl::Mutex> mutex;
|
|
439
|
-
return mutex
|
|
439
|
+
return *mutex;
|
|
440
440
|
}
|
|
441
441
|
ABSL_CONST_INIT std::string* match_substr ABSL_GUARDED_BY(HelpAttributesMutex())
|
|
442
442
|
ABSL_PT_GUARDED_BY(HelpAttributesMutex()) = nullptr;
|
|
@@ -64,9 +64,9 @@ ABSL_NAMESPACE_BEGIN
|
|
|
64
64
|
namespace flags_internal {
|
|
65
65
|
namespace {
|
|
66
66
|
|
|
67
|
-
absl::Mutex
|
|
67
|
+
absl::Mutex& ProcessingChecksMutex() {
|
|
68
68
|
static absl::NoDestructor<absl::Mutex> mutex;
|
|
69
|
-
return mutex
|
|
69
|
+
return *mutex;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
ABSL_CONST_INIT bool flagfile_needs_processing
|
|
@@ -76,9 +76,13 @@ ABSL_CONST_INIT bool fromenv_needs_processing
|
|
|
76
76
|
ABSL_CONST_INIT bool tryfromenv_needs_processing
|
|
77
77
|
ABSL_GUARDED_BY(ProcessingChecksMutex()) = false;
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
absl::Mutex& SpecifiedFlagsMutex() {
|
|
80
|
+
static absl::NoDestructor<absl::Mutex> mutex;
|
|
81
|
+
return *mutex;
|
|
82
|
+
}
|
|
83
|
+
|
|
80
84
|
ABSL_CONST_INIT std::vector<const CommandLineFlag*>* specified_flags
|
|
81
|
-
ABSL_GUARDED_BY(
|
|
85
|
+
ABSL_GUARDED_BY(SpecifiedFlagsMutex()) = nullptr;
|
|
82
86
|
|
|
83
87
|
// Suggesting at most kMaxHints flags in case of misspellings.
|
|
84
88
|
ABSL_CONST_INIT const size_t kMaxHints = 100;
|
|
@@ -640,7 +644,7 @@ void ReportUnrecognizedFlags(
|
|
|
640
644
|
// --------------------------------------------------------------------
|
|
641
645
|
|
|
642
646
|
bool WasPresentOnCommandLine(absl::string_view flag_name) {
|
|
643
|
-
absl::ReaderMutexLock l(
|
|
647
|
+
absl::ReaderMutexLock l(SpecifiedFlagsMutex());
|
|
644
648
|
ABSL_INTERNAL_CHECK(specified_flags != nullptr,
|
|
645
649
|
"ParseCommandLine is not invoked yet");
|
|
646
650
|
|
|
@@ -767,7 +771,7 @@ HelpMode ParseAbseilFlagsOnlyImpl(
|
|
|
767
771
|
}
|
|
768
772
|
positional_args.push_back(argv[0]);
|
|
769
773
|
|
|
770
|
-
absl::MutexLock l(
|
|
774
|
+
absl::MutexLock l(flags_internal::SpecifiedFlagsMutex());
|
|
771
775
|
if (specified_flags == nullptr) {
|
|
772
776
|
specified_flags = new std::vector<const CommandLineFlag*>;
|
|
773
777
|
} else {
|
|
@@ -53,8 +53,11 @@ class FlagRegistry {
|
|
|
53
53
|
// Store a flag in this registry. Takes ownership of *flag.
|
|
54
54
|
void RegisterFlag(CommandLineFlag& flag, const char* filename);
|
|
55
55
|
|
|
56
|
-
void
|
|
57
|
-
void
|
|
56
|
+
void lock() ABSL_EXCLUSIVE_LOCK_FUNCTION(lock_) { lock_.lock(); }
|
|
57
|
+
inline void Lock() ABSL_EXCLUSIVE_LOCK_FUNCTION(lock_) { lock(); }
|
|
58
|
+
|
|
59
|
+
void unlock() ABSL_UNLOCK_FUNCTION(lock_) { lock_.unlock(); }
|
|
60
|
+
inline void Unlock() ABSL_UNLOCK_FUNCTION(lock_) { unlock(); }
|
|
58
61
|
|
|
59
62
|
// Returns the flag object for the specified name, or nullptr if not found.
|
|
60
63
|
// Will emit a warning if a 'retired' flag is specified.
|
|
@@ -87,8 +90,8 @@ namespace {
|
|
|
87
90
|
|
|
88
91
|
class FlagRegistryLock {
|
|
89
92
|
public:
|
|
90
|
-
explicit FlagRegistryLock(FlagRegistry& fr) : fr_(fr) { fr_.
|
|
91
|
-
~FlagRegistryLock() { fr_.
|
|
93
|
+
explicit FlagRegistryLock(FlagRegistry& fr) : fr_(fr) { fr_.lock(); }
|
|
94
|
+
~FlagRegistryLock() { fr_.unlock(); }
|
|
92
95
|
|
|
93
96
|
private:
|
|
94
97
|
FlagRegistry& fr_;
|
|
@@ -289,11 +292,10 @@ class RetiredFlagObj final : public CommandLineFlag {
|
|
|
289
292
|
|
|
290
293
|
} // namespace
|
|
291
294
|
|
|
292
|
-
void Retire(const char* name, FlagFastTypeId type_id, char* buf) {
|
|
295
|
+
void Retire(const char* name, FlagFastTypeId type_id, unsigned char* buf) {
|
|
293
296
|
static_assert(sizeof(RetiredFlagObj) == kRetiredFlagObjSize, "");
|
|
294
297
|
static_assert(alignof(RetiredFlagObj) == kRetiredFlagObjAlignment, "");
|
|
295
|
-
auto* flag = ::new (
|
|
296
|
-
flags_internal::RetiredFlagObj(name, type_id);
|
|
298
|
+
auto* flag = ::new (buf) flags_internal::RetiredFlagObj(name, type_id);
|
|
297
299
|
FlagRegistry::GlobalRegistry().RegisterFlag(*flag, nullptr);
|
|
298
300
|
}
|
|
299
301
|
|
|
@@ -40,7 +40,7 @@ ABSL_CONST_INIT std::string* program_usage_message
|
|
|
40
40
|
// --------------------------------------------------------------------
|
|
41
41
|
// Sets the "usage" message to be used by help reporting routines.
|
|
42
42
|
void SetProgramUsageMessage(absl::string_view new_usage_message) {
|
|
43
|
-
absl::MutexLock l(
|
|
43
|
+
absl::MutexLock l(flags_internal::usage_message_guard);
|
|
44
44
|
|
|
45
45
|
if (flags_internal::program_usage_message != nullptr) {
|
|
46
46
|
ABSL_INTERNAL_LOG(FATAL, "SetProgramUsageMessage() called twice.");
|
|
@@ -55,7 +55,7 @@ void SetProgramUsageMessage(absl::string_view new_usage_message) {
|
|
|
55
55
|
// Note: We able to return string_view here only because calling
|
|
56
56
|
// SetProgramUsageMessage twice is prohibited.
|
|
57
57
|
absl::string_view ProgramUsageMessage() {
|
|
58
|
-
absl::MutexLock l(
|
|
58
|
+
absl::MutexLock l(flags_internal::usage_message_guard);
|
|
59
59
|
|
|
60
60
|
return flags_internal::program_usage_message != nullptr
|
|
61
61
|
? absl::string_view(*flags_internal::program_usage_message)
|
|
@@ -105,9 +105,9 @@ std::string NormalizeFilename(absl::string_view filename) {
|
|
|
105
105
|
|
|
106
106
|
// --------------------------------------------------------------------
|
|
107
107
|
|
|
108
|
-
absl::Mutex
|
|
108
|
+
absl::Mutex& CustomUsageConfigMutex() {
|
|
109
109
|
static absl::NoDestructor<absl::Mutex> mutex;
|
|
110
|
-
return mutex
|
|
110
|
+
return *mutex;
|
|
111
111
|
}
|
|
112
112
|
ABSL_CONST_INIT FlagsUsageConfig* custom_usage_config
|
|
113
113
|
ABSL_GUARDED_BY(CustomUsageConfigMutex())
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
#
|
|
16
16
|
|
|
17
|
+
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
|
|
18
|
+
load("@rules_cc//cc:cc_library.bzl", "cc_library")
|
|
19
|
+
load("@rules_cc//cc:cc_test.bzl", "cc_test")
|
|
17
20
|
load(
|
|
18
21
|
"//absl:copts/configure_copts.bzl",
|
|
19
22
|
"ABSL_DEFAULT_COPTS",
|
|
@@ -39,9 +42,9 @@ cc_library(
|
|
|
39
42
|
copts = ABSL_DEFAULT_COPTS,
|
|
40
43
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
41
44
|
deps = [
|
|
42
|
-
"//absl/base:base_internal",
|
|
43
45
|
"//absl/base:config",
|
|
44
46
|
"//absl/base:core_headers",
|
|
47
|
+
"//absl/base:nullability",
|
|
45
48
|
"//absl/meta:type_traits",
|
|
46
49
|
"//absl/utility",
|
|
47
50
|
],
|
|
@@ -57,9 +60,9 @@ cc_test(
|
|
|
57
60
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
58
61
|
deps = [
|
|
59
62
|
":any_invocable",
|
|
60
|
-
"//absl/base:base_internal",
|
|
61
63
|
"//absl/base:config",
|
|
62
64
|
"//absl/base:core_headers",
|
|
65
|
+
"//absl/base:nullability",
|
|
63
66
|
"//absl/meta:type_traits",
|
|
64
67
|
"//absl/utility",
|
|
65
68
|
"@googletest//:gtest",
|
|
@@ -74,7 +77,6 @@ cc_library(
|
|
|
74
77
|
copts = ABSL_DEFAULT_COPTS,
|
|
75
78
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
76
79
|
deps = [
|
|
77
|
-
"//absl/base:base_internal",
|
|
78
80
|
"//absl/container:compressed_tuple",
|
|
79
81
|
"//absl/meta:type_traits",
|
|
80
82
|
"//absl/utility",
|
|
@@ -102,7 +104,6 @@ cc_library(
|
|
|
102
104
|
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
103
105
|
deps = [
|
|
104
106
|
":any_invocable",
|
|
105
|
-
"//absl/base:base_internal",
|
|
106
107
|
"//absl/base:core_headers",
|
|
107
108
|
"//absl/meta:type_traits",
|
|
108
109
|
],
|
|
@@ -150,8 +151,9 @@ cc_test(
|
|
|
150
151
|
],
|
|
151
152
|
)
|
|
152
153
|
|
|
153
|
-
|
|
154
|
+
cc_binary(
|
|
154
155
|
name = "function_type_benchmark",
|
|
156
|
+
testonly = True,
|
|
155
157
|
srcs = [
|
|
156
158
|
"function_type_benchmark.cc",
|
|
157
159
|
],
|
|
@@ -163,6 +165,5 @@ cc_test(
|
|
|
163
165
|
":function_ref",
|
|
164
166
|
"//absl/base:core_headers",
|
|
165
167
|
"@google_benchmark//:benchmark_main",
|
|
166
|
-
"@googletest//:gtest",
|
|
167
168
|
],
|
|
168
169
|
)
|
|
@@ -24,7 +24,7 @@ absl_cc_library(
|
|
|
24
24
|
COPTS
|
|
25
25
|
${ABSL_DEFAULT_COPTS}
|
|
26
26
|
DEPS
|
|
27
|
-
absl::
|
|
27
|
+
absl::base
|
|
28
28
|
absl::config
|
|
29
29
|
absl::core_headers
|
|
30
30
|
absl::type_traits
|
|
@@ -42,7 +42,7 @@ absl_cc_test(
|
|
|
42
42
|
${ABSL_TEST_COPTS}
|
|
43
43
|
DEPS
|
|
44
44
|
absl::any_invocable
|
|
45
|
-
absl::
|
|
45
|
+
absl::base
|
|
46
46
|
absl::config
|
|
47
47
|
absl::core_headers
|
|
48
48
|
absl::type_traits
|
|
@@ -60,7 +60,6 @@ absl_cc_library(
|
|
|
60
60
|
COPTS
|
|
61
61
|
${ABSL_DEFAULT_COPTS}
|
|
62
62
|
DEPS
|
|
63
|
-
absl::base_internal
|
|
64
63
|
absl::compressed_tuple
|
|
65
64
|
PUBLIC
|
|
66
65
|
)
|
|
@@ -88,7 +87,6 @@ absl_cc_library(
|
|
|
88
87
|
COPTS
|
|
89
88
|
${ABSL_DEFAULT_COPTS}
|
|
90
89
|
DEPS
|
|
91
|
-
absl::base_internal
|
|
92
90
|
absl::core_headers
|
|
93
91
|
absl::any_invocable
|
|
94
92
|
absl::meta
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
//
|
|
26
26
|
// NOTE: `absl::AnyInvocable` is similar to the C++23 `std::move_only_function`
|
|
27
27
|
// abstraction, but has a slightly different API and is not designed to be a
|
|
28
|
-
// drop-in replacement or
|
|
28
|
+
// drop-in replacement or backfill of that type.
|
|
29
29
|
//
|
|
30
30
|
// Credits to Matt Calabrese (https://github.com/mattcalabrese) for the original
|
|
31
31
|
// implementation.
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
#include <utility>
|
|
41
41
|
|
|
42
42
|
#include "absl/base/config.h"
|
|
43
|
+
#include "absl/base/nullability.h"
|
|
43
44
|
#include "absl/functional/internal/any_invocable.h"
|
|
44
45
|
#include "absl/meta/type_traits.h"
|
|
45
46
|
#include "absl/utility/utility.h"
|
|
@@ -97,11 +98,10 @@ ABSL_NAMESPACE_BEGIN
|
|
|
97
98
|
// my_func(std::move(func6));
|
|
98
99
|
//
|
|
99
100
|
// `AnyInvocable` also properly respects `const` qualifiers, reference
|
|
100
|
-
// qualifiers, and the `noexcept` specification
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
//
|
|
104
|
-
// must be compatible with those qualifiers.
|
|
101
|
+
// qualifiers, and the `noexcept` specification as part of the user-specified
|
|
102
|
+
// function type (e.g. `AnyInvocable<void() const && noexcept>`). These
|
|
103
|
+
// qualifiers will be applied to the `AnyInvocable` object's `operator()`, and
|
|
104
|
+
// the underlying invocable must be compatible with those qualifiers.
|
|
105
105
|
//
|
|
106
106
|
// Comparison of const and non-const function types:
|
|
107
107
|
//
|
|
@@ -159,7 +159,8 @@ ABSL_NAMESPACE_BEGIN
|
|
|
159
159
|
// AnyInvocable<void()> empty;
|
|
160
160
|
// empty(); // WARNING: Undefined behavior!
|
|
161
161
|
template <class Sig>
|
|
162
|
-
class AnyInvocable
|
|
162
|
+
class ABSL_NULLABILITY_COMPATIBLE AnyInvocable
|
|
163
|
+
: private internal_any_invocable::Impl<Sig> {
|
|
163
164
|
private:
|
|
164
165
|
static_assert(
|
|
165
166
|
std::is_function<Sig>::value,
|
|
@@ -280,11 +281,10 @@ class AnyInvocable : private internal_any_invocable::Impl<Sig> {
|
|
|
280
281
|
//
|
|
281
282
|
// WARNING: An `AnyInvocable` that wraps an empty `std::function` is not
|
|
282
283
|
// itself empty. This behavior is consistent with the standard equivalent
|
|
283
|
-
// `std::move_only_function`.
|
|
284
|
-
//
|
|
285
|
-
// In other words:
|
|
284
|
+
// `std::move_only_function`. In the following example, `a()` will actually
|
|
285
|
+
// invoke `f()`, leading to an `std::bad_function_call` exception:
|
|
286
286
|
// std::function<void()> f; // empty
|
|
287
|
-
// absl::AnyInvocable<void()> a =
|
|
287
|
+
// absl::AnyInvocable<void()> a = f; // not empty
|
|
288
288
|
//
|
|
289
289
|
// Invoking an empty `AnyInvocable` results in undefined behavior.
|
|
290
290
|
explicit operator bool() const noexcept { return this->HasValue(); }
|
|
@@ -297,22 +297,22 @@ class AnyInvocable : private internal_any_invocable::Impl<Sig> {
|
|
|
297
297
|
|
|
298
298
|
// Equality operators
|
|
299
299
|
|
|
300
|
-
// Returns `true` if
|
|
300
|
+
// Returns `true` if `f` is empty.
|
|
301
301
|
friend bool operator==(const AnyInvocable& f, std::nullptr_t) noexcept {
|
|
302
302
|
return !f.HasValue();
|
|
303
303
|
}
|
|
304
304
|
|
|
305
|
-
// Returns `true` if
|
|
305
|
+
// Returns `true` if `f` is empty.
|
|
306
306
|
friend bool operator==(std::nullptr_t, const AnyInvocable& f) noexcept {
|
|
307
307
|
return !f.HasValue();
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
-
// Returns `false` if
|
|
310
|
+
// Returns `false` if `f` is empty.
|
|
311
311
|
friend bool operator!=(const AnyInvocable& f, std::nullptr_t) noexcept {
|
|
312
312
|
return f.HasValue();
|
|
313
313
|
}
|
|
314
314
|
|
|
315
|
-
// Returns `false` if
|
|
315
|
+
// Returns `false` if `f` is empty.
|
|
316
316
|
friend bool operator!=(std::nullptr_t, const AnyInvocable& f) noexcept {
|
|
317
317
|
return f.HasValue();
|
|
318
318
|
}
|