re2 1.22.2 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. package/README.md +60 -4
  2. package/binding.gyp +5 -1
  3. package/lib/addon.cc +4 -0
  4. package/lib/new.cc +1 -246
  5. package/lib/pattern.cc +252 -0
  6. package/lib/pattern.h +10 -0
  7. package/lib/set.cc +777 -0
  8. package/lib/wrapped_re2_set.h +42 -0
  9. package/package.json +21 -9
  10. package/re2.d.ts +46 -9
  11. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +14 -24
  12. package/vendor/abseil-cpp/CMake/AbseilHelpers.cmake +3 -3
  13. package/vendor/abseil-cpp/CMake/README.md +2 -2
  14. package/vendor/abseil-cpp/CMakeLists.txt +3 -3
  15. package/vendor/abseil-cpp/MODULE.bazel +6 -9
  16. package/vendor/abseil-cpp/README.md +6 -8
  17. package/vendor/abseil-cpp/absl/abseil.podspec.gen.py +6 -4
  18. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +3 -0
  19. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +1 -0
  20. package/vendor/abseil-cpp/absl/algorithm/container.h +2 -19
  21. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +4 -11
  22. package/vendor/abseil-cpp/absl/base/BUILD.bazel +60 -45
  23. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +57 -38
  24. package/vendor/abseil-cpp/absl/base/attributes.h +76 -7
  25. package/vendor/abseil-cpp/absl/base/attributes_test.cc +43 -0
  26. package/vendor/abseil-cpp/absl/base/call_once.h +11 -12
  27. package/vendor/abseil-cpp/absl/base/config.h +22 -129
  28. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +0 -4
  29. package/vendor/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  30. package/vendor/abseil-cpp/absl/base/{internal/fast_type_id_test.cc → fast_type_id_test.cc} +34 -30
  31. package/vendor/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  32. package/vendor/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  33. package/vendor/abseil-cpp/absl/base/internal/endian.h +34 -38
  34. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  35. package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test.cc +85 -0
  36. package/vendor/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +97 -0
  37. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -9
  38. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  39. package/vendor/abseil-cpp/absl/base/internal/poison.cc +7 -6
  40. package/vendor/abseil-cpp/absl/base/internal/spinlock.cc +15 -28
  41. package/vendor/abseil-cpp/absl/base/internal/spinlock.h +65 -35
  42. package/vendor/abseil-cpp/absl/base/internal/spinlock_benchmark.cc +2 -2
  43. package/vendor/abseil-cpp/absl/base/internal/sysinfo_test.cc +2 -2
  44. package/vendor/abseil-cpp/absl/base/internal/thread_identity_benchmark.cc +1 -1
  45. package/vendor/abseil-cpp/absl/base/internal/thread_identity_test.cc +4 -4
  46. package/vendor/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  47. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +4 -0
  48. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  49. package/vendor/abseil-cpp/absl/base/no_destructor.h +11 -32
  50. package/vendor/abseil-cpp/absl/base/no_destructor_test.cc +0 -4
  51. package/vendor/abseil-cpp/absl/base/nullability.h +83 -72
  52. package/vendor/abseil-cpp/absl/base/nullability_test.cc +25 -64
  53. package/vendor/abseil-cpp/absl/base/options.h +3 -80
  54. package/vendor/abseil-cpp/absl/base/policy_checks.h +7 -7
  55. package/vendor/abseil-cpp/absl/base/raw_logging_test.cc +15 -0
  56. package/vendor/abseil-cpp/absl/base/spinlock_test_common.cc +50 -30
  57. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -1
  58. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +0 -1
  59. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  60. package/vendor/abseil-cpp/absl/cleanup/cleanup_test.cc +0 -2
  61. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  62. package/vendor/abseil-cpp/absl/container/BUILD.bazel +74 -1
  63. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +73 -0
  64. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +51 -9
  65. package/vendor/abseil-cpp/absl/container/btree_map.h +8 -6
  66. package/vendor/abseil-cpp/absl/container/btree_set.h +8 -6
  67. package/vendor/abseil-cpp/absl/container/btree_test.cc +89 -4
  68. package/vendor/abseil-cpp/absl/container/fixed_array.h +7 -15
  69. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +17 -0
  70. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +20 -15
  71. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +8 -14
  72. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +19 -14
  73. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +46 -0
  74. package/vendor/abseil-cpp/absl/container/inlined_vector.h +7 -6
  75. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +28 -0
  76. package/vendor/abseil-cpp/absl/container/internal/btree.h +132 -29
  77. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  78. package/vendor/abseil-cpp/absl/container/internal/common.h +43 -0
  79. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  80. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +28 -24
  81. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +4 -17
  82. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +80 -17
  83. package/vendor/abseil-cpp/absl/container/internal/container_memory_test.cc +32 -2
  84. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +13 -8
  85. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults_test.cc +1 -52
  86. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.cc +9 -31
  87. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +23 -32
  88. package/vendor/abseil-cpp/absl/container/internal/hash_policy_testing.h +5 -1
  89. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +11 -23
  90. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits_test.cc +14 -9
  91. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +516 -0
  92. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes_test.cc +259 -0
  93. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -6
  94. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +32 -13
  95. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +8 -8
  96. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  97. package/vendor/abseil-cpp/absl/container/internal/layout.h +26 -42
  98. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  99. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +1506 -213
  100. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +1095 -1658
  101. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_allocator_test.cc +3 -2
  102. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +31 -29
  103. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +51 -20
  104. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +79 -0
  105. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl_test.cc +66 -0
  106. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +707 -363
  107. package/vendor/abseil-cpp/absl/container/node_hash_map.h +20 -15
  108. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +0 -3
  109. package/vendor/abseil-cpp/absl/container/node_hash_set.h +18 -13
  110. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +3 -8
  111. package/vendor/abseil-cpp/absl/copts/AbseilConfigureCopts.cmake +1 -1
  112. package/vendor/abseil-cpp/absl/copts/GENERATED_AbseilCopts.cmake +9 -20
  113. package/vendor/abseil-cpp/absl/copts/GENERATED_copts.bzl +9 -20
  114. package/vendor/abseil-cpp/absl/copts/copts.py +24 -15
  115. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +3 -0
  116. package/vendor/abseil-cpp/absl/crc/crc32c.cc +0 -4
  117. package/vendor/abseil-cpp/absl/crc/crc32c.h +7 -5
  118. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +17 -4
  119. package/vendor/abseil-cpp/absl/crc/crc32c_test.cc +30 -0
  120. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +17 -0
  121. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  122. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  123. package/vendor/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  124. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +136 -165
  125. package/vendor/abseil-cpp/absl/crc/internal/gen_crc32c_consts.py +90 -0
  126. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +7 -0
  127. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +4 -0
  128. package/vendor/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  129. package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  130. package/vendor/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  131. package/vendor/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  132. package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  133. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +11 -10
  134. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  135. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  136. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  137. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  138. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  139. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  140. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  141. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  142. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  143. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -14
  144. package/vendor/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  145. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +161 -27
  146. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  147. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +435 -1
  148. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +55 -63
  149. package/vendor/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  150. package/vendor/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  151. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -0
  152. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +3 -0
  153. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  154. package/vendor/abseil-cpp/absl/flags/flag.h +4 -3
  155. package/vendor/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  156. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +14 -13
  157. package/vendor/abseil-cpp/absl/flags/internal/flag.h +34 -34
  158. package/vendor/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  159. package/vendor/abseil-cpp/absl/flags/internal/registry.h +4 -3
  160. package/vendor/abseil-cpp/absl/flags/internal/usage.cc +2 -2
  161. package/vendor/abseil-cpp/absl/flags/parse.cc +10 -6
  162. package/vendor/abseil-cpp/absl/flags/reflection.cc +9 -7
  163. package/vendor/abseil-cpp/absl/flags/usage.cc +2 -2
  164. package/vendor/abseil-cpp/absl/flags/usage_config.cc +2 -2
  165. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +7 -6
  166. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +2 -4
  167. package/vendor/abseil-cpp/absl/functional/any_invocable.h +15 -15
  168. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +10 -42
  169. package/vendor/abseil-cpp/absl/functional/function_ref.h +2 -9
  170. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +10 -0
  171. package/vendor/abseil-cpp/absl/functional/function_type_benchmark.cc +1 -1
  172. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +112 -227
  173. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  174. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  175. package/vendor/abseil-cpp/absl/functional/overload.h +0 -20
  176. package/vendor/abseil-cpp/absl/functional/overload_test.cc +1 -7
  177. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +16 -9
  178. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +6 -9
  179. package/vendor/abseil-cpp/absl/hash/hash.h +18 -0
  180. package/vendor/abseil-cpp/absl/hash/hash_benchmark.cc +3 -0
  181. package/vendor/abseil-cpp/absl/hash/hash_instantiated_test.cc +1 -1
  182. package/vendor/abseil-cpp/absl/hash/hash_test.cc +131 -30
  183. package/vendor/abseil-cpp/absl/hash/hash_testing.h +20 -20
  184. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +129 -17
  185. package/vendor/abseil-cpp/absl/hash/internal/hash.h +326 -362
  186. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +54 -151
  187. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +14 -2
  188. package/vendor/abseil-cpp/absl/{strings/cord_buffer.cc → hash/internal/weakly_mixed_integer.h} +14 -6
  189. package/vendor/abseil-cpp/absl/log/BUILD.bazel +4 -0
  190. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +7 -0
  191. package/vendor/abseil-cpp/absl/log/check.h +2 -1
  192. package/vendor/abseil-cpp/absl/log/check_test_impl.inc +308 -14
  193. package/vendor/abseil-cpp/absl/log/die_if_null.h +2 -2
  194. package/vendor/abseil-cpp/absl/log/flags_test.cc +7 -0
  195. package/vendor/abseil-cpp/absl/log/globals.h +4 -5
  196. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +13 -9
  197. package/vendor/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  198. package/vendor/abseil-cpp/absl/log/internal/check_op.cc +24 -22
  199. package/vendor/abseil-cpp/absl/log/internal/check_op.h +149 -94
  200. package/vendor/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  201. package/vendor/abseil-cpp/absl/log/internal/conditions.h +7 -2
  202. package/vendor/abseil-cpp/absl/log/internal/fnmatch_test.cc +1 -0
  203. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  204. package/vendor/abseil-cpp/absl/log/internal/log_message.h +84 -59
  205. package/vendor/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  206. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  207. package/vendor/abseil-cpp/absl/log/internal/proto.cc +3 -2
  208. package/vendor/abseil-cpp/absl/log/internal/proto.h +3 -3
  209. package/vendor/abseil-cpp/absl/log/internal/strip.h +4 -12
  210. package/vendor/abseil-cpp/absl/log/internal/structured.h +3 -7
  211. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +9 -9
  212. package/vendor/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  213. package/vendor/abseil-cpp/absl/log/internal/voidify.h +10 -4
  214. package/vendor/abseil-cpp/absl/log/log.h +48 -35
  215. package/vendor/abseil-cpp/absl/log/log_basic_test_impl.inc +45 -0
  216. package/vendor/abseil-cpp/absl/log/log_entry.cc +241 -19
  217. package/vendor/abseil-cpp/absl/log/log_entry.h +2 -0
  218. package/vendor/abseil-cpp/absl/log/log_format_test.cc +412 -6
  219. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +20 -0
  220. package/vendor/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  221. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +15 -2
  222. package/vendor/abseil-cpp/absl/log/scoped_mock_log.h +7 -1
  223. package/vendor/abseil-cpp/absl/log/structured_test.cc +1 -0
  224. package/vendor/abseil-cpp/absl/memory/BUILD.bazel +2 -0
  225. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
  226. package/vendor/abseil-cpp/absl/meta/type_traits.h +46 -175
  227. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +1 -478
  228. package/vendor/abseil-cpp/absl/numeric/BUILD.bazel +7 -3
  229. package/vendor/abseil-cpp/absl/numeric/CMakeLists.txt +2 -0
  230. package/vendor/abseil-cpp/absl/numeric/bits.h +68 -2
  231. package/vendor/abseil-cpp/absl/numeric/bits_benchmark.cc +1 -1
  232. package/vendor/abseil-cpp/absl/numeric/bits_test.cc +83 -0
  233. package/vendor/abseil-cpp/absl/numeric/int128.cc +0 -52
  234. package/vendor/abseil-cpp/absl/numeric/int128_benchmark.cc +14 -15
  235. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +13 -8
  236. package/vendor/abseil-cpp/absl/numeric/internal/bits.h +39 -7
  237. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +47 -0
  238. package/vendor/abseil-cpp/absl/profiling/CMakeLists.txt +38 -0
  239. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +124 -0
  240. package/vendor/abseil-cpp/absl/profiling/hashtable.h +40 -0
  241. package/vendor/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  242. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +462 -0
  243. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +138 -0
  244. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  245. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +7 -3
  246. package/vendor/abseil-cpp/absl/random/BUILD.bazel +6 -4
  247. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +20 -19
  248. package/vendor/abseil-cpp/absl/random/benchmarks.cc +16 -23
  249. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  250. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +7 -2
  251. package/vendor/abseil-cpp/absl/random/distributions.h +6 -8
  252. package/vendor/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  253. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +19 -20
  254. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  255. package/vendor/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +24 -92
  256. package/vendor/abseil-cpp/absl/{base/inline_variable_test_b.cc → random/internal/entropy_pool.h} +14 -6
  257. package/vendor/abseil-cpp/absl/random/internal/entropy_pool_test.cc +119 -0
  258. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +6 -7
  259. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  260. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +39 -0
  261. package/vendor/abseil-cpp/absl/random/internal/randen_benchmarks.cc +8 -6
  262. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  263. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  264. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  265. package/vendor/abseil-cpp/absl/random/internal/seed_material_test.cc +3 -0
  266. package/vendor/abseil-cpp/absl/random/mock_distributions_test.cc +5 -4
  267. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +8 -10
  268. package/vendor/abseil-cpp/absl/random/random.h +88 -53
  269. package/vendor/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  270. package/vendor/abseil-cpp/absl/status/BUILD.bazel +26 -0
  271. package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  272. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  273. package/vendor/abseil-cpp/absl/status/internal/status_matchers.cc +4 -3
  274. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +194 -32
  275. package/vendor/abseil-cpp/absl/status/status.cc +4 -8
  276. package/vendor/abseil-cpp/absl/status/status.h +8 -8
  277. package/vendor/abseil-cpp/absl/{base/inline_variable_test_a.cc → status/status_benchmark.cc} +20 -10
  278. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +65 -0
  279. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  280. package/vendor/abseil-cpp/absl/status/statusor.cc +2 -2
  281. package/vendor/abseil-cpp/absl/status/statusor.h +49 -102
  282. package/vendor/abseil-cpp/absl/status/statusor_benchmark.cc +480 -0
  283. package/vendor/abseil-cpp/absl/status/statusor_test.cc +323 -1
  284. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +70 -34
  285. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +6 -3
  286. package/vendor/abseil-cpp/absl/strings/ascii.cc +9 -9
  287. package/vendor/abseil-cpp/absl/strings/ascii.h +18 -18
  288. package/vendor/abseil-cpp/absl/strings/ascii_benchmark.cc +5 -8
  289. package/vendor/abseil-cpp/absl/strings/charconv.cc +21 -22
  290. package/vendor/abseil-cpp/absl/strings/charconv.h +5 -5
  291. package/vendor/abseil-cpp/absl/strings/charconv_benchmark.cc +1 -2
  292. package/vendor/abseil-cpp/absl/strings/charset_benchmark.cc +1 -1
  293. package/vendor/abseil-cpp/absl/strings/cord.cc +54 -58
  294. package/vendor/abseil-cpp/absl/strings/cord.h +94 -84
  295. package/vendor/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  296. package/vendor/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  297. package/vendor/abseil-cpp/absl/strings/cord_test.cc +23 -0
  298. package/vendor/abseil-cpp/absl/strings/cordz_test_helpers.h +4 -5
  299. package/vendor/abseil-cpp/absl/strings/escaping.cc +130 -149
  300. package/vendor/abseil-cpp/absl/strings/escaping.h +9 -10
  301. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +2 -3
  302. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +19 -9
  303. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  304. package/vendor/abseil-cpp/absl/strings/internal/charconv_bigint_test.cc +1 -1
  305. package/vendor/abseil-cpp/absl/strings/internal/cord_internal.h +6 -10
  306. package/vendor/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  307. package/vendor/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  308. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.cc +5 -9
  309. package/vendor/abseil-cpp/absl/strings/internal/cordz_info.h +2 -4
  310. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_benchmark.cc +56 -0
  311. package/vendor/abseil-cpp/absl/strings/internal/memutil_benchmark.cc +2 -3
  312. package/vendor/abseil-cpp/absl/strings/internal/ostringstream_benchmark.cc +1 -2
  313. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  314. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  315. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +1 -6
  316. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  317. package/vendor/abseil-cpp/absl/strings/internal/str_format/extension_test.cc +3 -2
  318. package/vendor/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  319. package/vendor/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  320. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  321. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +7 -2
  322. package/vendor/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  323. package/vendor/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  324. package/vendor/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  325. package/vendor/abseil-cpp/absl/strings/internal/utf8_test.cc +196 -3
  326. package/vendor/abseil-cpp/absl/strings/numbers.cc +53 -32
  327. package/vendor/abseil-cpp/absl/strings/numbers.h +87 -58
  328. package/vendor/abseil-cpp/absl/strings/numbers_benchmark.cc +1 -1
  329. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +634 -120
  330. package/vendor/abseil-cpp/absl/strings/str_cat.cc +6 -7
  331. package/vendor/abseil-cpp/absl/strings/str_cat.h +32 -32
  332. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +25 -1
  333. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +2 -7
  334. package/vendor/abseil-cpp/absl/strings/str_format.h +18 -18
  335. package/vendor/abseil-cpp/absl/strings/str_format_test.cc +8 -14
  336. package/vendor/abseil-cpp/absl/strings/str_join_benchmark.cc +2 -3
  337. package/vendor/abseil-cpp/absl/strings/str_replace.cc +3 -3
  338. package/vendor/abseil-cpp/absl/strings/str_replace.h +6 -6
  339. package/vendor/abseil-cpp/absl/strings/str_replace_benchmark.cc +2 -3
  340. package/vendor/abseil-cpp/absl/strings/str_split.h +2 -2
  341. package/vendor/abseil-cpp/absl/strings/str_split_benchmark.cc +2 -3
  342. package/vendor/abseil-cpp/absl/strings/string_view.cc +4 -9
  343. package/vendor/abseil-cpp/absl/strings/string_view.h +38 -39
  344. package/vendor/abseil-cpp/absl/strings/string_view_benchmark.cc +4 -6
  345. package/vendor/abseil-cpp/absl/strings/string_view_test.cc +2 -50
  346. package/vendor/abseil-cpp/absl/strings/strip.h +4 -4
  347. package/vendor/abseil-cpp/absl/strings/substitute.cc +5 -4
  348. package/vendor/abseil-cpp/absl/strings/substitute.h +66 -64
  349. package/vendor/abseil-cpp/absl/strings/substitute_benchmark.cc +158 -0
  350. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +6 -1
  351. package/vendor/abseil-cpp/absl/synchronization/CMakeLists.txt +2 -1
  352. package/vendor/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  353. package/vendor/abseil-cpp/absl/synchronization/barrier_test.cc +3 -3
  354. package/vendor/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  355. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  356. package/vendor/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  357. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  358. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_benchmark.cc +2 -3
  359. package/vendor/abseil-cpp/absl/synchronization/internal/graphcycles_test.cc +6 -5
  360. package/vendor/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  361. package/vendor/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  362. package/vendor/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  363. package/vendor/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  364. package/vendor/abseil-cpp/absl/synchronization/internal/thread_pool.h +3 -3
  365. package/vendor/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  366. package/vendor/abseil-cpp/absl/synchronization/internal/waiter_test.cc +12 -3
  367. package/vendor/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  368. package/vendor/abseil-cpp/absl/synchronization/lifetime_test.cc +4 -4
  369. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +27 -29
  370. package/vendor/abseil-cpp/absl/synchronization/mutex.h +205 -126
  371. package/vendor/abseil-cpp/absl/synchronization/mutex_benchmark.cc +13 -31
  372. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +183 -169
  373. package/vendor/abseil-cpp/absl/synchronization/notification.cc +5 -5
  374. package/vendor/abseil-cpp/absl/synchronization/notification.h +1 -1
  375. package/vendor/abseil-cpp/absl/synchronization/notification_test.cc +3 -3
  376. package/vendor/abseil-cpp/absl/time/BUILD.bazel +9 -1
  377. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +3 -1
  378. package/vendor/abseil-cpp/absl/time/civil_time.cc +1 -0
  379. package/vendor/abseil-cpp/absl/time/civil_time_test.cc +134 -0
  380. package/vendor/abseil-cpp/absl/time/clock.cc +11 -14
  381. package/vendor/abseil-cpp/absl/time/duration.cc +14 -9
  382. package/vendor/abseil-cpp/absl/time/duration_test.cc +6 -7
  383. package/vendor/abseil-cpp/absl/time/internal/cctz/BUILD.bazel +14 -3
  384. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  385. package/vendor/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  386. package/vendor/abseil-cpp/absl/time/internal/cctz/src/cctz_benchmark.cc +4 -490
  387. package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.cc +515 -0
  388. package/vendor/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +33 -0
  389. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +41 -4
  390. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +22 -23
  391. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  392. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup_test.cc +1 -488
  393. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  394. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Coyhaique +0 -0
  395. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tehran +0 -0
  396. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Iran +0 -0
  397. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +2 -1
  398. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +1 -1
  399. package/vendor/abseil-cpp/absl/time/time.h +24 -18
  400. package/vendor/abseil-cpp/absl/time/time_test.cc +26 -0
  401. package/vendor/abseil-cpp/absl/types/BUILD.bazel +11 -164
  402. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +23 -167
  403. package/vendor/abseil-cpp/absl/types/any.h +9 -484
  404. package/vendor/abseil-cpp/absl/types/optional.h +7 -747
  405. package/vendor/abseil-cpp/absl/types/span.h +46 -19
  406. package/vendor/abseil-cpp/absl/types/span_test.cc +27 -0
  407. package/vendor/abseil-cpp/absl/types/variant.h +5 -784
  408. package/vendor/abseil-cpp/absl/types/variant_test.cc +43 -2597
  409. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -41
  410. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +0 -40
  411. package/vendor/abseil-cpp/absl/utility/utility.h +10 -185
  412. package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -3
  413. package/vendor/abseil-cpp/ci/cmake_common.sh +2 -2
  414. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +12 -13
  415. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +24 -21
  416. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +12 -12
  417. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +23 -22
  418. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +20 -19
  419. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
  420. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +17 -17
  421. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +10 -10
  422. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_cmake.sh +1 -1
  423. package/vendor/abseil-cpp/ci/linux_gcc_alpine_cmake.sh +1 -1
  424. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +9 -10
  425. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +9 -1
  426. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +14 -6
  427. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +14 -6
  428. package/vendor/abseil-cpp/ci/windows_msvc_cmake.bat +1 -1
  429. package/vendor/re2/.bazelrc +4 -4
  430. package/vendor/re2/.bcr/metadata.template.json +16 -0
  431. package/vendor/re2/.bcr/presubmit.yml +57 -0
  432. package/vendor/re2/.bcr/source.template.json +5 -0
  433. package/vendor/re2/.github/bazel.sh +1 -7
  434. package/vendor/re2/.github/workflows/ci-bazel.yml +5 -5
  435. package/vendor/re2/.github/workflows/ci-cmake.yml +4 -4
  436. package/vendor/re2/.github/workflows/ci.yml +5 -6
  437. package/vendor/re2/.github/workflows/pages.yml +3 -3
  438. package/vendor/re2/.github/workflows/python.yml +29 -24
  439. package/vendor/re2/.github/workflows/release-bazel.yml +42 -0
  440. package/vendor/re2/.github/workflows/release.yml +15 -4
  441. package/vendor/re2/BUILD.bazel +25 -0
  442. package/vendor/re2/CMakeLists.txt +100 -85
  443. package/vendor/re2/CONTRIBUTING.md +0 -1
  444. package/vendor/re2/MODULE.bazel +10 -10
  445. package/vendor/re2/Makefile +1 -1
  446. package/vendor/re2/README.md +259 -0
  447. package/vendor/re2/python/BUILD.bazel +8 -0
  448. package/vendor/re2/python/re2.py +1 -1
  449. package/vendor/re2/python/re2_test.py +6 -0
  450. package/vendor/re2/python/setup.py +3 -3
  451. package/vendor/re2/re2/bitmap256.cc +3 -4
  452. package/vendor/re2/re2/bitstate.cc +15 -10
  453. package/vendor/re2/re2/dfa.cc +1 -2
  454. package/vendor/re2/re2/parse.cc +3 -4
  455. package/vendor/re2/re2/prog.cc +1 -2
  456. package/vendor/re2/re2/prog.h +1 -0
  457. package/vendor/re2/re2/re2.cc +5 -0
  458. package/vendor/re2/re2/re2.h +9 -9
  459. package/vendor/re2/re2/set.cc +6 -0
  460. package/vendor/re2/re2/set.h +5 -0
  461. package/vendor/re2/re2/testing/re2_arg_test.cc +3 -3
  462. package/vendor/re2/re2/testing/re2_test.cc +8 -0
  463. package/vendor/re2/re2/testing/set_test.cc +5 -0
  464. package/vendor/re2/re2/walker-inl.h +1 -1
  465. package/vendor/abseil-cpp/WORKSPACE +0 -76
  466. package/vendor/abseil-cpp/WORKSPACE.bzlmod +0 -19
  467. package/vendor/abseil-cpp/absl/base/inline_variable_test.cc +0 -64
  468. package/vendor/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  469. package/vendor/abseil-cpp/absl/base/internal/inline_variable_testing.h +0 -46
  470. package/vendor/abseil-cpp/absl/base/internal/invoke.h +0 -241
  471. package/vendor/abseil-cpp/absl/base/internal/nullability_impl.h +0 -69
  472. package/vendor/abseil-cpp/absl/base/invoke_test.cc +0 -331
  473. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -148
  474. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -54
  475. package/vendor/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  476. package/vendor/abseil-cpp/absl/random/internal/pool_urbg_test.cc +0 -182
  477. package/vendor/abseil-cpp/absl/types/any_exception_safety_test.cc +0 -173
  478. package/vendor/abseil-cpp/absl/types/any_test.cc +0 -778
  479. package/vendor/abseil-cpp/absl/types/bad_any_cast.cc +0 -64
  480. package/vendor/abseil-cpp/absl/types/bad_any_cast.h +0 -75
  481. package/vendor/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  482. package/vendor/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  483. package/vendor/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  484. package/vendor/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  485. package/vendor/abseil-cpp/absl/types/internal/optional.h +0 -352
  486. package/vendor/abseil-cpp/absl/types/internal/variant.h +0 -1622
  487. package/vendor/abseil-cpp/absl/types/optional_exception_safety_test.cc +0 -292
  488. package/vendor/abseil-cpp/absl/types/optional_test.cc +0 -1615
  489. package/vendor/abseil-cpp/absl/types/variant_benchmark.cc +0 -222
  490. package/vendor/abseil-cpp/absl/types/variant_exception_safety_test.cc +0 -532
  491. package/vendor/abseil-cpp/absl/utility/internal/if_constexpr.h +0 -70
  492. package/vendor/abseil-cpp/absl/utility/internal/if_constexpr_test.cc +0 -79
  493. package/vendor/abseil-cpp/absl/utility/utility_test.cc +0 -239
  494. package/vendor/re2/.github/workflows/pr.yml +0 -34
  495. package/vendor/re2/README +0 -47
@@ -16,6 +16,7 @@
16
16
 
17
17
  #include <cstdint>
18
18
  #include <string>
19
+ #include <string_view>
19
20
  #include <type_traits>
20
21
  #include <utility>
21
22
  #include <vector>
@@ -26,10 +27,6 @@
26
27
  #include "absl/time/clock.h"
27
28
  #include "absl/time/time.h"
28
29
 
29
- #ifdef ABSL_HAVE_STD_STRING_VIEW
30
- #include <string_view>
31
- #endif
32
-
33
30
  namespace {
34
31
 
35
32
  using ::testing::StaticAssertTypeEq;
@@ -45,12 +42,10 @@ static_assert(IsOwnerAndNotView<std::string>::value,
45
42
  "string is an owner, not a view");
46
43
  static_assert(IsOwnerAndNotView<std::wstring>::value,
47
44
  "wstring is an owner, not a view");
48
- #ifdef ABSL_HAVE_STD_STRING_VIEW
49
45
  static_assert(!IsOwnerAndNotView<std::string_view>::value,
50
46
  "string_view is a view, not an owner");
51
47
  static_assert(!IsOwnerAndNotView<std::wstring_view>::value,
52
48
  "wstring_view is a view, not an owner");
53
- #endif
54
49
 
55
50
  template <class T, class U>
56
51
  struct simple_pair {
@@ -90,10 +85,6 @@ template <class Class, class... T>
90
85
  using BarIsCallable =
91
86
  absl::type_traits_internal::is_detected<BarIsCallableImpl, Class, T...>;
92
87
 
93
- template <class Class, class... T>
94
- using BarIsCallableConv = absl::type_traits_internal::is_detected_convertible<
95
- ReturnType, BarIsCallableImpl, Class, T...>;
96
-
97
88
  // NOTE: Test of detail type_traits_internal::is_detected.
98
89
  TEST(IsDetectedTest, BasicUsage) {
99
90
  EXPECT_TRUE((BarIsCallable<TypeWithBarFunction, StructA&, const StructB&,
@@ -110,286 +101,11 @@ TEST(IsDetectedTest, BasicUsage) {
110
101
  StructC>::value));
111
102
  }
112
103
 
113
- // NOTE: Test of detail type_traits_internal::is_detected_convertible.
114
- TEST(IsDetectedConvertibleTest, BasicUsage) {
115
- EXPECT_TRUE((BarIsCallableConv<TypeWithBarFunction, StructA&, const StructB&,
116
- StructC>::value));
117
- EXPECT_TRUE((BarIsCallableConv<TypeWithBarFunction, StructA&, StructB&,
118
- StructC>::value));
119
- EXPECT_TRUE((BarIsCallableConv<TypeWithBarFunction, StructA&, StructB,
120
- StructC>::value));
121
- EXPECT_TRUE((BarIsCallableConv<TypeWithBarFunctionAndConvertibleReturnType,
122
- StructA&, const StructB&, StructC>::value));
123
- EXPECT_TRUE((BarIsCallableConv<TypeWithBarFunctionAndConvertibleReturnType,
124
- StructA&, StructB&, StructC>::value));
125
- EXPECT_TRUE((BarIsCallableConv<TypeWithBarFunctionAndConvertibleReturnType,
126
- StructA&, StructB, StructC>::value));
127
-
128
- EXPECT_FALSE(
129
- (BarIsCallableConv<int, StructA&, const StructB&, StructC>::value));
130
- EXPECT_FALSE((BarIsCallableConv<TypeWithBarFunction&, StructA&,
131
- const StructB&, StructC>::value));
132
- EXPECT_FALSE((BarIsCallableConv<TypeWithBarFunction, StructA, const StructB&,
133
- StructC>::value));
134
- EXPECT_FALSE((BarIsCallableConv<TypeWithBarFunctionAndConvertibleReturnType&,
135
- StructA&, const StructB&, StructC>::value));
136
- EXPECT_FALSE((BarIsCallableConv<TypeWithBarFunctionAndConvertibleReturnType,
137
- StructA, const StructB&, StructC>::value));
138
- }
139
-
140
104
  TEST(VoidTTest, BasicUsage) {
141
105
  StaticAssertTypeEq<void, absl::void_t<Dummy>>();
142
106
  StaticAssertTypeEq<void, absl::void_t<Dummy, Dummy, Dummy>>();
143
107
  }
144
108
 
145
- TEST(ConjunctionTest, BasicBooleanLogic) {
146
- EXPECT_TRUE(absl::conjunction<>::value);
147
- EXPECT_TRUE(absl::conjunction<std::true_type>::value);
148
- EXPECT_TRUE((absl::conjunction<std::true_type, std::true_type>::value));
149
- EXPECT_FALSE((absl::conjunction<std::true_type, std::false_type>::value));
150
- EXPECT_FALSE((absl::conjunction<std::false_type, std::true_type>::value));
151
- EXPECT_FALSE((absl::conjunction<std::false_type, std::false_type>::value));
152
- }
153
-
154
- struct MyTrueType {
155
- static constexpr bool value = true;
156
- };
157
-
158
- struct MyFalseType {
159
- static constexpr bool value = false;
160
- };
161
-
162
- TEST(ConjunctionTest, ShortCircuiting) {
163
- EXPECT_FALSE(
164
- (absl::conjunction<std::true_type, std::false_type, Dummy>::value));
165
- EXPECT_TRUE((std::is_base_of<MyFalseType,
166
- absl::conjunction<std::true_type, MyFalseType,
167
- std::false_type>>::value));
168
- EXPECT_TRUE(
169
- (std::is_base_of<MyTrueType,
170
- absl::conjunction<std::true_type, MyTrueType>>::value));
171
- }
172
-
173
- TEST(DisjunctionTest, BasicBooleanLogic) {
174
- EXPECT_FALSE(absl::disjunction<>::value);
175
- EXPECT_FALSE(absl::disjunction<std::false_type>::value);
176
- EXPECT_TRUE((absl::disjunction<std::true_type, std::true_type>::value));
177
- EXPECT_TRUE((absl::disjunction<std::true_type, std::false_type>::value));
178
- EXPECT_TRUE((absl::disjunction<std::false_type, std::true_type>::value));
179
- EXPECT_FALSE((absl::disjunction<std::false_type, std::false_type>::value));
180
- }
181
-
182
- TEST(DisjunctionTest, ShortCircuiting) {
183
- EXPECT_TRUE(
184
- (absl::disjunction<std::false_type, std::true_type, Dummy>::value));
185
- EXPECT_TRUE((
186
- std::is_base_of<MyTrueType, absl::disjunction<std::false_type, MyTrueType,
187
- std::true_type>>::value));
188
- EXPECT_TRUE((
189
- std::is_base_of<MyFalseType,
190
- absl::disjunction<std::false_type, MyFalseType>>::value));
191
- }
192
-
193
- TEST(NegationTest, BasicBooleanLogic) {
194
- EXPECT_FALSE(absl::negation<std::true_type>::value);
195
- EXPECT_FALSE(absl::negation<MyTrueType>::value);
196
- EXPECT_TRUE(absl::negation<std::false_type>::value);
197
- EXPECT_TRUE(absl::negation<MyFalseType>::value);
198
- }
199
-
200
- // all member functions are trivial
201
- class Trivial {
202
- int n_;
203
- };
204
-
205
- struct TrivialDestructor {
206
- ~TrivialDestructor() = default;
207
- };
208
-
209
- struct NontrivialDestructor {
210
- ~NontrivialDestructor() {}
211
- };
212
-
213
- struct DeletedDestructor {
214
- ~DeletedDestructor() = delete;
215
- };
216
-
217
- class TrivialDefaultCtor {
218
- public:
219
- TrivialDefaultCtor() = default;
220
- explicit TrivialDefaultCtor(int n) : n_(n) {}
221
-
222
- private:
223
- int n_;
224
- };
225
-
226
- class NontrivialDefaultCtor {
227
- public:
228
- NontrivialDefaultCtor() : n_(1) {}
229
-
230
- private:
231
- int n_;
232
- };
233
-
234
- class DeletedDefaultCtor {
235
- public:
236
- DeletedDefaultCtor() = delete;
237
- explicit DeletedDefaultCtor(int n) : n_(n) {}
238
-
239
- private:
240
- int n_;
241
- };
242
-
243
- class TrivialMoveCtor {
244
- public:
245
- explicit TrivialMoveCtor(int n) : n_(n) {}
246
- TrivialMoveCtor(TrivialMoveCtor&&) = default;
247
- TrivialMoveCtor& operator=(const TrivialMoveCtor& t) {
248
- n_ = t.n_;
249
- return *this;
250
- }
251
-
252
- private:
253
- int n_;
254
- };
255
-
256
- class NontrivialMoveCtor {
257
- public:
258
- explicit NontrivialMoveCtor(int n) : n_(n) {}
259
- NontrivialMoveCtor(NontrivialMoveCtor&& t) noexcept : n_(t.n_) {}
260
- NontrivialMoveCtor& operator=(const NontrivialMoveCtor&) = default;
261
-
262
- private:
263
- int n_;
264
- };
265
-
266
- class TrivialCopyCtor {
267
- public:
268
- explicit TrivialCopyCtor(int n) : n_(n) {}
269
- TrivialCopyCtor(const TrivialCopyCtor&) = default;
270
- TrivialCopyCtor& operator=(const TrivialCopyCtor& t) {
271
- n_ = t.n_;
272
- return *this;
273
- }
274
-
275
- private:
276
- int n_;
277
- };
278
-
279
- class NontrivialCopyCtor {
280
- public:
281
- explicit NontrivialCopyCtor(int n) : n_(n) {}
282
- NontrivialCopyCtor(const NontrivialCopyCtor& t) : n_(t.n_) {}
283
- NontrivialCopyCtor& operator=(const NontrivialCopyCtor&) = default;
284
-
285
- private:
286
- int n_;
287
- };
288
-
289
- class DeletedCopyCtor {
290
- public:
291
- explicit DeletedCopyCtor(int n) : n_(n) {}
292
- DeletedCopyCtor(const DeletedCopyCtor&) = delete;
293
- DeletedCopyCtor& operator=(const DeletedCopyCtor&) = default;
294
-
295
- private:
296
- int n_;
297
- };
298
-
299
- class TrivialMoveAssign {
300
- public:
301
- explicit TrivialMoveAssign(int n) : n_(n) {}
302
- TrivialMoveAssign(const TrivialMoveAssign& t) : n_(t.n_) {}
303
- TrivialMoveAssign& operator=(TrivialMoveAssign&&) = default;
304
- ~TrivialMoveAssign() {} // can have nontrivial destructor
305
- private:
306
- int n_;
307
- };
308
-
309
- class NontrivialMoveAssign {
310
- public:
311
- explicit NontrivialMoveAssign(int n) : n_(n) {}
312
- NontrivialMoveAssign(const NontrivialMoveAssign&) = default;
313
- NontrivialMoveAssign& operator=(NontrivialMoveAssign&& t) noexcept {
314
- n_ = t.n_;
315
- return *this;
316
- }
317
-
318
- private:
319
- int n_;
320
- };
321
-
322
- class TrivialCopyAssign {
323
- public:
324
- explicit TrivialCopyAssign(int n) : n_(n) {}
325
- TrivialCopyAssign(const TrivialCopyAssign& t) : n_(t.n_) {}
326
- TrivialCopyAssign& operator=(const TrivialCopyAssign& t) = default;
327
- ~TrivialCopyAssign() {} // can have nontrivial destructor
328
- private:
329
- int n_;
330
- };
331
-
332
- class NontrivialCopyAssign {
333
- public:
334
- explicit NontrivialCopyAssign(int n) : n_(n) {}
335
- NontrivialCopyAssign(const NontrivialCopyAssign&) = default;
336
- NontrivialCopyAssign& operator=(const NontrivialCopyAssign& t) {
337
- n_ = t.n_;
338
- return *this;
339
- }
340
-
341
- private:
342
- int n_;
343
- };
344
-
345
- class DeletedCopyAssign {
346
- public:
347
- explicit DeletedCopyAssign(int n) : n_(n) {}
348
- DeletedCopyAssign(const DeletedCopyAssign&) = default;
349
- DeletedCopyAssign& operator=(const DeletedCopyAssign&) = delete;
350
-
351
- private:
352
- int n_;
353
- };
354
-
355
- struct MovableNonCopyable {
356
- MovableNonCopyable() = default;
357
- MovableNonCopyable(const MovableNonCopyable&) = delete;
358
- MovableNonCopyable(MovableNonCopyable&&) = default;
359
- MovableNonCopyable& operator=(const MovableNonCopyable&) = delete;
360
- MovableNonCopyable& operator=(MovableNonCopyable&&) = default;
361
- };
362
-
363
- struct NonCopyableOrMovable {
364
- NonCopyableOrMovable() = default;
365
- virtual ~NonCopyableOrMovable() = default;
366
- NonCopyableOrMovable(const NonCopyableOrMovable&) = delete;
367
- NonCopyableOrMovable(NonCopyableOrMovable&&) = delete;
368
- NonCopyableOrMovable& operator=(const NonCopyableOrMovable&) = delete;
369
- NonCopyableOrMovable& operator=(NonCopyableOrMovable&&) = delete;
370
- };
371
-
372
- class Base {
373
- public:
374
- virtual ~Base() {}
375
- };
376
-
377
- TEST(TypeTraitsTest, TestIsFunction) {
378
- struct Callable {
379
- void operator()() {}
380
- };
381
- EXPECT_TRUE(absl::is_function<void()>::value);
382
- EXPECT_TRUE(absl::is_function<void()&>::value);
383
- EXPECT_TRUE(absl::is_function<void() const>::value);
384
- EXPECT_TRUE(absl::is_function<void() noexcept>::value);
385
- EXPECT_TRUE(absl::is_function<void(...) noexcept>::value);
386
-
387
- EXPECT_FALSE(absl::is_function<void (*)()>::value);
388
- EXPECT_FALSE(absl::is_function<void (&)()>::value);
389
- EXPECT_FALSE(absl::is_function<int>::value);
390
- EXPECT_FALSE(absl::is_function<Callable>::value);
391
- }
392
-
393
109
  TEST(TypeTraitsTest, TestRemoveCVRef) {
394
110
  EXPECT_TRUE(
395
111
  (std::is_same<typename absl::remove_cvref<int>::type, int>::value));
@@ -418,124 +134,6 @@ TEST(TypeTraitsTest, TestRemoveCVRef) {
418
134
  int[2]>::value));
419
135
  }
420
136
 
421
- #define ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(trait_name, ...) \
422
- EXPECT_TRUE((std::is_same<typename std::trait_name<__VA_ARGS__>::type, \
423
- absl::trait_name##_t<__VA_ARGS__>>::value))
424
-
425
- TEST(TypeTraitsTest, TestRemoveCVAliases) {
426
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_cv, int);
427
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_cv, const int);
428
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_cv, volatile int);
429
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_cv, const volatile int);
430
-
431
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_const, int);
432
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_const, const int);
433
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_const, volatile int);
434
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_const, const volatile int);
435
-
436
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_volatile, int);
437
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_volatile, const int);
438
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_volatile, volatile int);
439
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_volatile, const volatile int);
440
- }
441
-
442
- TEST(TypeTraitsTest, TestAddCVAliases) {
443
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_cv, int);
444
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_cv, const int);
445
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_cv, volatile int);
446
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_cv, const volatile int);
447
-
448
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_const, int);
449
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_const, const int);
450
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_const, volatile int);
451
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_const, const volatile int);
452
-
453
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_volatile, int);
454
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_volatile, const int);
455
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_volatile, volatile int);
456
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_volatile, const volatile int);
457
- }
458
-
459
- TEST(TypeTraitsTest, TestReferenceAliases) {
460
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_reference, int);
461
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_reference, volatile int);
462
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_reference, int&);
463
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_reference, volatile int&);
464
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_reference, int&&);
465
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_reference, volatile int&&);
466
-
467
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_lvalue_reference, int);
468
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_lvalue_reference, volatile int);
469
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_lvalue_reference, int&);
470
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_lvalue_reference, volatile int&);
471
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_lvalue_reference, int&&);
472
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_lvalue_reference, volatile int&&);
473
-
474
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_rvalue_reference, int);
475
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_rvalue_reference, volatile int);
476
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_rvalue_reference, int&);
477
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_rvalue_reference, volatile int&);
478
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_rvalue_reference, int&&);
479
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_rvalue_reference, volatile int&&);
480
- }
481
-
482
- TEST(TypeTraitsTest, TestPointerAliases) {
483
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_pointer, int*);
484
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_pointer, volatile int*);
485
-
486
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_pointer, int);
487
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(add_pointer, volatile int);
488
- }
489
-
490
- TEST(TypeTraitsTest, TestSignednessAliases) {
491
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(make_signed, int);
492
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(make_signed, volatile int);
493
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(make_signed, unsigned);
494
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(make_signed, volatile unsigned);
495
-
496
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(make_unsigned, int);
497
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(make_unsigned, volatile int);
498
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(make_unsigned, unsigned);
499
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(make_unsigned, volatile unsigned);
500
- }
501
-
502
- TEST(TypeTraitsTest, TestExtentAliases) {
503
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_extent, int[]);
504
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_extent, int[1]);
505
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_extent, int[1][1]);
506
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_extent, int[][1]);
507
-
508
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_all_extents, int[]);
509
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_all_extents, int[1]);
510
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_all_extents, int[1][1]);
511
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(remove_all_extents, int[][1]);
512
- }
513
-
514
- TEST(TypeTraitsTest, TestDecay) {
515
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, int);
516
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, const int);
517
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, volatile int);
518
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, const volatile int);
519
-
520
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, int&);
521
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, const int&);
522
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, volatile int&);
523
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, const volatile int&);
524
-
525
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, int&);
526
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, const int&);
527
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, volatile int&);
528
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, const volatile int&);
529
-
530
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, int[1]);
531
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, int[1][1]);
532
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, int[][1]);
533
-
534
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, int());
535
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, int(float)); // NOLINT
536
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(decay, int(char, ...)); // NOLINT
537
- }
538
-
539
137
  struct TypeA {};
540
138
  struct TypeB {};
541
139
  struct TypeC {};
@@ -568,36 +166,6 @@ struct GetTypeT {
568
166
  // NOTE: TypeD is intentionally not handled
569
167
  } constexpr GetType = {};
570
168
 
571
- TEST(TypeTraitsTest, TestEnableIf) {
572
- EXPECT_EQ(TypeEnum::A, GetType(Wrap<TypeA>()));
573
- EXPECT_EQ(TypeEnum::B, GetType(Wrap<TypeB>()));
574
- EXPECT_EQ(TypeEnum::C, GetType(Wrap<TypeC>()));
575
- }
576
-
577
- TEST(TypeTraitsTest, TestConditional) {
578
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(conditional, true, int, char);
579
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(conditional, false, int, char);
580
- }
581
-
582
- // TODO(calabrese) Check with specialized std::common_type
583
- TEST(TypeTraitsTest, TestCommonType) {
584
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(common_type, int);
585
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(common_type, int, char);
586
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(common_type, int, char, int);
587
-
588
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(common_type, int&);
589
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(common_type, int, char&);
590
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(common_type, int, char, int&);
591
- }
592
-
593
- TEST(TypeTraitsTest, TestUnderlyingType) {
594
- enum class enum_char : char {};
595
- enum class enum_long_long : long long {}; // NOLINT(runtime/int)
596
-
597
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(underlying_type, enum_char);
598
- ABSL_INTERNAL_EXPECT_ALIAS_EQUIVALENCE(underlying_type, enum_long_long);
599
- }
600
-
601
169
  struct GetTypeExtT {
602
170
  template <typename T>
603
171
  absl::result_of_t<const GetTypeT&(T)> operator()(T&& arg) const {
@@ -765,51 +333,6 @@ TEST(TriviallyRelocatable, UserProvidedDestructor) {
765
333
  static_assert(!absl::is_trivially_relocatable<S>::value, "");
766
334
  }
767
335
 
768
- // TODO(b/275003464): remove the opt-out for Clang on Windows once
769
- // __is_trivially_relocatable is used there again.
770
- // TODO(b/324278148): remove the opt-out for Apple once
771
- // __is_trivially_relocatable is fixed there.
772
- // TODO(b/325479096): remove the opt-out for Clang once
773
- // __is_trivially_relocatable is fixed there.
774
- #if defined(ABSL_HAVE_ATTRIBUTE_TRIVIAL_ABI) && \
775
- ABSL_HAVE_BUILTIN(__is_trivially_relocatable) && \
776
- (defined(__cpp_impl_trivially_relocatable) || \
777
- (!defined(__clang__) && !defined(__APPLE__) && !defined(__NVCC__)))
778
- // A type marked with the "trivial ABI" attribute is trivially relocatable even
779
- // if it has user-provided special members.
780
- TEST(TriviallyRelocatable, TrivialAbi) {
781
- struct ABSL_ATTRIBUTE_TRIVIAL_ABI S {
782
- S(S&&) {} // NOLINT(modernize-use-equals-default)
783
- S(const S&) {} // NOLINT(modernize-use-equals-default)
784
- S& operator=(S&&) { return *this; }
785
- S& operator=(const S&) { return *this; }
786
- ~S() {} // NOLINT(modernize-use-equals-default)
787
- };
788
-
789
- static_assert(absl::is_trivially_relocatable<S>::value, "");
790
- }
791
- #endif
792
-
793
- // TODO(b/275003464): remove the opt-out for Clang on Windows once
794
- // __is_trivially_relocatable is used there again.
795
- // TODO(b/324278148): remove the opt-out for Apple once
796
- // __is_trivially_relocatable is fixed there.
797
- #if defined(ABSL_HAVE_ATTRIBUTE_TRIVIAL_ABI) && \
798
- ABSL_HAVE_BUILTIN(__is_trivially_relocatable) && defined(__clang__) && \
799
- !(defined(_WIN32) || defined(_WIN64)) && !defined(__APPLE__) && \
800
- !defined(__NVCC__)
801
- // A type marked with the "trivial ABI" attribute is trivially relocatable even
802
- // if it has a user-provided copy constructor and a user-provided destructor.
803
- TEST(TriviallyRelocatable, TrivialAbi_NoUserProvidedMove) {
804
- struct ABSL_ATTRIBUTE_TRIVIAL_ABI S {
805
- S(const S&) {} // NOLINT(modernize-use-equals-default)
806
- ~S() {} // NOLINT(modernize-use-equals-default)
807
- };
808
-
809
- static_assert(absl::is_trivially_relocatable<S>::value, "");
810
- }
811
- #endif
812
-
813
336
  #ifdef ABSL_HAVE_CONSTANT_EVALUATED
814
337
 
815
338
  constexpr int64_t NegateIfConstantEvaluated(int64_t i) {
@@ -12,6 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
16
+ load("@rules_cc//cc:cc_library.bzl", "cc_library")
17
+ load("@rules_cc//cc:cc_test.bzl", "cc_test")
15
18
  load(
16
19
  "//absl:copts/configure_copts.bzl",
17
20
  "ABSL_DEFAULT_COPTS",
@@ -41,6 +44,7 @@ cc_library(
41
44
  deps = [
42
45
  "//absl/base:config",
43
46
  "//absl/base:core_headers",
47
+ "//absl/base:endian",
44
48
  ],
45
49
  )
46
50
 
@@ -55,7 +59,6 @@ cc_binary(
55
59
  "//absl/base:core_headers",
56
60
  "//absl/random",
57
61
  "@google_benchmark//:benchmark_main",
58
- "@googletest//:gtest",
59
62
  ],
60
63
  )
61
64
 
@@ -114,8 +117,9 @@ cc_test(
114
117
  ],
115
118
  )
116
119
 
117
- cc_test(
120
+ cc_binary(
118
121
  name = "int128_benchmark",
122
+ testonly = True,
119
123
  srcs = ["int128_benchmark.cc"],
120
124
  copts = ABSL_TEST_COPTS,
121
125
  linkopts = ABSL_DEFAULT_LINKOPTS,
@@ -123,8 +127,8 @@ cc_test(
123
127
  deps = [
124
128
  ":int128",
125
129
  "//absl/base:config",
130
+ "//absl/random",
126
131
  "@google_benchmark//:benchmark_main",
127
- "@googletest//:gtest",
128
132
  ],
129
133
  )
130
134
 
@@ -23,7 +23,9 @@ absl_cc_library(
23
23
  COPTS
24
24
  ${ABSL_DEFAULT_COPTS}
25
25
  DEPS
26
+ absl::config
26
27
  absl::core_headers
28
+ absl::endian
27
29
  PUBLIC
28
30
  )
29
31
 
@@ -27,6 +27,10 @@
27
27
  // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1355r2.html
28
28
  // P1956R1:
29
29
  // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1956r1.pdf
30
+ // P0463R1
31
+ // https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0463r1.html
32
+ // P1272R4
33
+ // https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1272r4.html
30
34
  //
31
35
  // When using a standard library that implements these functions, we use the
32
36
  // standard library's implementation.
@@ -45,6 +49,7 @@
45
49
  #endif
46
50
 
47
51
  #include "absl/base/attributes.h"
52
+ #include "absl/base/internal/endian.h"
48
53
  #include "absl/numeric/internal/bits.h"
49
54
 
50
55
  namespace absl {
@@ -63,14 +68,14 @@ using std::rotr;
63
68
 
64
69
  // Rotating functions
65
70
  template <class T>
66
- ABSL_MUST_USE_RESULT constexpr
71
+ [[nodiscard]] constexpr
67
72
  typename std::enable_if<std::is_unsigned<T>::value, T>::type
68
73
  rotl(T x, int s) noexcept {
69
74
  return numeric_internal::RotateLeft(x, s);
70
75
  }
71
76
 
72
77
  template <class T>
73
- ABSL_MUST_USE_RESULT constexpr
78
+ [[nodiscard]] constexpr
74
79
  typename std::enable_if<std::is_unsigned<T>::value, T>::type
75
80
  rotr(T x, int s) noexcept {
76
81
  return numeric_internal::RotateRight(x, s);
@@ -190,6 +195,67 @@ ABSL_INTERNAL_CONSTEXPR_CLZ inline
190
195
 
191
196
  #endif
192
197
 
198
+ #if defined(__cpp_lib_endian) && __cpp_lib_endian >= 201907L
199
+
200
+ // https://en.cppreference.com/w/cpp/types/endian
201
+ //
202
+ // Indicates the endianness of all scalar types:
203
+ // * If all scalar types are little-endian, `absl::endian::native` equals
204
+ // absl::endian::little.
205
+ // * If all scalar types are big-endian, `absl::endian::native` equals
206
+ // `absl::endian::big`.
207
+ // * Platforms that use anything else are unsupported.
208
+ using std::endian;
209
+
210
+ #else
211
+
212
+ enum class endian {
213
+ little,
214
+ big,
215
+ #if defined(ABSL_IS_LITTLE_ENDIAN)
216
+ native = little
217
+ #elif defined(ABSL_IS_BIG_ENDIAN)
218
+ native = big
219
+ #else
220
+ #error "Endian detection needs to be set up for this platform"
221
+ #endif
222
+ };
223
+
224
+ #endif // defined(__cpp_lib_endian) && __cpp_lib_endian >= 201907L
225
+
226
+ #if defined(__cpp_lib_byteswap) && __cpp_lib_byteswap >= 202110L
227
+
228
+ // https://en.cppreference.com/w/cpp/numeric/byteswap
229
+ //
230
+ // Reverses the bytes in the given integer value `x`.
231
+ //
232
+ // `absl::byteswap` participates in overload resolution only if `T` satisfies
233
+ // integral, i.e., `T` is an integer type. The program is ill-formed if `T` has
234
+ // padding bits.
235
+ using std::byteswap;
236
+
237
+ #else
238
+
239
+ template <class T>
240
+ [[nodiscard]] constexpr T byteswap(T x) noexcept {
241
+ static_assert(std::is_integral_v<T>,
242
+ "byteswap requires an integral argument");
243
+ static_assert(
244
+ sizeof(T) == 1 || sizeof(T) == 2 || sizeof(T) == 4 || sizeof(T) == 8,
245
+ "byteswap works only with 8, 16, 32, or 64-bit integers");
246
+ if constexpr (sizeof(T) == 1) {
247
+ return x;
248
+ } else if constexpr (sizeof(T) == 2) {
249
+ return static_cast<T>(gbswap_16(static_cast<uint16_t>(x)));
250
+ } else if constexpr (sizeof(T) == 4) {
251
+ return static_cast<T>(gbswap_32(static_cast<uint32_t>(x)));
252
+ } else if constexpr (sizeof(T) == 8) {
253
+ return static_cast<T>(gbswap_64(static_cast<uint64_t>(x)));
254
+ }
255
+ }
256
+
257
+ #endif // defined(__cpp_lib_byteswap) && __cpp_lib_byteswap >= 202110L
258
+
193
259
  ABSL_NAMESPACE_END
194
260
  } // namespace absl
195
261