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
|
@@ -77,13 +77,13 @@ TEST(NonsecureURBGBase, StandardInterface) {
|
|
|
77
77
|
static_assert(!std::is_copy_constructible<E>::value,
|
|
78
78
|
"NonsecureURBGBase should not be copy constructible");
|
|
79
79
|
|
|
80
|
-
static_assert(!
|
|
80
|
+
static_assert(!std::is_copy_assignable<E>::value,
|
|
81
81
|
"NonsecureURBGBase should not be copy assignable");
|
|
82
82
|
|
|
83
83
|
static_assert(std::is_move_constructible<E>::value,
|
|
84
84
|
"NonsecureURBGBase should be move constructible");
|
|
85
85
|
|
|
86
|
-
static_assert(
|
|
86
|
+
static_assert(std::is_move_assignable<E>::value,
|
|
87
87
|
"NonsecureURBGBase should be move assignable");
|
|
88
88
|
|
|
89
89
|
static_assert(std::is_same<decltype(std::declval<E>()()), T>::value,
|
|
@@ -67,7 +67,7 @@ class pcg_engine {
|
|
|
67
67
|
explicit pcg_engine(uint64_t seed_value = 0) { seed(seed_value); }
|
|
68
68
|
|
|
69
69
|
template <class SeedSequence,
|
|
70
|
-
typename = typename
|
|
70
|
+
typename = typename std::enable_if_t<
|
|
71
71
|
!std::is_same<SeedSequence, pcg_engine>::value>>
|
|
72
72
|
explicit pcg_engine(SeedSequence&& seq) {
|
|
73
73
|
seed(seq);
|
|
@@ -90,7 +90,7 @@ class pcg_engine {
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
template <class SeedSequence>
|
|
93
|
-
typename
|
|
93
|
+
typename std::enable_if_t<
|
|
94
94
|
!std::is_convertible<SeedSequence, uint64_t>::value, void>
|
|
95
95
|
seed(SeedSequence&& seq) {
|
|
96
96
|
reseed(seq);
|
|
@@ -105,7 +105,7 @@ class pcg_engine {
|
|
|
105
105
|
bool operator!=(const pcg_engine& other) const { return !(*this == other); }
|
|
106
106
|
|
|
107
107
|
template <class CharT, class Traits>
|
|
108
|
-
friend typename
|
|
108
|
+
friend typename std::enable_if_t<(sizeof(state_type) == 16),
|
|
109
109
|
std::basic_ostream<CharT, Traits>&>
|
|
110
110
|
operator<<(
|
|
111
111
|
std::basic_ostream<CharT, Traits>& os, // NOLINT(runtime/references)
|
|
@@ -121,7 +121,7 @@ class pcg_engine {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
template <class CharT, class Traits>
|
|
124
|
-
friend typename
|
|
124
|
+
friend typename std::enable_if_t<(sizeof(state_type) <= 8),
|
|
125
125
|
std::basic_ostream<CharT, Traits>&>
|
|
126
126
|
operator<<(
|
|
127
127
|
std::basic_ostream<CharT, Traits>& os, // NOLINT(runtime/references)
|
|
@@ -134,7 +134,7 @@ class pcg_engine {
|
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
template <class CharT, class Traits>
|
|
137
|
-
friend typename
|
|
137
|
+
friend typename std::enable_if_t<(sizeof(state_type) == 16),
|
|
138
138
|
std::basic_istream<CharT, Traits>&>
|
|
139
139
|
operator>>(
|
|
140
140
|
std::basic_istream<CharT, Traits>& is, // NOLINT(runtime/references)
|
|
@@ -155,7 +155,7 @@ class pcg_engine {
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
template <class CharT, class Traits>
|
|
158
|
-
friend typename
|
|
158
|
+
friend typename std::enable_if_t<(sizeof(state_type) <= 8),
|
|
159
159
|
std::basic_istream<CharT, Traits>&>
|
|
160
160
|
operator>>(
|
|
161
161
|
std::basic_istream<CharT, Traits>& is, // NOLINT(runtime/references)
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#include <bitset>
|
|
19
19
|
#include <random>
|
|
20
20
|
#include <sstream>
|
|
21
|
+
#include <type_traits>
|
|
21
22
|
|
|
22
23
|
#include "gmock/gmock.h"
|
|
23
24
|
#include "gtest/gtest.h"
|
|
@@ -169,13 +170,13 @@ TYPED_TEST(PCGEngineTest, RandomNumberEngineInterface) {
|
|
|
169
170
|
static_assert(std::is_copy_constructible<E>::value,
|
|
170
171
|
"engine_type must be copy constructible");
|
|
171
172
|
|
|
172
|
-
static_assert(
|
|
173
|
+
static_assert(std::is_copy_assignable<E>::value,
|
|
173
174
|
"engine_type must be copy assignable");
|
|
174
175
|
|
|
175
176
|
static_assert(std::is_move_constructible<E>::value,
|
|
176
177
|
"engine_type must be move constructible");
|
|
177
178
|
|
|
178
|
-
static_assert(
|
|
179
|
+
static_assert(std::is_move_assignable<E>::value,
|
|
179
180
|
"engine_type must be move assignable");
|
|
180
181
|
|
|
181
182
|
static_assert(std::is_same<decltype(std::declval<E>()()), T>::value,
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
|
|
32
32
|
#include <cstdint>
|
|
33
33
|
#include <cstring>
|
|
34
|
+
#include <optional> // IWYU pragma: keep
|
|
34
35
|
|
|
35
36
|
#include "absl/random/internal/platform.h"
|
|
36
|
-
#include "absl/types/optional.h" // IWYU pragma: keep
|
|
37
37
|
|
|
38
38
|
#if !defined(__UCLIBC__) && defined(__GLIBC__) && \
|
|
39
39
|
(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
|
|
@@ -115,12 +115,12 @@ static uint32_t GetAuxval(uint32_t hwcap_type) {
|
|
|
115
115
|
|
|
116
116
|
#if defined(__APPLE__) && defined(ABSL_ARCH_AARCH64)
|
|
117
117
|
template <typename T>
|
|
118
|
-
static
|
|
118
|
+
static std::optional<T> ReadSysctlByName(const char* name) {
|
|
119
119
|
T val;
|
|
120
120
|
size_t val_size = sizeof(T);
|
|
121
121
|
int ret = sysctlbyname(name, &val, &val_size, nullptr, 0);
|
|
122
122
|
if (ret == -1) {
|
|
123
|
-
return
|
|
123
|
+
return std::nullopt;
|
|
124
124
|
}
|
|
125
125
|
return val;
|
|
126
126
|
}
|
|
@@ -210,7 +210,7 @@ bool CPUSupportsRandenHwAes() {
|
|
|
210
210
|
// Newer XNU kernels support querying all capabilities in a single
|
|
211
211
|
// sysctlbyname.
|
|
212
212
|
#if defined(CAP_BIT_AdvSIMD) && defined(CAP_BIT_FEAT_AES)
|
|
213
|
-
static const
|
|
213
|
+
static const std::optional<uint64_t> caps =
|
|
214
214
|
ReadSysctlByName<uint64_t>("hw.optional.arm.caps");
|
|
215
215
|
if (caps.has_value()) {
|
|
216
216
|
constexpr uint64_t kNeonAndAesCaps =
|
|
@@ -220,13 +220,13 @@ bool CPUSupportsRandenHwAes() {
|
|
|
220
220
|
#endif
|
|
221
221
|
|
|
222
222
|
// https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics#overview
|
|
223
|
-
static const
|
|
223
|
+
static const std::optional<int> adv_simd =
|
|
224
224
|
ReadSysctlByName<int>("hw.optional.AdvSIMD");
|
|
225
225
|
if (adv_simd.value_or(0) == 0) {
|
|
226
226
|
return false;
|
|
227
227
|
}
|
|
228
228
|
// https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics#3918855
|
|
229
|
-
static const
|
|
229
|
+
static const std::optional<int> feat_aes =
|
|
230
230
|
ReadSysctlByName<int>("hw.optional.arm.FEAT_AES");
|
|
231
231
|
if (feat_aes.value_or(0) == 0) {
|
|
232
232
|
return false;
|
|
@@ -63,7 +63,7 @@ class alignas(8) randen_engine {
|
|
|
63
63
|
explicit randen_engine(result_type seed_value) { seed(seed_value); }
|
|
64
64
|
|
|
65
65
|
template <class SeedSequence,
|
|
66
|
-
typename = typename
|
|
66
|
+
typename = typename std::enable_if_t<
|
|
67
67
|
!std::is_same<SeedSequence, randen_engine>::value>>
|
|
68
68
|
explicit randen_engine(SeedSequence&& seq) {
|
|
69
69
|
seed(seq);
|
|
@@ -93,7 +93,7 @@ class alignas(8) randen_engine {
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
template <class SeedSequence>
|
|
96
|
-
typename
|
|
96
|
+
typename std::enable_if_t<
|
|
97
97
|
!std::is_convertible<SeedSequence, result_type>::value>
|
|
98
98
|
seed(SeedSequence&& seq) {
|
|
99
99
|
// Zeroes the state.
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#include <bitset>
|
|
19
19
|
#include <random>
|
|
20
20
|
#include <sstream>
|
|
21
|
+
#include <type_traits>
|
|
21
22
|
|
|
22
23
|
#include "gmock/gmock.h"
|
|
23
24
|
#include "gtest/gtest.h"
|
|
@@ -170,13 +171,13 @@ TYPED_TEST(RandenEngineTypedTest, RandomNumberEngineInterface) {
|
|
|
170
171
|
static_assert(std::is_copy_constructible<E>::value,
|
|
171
172
|
"randen_engine must be copy constructible");
|
|
172
173
|
|
|
173
|
-
static_assert(
|
|
174
|
+
static_assert(std::is_copy_assignable<E>::value,
|
|
174
175
|
"randen_engine must be copy assignable");
|
|
175
176
|
|
|
176
177
|
static_assert(std::is_move_constructible<E>::value,
|
|
177
178
|
"randen_engine must be move constructible");
|
|
178
179
|
|
|
179
|
-
static_assert(
|
|
180
|
+
static_assert(std::is_move_assignable<E>::value,
|
|
180
181
|
"randen_engine must be move assignable");
|
|
181
182
|
|
|
182
183
|
static_assert(std::is_same<decltype(std::declval<E>()()), T>::value,
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
#include "absl/random/internal/randen.h"
|
|
16
16
|
|
|
17
17
|
#include <cstring>
|
|
18
|
+
#include <type_traits>
|
|
18
19
|
|
|
19
20
|
#include "gtest/gtest.h"
|
|
20
21
|
#include "absl/meta/type_traits.h"
|
|
@@ -27,13 +28,13 @@ TEST(RandenTest, CopyAndMove) {
|
|
|
27
28
|
static_assert(std::is_copy_constructible<Randen>::value,
|
|
28
29
|
"Randen must be copy constructible");
|
|
29
30
|
|
|
30
|
-
static_assert(
|
|
31
|
+
static_assert(std::is_copy_assignable<Randen>::value,
|
|
31
32
|
"Randen must be copy assignable");
|
|
32
33
|
|
|
33
34
|
static_assert(std::is_move_constructible<Randen>::value,
|
|
34
35
|
"Randen must be move constructible");
|
|
35
36
|
|
|
36
|
-
static_assert(
|
|
37
|
+
static_assert(std::is_move_assignable<Randen>::value,
|
|
37
38
|
"Randen must be move assignable");
|
|
38
39
|
}
|
|
39
40
|
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
#include <initializer_list>
|
|
21
21
|
#include <iterator>
|
|
22
22
|
#include <memory>
|
|
23
|
+
#include <optional>
|
|
23
24
|
#include <type_traits>
|
|
24
25
|
#include <utility>
|
|
25
26
|
#include <vector>
|
|
@@ -48,11 +49,11 @@ class SaltedSeedSeq {
|
|
|
48
49
|
using inner_sequence_type = SSeq;
|
|
49
50
|
using result_type = typename SSeq::result_type;
|
|
50
51
|
|
|
51
|
-
SaltedSeedSeq() : seq_(
|
|
52
|
+
SaltedSeedSeq() : seq_(std::make_unique<SSeq>()) {}
|
|
52
53
|
|
|
53
54
|
template <typename Iterator>
|
|
54
55
|
SaltedSeedSeq(Iterator begin, Iterator end)
|
|
55
|
-
: seq_(
|
|
56
|
+
: seq_(std::make_unique<SSeq>(begin, end)) {}
|
|
56
57
|
|
|
57
58
|
template <typename T>
|
|
58
59
|
SaltedSeedSeq(std::initializer_list<T> il)
|
|
@@ -71,7 +72,7 @@ class SaltedSeedSeq {
|
|
|
71
72
|
// The common case is that generate is called with ContiguousIterators
|
|
72
73
|
// to uint arrays. Such contiguous memory regions may be optimized,
|
|
73
74
|
// which we detect here.
|
|
74
|
-
using TagType =
|
|
75
|
+
using TagType = std::conditional_t<
|
|
75
76
|
(std::is_same<U, uint32_t>::value &&
|
|
76
77
|
(std::is_pointer<RandomAccessIterator>::value ||
|
|
77
78
|
std::is_same<RandomAccessIterator,
|
|
@@ -141,14 +142,14 @@ struct is_salted_seed_seq<
|
|
|
141
142
|
// non-salted seed parameters.
|
|
142
143
|
template <
|
|
143
144
|
typename SSeq, //
|
|
144
|
-
typename EnableIf =
|
|
145
|
+
typename EnableIf = std::enable_if_t<is_salted_seed_seq<SSeq>::value>>
|
|
145
146
|
SSeq MakeSaltedSeedSeq(SSeq&& seq) {
|
|
146
147
|
return SSeq(std::forward<SSeq>(seq));
|
|
147
148
|
}
|
|
148
149
|
|
|
149
150
|
template <
|
|
150
151
|
typename SSeq, //
|
|
151
|
-
typename EnableIf =
|
|
152
|
+
typename EnableIf = std::enable_if_t<!is_salted_seed_seq<SSeq>::value>>
|
|
152
153
|
SaltedSeedSeq<typename std::decay<SSeq>::type> MakeSaltedSeedSeq(SSeq&& seq) {
|
|
153
154
|
using sseq_type = typename std::decay<SSeq>::type;
|
|
154
155
|
using result_type = typename sseq_type::result_type;
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
#include <cstdint>
|
|
29
29
|
#include <cstdlib>
|
|
30
30
|
#include <cstring>
|
|
31
|
+
#include <optional>
|
|
31
32
|
#include <string>
|
|
32
33
|
#include <vector>
|
|
33
34
|
|
|
@@ -38,7 +39,6 @@
|
|
|
38
39
|
#include "absl/strings/escaping.h"
|
|
39
40
|
#include "absl/strings/string_view.h"
|
|
40
41
|
#include "absl/strings/strip.h"
|
|
41
|
-
#include "absl/types/optional.h"
|
|
42
42
|
#include "absl/types/span.h"
|
|
43
43
|
|
|
44
44
|
#if defined(_WIN32)
|
|
@@ -228,17 +228,17 @@ void MixIntoSeedMaterial(absl::Span<const uint32_t> sequence,
|
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
|
|
231
|
-
|
|
231
|
+
std::optional<uint32_t> GetSaltMaterial() {
|
|
232
232
|
// Salt must be common for all generators within the same process so read it
|
|
233
233
|
// only once and store in static variable.
|
|
234
|
-
static const auto salt_material = []() ->
|
|
234
|
+
static const auto salt_material = []() -> std::optional<uint32_t> {
|
|
235
235
|
uint32_t salt_value = 0;
|
|
236
236
|
|
|
237
237
|
if (ReadSeedMaterialFromOSEntropy(absl::MakeSpan(&salt_value, 1))) {
|
|
238
238
|
return salt_value;
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
-
return
|
|
241
|
+
return std::nullopt;
|
|
242
242
|
}();
|
|
243
243
|
|
|
244
244
|
return salt_material;
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#include <cassert>
|
|
19
19
|
#include <cstdint>
|
|
20
20
|
#include <cstdlib>
|
|
21
|
+
#include <optional>
|
|
21
22
|
#include <string>
|
|
22
23
|
#include <vector>
|
|
23
24
|
|
|
@@ -95,7 +96,7 @@ void MixIntoSeedMaterial(absl::Span<const uint32_t> sequence,
|
|
|
95
96
|
// Salt is obtained only once and stored in static variable.
|
|
96
97
|
//
|
|
97
98
|
// May return empty value if obtaining the salt was not possible.
|
|
98
|
-
|
|
99
|
+
std::optional<uint32_t> GetSaltMaterial();
|
|
99
100
|
|
|
100
101
|
} // namespace random_internal
|
|
101
102
|
ABSL_NAMESPACE_END
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
#include <type_traits>
|
|
21
21
|
|
|
22
22
|
#include "absl/base/config.h"
|
|
23
|
+
#include "absl/meta/type_traits.h"
|
|
23
24
|
#include "absl/numeric/bits.h"
|
|
24
25
|
#include "absl/numeric/int128.h"
|
|
25
26
|
|
|
@@ -27,6 +28,26 @@ namespace absl {
|
|
|
27
28
|
ABSL_NAMESPACE_BEGIN
|
|
28
29
|
namespace random_internal {
|
|
29
30
|
|
|
31
|
+
// is_urbg<URBG>
|
|
32
|
+
//
|
|
33
|
+
// Indicates whether a type URBG is a Uniform Random Bit Generator.
|
|
34
|
+
template <typename URBG, typename = void, typename = void, typename = void>
|
|
35
|
+
struct is_urbg : std::false_type {};
|
|
36
|
+
|
|
37
|
+
template <typename URBG>
|
|
38
|
+
struct is_urbg<
|
|
39
|
+
URBG,
|
|
40
|
+
std::enable_if_t<std::is_same<
|
|
41
|
+
typename URBG::result_type,
|
|
42
|
+
typename std::decay<decltype((URBG::min)())>::type>::value>,
|
|
43
|
+
std::enable_if_t<std::is_same<
|
|
44
|
+
typename URBG::result_type,
|
|
45
|
+
typename std::decay<decltype((URBG::max)())>::type>::value>,
|
|
46
|
+
std::enable_if_t<std::is_same<
|
|
47
|
+
typename URBG::result_type,
|
|
48
|
+
typename std::decay<decltype(std::declval<URBG>()())>::type>::value>>
|
|
49
|
+
: std::true_type {};
|
|
50
|
+
|
|
30
51
|
// random_internal::is_widening_convertible<A, B>
|
|
31
52
|
//
|
|
32
53
|
// Returns whether a type A is widening-convertible to a type B.
|
|
@@ -15,14 +15,19 @@
|
|
|
15
15
|
#include "absl/random/internal/traits.h"
|
|
16
16
|
|
|
17
17
|
#include <cstdint>
|
|
18
|
+
#include <random>
|
|
18
19
|
#include <type_traits>
|
|
19
20
|
|
|
20
21
|
#include "gtest/gtest.h"
|
|
21
22
|
|
|
22
23
|
namespace {
|
|
23
24
|
|
|
25
|
+
using absl::random_internal::is_urbg;
|
|
24
26
|
using absl::random_internal::is_widening_convertible;
|
|
25
27
|
|
|
28
|
+
static_assert(is_urbg<std::minstd_rand>::value);
|
|
29
|
+
static_assert(!is_urbg<uint64_t>::value);
|
|
30
|
+
|
|
26
31
|
// CheckWideningConvertsToSelf<T1, T2, ...>()
|
|
27
32
|
//
|
|
28
33
|
// For each type T, checks:
|
|
@@ -76,7 +76,7 @@ namespace random_internal {
|
|
|
76
76
|
// Return-type for absl::Uniform() when the return-type is inferred.
|
|
77
77
|
template <typename A, typename B>
|
|
78
78
|
using uniform_inferred_return_t =
|
|
79
|
-
|
|
79
|
+
std::enable_if_t<std::disjunction<is_widening_convertible<A, B>,
|
|
80
80
|
is_widening_convertible<B, A>>::value,
|
|
81
81
|
typename std::conditional<
|
|
82
82
|
is_widening_convertible<A, B>::value, B, A>::type>;
|
|
@@ -98,10 +98,10 @@ using uniform_inferred_return_t =
|
|
|
98
98
|
// uniform_upper_bound(IntervalOpenClosed, a, b)]
|
|
99
99
|
//
|
|
100
100
|
template <typename IntType, typename Tag>
|
|
101
|
-
typename
|
|
102
|
-
|
|
101
|
+
typename std::enable_if_t<
|
|
102
|
+
std::conjunction<
|
|
103
103
|
IsIntegral<IntType>,
|
|
104
|
-
|
|
104
|
+
std::disjunction<std::is_same<Tag, IntervalOpenClosedTag>,
|
|
105
105
|
std::is_same<Tag, IntervalOpenOpenTag>>>::value,
|
|
106
106
|
IntType>
|
|
107
107
|
uniform_lower_bound(Tag, IntType a, IntType) {
|
|
@@ -109,10 +109,10 @@ uniform_lower_bound(Tag, IntType a, IntType) {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
template <typename FloatType, typename Tag>
|
|
112
|
-
typename
|
|
113
|
-
|
|
112
|
+
typename std::enable_if_t<
|
|
113
|
+
std::conjunction<
|
|
114
114
|
std::is_floating_point<FloatType>,
|
|
115
|
-
|
|
115
|
+
std::disjunction<std::is_same<Tag, IntervalOpenClosedTag>,
|
|
116
116
|
std::is_same<Tag, IntervalOpenOpenTag>>>::value,
|
|
117
117
|
FloatType>
|
|
118
118
|
uniform_lower_bound(Tag, FloatType a, FloatType b) {
|
|
@@ -120,8 +120,8 @@ uniform_lower_bound(Tag, FloatType a, FloatType b) {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
template <typename NumType, typename Tag>
|
|
123
|
-
typename
|
|
124
|
-
|
|
123
|
+
typename std::enable_if_t<
|
|
124
|
+
std::disjunction<std::is_same<Tag, IntervalClosedClosedTag>,
|
|
125
125
|
std::is_same<Tag, IntervalClosedOpenTag>>::value,
|
|
126
126
|
NumType>
|
|
127
127
|
uniform_lower_bound(Tag, NumType a, NumType) {
|
|
@@ -129,10 +129,10 @@ uniform_lower_bound(Tag, NumType a, NumType) {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
template <typename IntType, typename Tag>
|
|
132
|
-
typename
|
|
133
|
-
|
|
132
|
+
typename std::enable_if_t<
|
|
133
|
+
std::conjunction<
|
|
134
134
|
IsIntegral<IntType>,
|
|
135
|
-
|
|
135
|
+
std::disjunction<std::is_same<Tag, IntervalClosedOpenTag>,
|
|
136
136
|
std::is_same<Tag, IntervalOpenOpenTag>>>::value,
|
|
137
137
|
IntType>
|
|
138
138
|
uniform_upper_bound(Tag, IntType, IntType b) {
|
|
@@ -140,10 +140,10 @@ uniform_upper_bound(Tag, IntType, IntType b) {
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
template <typename FloatType, typename Tag>
|
|
143
|
-
typename
|
|
144
|
-
|
|
143
|
+
typename std::enable_if_t<
|
|
144
|
+
std::conjunction<
|
|
145
145
|
std::is_floating_point<FloatType>,
|
|
146
|
-
|
|
146
|
+
std::disjunction<std::is_same<Tag, IntervalClosedOpenTag>,
|
|
147
147
|
std::is_same<Tag, IntervalOpenOpenTag>>>::value,
|
|
148
148
|
FloatType>
|
|
149
149
|
uniform_upper_bound(Tag, FloatType, FloatType b) {
|
|
@@ -151,10 +151,10 @@ uniform_upper_bound(Tag, FloatType, FloatType b) {
|
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
template <typename IntType, typename Tag>
|
|
154
|
-
typename
|
|
155
|
-
|
|
154
|
+
typename std::enable_if_t<
|
|
155
|
+
std::conjunction<
|
|
156
156
|
IsIntegral<IntType>,
|
|
157
|
-
|
|
157
|
+
std::disjunction<std::is_same<Tag, IntervalClosedClosedTag>,
|
|
158
158
|
std::is_same<Tag, IntervalOpenClosedTag>>>::value,
|
|
159
159
|
IntType>
|
|
160
160
|
uniform_upper_bound(Tag, IntType, IntType b) {
|
|
@@ -162,10 +162,10 @@ uniform_upper_bound(Tag, IntType, IntType b) {
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
template <typename FloatType, typename Tag>
|
|
165
|
-
typename
|
|
166
|
-
|
|
165
|
+
typename std::enable_if_t<
|
|
166
|
+
std::conjunction<
|
|
167
167
|
std::is_floating_point<FloatType>,
|
|
168
|
-
|
|
168
|
+
std::disjunction<std::is_same<Tag, IntervalClosedClosedTag>,
|
|
169
169
|
std::is_same<Tag, IntervalOpenClosedTag>>>::value,
|
|
170
170
|
FloatType>
|
|
171
171
|
uniform_upper_bound(Tag, FloatType, FloatType b) {
|
|
@@ -195,13 +195,13 @@ uniform_upper_bound(Tag, FloatType, FloatType b) {
|
|
|
195
195
|
// (0, 0] is not legal, but (0, 0+epsilon] is.
|
|
196
196
|
//
|
|
197
197
|
template <typename FloatType>
|
|
198
|
-
|
|
198
|
+
std::enable_if_t<std::is_floating_point<FloatType>::value, bool>
|
|
199
199
|
is_uniform_range_valid(FloatType a, FloatType b) {
|
|
200
200
|
return a <= b && std::isfinite(b - a);
|
|
201
201
|
}
|
|
202
202
|
|
|
203
203
|
template <typename IntType>
|
|
204
|
-
|
|
204
|
+
std::enable_if_t<IsIntegral<IntType>::value, bool> is_uniform_range_valid(
|
|
205
205
|
IntType a, IntType b) {
|
|
206
206
|
return a <= b;
|
|
207
207
|
}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#include <cmath>
|
|
18
18
|
#include <cstdint>
|
|
19
19
|
#include <random>
|
|
20
|
+
#include <type_traits>
|
|
20
21
|
|
|
21
22
|
#include "gtest/gtest.h"
|
|
22
23
|
|
|
@@ -214,7 +215,7 @@ Invalid InferredUniformReturnT(...);
|
|
|
214
215
|
template <typename A, typename B, typename Expect>
|
|
215
216
|
void CheckArgsInferType() {
|
|
216
217
|
static_assert(
|
|
217
|
-
|
|
218
|
+
std::conjunction<
|
|
218
219
|
std::is_same<Expect, decltype(InferredUniformReturnT<A, B>(0))>,
|
|
219
220
|
std::is_same<Expect,
|
|
220
221
|
decltype(InferredUniformReturnT<B, A>(0))>>::value,
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Copyright 2019 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
|
+
#ifndef ABSL_RANDOM_MOCKING_ACCESS_H_
|
|
16
|
+
#define ABSL_RANDOM_MOCKING_ACCESS_H_
|
|
17
|
+
|
|
18
|
+
#include <type_traits>
|
|
19
|
+
#include <utility>
|
|
20
|
+
|
|
21
|
+
#include "absl/base/config.h"
|
|
22
|
+
#include "absl/base/fast_type_id.h"
|
|
23
|
+
#include "absl/meta/type_traits.h"
|
|
24
|
+
|
|
25
|
+
namespace absl {
|
|
26
|
+
ABSL_NAMESPACE_BEGIN
|
|
27
|
+
|
|
28
|
+
// RandomMockingAccess must be a friend of any class which exposes an InvokeMock
|
|
29
|
+
// method. All calls to InvokeMock should be made through RandomMockingAccess.
|
|
30
|
+
//
|
|
31
|
+
// Any URBG type which wants to participate in mocking should declare
|
|
32
|
+
// RandomMockingAccess as a friend and have a protected or private method with
|
|
33
|
+
// the signature:
|
|
34
|
+
//
|
|
35
|
+
// bool InvokeMock(absl::FastTypeIdType key_id, void* args_tuple, void* result)
|
|
36
|
+
//
|
|
37
|
+
// This method returns false when mocking is not enabled, otherwise it will
|
|
38
|
+
// apply the mock. Typically this will involve forwarding to an underlying
|
|
39
|
+
// URBG such as absl::MockingBitGen by calling RandomMockingAccess::InvokeMock
|
|
40
|
+
// after checking that RandomMockingAccess::HasInvokeMock<URBG> is true for the
|
|
41
|
+
// underlying URBG type.
|
|
42
|
+
class RandomMockingAccess {
|
|
43
|
+
template <template <class...> class Trait, class AlwaysVoid, class... Args>
|
|
44
|
+
struct detector : std::false_type {};
|
|
45
|
+
template <template <class...> class Trait, class... Args>
|
|
46
|
+
struct detector<Trait, std::void_t<Trait<Args...>>, Args...>
|
|
47
|
+
: std::true_type {};
|
|
48
|
+
|
|
49
|
+
using IdType = ::absl::FastTypeIdType;
|
|
50
|
+
|
|
51
|
+
// Detector for `bool InvokeMock(key_id, args_tuple*, result*)`
|
|
52
|
+
// Lives inside RandomMockingAccess so that it has friend access to private
|
|
53
|
+
// members of URBG types.
|
|
54
|
+
template <class T>
|
|
55
|
+
using invoke_mock_t = decltype(std::declval<T*>()->InvokeMock(
|
|
56
|
+
std::declval<IdType>(), std::declval<void*>(), std::declval<void*>()));
|
|
57
|
+
|
|
58
|
+
public:
|
|
59
|
+
// Returns true if the URBG type has an InvokeMock method.
|
|
60
|
+
template <typename T>
|
|
61
|
+
using HasInvokeMock = typename detector<invoke_mock_t, void, T>::type;
|
|
62
|
+
|
|
63
|
+
// InvokeMock is private; calls to InvokeMock are proxied by MockingAccess.
|
|
64
|
+
template <typename URBG>
|
|
65
|
+
static inline bool InvokeMock(URBG* urbg, IdType key_id, void* args_tuple,
|
|
66
|
+
void* result) {
|
|
67
|
+
return urbg->InvokeMock(key_id, args_tuple, result);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
ABSL_NAMESPACE_END
|
|
72
|
+
} // namespace absl
|
|
73
|
+
|
|
74
|
+
#endif // ABSL_RANDOM_MOCKING_ACCESS_H_
|
|
@@ -39,20 +39,13 @@
|
|
|
39
39
|
#include "absl/container/flat_hash_map.h"
|
|
40
40
|
#include "absl/meta/type_traits.h"
|
|
41
41
|
#include "absl/random/internal/mock_helpers.h"
|
|
42
|
+
#include "absl/random/mocking_access.h"
|
|
42
43
|
#include "absl/random/random.h"
|
|
43
44
|
#include "absl/utility/utility.h"
|
|
44
45
|
|
|
45
46
|
namespace absl {
|
|
46
47
|
ABSL_NAMESPACE_BEGIN
|
|
47
48
|
|
|
48
|
-
class BitGenRef;
|
|
49
|
-
|
|
50
|
-
namespace random_internal {
|
|
51
|
-
template <typename>
|
|
52
|
-
struct DistributionCaller;
|
|
53
|
-
class MockHelpers;
|
|
54
|
-
} // namespace random_internal
|
|
55
|
-
|
|
56
49
|
// MockingBitGen
|
|
57
50
|
//
|
|
58
51
|
// `absl::MockingBitGen` is a mock Uniform Random Bit Generator (URBG) class
|
|
@@ -113,7 +106,7 @@ class MockingBitGen {
|
|
|
113
106
|
static auto GetMockFnType(ResultT, std::tuple<Args...>)
|
|
114
107
|
-> ::testing::MockFunction<ResultT(Args...)>;
|
|
115
108
|
|
|
116
|
-
// MockFnCaller is a helper method for use with
|
|
109
|
+
// MockFnCaller is a helper method for use with std::apply to
|
|
117
110
|
// apply an ArgTupleT to a compatible MockFunction.
|
|
118
111
|
// NOTE: MockFnCaller is essentially equivalent to the lambda:
|
|
119
112
|
// [fn](auto... args) { return fn->Call(std::move(args)...)}
|
|
@@ -155,7 +148,7 @@ class MockingBitGen {
|
|
|
155
148
|
// Requires tuple_args to point to a ArgTupleT, which is a
|
|
156
149
|
// std::tuple<Args...> used to invoke the mock function. Requires result
|
|
157
150
|
// to point to a ResultT, which is the result of the call.
|
|
158
|
-
*static_cast<ResultT*>(result) =
|
|
151
|
+
*static_cast<ResultT*>(result) = std::apply(
|
|
159
152
|
MockFnCaller<MockFnType, ValidatorT, ResultT, ArgTupleT>{&mock_fn_},
|
|
160
153
|
*static_cast<ArgTupleT*>(args_tuple));
|
|
161
154
|
}
|
|
@@ -181,13 +174,13 @@ class MockingBitGen {
|
|
|
181
174
|
using MockFnType = decltype(GetMockFnType(std::declval<ResultT>(),
|
|
182
175
|
std::declval<ArgTupleT>()));
|
|
183
176
|
|
|
184
|
-
using WrappedFnType =
|
|
177
|
+
using WrappedFnType = std::conditional_t<
|
|
185
178
|
std::is_same<SelfT, ::testing::NiceMock<MockingBitGen>>::value,
|
|
186
179
|
::testing::NiceMock<MockFnType>,
|
|
187
|
-
|
|
180
|
+
std::conditional_t<
|
|
188
181
|
std::is_same<SelfT, ::testing::NaggyMock<MockingBitGen>>::value,
|
|
189
182
|
::testing::NaggyMock<MockFnType>,
|
|
190
|
-
|
|
183
|
+
std::conditional_t<
|
|
191
184
|
std::is_same<SelfT,
|
|
192
185
|
::testing::StrictMock<MockingBitGen>>::value,
|
|
193
186
|
::testing::StrictMock<MockFnType>, MockFnType>>>;
|
|
@@ -196,7 +189,7 @@ class MockingBitGen {
|
|
|
196
189
|
FunctionHolderImpl<WrappedFnType, ValidatorT, ResultT, ArgTupleT>;
|
|
197
190
|
auto& mock = mocks_[type];
|
|
198
191
|
if (!mock) {
|
|
199
|
-
mock =
|
|
192
|
+
mock = std::make_unique<ImplT>();
|
|
200
193
|
}
|
|
201
194
|
return static_cast<ImplT*>(mock.get())->mock_fn_;
|
|
202
195
|
}
|
|
@@ -224,11 +217,8 @@ class MockingBitGen {
|
|
|
224
217
|
absl::flat_hash_map<FastTypeIdType, std::unique_ptr<FunctionHolder>> mocks_;
|
|
225
218
|
absl::BitGen gen_;
|
|
226
219
|
|
|
227
|
-
|
|
228
|
-
friend
|
|
229
|
-
friend class ::absl::BitGenRef; // for InvokeMock
|
|
230
|
-
friend class ::absl::random_internal::MockHelpers; // for RegisterMock,
|
|
231
|
-
// InvokeMock
|
|
220
|
+
friend class ::absl::RandomMockingAccess; // for InvokeMock
|
|
221
|
+
friend class ::absl::random_internal::MockHelpers; // for RegisterMock
|
|
232
222
|
};
|
|
233
223
|
|
|
234
224
|
ABSL_NAMESPACE_END
|