re2 1.23.0 → 1.23.2
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 +2 -0
- package/binding.gyp +3 -2
- package/package.json +5 -5
- package/vendor/abseil-cpp/CMake/AbseilDll.cmake +25 -4
- package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +6 -1
- package/vendor/abseil-cpp/CMakeLists.txt +2 -2
- package/vendor/abseil-cpp/MODULE.bazel +2 -2
- package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +0 -1
- package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +0 -2
- package/vendor/abseil-cpp/absl/algorithm/container.h +191 -140
- package/vendor/abseil-cpp/absl/algorithm/container_test.cc +818 -0
- package/vendor/abseil-cpp/absl/base/BUILD.bazel +44 -5
- package/vendor/abseil-cpp/absl/base/CMakeLists.txt +42 -3
- package/vendor/abseil-cpp/absl/base/attributes.h +5 -1
- package/vendor/abseil-cpp/absl/base/call_once_test.cc +10 -10
- package/vendor/abseil-cpp/absl/base/casts.cc +61 -0
- package/vendor/abseil-cpp/absl/base/casts.h +128 -2
- package/vendor/abseil-cpp/absl/base/casts_test.cc +151 -0
- package/vendor/abseil-cpp/absl/base/config.h +13 -37
- package/vendor/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
- package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +4 -0
- package/vendor/abseil-cpp/absl/base/internal/nullability_traits.h +71 -0
- package/vendor/abseil-cpp/absl/base/internal/nullability_traits_test.cc +98 -0
- package/vendor/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
- package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +13 -7
- package/vendor/abseil-cpp/absl/base/internal/spinlock.h +16 -11
- package/vendor/abseil-cpp/absl/base/internal/strerror_test.cc +2 -1
- package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +0 -9
- package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +0 -6
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -1
- package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
- package/vendor/abseil-cpp/absl/base/macros.h +40 -17
- package/vendor/abseil-cpp/absl/base/nullability.h +1 -1
- package/vendor/abseil-cpp/absl/base/optimization.h +1 -3
- package/vendor/abseil-cpp/absl/base/options.h +1 -27
- package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +5 -8
- package/vendor/abseil-cpp/absl/cleanup/cleanup.h +4 -0
- package/vendor/abseil-cpp/absl/container/BUILD.bazel +195 -2
- package/vendor/abseil-cpp/absl/container/CMakeLists.txt +136 -2
- package/vendor/abseil-cpp/absl/container/btree_map.h +56 -6
- package/vendor/abseil-cpp/absl/container/btree_set.h +52 -6
- package/vendor/abseil-cpp/absl/container/btree_test.cc +107 -1
- package/vendor/abseil-cpp/absl/container/chunked_queue.h +755 -0
- package/vendor/abseil-cpp/absl/container/chunked_queue_benchmark.cc +386 -0
- package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +768 -0
- package/vendor/abseil-cpp/absl/container/fixed_array.h +4 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map.h +16 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +1 -2
- package/vendor/abseil-cpp/absl/container/flat_hash_set.h +16 -6
- package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +0 -2
- package/vendor/abseil-cpp/absl/container/inlined_vector.h +12 -4
- package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +21 -0
- package/vendor/abseil-cpp/absl/container/internal/btree_container.h +14 -5
- package/vendor/abseil-cpp/absl/container/internal/chunked_queue.h +173 -0
- package/vendor/abseil-cpp/absl/container/internal/common.h +51 -0
- package/vendor/abseil-cpp/absl/container/internal/container_memory.h +7 -1
- package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +11 -0
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +0 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +1 -2
- package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +0 -14
- package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +11 -8
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +3 -4
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +23 -6
- package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +31 -15
- package/vendor/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +80 -0
- package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +4 -12
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -10
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +149 -23
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +120 -126
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +4 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +8 -0
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +14 -59
- package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +111 -22
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_constructor_test.h +53 -112
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_lookup_test.h +10 -15
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_members_test.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/unordered_map_modifiers_test.h +45 -61
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_constructor_test.h +53 -112
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_lookup_test.h +6 -9
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_members_test.h +3 -3
- package/vendor/abseil-cpp/absl/container/internal/unordered_set_modifiers_test.h +25 -31
- package/vendor/abseil-cpp/absl/container/linked_hash_map.h +666 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_map_benchmark.cc +140 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_map_test.cc +987 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_set.h +527 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_set_benchmark.cc +84 -0
- package/vendor/abseil-cpp/absl/container/linked_hash_set_test.cc +947 -0
- package/vendor/abseil-cpp/absl/container/node_hash_map.h +17 -6
- package/vendor/abseil-cpp/absl/container/node_hash_set.h +16 -5
- package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +1 -2
- package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +79 -0
- package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +79 -0
- package/vendor/abseil-cpp/absl/copts/copts.py +17 -4
- package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +67 -13
- package/vendor/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
- package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +31 -0
- package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +34 -0
- package/vendor/abseil-cpp/absl/debugging/failure_signal_handler.cc +2 -2
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +118 -0
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +71 -0
- package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +97 -0
- package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
- package/vendor/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +4 -0
- package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -0
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +1 -1
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +0 -7
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +2 -1
- package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +2 -2
- package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +35 -67
- package/vendor/abseil-cpp/absl/debugging/stacktrace.h +3 -0
- package/vendor/abseil-cpp/absl/debugging/stacktrace_benchmark.cc +24 -1
- package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +39 -15
- package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
- package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +25 -40
- package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
- package/vendor/abseil-cpp/absl/flags/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/flags/declare.h +9 -0
- package/vendor/abseil-cpp/absl/flags/flag.h +2 -1
- package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
- package/vendor/abseil-cpp/absl/flags/internal/flag.cc +3 -2
- package/vendor/abseil-cpp/absl/flags/marshalling.cc +1 -16
- package/vendor/abseil-cpp/absl/flags/parse.cc +4 -2
- package/vendor/abseil-cpp/absl/flags/parse_test.cc +1 -1
- package/vendor/abseil-cpp/absl/flags/reflection.cc +4 -3
- package/vendor/abseil-cpp/absl/functional/BUILD.bazel +4 -0
- package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +4 -0
- package/vendor/abseil-cpp/absl/functional/any_invocable.h +3 -1
- package/vendor/abseil-cpp/absl/functional/function_ref.h +125 -20
- package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +122 -9
- package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +13 -2
- package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +42 -4
- package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +11 -0
- package/vendor/abseil-cpp/absl/hash/hash_test.cc +5 -2
- package/vendor/abseil-cpp/absl/hash/internal/hash.cc +184 -53
- package/vendor/abseil-cpp/absl/hash/internal/hash.h +116 -10
- package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +43 -4
- package/vendor/abseil-cpp/absl/log/BUILD.bazel +2 -0
- package/vendor/abseil-cpp/absl/log/CMakeLists.txt +35 -1
- package/vendor/abseil-cpp/absl/log/check_test_impl.inc +59 -4
- package/vendor/abseil-cpp/absl/log/die_if_null.cc +3 -1
- package/vendor/abseil-cpp/absl/log/die_if_null.h +24 -3
- package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +31 -1
- package/vendor/abseil-cpp/absl/log/internal/check_impl.h +2 -1
- package/vendor/abseil-cpp/absl/log/internal/check_op.cc +3 -1
- package/vendor/abseil-cpp/absl/log/internal/check_op.h +44 -18
- package/vendor/abseil-cpp/absl/log/internal/conditions.h +38 -35
- package/vendor/abseil-cpp/absl/log/internal/container.h +312 -0
- package/vendor/abseil-cpp/absl/log/internal/container_test.cc +254 -0
- package/vendor/abseil-cpp/absl/log/internal/log_impl.h +108 -110
- package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -2
- package/vendor/abseil-cpp/absl/log/internal/log_message.h +5 -1
- package/vendor/abseil-cpp/absl/log/internal/strip.h +30 -31
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +19 -19
- package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
- package/vendor/abseil-cpp/absl/log/log.h +2 -2
- package/vendor/abseil-cpp/absl/meta/BUILD.bazel +51 -0
- package/vendor/abseil-cpp/absl/meta/CMakeLists.txt +46 -0
- package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing.h +73 -0
- package/vendor/abseil-cpp/absl/meta/internal/constexpr_testing_test.cc +40 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires.h +67 -0
- package/vendor/abseil-cpp/absl/meta/internal/requires_test.cc +66 -0
- package/vendor/abseil-cpp/absl/meta/type_traits.h +42 -1
- package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +14 -0
- package/vendor/abseil-cpp/absl/numeric/int128.h +41 -21
- package/vendor/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
- package/vendor/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
- package/vendor/abseil-cpp/absl/numeric/int128_test.cc +52 -5
- package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +1 -0
- package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/profiling/hashtable.cc +18 -7
- package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +1 -0
- package/vendor/abseil-cpp/absl/random/internal/fastmath_test.cc +3 -5
- package/vendor/abseil-cpp/absl/random/internal/platform.h +0 -13
- package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +0 -1
- package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +1 -27
- package/vendor/abseil-cpp/absl/status/BUILD.bazel +17 -0
- package/vendor/abseil-cpp/absl/status/CMakeLists.txt +16 -0
- package/vendor/abseil-cpp/absl/status/internal/status_internal.h +4 -2
- package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +2 -2
- package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +2 -1
- package/vendor/abseil-cpp/absl/status/status.cc +4 -0
- package/vendor/abseil-cpp/absl/status/status.h +5 -0
- package/vendor/abseil-cpp/absl/status/status_matchers.h +48 -0
- package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +27 -0
- package/vendor/abseil-cpp/absl/status/status_test.cc +1 -0
- package/vendor/abseil-cpp/absl/status/statusor.h +1 -1
- package/vendor/abseil-cpp/absl/strings/BUILD.bazel +101 -21
- package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +99 -5
- package/vendor/abseil-cpp/absl/strings/ascii.h +9 -4
- package/vendor/abseil-cpp/absl/strings/cord.cc +15 -10
- package/vendor/abseil-cpp/absl/strings/cord.h +1 -1
- package/vendor/abseil-cpp/absl/strings/escaping.cc +126 -94
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
- package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite_test.cc +95 -0
- package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +2 -0
- package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree_test.cc +8 -8
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +24 -18
- package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +10 -16
- package/vendor/abseil-cpp/absl/strings/internal/escaping.h +9 -7
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer.cc +107 -0
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer.h +115 -0
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +423 -0
- package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +685 -0
- package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +0 -12
- package/vendor/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
- package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +21 -7
- package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +495 -8
- package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -15
- package/vendor/abseil-cpp/absl/strings/numbers.cc +71 -8
- package/vendor/abseil-cpp/absl/strings/numbers.h +25 -12
- package/vendor/abseil-cpp/absl/strings/numbers_test.cc +70 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +194 -0
- package/vendor/abseil-cpp/absl/strings/resize_and_overwrite_test.cc +154 -0
- package/vendor/abseil-cpp/absl/strings/str_cat.cc +96 -91
- package/vendor/abseil-cpp/absl/strings/str_cat.h +17 -12
- package/vendor/abseil-cpp/absl/strings/str_format_test.cc +4 -4
- package/vendor/abseil-cpp/absl/strings/str_split.h +1 -1
- package/vendor/abseil-cpp/absl/strings/str_split_test.cc +1 -1
- package/vendor/abseil-cpp/absl/strings/string_view.h +8 -718
- package/vendor/abseil-cpp/absl/strings/string_view_test.cc +1 -1265
- package/vendor/abseil-cpp/absl/strings/substitute.cc +24 -24
- package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +2 -3
- package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +1 -0
- package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
- package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout_test.cc +15 -5
- package/vendor/abseil-cpp/absl/synchronization/mutex.cc +2 -1
- package/vendor/abseil-cpp/absl/synchronization/mutex.h +47 -23
- package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
- package/vendor/abseil-cpp/absl/time/CMakeLists.txt +2 -0
- package/vendor/abseil-cpp/absl/time/civil_time_benchmark.cc +1 -2
- package/vendor/abseil-cpp/absl/time/civil_time_test.cc +58 -103
- package/vendor/abseil-cpp/absl/time/clock.cc +18 -16
- package/vendor/abseil-cpp/absl/time/clock_test.cc +2 -2
- package/vendor/abseil-cpp/absl/time/duration_benchmark.cc +144 -0
- package/vendor/abseil-cpp/absl/time/duration_test.cc +26 -29
- package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +7 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +4 -2
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +186 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Ensenada +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Santa_Isabel +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Tijuana +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Mexico/BajaNorte +0 -0
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/iso3166.tab +9 -9
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +12 -12
- package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +47 -47
- package/vendor/abseil-cpp/absl/time/time.cc +4 -4
- package/vendor/abseil-cpp/absl/time/time.h +10 -10
- package/vendor/abseil-cpp/absl/time/time_test.cc +1 -0
- package/vendor/abseil-cpp/absl/types/compare.h +62 -61
- package/vendor/abseil-cpp/absl/types/compare_test.cc +3 -3
- package/vendor/abseil-cpp/absl/types/internal/span.h +1 -0
- package/vendor/abseil-cpp/absl/types/optional.h +2 -2
- package/vendor/abseil-cpp/absl/types/span.h +10 -2
- package/vendor/abseil-cpp/absl/utility/utility.h +13 -0
- package/vendor/abseil-cpp/ci/absl_alternate_options.h +0 -1
- package/vendor/abseil-cpp/ci/cmake_common.sh +1 -1
- package/vendor/abseil-cpp/ci/cmake_install_test.sh +6 -0
- package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +2 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +1 -0
- package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +6 -0
- package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +6 -0
- package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +3 -2
- package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +5 -0
- package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -0
- package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -0
- package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +6 -1
- package/vendor/abseil-cpp/absl/base/internal/identity.h +0 -39
- package/vendor/abseil-cpp/absl/strings/string_view.cc +0 -257
- package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +0 -380
|
@@ -34,6 +34,57 @@ package(
|
|
|
34
34
|
|
|
35
35
|
licenses(["notice"])
|
|
36
36
|
|
|
37
|
+
cc_library(
|
|
38
|
+
name = "constexpr_testing",
|
|
39
|
+
testonly = 1,
|
|
40
|
+
hdrs = ["internal/constexpr_testing.h"],
|
|
41
|
+
copts = ABSL_DEFAULT_COPTS,
|
|
42
|
+
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
43
|
+
visibility = [
|
|
44
|
+
"//absl:__subpackages__",
|
|
45
|
+
],
|
|
46
|
+
deps = [
|
|
47
|
+
"//absl/base:config",
|
|
48
|
+
],
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
cc_test(
|
|
52
|
+
name = "constexpr_testing_test",
|
|
53
|
+
srcs = ["internal/constexpr_testing_test.cc"],
|
|
54
|
+
copts = ABSL_TEST_COPTS,
|
|
55
|
+
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
56
|
+
deps = [
|
|
57
|
+
":constexpr_testing",
|
|
58
|
+
"@googletest//:gtest",
|
|
59
|
+
"@googletest//:gtest_main",
|
|
60
|
+
],
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
cc_library(
|
|
64
|
+
name = "requires",
|
|
65
|
+
hdrs = ["internal/requires.h"],
|
|
66
|
+
copts = ABSL_DEFAULT_COPTS,
|
|
67
|
+
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
68
|
+
visibility = [
|
|
69
|
+
"//absl:__subpackages__",
|
|
70
|
+
],
|
|
71
|
+
deps = [
|
|
72
|
+
"//absl/base:config",
|
|
73
|
+
],
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
cc_test(
|
|
77
|
+
name = "requires_test",
|
|
78
|
+
srcs = ["internal/requires_test.cc"],
|
|
79
|
+
copts = ABSL_TEST_COPTS,
|
|
80
|
+
linkopts = ABSL_DEFAULT_LINKOPTS,
|
|
81
|
+
deps = [
|
|
82
|
+
":requires",
|
|
83
|
+
"@googletest//:gtest",
|
|
84
|
+
"@googletest//:gtest_main",
|
|
85
|
+
],
|
|
86
|
+
)
|
|
87
|
+
|
|
37
88
|
cc_library(
|
|
38
89
|
name = "type_traits",
|
|
39
90
|
hdrs = ["type_traits.h"],
|
|
@@ -14,6 +14,52 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
#
|
|
16
16
|
|
|
17
|
+
absl_cc_library(
|
|
18
|
+
NAME
|
|
19
|
+
constexpr_testing_internal
|
|
20
|
+
HDRS
|
|
21
|
+
"internal/constexpr_testing.h"
|
|
22
|
+
COPTS
|
|
23
|
+
${ABSL_DEFAULT_COPTS}
|
|
24
|
+
DEPS
|
|
25
|
+
absl::config
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
absl_cc_test(
|
|
29
|
+
NAME
|
|
30
|
+
constexpr_testing_test
|
|
31
|
+
SRCS
|
|
32
|
+
"internal/constexpr_testing_test.cc"
|
|
33
|
+
COPTS
|
|
34
|
+
${ABSL_TEST_COPTS}
|
|
35
|
+
DEPS
|
|
36
|
+
absl::constexpr_testing_internal
|
|
37
|
+
GTest::gmock_main
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
absl_cc_library(
|
|
41
|
+
NAME
|
|
42
|
+
requires_internal
|
|
43
|
+
HDRS
|
|
44
|
+
"internal/requires.h"
|
|
45
|
+
COPTS
|
|
46
|
+
${ABSL_DEFAULT_COPTS}
|
|
47
|
+
DEPS
|
|
48
|
+
absl::config
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
absl_cc_test(
|
|
52
|
+
NAME
|
|
53
|
+
requires_test
|
|
54
|
+
SRCS
|
|
55
|
+
"internal/requires_test.cc"
|
|
56
|
+
COPTS
|
|
57
|
+
${ABSL_TEST_COPTS}
|
|
58
|
+
DEPS
|
|
59
|
+
absl::requires_internal
|
|
60
|
+
GTest::gmock_main
|
|
61
|
+
)
|
|
62
|
+
|
|
17
63
|
absl_cc_library(
|
|
18
64
|
NAME
|
|
19
65
|
type_traits
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Copyright 2025 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_META_INTERNAL_CONSTEXPR_TESTING_H_
|
|
16
|
+
#define ABSL_META_INTERNAL_CONSTEXPR_TESTING_H_
|
|
17
|
+
|
|
18
|
+
#include <type_traits>
|
|
19
|
+
|
|
20
|
+
#include "absl/base/config.h"
|
|
21
|
+
|
|
22
|
+
namespace absl {
|
|
23
|
+
ABSL_NAMESPACE_BEGIN
|
|
24
|
+
namespace meta_internal {
|
|
25
|
+
|
|
26
|
+
// HasConstexprEvaluation([] { ... }) will evaluate to `true` if the
|
|
27
|
+
// lambda can be evaluated in a constant expression and `false`
|
|
28
|
+
// otherwise.
|
|
29
|
+
// The return type of the lambda is not relevant, as long as the whole
|
|
30
|
+
// evaluation works in a constant expression.
|
|
31
|
+
template <typename F>
|
|
32
|
+
constexpr bool HasConstexprEvaluation(F f);
|
|
33
|
+
|
|
34
|
+
/// Implementation details below ///
|
|
35
|
+
|
|
36
|
+
namespace internal_constexpr_evaluation {
|
|
37
|
+
|
|
38
|
+
#ifdef __clang__
|
|
39
|
+
#pragma clang diagnostic push
|
|
40
|
+
#pragma clang diagnostic ignored "-Wuninitialized"
|
|
41
|
+
#endif
|
|
42
|
+
// This will give a constexpr instance of `F`.
|
|
43
|
+
// This works for captureless lambdas because they have no state and the copy
|
|
44
|
+
// constructor does not look at the input reference.
|
|
45
|
+
template <typename F>
|
|
46
|
+
constexpr F default_instance = default_instance<F>;
|
|
47
|
+
#ifdef __clang__
|
|
48
|
+
#pragma clang diagnostic pop
|
|
49
|
+
#endif
|
|
50
|
+
|
|
51
|
+
template <typename F>
|
|
52
|
+
constexpr std::integral_constant<bool, (default_instance<F>(), true)> Tester(
|
|
53
|
+
int) {
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
template <typename S>
|
|
58
|
+
constexpr std::false_type Tester(char) {
|
|
59
|
+
return {};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
} // namespace internal_constexpr_evaluation
|
|
63
|
+
|
|
64
|
+
template <typename F>
|
|
65
|
+
constexpr bool HasConstexprEvaluation(F) {
|
|
66
|
+
return internal_constexpr_evaluation::Tester<F>(0);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
} // namespace meta_internal
|
|
70
|
+
ABSL_NAMESPACE_END
|
|
71
|
+
} // namespace absl
|
|
72
|
+
|
|
73
|
+
#endif // ABSL_META_INTERNAL_CONSTEXPR_TESTING_H_
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Copyright 2025 The Abseil Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#include "absl/meta/internal/constexpr_testing.h"
|
|
16
|
+
|
|
17
|
+
#include <map>
|
|
18
|
+
#include <string_view>
|
|
19
|
+
|
|
20
|
+
#include "gmock/gmock.h"
|
|
21
|
+
#include "gtest/gtest.h"
|
|
22
|
+
|
|
23
|
+
namespace {
|
|
24
|
+
|
|
25
|
+
TEST(ConstexprTesting, Basic) {
|
|
26
|
+
using absl::meta_internal::HasConstexprEvaluation;
|
|
27
|
+
|
|
28
|
+
EXPECT_TRUE(HasConstexprEvaluation([] {}));
|
|
29
|
+
static constexpr int const_global = 7;
|
|
30
|
+
EXPECT_TRUE(HasConstexprEvaluation([] { return const_global; }));
|
|
31
|
+
EXPECT_TRUE(HasConstexprEvaluation([] { return 0; }));
|
|
32
|
+
EXPECT_TRUE(HasConstexprEvaluation([] { return std::string_view{}; }));
|
|
33
|
+
|
|
34
|
+
static int nonconst_global;
|
|
35
|
+
EXPECT_FALSE(HasConstexprEvaluation([] { return nonconst_global; }));
|
|
36
|
+
EXPECT_FALSE(HasConstexprEvaluation([] { std::abort(); }));
|
|
37
|
+
EXPECT_FALSE(HasConstexprEvaluation([] { return std::map<int, int>(); }));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
} // namespace
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Copyright 2017 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_META_INTERNAL_REQUIRES_H_
|
|
16
|
+
#define ABSL_META_INTERNAL_REQUIRES_H_
|
|
17
|
+
|
|
18
|
+
#include <type_traits>
|
|
19
|
+
|
|
20
|
+
#include "absl/base/config.h"
|
|
21
|
+
|
|
22
|
+
namespace absl {
|
|
23
|
+
ABSL_NAMESPACE_BEGIN
|
|
24
|
+
namespace meta_internal {
|
|
25
|
+
|
|
26
|
+
// C++17 port of the C++20 `requires` expressions.
|
|
27
|
+
// It allows easy inline test of properties of types in template code.
|
|
28
|
+
// https://en.cppreference.com/w/cpp/language/constraints#Requires_expressions
|
|
29
|
+
//
|
|
30
|
+
// Example usage:
|
|
31
|
+
//
|
|
32
|
+
// if constexpr (Requires<T>([](auto&& x) -> decltype(x.foo()) {})) {
|
|
33
|
+
// // T has foo()
|
|
34
|
+
// return t.foo();
|
|
35
|
+
// } else if constexpr (Requires<T>([](auto&& x) -> decltype(Bar(x)) {})) {
|
|
36
|
+
// // Can call Bar with T
|
|
37
|
+
// return Bar(t);
|
|
38
|
+
// } else if constexpr (Requires<T, U>(
|
|
39
|
+
// // Can test expression with multiple inputs
|
|
40
|
+
// [](auto&& x, auto&& y) -> decltype(x + y) {})) {
|
|
41
|
+
// return t + t2;
|
|
42
|
+
// }
|
|
43
|
+
//
|
|
44
|
+
// The `Requires` function takes a list of types and a generic lambda where all
|
|
45
|
+
// arguments are of type `auto&&`. The lambda is never actually invoked and the
|
|
46
|
+
// body must be empty.
|
|
47
|
+
// When used this way, `Requires` returns whether the expression inside
|
|
48
|
+
// `decltype` is well-formed, when the lambda parameters have the types that
|
|
49
|
+
// are specified by the corresponding template arguments.
|
|
50
|
+
//
|
|
51
|
+
// NOTE: C++17 does not allow lambdas in template parameters, which means that
|
|
52
|
+
// code like the following is _not_ valid in C++17:
|
|
53
|
+
//
|
|
54
|
+
// template <typename T,
|
|
55
|
+
// typename = std::enable_if_t<gtl::Requires<T>(
|
|
56
|
+
// [] (auto&& v) -> decltype(<expr>) {})>>
|
|
57
|
+
//
|
|
58
|
+
template <typename... T, typename F>
|
|
59
|
+
constexpr bool Requires(F) {
|
|
60
|
+
return std::is_invocable_v<F, T...>;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
} // namespace meta_internal
|
|
64
|
+
ABSL_NAMESPACE_END
|
|
65
|
+
} // namespace absl
|
|
66
|
+
|
|
67
|
+
#endif // ABSL_META_INTERNAL_REQUIRES_H_
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Copyright 2017 The Abseil Authors.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
#include "absl/meta/internal/requires.h"
|
|
16
|
+
|
|
17
|
+
#include <string>
|
|
18
|
+
#include <vector>
|
|
19
|
+
|
|
20
|
+
#include "gtest/gtest.h"
|
|
21
|
+
|
|
22
|
+
namespace {
|
|
23
|
+
|
|
24
|
+
TEST(RequiresTest, SimpleLambdasWork) {
|
|
25
|
+
static_assert(absl::meta_internal::Requires([] {}));
|
|
26
|
+
static_assert(absl::meta_internal::Requires<int>([](auto&&) {}));
|
|
27
|
+
static_assert(
|
|
28
|
+
absl::meta_internal::Requires<int, char>([](auto&&, auto&&) {}));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
template <typename T>
|
|
32
|
+
inline constexpr bool has_cstr =
|
|
33
|
+
absl::meta_internal::Requires<T>([](auto&& x) -> decltype(x.c_str()) {});
|
|
34
|
+
|
|
35
|
+
template <typename T, typename U>
|
|
36
|
+
inline constexpr bool have_plus = absl::meta_internal::Requires<T, U>(
|
|
37
|
+
[](auto&& x, auto&& y) -> decltype(x + y) {});
|
|
38
|
+
|
|
39
|
+
TEST(RequiresTest, CanTestProperties) {
|
|
40
|
+
static_assert(has_cstr<std::string>);
|
|
41
|
+
static_assert(!has_cstr<std::vector<int>>);
|
|
42
|
+
|
|
43
|
+
static_assert(have_plus<int, double>);
|
|
44
|
+
static_assert(have_plus<std::string, std::string>);
|
|
45
|
+
static_assert(!have_plus<std::string, double>);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
TEST(RequiresTest, WorksWithUnmovableTypes) {
|
|
49
|
+
struct S {
|
|
50
|
+
S(const S&) = delete;
|
|
51
|
+
int foo() { return 0; }
|
|
52
|
+
};
|
|
53
|
+
static_assert(
|
|
54
|
+
absl::meta_internal::Requires<S>([](auto&& x) -> decltype(x.foo()) {}));
|
|
55
|
+
static_assert(
|
|
56
|
+
!absl::meta_internal::Requires<S>([](auto&& x) -> decltype(x.bar()) {}));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
TEST(RequiresTest, WorksWithArrays) {
|
|
60
|
+
static_assert(
|
|
61
|
+
absl::meta_internal::Requires<int[2]>([](auto&& x) -> decltype(x[1]) {}));
|
|
62
|
+
static_assert(
|
|
63
|
+
!absl::meta_internal::Requires<int[2]>([](auto&& x) -> decltype(-x) {}));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
} // namespace
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
#include <string>
|
|
41
41
|
#include <string_view>
|
|
42
42
|
#include <type_traits>
|
|
43
|
+
#include <utility>
|
|
43
44
|
#include <vector>
|
|
44
45
|
|
|
45
46
|
#include "absl/base/attributes.h"
|
|
@@ -168,6 +169,28 @@ template <typename T>
|
|
|
168
169
|
using remove_cvref_t = typename remove_cvref<T>::type;
|
|
169
170
|
#endif
|
|
170
171
|
|
|
172
|
+
#if defined(__cpp_lib_type_identity) && __cpp_lib_type_identity >= 201806L
|
|
173
|
+
template <typename T>
|
|
174
|
+
using type_identity = std::type_identity<T>;
|
|
175
|
+
|
|
176
|
+
template <typename T>
|
|
177
|
+
using type_identity_t = std::type_identity_t<T>;
|
|
178
|
+
#else
|
|
179
|
+
// type_identity
|
|
180
|
+
//
|
|
181
|
+
// Back-fill of C++20's `std::type_identity`.
|
|
182
|
+
template <typename T>
|
|
183
|
+
struct type_identity {
|
|
184
|
+
typedef T type;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
// type_identity_t
|
|
188
|
+
//
|
|
189
|
+
// Back-fill of C++20's `std::type_identity_t`.
|
|
190
|
+
template <typename T>
|
|
191
|
+
using type_identity_t = typename type_identity<T>::type;
|
|
192
|
+
#endif
|
|
193
|
+
|
|
171
194
|
namespace type_traits_internal {
|
|
172
195
|
|
|
173
196
|
#if (defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703L) || \
|
|
@@ -451,7 +474,7 @@ namespace type_traits_internal {
|
|
|
451
474
|
|
|
452
475
|
// Detects if a class's definition has declared itself to be an owner by
|
|
453
476
|
// declaring
|
|
454
|
-
// using absl_internal_is_view = std::
|
|
477
|
+
// using absl_internal_is_view = std::false_type;
|
|
455
478
|
// as a member.
|
|
456
479
|
// Types that don't want either must either omit this declaration entirely, or
|
|
457
480
|
// (if e.g. inheriting from a base class) define the member to something that
|
|
@@ -479,6 +502,17 @@ struct IsOwnerImpl<
|
|
|
479
502
|
template <typename T>
|
|
480
503
|
struct IsOwner : IsOwnerImpl<T> {};
|
|
481
504
|
|
|
505
|
+
// This allows incomplete types to be used for associative containers, and also
|
|
506
|
+
// expands the set of types we can handle to include std::pair.
|
|
507
|
+
template <typename T1, typename T2>
|
|
508
|
+
struct IsOwner<std::pair<T1, T2>>
|
|
509
|
+
: std::integral_constant<
|
|
510
|
+
bool, std::conditional_t<std::is_reference_v<T1>, std::false_type,
|
|
511
|
+
IsOwner<std::remove_cv_t<T1>>>::value &&
|
|
512
|
+
std::conditional_t<std::is_reference_v<T2>, std::false_type,
|
|
513
|
+
IsOwner<std::remove_cv_t<T2>>>::value> {
|
|
514
|
+
};
|
|
515
|
+
|
|
482
516
|
template <typename T, typename Traits, typename Alloc>
|
|
483
517
|
struct IsOwner<std::basic_string<T, Traits, Alloc>> : std::true_type {};
|
|
484
518
|
|
|
@@ -513,6 +547,13 @@ template <typename T>
|
|
|
513
547
|
struct IsView : std::integral_constant<bool, std::is_pointer<T>::value ||
|
|
514
548
|
IsViewImpl<T>::value> {};
|
|
515
549
|
|
|
550
|
+
// This allows incomplete types to be used for associative containers, and also
|
|
551
|
+
// expands the set of types we can handle to include std::pair.
|
|
552
|
+
template <typename T1, typename T2>
|
|
553
|
+
struct IsView<std::pair<T1, T2>>
|
|
554
|
+
: std::integral_constant<bool, IsView<std::remove_cv_t<T1>>::value &&
|
|
555
|
+
IsView<std::remove_cv_t<T2>>::value> {};
|
|
556
|
+
|
|
516
557
|
template <typename Char, typename Traits>
|
|
517
558
|
struct IsView<std::basic_string_view<Char, Traits>> : std::true_type {};
|
|
518
559
|
|
|
@@ -36,6 +36,9 @@ using IsOwnerAndNotView =
|
|
|
36
36
|
absl::conjunction<absl::type_traits_internal::IsOwner<T>,
|
|
37
37
|
absl::negation<absl::type_traits_internal::IsView<T>>>;
|
|
38
38
|
|
|
39
|
+
static_assert(
|
|
40
|
+
IsOwnerAndNotView<std::pair<std::vector<int>, std::string>>::value,
|
|
41
|
+
"pair of owners is an owner, not a view");
|
|
39
42
|
static_assert(IsOwnerAndNotView<std::vector<int>>::value,
|
|
40
43
|
"vector is an owner, not a view");
|
|
41
44
|
static_assert(IsOwnerAndNotView<std::string>::value,
|
|
@@ -134,6 +137,17 @@ TEST(TypeTraitsTest, TestRemoveCVRef) {
|
|
|
134
137
|
int[2]>::value));
|
|
135
138
|
}
|
|
136
139
|
|
|
140
|
+
TEST(TypeTraitsTest, TestTypeIdentity) {
|
|
141
|
+
EXPECT_TRUE((std::is_same_v<typename absl::type_identity<int>::type, int>));
|
|
142
|
+
EXPECT_TRUE((std::is_same_v<absl::type_identity_t<int>, int>));
|
|
143
|
+
EXPECT_TRUE((std::is_same_v<typename absl::type_identity<int&>::type, int&>));
|
|
144
|
+
EXPECT_TRUE((std::is_same_v<absl::type_identity_t<int&>, int&>));
|
|
145
|
+
|
|
146
|
+
EXPECT_FALSE(
|
|
147
|
+
(std::is_same_v<typename absl::type_identity<int64_t>::type, int32_t>));
|
|
148
|
+
EXPECT_FALSE((std::is_same_v<absl::type_identity_t<int64_t>, int32_t>));
|
|
149
|
+
}
|
|
150
|
+
|
|
137
151
|
struct TypeA {};
|
|
138
152
|
struct TypeB {};
|
|
139
153
|
struct TypeC {};
|
|
@@ -164,9 +164,9 @@ class
|
|
|
164
164
|
constexpr explicit operator __int128() const;
|
|
165
165
|
constexpr explicit operator unsigned __int128() const;
|
|
166
166
|
#endif // ABSL_HAVE_INTRINSIC_INT128
|
|
167
|
-
explicit operator float() const;
|
|
168
|
-
explicit operator double() const;
|
|
169
|
-
explicit operator long double() const;
|
|
167
|
+
constexpr explicit operator float() const;
|
|
168
|
+
constexpr explicit operator double() const;
|
|
169
|
+
constexpr explicit operator long double() const;
|
|
170
170
|
|
|
171
171
|
// Trivial copy constructor, assignment operator and destructor.
|
|
172
172
|
|
|
@@ -357,14 +357,18 @@ class int128 {
|
|
|
357
357
|
constexpr int128(unsigned long v); // NOLINT(runtime/int)
|
|
358
358
|
constexpr int128(long long v); // NOLINT(runtime/int)
|
|
359
359
|
constexpr int128(unsigned long long v); // NOLINT(runtime/int)
|
|
360
|
+
constexpr explicit int128(uint128 v);
|
|
360
361
|
#ifdef ABSL_HAVE_INTRINSIC_INT128
|
|
361
362
|
constexpr int128(__int128 v); // NOLINT(runtime/explicit)
|
|
362
363
|
constexpr explicit int128(unsigned __int128 v);
|
|
363
|
-
|
|
364
|
-
constexpr explicit int128(
|
|
364
|
+
constexpr explicit int128(float v);
|
|
365
|
+
constexpr explicit int128(double v);
|
|
366
|
+
constexpr explicit int128(long double v);
|
|
367
|
+
#else
|
|
365
368
|
explicit int128(float v);
|
|
366
369
|
explicit int128(double v);
|
|
367
370
|
explicit int128(long double v);
|
|
371
|
+
#endif // ABSL_HAVE_INTRINSIC_INT128
|
|
368
372
|
|
|
369
373
|
// Assignment operators from arithmetic types
|
|
370
374
|
int128& operator=(int v);
|
|
@@ -401,9 +405,9 @@ class int128 {
|
|
|
401
405
|
constexpr explicit operator __int128() const;
|
|
402
406
|
constexpr explicit operator unsigned __int128() const;
|
|
403
407
|
#endif // ABSL_HAVE_INTRINSIC_INT128
|
|
404
|
-
explicit operator float() const;
|
|
405
|
-
explicit operator double() const;
|
|
406
|
-
explicit operator long double() const;
|
|
408
|
+
constexpr explicit operator float() const;
|
|
409
|
+
constexpr explicit operator double() const;
|
|
410
|
+
constexpr explicit operator long double() const;
|
|
407
411
|
|
|
408
412
|
// Trivial copy constructor, assignment operator and destructor.
|
|
409
413
|
|
|
@@ -609,9 +613,15 @@ constexpr uint128 operator<<(uint128 lhs, int amount);
|
|
|
609
613
|
constexpr uint128 operator>>(uint128 lhs, int amount);
|
|
610
614
|
constexpr uint128 operator+(uint128 lhs, uint128 rhs);
|
|
611
615
|
constexpr uint128 operator-(uint128 lhs, uint128 rhs);
|
|
616
|
+
#if defined(ABSL_HAVE_INTRINSIC_INT128)
|
|
617
|
+
constexpr uint128 operator*(uint128 lhs, uint128 rhs);
|
|
618
|
+
constexpr uint128 operator/(uint128 lhs, uint128 rhs);
|
|
619
|
+
constexpr uint128 operator%(uint128 lhs, uint128 rhs);
|
|
620
|
+
#else // ABSL_HAVE_INTRINSIC_INT128
|
|
612
621
|
uint128 operator*(uint128 lhs, uint128 rhs);
|
|
613
622
|
uint128 operator/(uint128 lhs, uint128 rhs);
|
|
614
623
|
uint128 operator%(uint128 lhs, uint128 rhs);
|
|
624
|
+
#endif // ABSL_HAVE_INTRINSIC_INT128
|
|
615
625
|
|
|
616
626
|
inline uint128& uint128::operator<<=(int amount) {
|
|
617
627
|
*this = *this << amount;
|
|
@@ -788,18 +798,18 @@ constexpr uint128::operator unsigned __int128() const {
|
|
|
788
798
|
|
|
789
799
|
// Conversion operators to floating point types.
|
|
790
800
|
|
|
791
|
-
|
|
801
|
+
constexpr uint128::operator float() const {
|
|
792
802
|
// Note: This method might return Inf.
|
|
793
803
|
constexpr float pow_2_64 = 18446744073709551616.0f;
|
|
794
804
|
return static_cast<float>(lo_) + static_cast<float>(hi_) * pow_2_64;
|
|
795
805
|
}
|
|
796
806
|
|
|
797
|
-
|
|
807
|
+
constexpr uint128::operator double() const {
|
|
798
808
|
constexpr double pow_2_64 = 18446744073709551616.0;
|
|
799
809
|
return static_cast<double>(lo_) + static_cast<double>(hi_) * pow_2_64;
|
|
800
810
|
}
|
|
801
811
|
|
|
802
|
-
|
|
812
|
+
constexpr uint128::operator long double() const {
|
|
803
813
|
constexpr long double pow_2_64 = 18446744073709551616.0L;
|
|
804
814
|
return static_cast<long double>(lo_) +
|
|
805
815
|
static_cast<long double>(hi_) * pow_2_64;
|
|
@@ -1021,19 +1031,15 @@ constexpr uint128 operator-(uint128 lhs, uint128 rhs) {
|
|
|
1021
1031
|
#endif
|
|
1022
1032
|
}
|
|
1023
1033
|
|
|
1034
|
+
#if !defined(ABSL_HAVE_INTRINSIC_INT128)
|
|
1024
1035
|
inline uint128 operator*(uint128 lhs, uint128 rhs) {
|
|
1025
|
-
#if defined(
|
|
1026
|
-
// TODO(strel) Remove once alignment issues are resolved and unsigned __int128
|
|
1027
|
-
// can be used for uint128 storage.
|
|
1028
|
-
return static_cast<unsigned __int128>(lhs) *
|
|
1029
|
-
static_cast<unsigned __int128>(rhs);
|
|
1030
|
-
#elif defined(_MSC_VER) && defined(_M_X64) && !defined(_M_ARM64EC)
|
|
1036
|
+
#if defined(_MSC_VER) && defined(_M_X64) && !defined(_M_ARM64EC)
|
|
1031
1037
|
uint64_t carry;
|
|
1032
1038
|
uint64_t low = _umul128(Uint128Low64(lhs), Uint128Low64(rhs), &carry);
|
|
1033
1039
|
return MakeUint128(Uint128Low64(lhs) * Uint128High64(rhs) +
|
|
1034
1040
|
Uint128High64(lhs) * Uint128Low64(rhs) + carry,
|
|
1035
1041
|
low);
|
|
1036
|
-
#else //
|
|
1042
|
+
#else // _MSC_VER
|
|
1037
1043
|
uint64_t a32 = Uint128Low64(lhs) >> 32;
|
|
1038
1044
|
uint64_t a00 = Uint128Low64(lhs) & 0xffffffff;
|
|
1039
1045
|
uint64_t b32 = Uint128Low64(rhs) >> 32;
|
|
@@ -1045,16 +1051,24 @@ inline uint128 operator*(uint128 lhs, uint128 rhs) {
|
|
|
1045
1051
|
result += uint128(a32 * b00) << 32;
|
|
1046
1052
|
result += uint128(a00 * b32) << 32;
|
|
1047
1053
|
return result;
|
|
1048
|
-
#endif //
|
|
1054
|
+
#endif // _MSC_VER
|
|
1049
1055
|
}
|
|
1056
|
+
#endif // ABSL_HAVE_INTRINSIC_INT128
|
|
1050
1057
|
|
|
1051
1058
|
#if defined(ABSL_HAVE_INTRINSIC_INT128)
|
|
1052
|
-
|
|
1059
|
+
constexpr uint128 operator*(uint128 lhs, uint128 rhs) {
|
|
1060
|
+
// TODO(strel) Remove once alignment issues are resolved and unsigned __int128
|
|
1061
|
+
// can be used for uint128 storage.
|
|
1062
|
+
return static_cast<unsigned __int128>(lhs) *
|
|
1063
|
+
static_cast<unsigned __int128>(rhs);
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
constexpr uint128 operator/(uint128 lhs, uint128 rhs) {
|
|
1053
1067
|
return static_cast<unsigned __int128>(lhs) /
|
|
1054
1068
|
static_cast<unsigned __int128>(rhs);
|
|
1055
1069
|
}
|
|
1056
1070
|
|
|
1057
|
-
|
|
1071
|
+
constexpr uint128 operator%(uint128 lhs, uint128 rhs) {
|
|
1058
1072
|
return static_cast<unsigned __int128>(lhs) %
|
|
1059
1073
|
static_cast<unsigned __int128>(rhs);
|
|
1060
1074
|
}
|
|
@@ -1112,9 +1126,15 @@ inline int128& int128::operator=(unsigned long long v) {
|
|
|
1112
1126
|
constexpr int128 operator-(int128 v);
|
|
1113
1127
|
constexpr int128 operator+(int128 lhs, int128 rhs);
|
|
1114
1128
|
constexpr int128 operator-(int128 lhs, int128 rhs);
|
|
1129
|
+
#if defined(ABSL_HAVE_INTRINSIC_INT128)
|
|
1130
|
+
constexpr int128 operator*(int128 lhs, int128 rhs);
|
|
1131
|
+
constexpr int128 operator/(int128 lhs, int128 rhs);
|
|
1132
|
+
constexpr int128 operator%(int128 lhs, int128 rhs);
|
|
1133
|
+
#else
|
|
1115
1134
|
int128 operator*(int128 lhs, int128 rhs);
|
|
1116
1135
|
int128 operator/(int128 lhs, int128 rhs);
|
|
1117
1136
|
int128 operator%(int128 lhs, int128 rhs);
|
|
1137
|
+
#endif // ABSL_HAVE_INTRINSIC_INT128
|
|
1118
1138
|
constexpr int128 operator|(int128 lhs, int128 rhs);
|
|
1119
1139
|
constexpr int128 operator&(int128 lhs, int128 rhs);
|
|
1120
1140
|
constexpr int128 operator^(int128 lhs, int128 rhs);
|