re2 1.24.0 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/LICENSE +15 -20
  2. package/README.md +63 -4
  3. package/binding.gyp +1 -2
  4. package/lib/addon.cc +9 -5
  5. package/lib/exec.cc +4 -4
  6. package/lib/match.cc +4 -4
  7. package/lib/new.cc +6 -6
  8. package/lib/pattern.cc +148 -1
  9. package/lib/replace.cc +5 -4
  10. package/lib/search.cc +1 -1
  11. package/lib/set.cc +85 -10
  12. package/lib/test.cc +1 -1
  13. package/lib/unicode_properties.h +15840 -0
  14. package/lib/wrapped_re2.h +40 -4
  15. package/lib/wrapped_re2_set.h +3 -1
  16. package/llms-full.txt +497 -0
  17. package/llms.txt +135 -0
  18. package/package.json +19 -11
  19. package/re2.d.ts +2 -0
  20. package/re2.js +1 -0
  21. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +87 -74
  22. package/vendor/abseil-cpp/CMakeLists.txt +3 -3
  23. package/vendor/abseil-cpp/FAQ.md +130 -79
  24. package/vendor/abseil-cpp/MODULE.bazel +6 -7
  25. package/vendor/abseil-cpp/absl/BUILD.bazel +6 -0
  26. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +4 -0
  27. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +4 -0
  28. package/vendor/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  29. package/vendor/abseil-cpp/absl/algorithm/container.h +164 -17
  30. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +390 -13
  31. package/vendor/abseil-cpp/absl/base/BUILD.bazel +53 -6
  32. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +28 -4
  33. package/vendor/abseil-cpp/absl/base/attributes.h +61 -42
  34. package/vendor/abseil-cpp/absl/base/call_once.h +1 -0
  35. package/vendor/abseil-cpp/absl/base/casts.h +8 -1
  36. package/vendor/abseil-cpp/absl/base/casts_test.cc +3 -6
  37. package/vendor/abseil-cpp/absl/base/config.h +53 -9
  38. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +9 -9
  39. package/vendor/abseil-cpp/absl/base/fast_type_id.h +30 -2
  40. package/vendor/abseil-cpp/absl/base/fast_type_id_test.cc +3 -0
  41. package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +15 -12
  42. package/vendor/abseil-cpp/absl/base/internal/hardening.h +136 -0
  43. package/vendor/abseil-cpp/absl/base/internal/hardening_test.cc +168 -0
  44. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +2 -2
  45. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -0
  46. package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  47. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +1 -2
  48. package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  49. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  50. package/vendor/abseil-cpp/absl/base/macros.h +36 -20
  51. package/vendor/abseil-cpp/absl/base/nullability.h +4 -3
  52. package/vendor/abseil-cpp/absl/base/optimization.h +3 -2
  53. package/vendor/abseil-cpp/absl/base/optimization_test.cc +4 -3
  54. package/vendor/abseil-cpp/absl/base/options.h +55 -1
  55. package/vendor/abseil-cpp/absl/base/policy_checks.h +5 -5
  56. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  57. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  58. package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +19 -28
  59. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -0
  60. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +2 -0
  61. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +3 -2
  62. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  63. package/vendor/abseil-cpp/absl/container/BUILD.bazel +19 -7
  64. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +6 -5
  65. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +3 -5
  66. package/vendor/abseil-cpp/absl/container/btree_set.h +5 -5
  67. package/vendor/abseil-cpp/absl/container/btree_test.cc +11 -14
  68. package/vendor/abseil-cpp/absl/container/chunked_queue.h +8 -6
  69. package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +5 -5
  70. package/vendor/abseil-cpp/absl/container/fixed_array.h +14 -13
  71. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +3 -3
  72. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +18 -6
  73. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +34 -1
  74. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +21 -7
  75. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +39 -7
  76. package/vendor/abseil-cpp/absl/container/inlined_vector.h +29 -29
  77. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2 -2
  78. package/vendor/abseil-cpp/absl/container/internal/btree.h +32 -24
  79. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +16 -17
  80. package/vendor/abseil-cpp/absl/container/internal/common.h +6 -5
  81. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  82. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +16 -16
  83. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +13 -13
  84. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +41 -31
  85. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +2 -2
  86. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +4 -4
  87. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +3 -3
  88. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +27 -19
  89. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -2
  90. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -17
  91. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +12 -30
  92. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +28 -28
  93. package/vendor/abseil-cpp/absl/container/internal/layout.h +13 -13
  94. package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +3 -2
  95. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +60 -62
  96. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +59 -39
  97. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +619 -326
  98. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +25 -2
  99. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +4 -4
  100. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +575 -159
  101. package/vendor/abseil-cpp/absl/container/linked_hash_map.h +2 -2
  102. package/vendor/abseil-cpp/absl/container/node_hash_map.h +27 -15
  103. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +34 -0
  104. package/vendor/abseil-cpp/absl/container/node_hash_set.h +25 -11
  105. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +39 -7
  106. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +7 -4
  107. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +0 -1
  108. package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +2 -3
  109. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +2 -1
  110. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +6 -6
  111. package/vendor/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  112. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  113. package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  114. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +143 -81
  115. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +9 -31
  116. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +3 -33
  117. package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  118. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +2 -1
  119. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +12 -2
  120. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +2 -3
  121. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -0
  122. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -4
  123. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  124. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +4 -0
  125. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +46 -36
  126. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +18 -58
  127. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +5 -48
  128. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +10 -124
  129. package/vendor/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  130. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +58 -106
  131. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +37 -36
  132. package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  133. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -3
  134. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +1 -1
  135. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  136. package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +1 -1
  137. package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +5 -5
  138. package/vendor/abseil-cpp/absl/flags/flag_test.cc +30 -30
  139. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +4 -4
  140. package/vendor/abseil-cpp/absl/flags/internal/flag.h +6 -6
  141. package/vendor/abseil-cpp/absl/flags/marshalling.h +2 -28
  142. package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +12 -11
  143. package/vendor/abseil-cpp/absl/flags/reflection_test.cc +1 -1
  144. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +26 -1
  145. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +29 -1
  146. package/vendor/abseil-cpp/absl/functional/any_invocable.h +13 -14
  147. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +46 -47
  148. package/vendor/abseil-cpp/absl/functional/bind_back.h +79 -0
  149. package/vendor/abseil-cpp/absl/functional/bind_back_test.cc +237 -0
  150. package/vendor/abseil-cpp/absl/functional/bind_front.h +7 -1
  151. package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +4 -4
  152. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +2 -2
  153. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +28 -28
  154. package/vendor/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
  155. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  156. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  157. package/vendor/abseil-cpp/absl/functional/overload_test.cc +13 -13
  158. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +1 -2
  159. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +1 -2
  160. package/vendor/abseil-cpp/absl/hash/hash.h +1 -1
  161. package/vendor/abseil-cpp/absl/hash/hash_test.cc +14 -20
  162. package/vendor/abseil-cpp/absl/hash/hash_testing.h +11 -9
  163. package/vendor/abseil-cpp/absl/hash/internal/city.cc +39 -51
  164. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +165 -47
  165. package/vendor/abseil-cpp/absl/hash/internal/hash.h +86 -27
  166. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +36 -1
  167. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +8 -5
  168. package/vendor/abseil-cpp/absl/log/BUILD.bazel +5 -2
  169. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +5 -3
  170. package/vendor/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  171. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +15 -1
  172. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -4
  173. package/vendor/abseil-cpp/absl/log/internal/log_message.h +14 -0
  174. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  175. package/vendor/abseil-cpp/absl/log/internal/proto.cc +13 -0
  176. package/vendor/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  177. package/vendor/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  178. package/vendor/abseil-cpp/absl/log/internal/structured_proto_test.cc +3 -3
  179. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +2 -2
  180. package/vendor/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +3 -3
  181. package/vendor/abseil-cpp/absl/log/log_format_test.cc +19 -2
  182. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +18 -0
  183. package/vendor/abseil-cpp/absl/log/log_streamer.h +29 -2
  184. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +18 -0
  185. package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +1 -1
  186. package/vendor/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  187. package/vendor/abseil-cpp/absl/log/vlog_is_on_test.cc +6 -5
  188. package/vendor/abseil-cpp/absl/memory/memory.h +55 -5
  189. package/vendor/abseil-cpp/absl/memory/memory_test.cc +55 -1
  190. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
  191. package/vendor/abseil-cpp/absl/meta/internal/requires.h +1 -1
  192. package/vendor/abseil-cpp/absl/meta/type_traits.h +119 -55
  193. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +7 -7
  194. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +6 -6
  195. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +3 -1
  196. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +0 -4
  197. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +32 -33
  198. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +25 -2
  199. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +8 -5
  200. package/vendor/abseil-cpp/absl/random/BUILD.bazel +13 -1
  201. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +23 -2
  202. package/vendor/abseil-cpp/absl/random/benchmarks.cc +1 -1
  203. package/vendor/abseil-cpp/absl/random/beta_distribution.h +2 -2
  204. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  205. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +43 -0
  206. package/vendor/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  207. package/vendor/abseil-cpp/absl/random/distributions.h +17 -17
  208. package/vendor/abseil-cpp/absl/random/distributions_test.cc +4 -4
  209. package/vendor/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  210. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +4 -2
  211. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  212. package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  213. package/vendor/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  214. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  215. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +3 -2
  216. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +14 -40
  217. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  218. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +2 -2
  219. package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  220. package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +3 -2
  221. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  222. package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  223. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +3 -2
  224. package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +3 -2
  225. package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  226. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +4 -4
  227. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  228. package/vendor/abseil-cpp/absl/random/internal/traits.h +21 -0
  229. package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +5 -0
  230. package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  231. package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +2 -1
  232. package/vendor/abseil-cpp/absl/random/mocking_access.h +74 -0
  233. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +9 -19
  234. package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  235. package/vendor/abseil-cpp/absl/status/BUILD.bazel +81 -0
  236. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
  237. package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  238. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +26 -2
  239. package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +22 -8
  240. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +43 -43
  241. package/vendor/abseil-cpp/absl/status/status.cc +62 -70
  242. package/vendor/abseil-cpp/absl/status/status.h +249 -23
  243. package/vendor/abseil-cpp/absl/status/status_benchmark.cc +12 -0
  244. package/vendor/abseil-cpp/absl/status/status_builder.cc +196 -0
  245. package/vendor/abseil-cpp/absl/status/status_builder.h +978 -0
  246. package/vendor/abseil-cpp/absl/status/status_builder_test.cc +380 -0
  247. package/vendor/abseil-cpp/absl/status/status_macros.h +484 -0
  248. package/vendor/abseil-cpp/absl/status/status_macros_test.cc +634 -0
  249. package/vendor/abseil-cpp/absl/status/status_matchers.h +2 -1
  250. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +3 -4
  251. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  252. package/vendor/abseil-cpp/absl/status/status_test.cc +443 -13
  253. package/vendor/abseil-cpp/absl/status/statusor.h +69 -36
  254. package/vendor/abseil-cpp/absl/status/statusor_test.cc +132 -35
  255. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +42 -7
  256. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +33 -4
  257. package/vendor/abseil-cpp/absl/strings/ascii.h +1 -2
  258. package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +5 -5
  259. package/vendor/abseil-cpp/absl/strings/cord.cc +26 -7
  260. package/vendor/abseil-cpp/absl/strings/cord.h +23 -13
  261. package/vendor/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  262. package/vendor/abseil-cpp/absl/strings/cord_test.cc +85 -9
  263. package/vendor/abseil-cpp/absl/strings/escaping.cc +183 -35
  264. package/vendor/abseil-cpp/absl/strings/escaping.h +12 -2
  265. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +1 -3
  266. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +22 -18
  267. package/vendor/abseil-cpp/absl/strings/has_absl_stringify_test.cc +2 -2
  268. package/vendor/abseil-cpp/absl/strings/has_ostream_operator_test.cc +2 -2
  269. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +10 -10
  270. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +1 -1
  271. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  272. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  273. package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  274. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +2 -26
  275. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +23 -2
  276. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +6 -2
  277. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -24
  278. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +16 -41
  279. package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  280. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  281. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  282. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +12 -20
  283. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +510 -307
  284. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -1
  285. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +9 -10
  286. package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +6 -5
  287. package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  288. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
  289. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream_test.cc +111 -0
  290. package/vendor/abseil-cpp/absl/strings/numbers.cc +406 -0
  291. package/vendor/abseil-cpp/absl/strings/numbers.h +4 -0
  292. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +33 -0
  293. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +10 -6
  294. package/vendor/abseil-cpp/absl/strings/str_cat.h +36 -1
  295. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +1 -2
  296. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +28 -0
  297. package/vendor/abseil-cpp/absl/strings/str_join_test.cc +4 -4
  298. package/vendor/abseil-cpp/absl/strings/str_split.h +11 -6
  299. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +13 -0
  300. package/vendor/abseil-cpp/absl/strings/substitute.h +2 -2
  301. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +3 -0
  302. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +21 -0
  303. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  304. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +13 -0
  305. package/vendor/abseil-cpp/absl/synchronization/mutex.h +32 -2
  306. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +17 -3
  307. package/vendor/abseil-cpp/absl/time/BUILD.bazel +80 -0
  308. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +73 -0
  309. package/vendor/abseil-cpp/absl/time/clock.h +3 -0
  310. package/vendor/abseil-cpp/absl/time/clock_interface.cc +71 -0
  311. package/vendor/abseil-cpp/absl/time/clock_interface.h +93 -0
  312. package/vendor/abseil-cpp/absl/time/clock_interface_test.cc +128 -0
  313. package/vendor/abseil-cpp/absl/time/format.cc +3 -10
  314. package/vendor/abseil-cpp/absl/time/format_test.cc +12 -0
  315. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +90 -89
  316. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +80 -5
  317. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +1 -2
  318. package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  319. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  320. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
  321. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  322. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
  323. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
  324. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
  325. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
  326. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
  327. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
  328. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
  329. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +1 -1
  330. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +3 -3
  331. package/vendor/abseil-cpp/absl/time/simulated_clock.cc +225 -0
  332. package/vendor/abseil-cpp/absl/time/simulated_clock.h +109 -0
  333. package/vendor/abseil-cpp/absl/time/simulated_clock_test.cc +614 -0
  334. package/vendor/abseil-cpp/absl/types/BUILD.bazel +116 -0
  335. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +100 -0
  336. package/vendor/abseil-cpp/absl/types/any.h +26 -4
  337. package/vendor/abseil-cpp/absl/types/any_span.h +1067 -0
  338. package/vendor/abseil-cpp/absl/types/any_span_benchmark.cc +258 -0
  339. package/vendor/abseil-cpp/absl/types/any_span_test.cc +1210 -0
  340. package/vendor/abseil-cpp/absl/types/compare.h +4 -4
  341. package/vendor/abseil-cpp/absl/types/internal/any_span.h +477 -0
  342. package/vendor/abseil-cpp/absl/types/internal/span.h +5 -6
  343. package/vendor/abseil-cpp/absl/types/optional.h +30 -3
  344. package/vendor/abseil-cpp/absl/types/optional_ref.h +295 -0
  345. package/vendor/abseil-cpp/absl/types/optional_ref_test.cc +370 -0
  346. package/vendor/abseil-cpp/absl/types/source_location.cc +18 -0
  347. package/vendor/abseil-cpp/absl/types/source_location.h +172 -0
  348. package/vendor/abseil-cpp/absl/types/source_location_test.cc +139 -0
  349. package/vendor/abseil-cpp/absl/types/span.h +19 -23
  350. package/vendor/abseil-cpp/absl/types/variant.h +75 -18
  351. package/vendor/abseil-cpp/absl/types/variant_test.cc +23 -23
  352. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -0
  353. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +1 -0
  354. package/vendor/abseil-cpp/absl/utility/utility.h +99 -16
  355. package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -0
  356. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +10 -4
  357. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +13 -6
  358. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +10 -4
  359. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +12 -5
  360. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +9 -2
  361. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
  362. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +10 -3
  363. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +8 -2
  364. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +4 -3
  365. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +2 -2
  366. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -1
  367. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -1
  368. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
  369. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
  370. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
@@ -77,13 +77,13 @@ TEST(NonsecureURBGBase, StandardInterface) {
77
77
  static_assert(!std::is_copy_constructible<E>::value,
78
78
  "NonsecureURBGBase should not be copy constructible");
79
79
 
80
- static_assert(!absl::is_copy_assignable<E>::value,
80
+ static_assert(!std::is_copy_assignable<E>::value,
81
81
  "NonsecureURBGBase should not be copy assignable");
82
82
 
83
83
  static_assert(std::is_move_constructible<E>::value,
84
84
  "NonsecureURBGBase should be move constructible");
85
85
 
86
- static_assert(absl::is_move_assignable<E>::value,
86
+ static_assert(std::is_move_assignable<E>::value,
87
87
  "NonsecureURBGBase should be move assignable");
88
88
 
89
89
  static_assert(std::is_same<decltype(std::declval<E>()()), T>::value,
@@ -67,7 +67,7 @@ class pcg_engine {
67
67
  explicit pcg_engine(uint64_t seed_value = 0) { seed(seed_value); }
68
68
 
69
69
  template <class SeedSequence,
70
- typename = typename absl::enable_if_t<
70
+ typename = typename std::enable_if_t<
71
71
  !std::is_same<SeedSequence, pcg_engine>::value>>
72
72
  explicit pcg_engine(SeedSequence&& seq) {
73
73
  seed(seq);
@@ -90,7 +90,7 @@ class pcg_engine {
90
90
  }
91
91
 
92
92
  template <class SeedSequence>
93
- typename absl::enable_if_t<
93
+ typename std::enable_if_t<
94
94
  !std::is_convertible<SeedSequence, uint64_t>::value, void>
95
95
  seed(SeedSequence&& seq) {
96
96
  reseed(seq);
@@ -105,7 +105,7 @@ class pcg_engine {
105
105
  bool operator!=(const pcg_engine& other) const { return !(*this == other); }
106
106
 
107
107
  template <class CharT, class Traits>
108
- friend typename absl::enable_if_t<(sizeof(state_type) == 16),
108
+ friend typename std::enable_if_t<(sizeof(state_type) == 16),
109
109
  std::basic_ostream<CharT, Traits>&>
110
110
  operator<<(
111
111
  std::basic_ostream<CharT, Traits>& os, // NOLINT(runtime/references)
@@ -121,7 +121,7 @@ class pcg_engine {
121
121
  }
122
122
 
123
123
  template <class CharT, class Traits>
124
- friend typename absl::enable_if_t<(sizeof(state_type) <= 8),
124
+ friend typename std::enable_if_t<(sizeof(state_type) <= 8),
125
125
  std::basic_ostream<CharT, Traits>&>
126
126
  operator<<(
127
127
  std::basic_ostream<CharT, Traits>& os, // NOLINT(runtime/references)
@@ -134,7 +134,7 @@ class pcg_engine {
134
134
  }
135
135
 
136
136
  template <class CharT, class Traits>
137
- friend typename absl::enable_if_t<(sizeof(state_type) == 16),
137
+ friend typename std::enable_if_t<(sizeof(state_type) == 16),
138
138
  std::basic_istream<CharT, Traits>&>
139
139
  operator>>(
140
140
  std::basic_istream<CharT, Traits>& is, // NOLINT(runtime/references)
@@ -155,7 +155,7 @@ class pcg_engine {
155
155
  }
156
156
 
157
157
  template <class CharT, class Traits>
158
- friend typename absl::enable_if_t<(sizeof(state_type) <= 8),
158
+ friend typename std::enable_if_t<(sizeof(state_type) <= 8),
159
159
  std::basic_istream<CharT, Traits>&>
160
160
  operator>>(
161
161
  std::basic_istream<CharT, Traits>& is, // NOLINT(runtime/references)
@@ -18,6 +18,7 @@
18
18
  #include <bitset>
19
19
  #include <random>
20
20
  #include <sstream>
21
+ #include <type_traits>
21
22
 
22
23
  #include "gmock/gmock.h"
23
24
  #include "gtest/gtest.h"
@@ -169,13 +170,13 @@ TYPED_TEST(PCGEngineTest, RandomNumberEngineInterface) {
169
170
  static_assert(std::is_copy_constructible<E>::value,
170
171
  "engine_type must be copy constructible");
171
172
 
172
- static_assert(absl::is_copy_assignable<E>::value,
173
+ static_assert(std::is_copy_assignable<E>::value,
173
174
  "engine_type must be copy assignable");
174
175
 
175
176
  static_assert(std::is_move_constructible<E>::value,
176
177
  "engine_type must be move constructible");
177
178
 
178
- static_assert(absl::is_move_assignable<E>::value,
179
+ static_assert(std::is_move_assignable<E>::value,
179
180
  "engine_type must be move assignable");
180
181
 
181
182
  static_assert(std::is_same<decltype(std::declval<E>()()), T>::value,
@@ -31,9 +31,9 @@
31
31
 
32
32
  #include <cstdint>
33
33
  #include <cstring>
34
+ #include <optional> // IWYU pragma: keep
34
35
 
35
36
  #include "absl/random/internal/platform.h"
36
- #include "absl/types/optional.h" // IWYU pragma: keep
37
37
 
38
38
  #if !defined(__UCLIBC__) && defined(__GLIBC__) && \
39
39
  (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16))
@@ -115,12 +115,12 @@ static uint32_t GetAuxval(uint32_t hwcap_type) {
115
115
 
116
116
  #if defined(__APPLE__) && defined(ABSL_ARCH_AARCH64)
117
117
  template <typename T>
118
- static absl::optional<T> ReadSysctlByName(const char* name) {
118
+ static std::optional<T> ReadSysctlByName(const char* name) {
119
119
  T val;
120
120
  size_t val_size = sizeof(T);
121
121
  int ret = sysctlbyname(name, &val, &val_size, nullptr, 0);
122
122
  if (ret == -1) {
123
- return absl::nullopt;
123
+ return std::nullopt;
124
124
  }
125
125
  return val;
126
126
  }
@@ -210,7 +210,7 @@ bool CPUSupportsRandenHwAes() {
210
210
  // Newer XNU kernels support querying all capabilities in a single
211
211
  // sysctlbyname.
212
212
  #if defined(CAP_BIT_AdvSIMD) && defined(CAP_BIT_FEAT_AES)
213
- static const absl::optional<uint64_t> caps =
213
+ static const std::optional<uint64_t> caps =
214
214
  ReadSysctlByName<uint64_t>("hw.optional.arm.caps");
215
215
  if (caps.has_value()) {
216
216
  constexpr uint64_t kNeonAndAesCaps =
@@ -220,13 +220,13 @@ bool CPUSupportsRandenHwAes() {
220
220
  #endif
221
221
 
222
222
  // https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics#overview
223
- static const absl::optional<int> adv_simd =
223
+ static const std::optional<int> adv_simd =
224
224
  ReadSysctlByName<int>("hw.optional.AdvSIMD");
225
225
  if (adv_simd.value_or(0) == 0) {
226
226
  return false;
227
227
  }
228
228
  // https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics#3918855
229
- static const absl::optional<int> feat_aes =
229
+ static const std::optional<int> feat_aes =
230
230
  ReadSysctlByName<int>("hw.optional.arm.FEAT_AES");
231
231
  if (feat_aes.value_or(0) == 0) {
232
232
  return false;
@@ -63,7 +63,7 @@ class alignas(8) randen_engine {
63
63
  explicit randen_engine(result_type seed_value) { seed(seed_value); }
64
64
 
65
65
  template <class SeedSequence,
66
- typename = typename absl::enable_if_t<
66
+ typename = typename std::enable_if_t<
67
67
  !std::is_same<SeedSequence, randen_engine>::value>>
68
68
  explicit randen_engine(SeedSequence&& seq) {
69
69
  seed(seq);
@@ -93,7 +93,7 @@ class alignas(8) randen_engine {
93
93
  }
94
94
 
95
95
  template <class SeedSequence>
96
- typename absl::enable_if_t<
96
+ typename std::enable_if_t<
97
97
  !std::is_convertible<SeedSequence, result_type>::value>
98
98
  seed(SeedSequence&& seq) {
99
99
  // Zeroes the state.
@@ -18,6 +18,7 @@
18
18
  #include <bitset>
19
19
  #include <random>
20
20
  #include <sstream>
21
+ #include <type_traits>
21
22
 
22
23
  #include "gmock/gmock.h"
23
24
  #include "gtest/gtest.h"
@@ -170,13 +171,13 @@ TYPED_TEST(RandenEngineTypedTest, RandomNumberEngineInterface) {
170
171
  static_assert(std::is_copy_constructible<E>::value,
171
172
  "randen_engine must be copy constructible");
172
173
 
173
- static_assert(absl::is_copy_assignable<E>::value,
174
+ static_assert(std::is_copy_assignable<E>::value,
174
175
  "randen_engine must be copy assignable");
175
176
 
176
177
  static_assert(std::is_move_constructible<E>::value,
177
178
  "randen_engine must be move constructible");
178
179
 
179
- static_assert(absl::is_move_assignable<E>::value,
180
+ static_assert(std::is_move_assignable<E>::value,
180
181
  "randen_engine must be move assignable");
181
182
 
182
183
  static_assert(std::is_same<decltype(std::declval<E>()()), T>::value,
@@ -15,6 +15,7 @@
15
15
  #include "absl/random/internal/randen.h"
16
16
 
17
17
  #include <cstring>
18
+ #include <type_traits>
18
19
 
19
20
  #include "gtest/gtest.h"
20
21
  #include "absl/meta/type_traits.h"
@@ -27,13 +28,13 @@ TEST(RandenTest, CopyAndMove) {
27
28
  static_assert(std::is_copy_constructible<Randen>::value,
28
29
  "Randen must be copy constructible");
29
30
 
30
- static_assert(absl::is_copy_assignable<Randen>::value,
31
+ static_assert(std::is_copy_assignable<Randen>::value,
31
32
  "Randen must be copy assignable");
32
33
 
33
34
  static_assert(std::is_move_constructible<Randen>::value,
34
35
  "Randen must be move constructible");
35
36
 
36
- static_assert(absl::is_move_assignable<Randen>::value,
37
+ static_assert(std::is_move_assignable<Randen>::value,
37
38
  "Randen must be move assignable");
38
39
  }
39
40
 
@@ -20,6 +20,7 @@
20
20
  #include <initializer_list>
21
21
  #include <iterator>
22
22
  #include <memory>
23
+ #include <optional>
23
24
  #include <type_traits>
24
25
  #include <utility>
25
26
  #include <vector>
@@ -48,11 +49,11 @@ class SaltedSeedSeq {
48
49
  using inner_sequence_type = SSeq;
49
50
  using result_type = typename SSeq::result_type;
50
51
 
51
- SaltedSeedSeq() : seq_(absl::make_unique<SSeq>()) {}
52
+ SaltedSeedSeq() : seq_(std::make_unique<SSeq>()) {}
52
53
 
53
54
  template <typename Iterator>
54
55
  SaltedSeedSeq(Iterator begin, Iterator end)
55
- : seq_(absl::make_unique<SSeq>(begin, end)) {}
56
+ : seq_(std::make_unique<SSeq>(begin, end)) {}
56
57
 
57
58
  template <typename T>
58
59
  SaltedSeedSeq(std::initializer_list<T> il)
@@ -71,7 +72,7 @@ class SaltedSeedSeq {
71
72
  // The common case is that generate is called with ContiguousIterators
72
73
  // to uint arrays. Such contiguous memory regions may be optimized,
73
74
  // which we detect here.
74
- using TagType = absl::conditional_t<
75
+ using TagType = std::conditional_t<
75
76
  (std::is_same<U, uint32_t>::value &&
76
77
  (std::is_pointer<RandomAccessIterator>::value ||
77
78
  std::is_same<RandomAccessIterator,
@@ -141,14 +142,14 @@ struct is_salted_seed_seq<
141
142
  // non-salted seed parameters.
142
143
  template <
143
144
  typename SSeq, //
144
- typename EnableIf = absl::enable_if_t<is_salted_seed_seq<SSeq>::value>>
145
+ typename EnableIf = std::enable_if_t<is_salted_seed_seq<SSeq>::value>>
145
146
  SSeq MakeSaltedSeedSeq(SSeq&& seq) {
146
147
  return SSeq(std::forward<SSeq>(seq));
147
148
  }
148
149
 
149
150
  template <
150
151
  typename SSeq, //
151
- typename EnableIf = absl::enable_if_t<!is_salted_seed_seq<SSeq>::value>>
152
+ typename EnableIf = std::enable_if_t<!is_salted_seed_seq<SSeq>::value>>
152
153
  SaltedSeedSeq<typename std::decay<SSeq>::type> MakeSaltedSeedSeq(SSeq&& seq) {
153
154
  using sseq_type = typename std::decay<SSeq>::type;
154
155
  using result_type = typename sseq_type::result_type;
@@ -28,6 +28,7 @@
28
28
  #include <cstdint>
29
29
  #include <cstdlib>
30
30
  #include <cstring>
31
+ #include <optional>
31
32
  #include <string>
32
33
  #include <vector>
33
34
 
@@ -38,7 +39,6 @@
38
39
  #include "absl/strings/escaping.h"
39
40
  #include "absl/strings/string_view.h"
40
41
  #include "absl/strings/strip.h"
41
- #include "absl/types/optional.h"
42
42
  #include "absl/types/span.h"
43
43
 
44
44
  #if defined(_WIN32)
@@ -228,17 +228,17 @@ void MixIntoSeedMaterial(absl::Span<const uint32_t> sequence,
228
228
  }
229
229
  }
230
230
 
231
- absl::optional<uint32_t> GetSaltMaterial() {
231
+ std::optional<uint32_t> GetSaltMaterial() {
232
232
  // Salt must be common for all generators within the same process so read it
233
233
  // only once and store in static variable.
234
- static const auto salt_material = []() -> absl::optional<uint32_t> {
234
+ static const auto salt_material = []() -> std::optional<uint32_t> {
235
235
  uint32_t salt_value = 0;
236
236
 
237
237
  if (ReadSeedMaterialFromOSEntropy(absl::MakeSpan(&salt_value, 1))) {
238
238
  return salt_value;
239
239
  }
240
240
 
241
- return absl::nullopt;
241
+ return std::nullopt;
242
242
  }();
243
243
 
244
244
  return salt_material;
@@ -18,6 +18,7 @@
18
18
  #include <cassert>
19
19
  #include <cstdint>
20
20
  #include <cstdlib>
21
+ #include <optional>
21
22
  #include <string>
22
23
  #include <vector>
23
24
 
@@ -95,7 +96,7 @@ void MixIntoSeedMaterial(absl::Span<const uint32_t> sequence,
95
96
  // Salt is obtained only once and stored in static variable.
96
97
  //
97
98
  // May return empty value if obtaining the salt was not possible.
98
- absl::optional<uint32_t> GetSaltMaterial();
99
+ std::optional<uint32_t> GetSaltMaterial();
99
100
 
100
101
  } // namespace random_internal
101
102
  ABSL_NAMESPACE_END
@@ -20,6 +20,7 @@
20
20
  #include <type_traits>
21
21
 
22
22
  #include "absl/base/config.h"
23
+ #include "absl/meta/type_traits.h"
23
24
  #include "absl/numeric/bits.h"
24
25
  #include "absl/numeric/int128.h"
25
26
 
@@ -27,6 +28,26 @@ namespace absl {
27
28
  ABSL_NAMESPACE_BEGIN
28
29
  namespace random_internal {
29
30
 
31
+ // is_urbg<URBG>
32
+ //
33
+ // Indicates whether a type URBG is a Uniform Random Bit Generator.
34
+ template <typename URBG, typename = void, typename = void, typename = void>
35
+ struct is_urbg : std::false_type {};
36
+
37
+ template <typename URBG>
38
+ struct is_urbg<
39
+ URBG,
40
+ std::enable_if_t<std::is_same<
41
+ typename URBG::result_type,
42
+ typename std::decay<decltype((URBG::min)())>::type>::value>,
43
+ std::enable_if_t<std::is_same<
44
+ typename URBG::result_type,
45
+ typename std::decay<decltype((URBG::max)())>::type>::value>,
46
+ std::enable_if_t<std::is_same<
47
+ typename URBG::result_type,
48
+ typename std::decay<decltype(std::declval<URBG>()())>::type>::value>>
49
+ : std::true_type {};
50
+
30
51
  // random_internal::is_widening_convertible<A, B>
31
52
  //
32
53
  // Returns whether a type A is widening-convertible to a type B.
@@ -15,14 +15,19 @@
15
15
  #include "absl/random/internal/traits.h"
16
16
 
17
17
  #include <cstdint>
18
+ #include <random>
18
19
  #include <type_traits>
19
20
 
20
21
  #include "gtest/gtest.h"
21
22
 
22
23
  namespace {
23
24
 
25
+ using absl::random_internal::is_urbg;
24
26
  using absl::random_internal::is_widening_convertible;
25
27
 
28
+ static_assert(is_urbg<std::minstd_rand>::value);
29
+ static_assert(!is_urbg<uint64_t>::value);
30
+
26
31
  // CheckWideningConvertsToSelf<T1, T2, ...>()
27
32
  //
28
33
  // For each type T, checks:
@@ -76,7 +76,7 @@ namespace random_internal {
76
76
  // Return-type for absl::Uniform() when the return-type is inferred.
77
77
  template <typename A, typename B>
78
78
  using uniform_inferred_return_t =
79
- absl::enable_if_t<absl::disjunction<is_widening_convertible<A, B>,
79
+ std::enable_if_t<std::disjunction<is_widening_convertible<A, B>,
80
80
  is_widening_convertible<B, A>>::value,
81
81
  typename std::conditional<
82
82
  is_widening_convertible<A, B>::value, B, A>::type>;
@@ -98,10 +98,10 @@ using uniform_inferred_return_t =
98
98
  // uniform_upper_bound(IntervalOpenClosed, a, b)]
99
99
  //
100
100
  template <typename IntType, typename Tag>
101
- typename absl::enable_if_t<
102
- absl::conjunction<
101
+ typename std::enable_if_t<
102
+ std::conjunction<
103
103
  IsIntegral<IntType>,
104
- absl::disjunction<std::is_same<Tag, IntervalOpenClosedTag>,
104
+ std::disjunction<std::is_same<Tag, IntervalOpenClosedTag>,
105
105
  std::is_same<Tag, IntervalOpenOpenTag>>>::value,
106
106
  IntType>
107
107
  uniform_lower_bound(Tag, IntType a, IntType) {
@@ -109,10 +109,10 @@ uniform_lower_bound(Tag, IntType a, IntType) {
109
109
  }
110
110
 
111
111
  template <typename FloatType, typename Tag>
112
- typename absl::enable_if_t<
113
- absl::conjunction<
112
+ typename std::enable_if_t<
113
+ std::conjunction<
114
114
  std::is_floating_point<FloatType>,
115
- absl::disjunction<std::is_same<Tag, IntervalOpenClosedTag>,
115
+ std::disjunction<std::is_same<Tag, IntervalOpenClosedTag>,
116
116
  std::is_same<Tag, IntervalOpenOpenTag>>>::value,
117
117
  FloatType>
118
118
  uniform_lower_bound(Tag, FloatType a, FloatType b) {
@@ -120,8 +120,8 @@ uniform_lower_bound(Tag, FloatType a, FloatType b) {
120
120
  }
121
121
 
122
122
  template <typename NumType, typename Tag>
123
- typename absl::enable_if_t<
124
- absl::disjunction<std::is_same<Tag, IntervalClosedClosedTag>,
123
+ typename std::enable_if_t<
124
+ std::disjunction<std::is_same<Tag, IntervalClosedClosedTag>,
125
125
  std::is_same<Tag, IntervalClosedOpenTag>>::value,
126
126
  NumType>
127
127
  uniform_lower_bound(Tag, NumType a, NumType) {
@@ -129,10 +129,10 @@ uniform_lower_bound(Tag, NumType a, NumType) {
129
129
  }
130
130
 
131
131
  template <typename IntType, typename Tag>
132
- typename absl::enable_if_t<
133
- absl::conjunction<
132
+ typename std::enable_if_t<
133
+ std::conjunction<
134
134
  IsIntegral<IntType>,
135
- absl::disjunction<std::is_same<Tag, IntervalClosedOpenTag>,
135
+ std::disjunction<std::is_same<Tag, IntervalClosedOpenTag>,
136
136
  std::is_same<Tag, IntervalOpenOpenTag>>>::value,
137
137
  IntType>
138
138
  uniform_upper_bound(Tag, IntType, IntType b) {
@@ -140,10 +140,10 @@ uniform_upper_bound(Tag, IntType, IntType b) {
140
140
  }
141
141
 
142
142
  template <typename FloatType, typename Tag>
143
- typename absl::enable_if_t<
144
- absl::conjunction<
143
+ typename std::enable_if_t<
144
+ std::conjunction<
145
145
  std::is_floating_point<FloatType>,
146
- absl::disjunction<std::is_same<Tag, IntervalClosedOpenTag>,
146
+ std::disjunction<std::is_same<Tag, IntervalClosedOpenTag>,
147
147
  std::is_same<Tag, IntervalOpenOpenTag>>>::value,
148
148
  FloatType>
149
149
  uniform_upper_bound(Tag, FloatType, FloatType b) {
@@ -151,10 +151,10 @@ uniform_upper_bound(Tag, FloatType, FloatType b) {
151
151
  }
152
152
 
153
153
  template <typename IntType, typename Tag>
154
- typename absl::enable_if_t<
155
- absl::conjunction<
154
+ typename std::enable_if_t<
155
+ std::conjunction<
156
156
  IsIntegral<IntType>,
157
- absl::disjunction<std::is_same<Tag, IntervalClosedClosedTag>,
157
+ std::disjunction<std::is_same<Tag, IntervalClosedClosedTag>,
158
158
  std::is_same<Tag, IntervalOpenClosedTag>>>::value,
159
159
  IntType>
160
160
  uniform_upper_bound(Tag, IntType, IntType b) {
@@ -162,10 +162,10 @@ uniform_upper_bound(Tag, IntType, IntType b) {
162
162
  }
163
163
 
164
164
  template <typename FloatType, typename Tag>
165
- typename absl::enable_if_t<
166
- absl::conjunction<
165
+ typename std::enable_if_t<
166
+ std::conjunction<
167
167
  std::is_floating_point<FloatType>,
168
- absl::disjunction<std::is_same<Tag, IntervalClosedClosedTag>,
168
+ std::disjunction<std::is_same<Tag, IntervalClosedClosedTag>,
169
169
  std::is_same<Tag, IntervalOpenClosedTag>>>::value,
170
170
  FloatType>
171
171
  uniform_upper_bound(Tag, FloatType, FloatType b) {
@@ -195,13 +195,13 @@ uniform_upper_bound(Tag, FloatType, FloatType b) {
195
195
  // (0, 0] is not legal, but (0, 0+epsilon] is.
196
196
  //
197
197
  template <typename FloatType>
198
- absl::enable_if_t<std::is_floating_point<FloatType>::value, bool>
198
+ std::enable_if_t<std::is_floating_point<FloatType>::value, bool>
199
199
  is_uniform_range_valid(FloatType a, FloatType b) {
200
200
  return a <= b && std::isfinite(b - a);
201
201
  }
202
202
 
203
203
  template <typename IntType>
204
- absl::enable_if_t<IsIntegral<IntType>::value, bool> is_uniform_range_valid(
204
+ std::enable_if_t<IsIntegral<IntType>::value, bool> is_uniform_range_valid(
205
205
  IntType a, IntType b) {
206
206
  return a <= b;
207
207
  }
@@ -17,6 +17,7 @@
17
17
  #include <cmath>
18
18
  #include <cstdint>
19
19
  #include <random>
20
+ #include <type_traits>
20
21
 
21
22
  #include "gtest/gtest.h"
22
23
 
@@ -214,7 +215,7 @@ Invalid InferredUniformReturnT(...);
214
215
  template <typename A, typename B, typename Expect>
215
216
  void CheckArgsInferType() {
216
217
  static_assert(
217
- absl::conjunction<
218
+ std::conjunction<
218
219
  std::is_same<Expect, decltype(InferredUniformReturnT<A, B>(0))>,
219
220
  std::is_same<Expect,
220
221
  decltype(InferredUniformReturnT<B, A>(0))>>::value,
@@ -0,0 +1,74 @@
1
+ // Copyright 2019 The Abseil Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef ABSL_RANDOM_MOCKING_ACCESS_H_
16
+ #define ABSL_RANDOM_MOCKING_ACCESS_H_
17
+
18
+ #include <type_traits>
19
+ #include <utility>
20
+
21
+ #include "absl/base/config.h"
22
+ #include "absl/base/fast_type_id.h"
23
+ #include "absl/meta/type_traits.h"
24
+
25
+ namespace absl {
26
+ ABSL_NAMESPACE_BEGIN
27
+
28
+ // RandomMockingAccess must be a friend of any class which exposes an InvokeMock
29
+ // method. All calls to InvokeMock should be made through RandomMockingAccess.
30
+ //
31
+ // Any URBG type which wants to participate in mocking should declare
32
+ // RandomMockingAccess as a friend and have a protected or private method with
33
+ // the signature:
34
+ //
35
+ // bool InvokeMock(absl::FastTypeIdType key_id, void* args_tuple, void* result)
36
+ //
37
+ // This method returns false when mocking is not enabled, otherwise it will
38
+ // apply the mock. Typically this will involve forwarding to an underlying
39
+ // URBG such as absl::MockingBitGen by calling RandomMockingAccess::InvokeMock
40
+ // after checking that RandomMockingAccess::HasInvokeMock<URBG> is true for the
41
+ // underlying URBG type.
42
+ class RandomMockingAccess {
43
+ template <template <class...> class Trait, class AlwaysVoid, class... Args>
44
+ struct detector : std::false_type {};
45
+ template <template <class...> class Trait, class... Args>
46
+ struct detector<Trait, std::void_t<Trait<Args...>>, Args...>
47
+ : std::true_type {};
48
+
49
+ using IdType = ::absl::FastTypeIdType;
50
+
51
+ // Detector for `bool InvokeMock(key_id, args_tuple*, result*)`
52
+ // Lives inside RandomMockingAccess so that it has friend access to private
53
+ // members of URBG types.
54
+ template <class T>
55
+ using invoke_mock_t = decltype(std::declval<T*>()->InvokeMock(
56
+ std::declval<IdType>(), std::declval<void*>(), std::declval<void*>()));
57
+
58
+ public:
59
+ // Returns true if the URBG type has an InvokeMock method.
60
+ template <typename T>
61
+ using HasInvokeMock = typename detector<invoke_mock_t, void, T>::type;
62
+
63
+ // InvokeMock is private; calls to InvokeMock are proxied by MockingAccess.
64
+ template <typename URBG>
65
+ static inline bool InvokeMock(URBG* urbg, IdType key_id, void* args_tuple,
66
+ void* result) {
67
+ return urbg->InvokeMock(key_id, args_tuple, result);
68
+ }
69
+ };
70
+
71
+ ABSL_NAMESPACE_END
72
+ } // namespace absl
73
+
74
+ #endif // ABSL_RANDOM_MOCKING_ACCESS_H_
@@ -39,20 +39,13 @@
39
39
  #include "absl/container/flat_hash_map.h"
40
40
  #include "absl/meta/type_traits.h"
41
41
  #include "absl/random/internal/mock_helpers.h"
42
+ #include "absl/random/mocking_access.h"
42
43
  #include "absl/random/random.h"
43
44
  #include "absl/utility/utility.h"
44
45
 
45
46
  namespace absl {
46
47
  ABSL_NAMESPACE_BEGIN
47
48
 
48
- class BitGenRef;
49
-
50
- namespace random_internal {
51
- template <typename>
52
- struct DistributionCaller;
53
- class MockHelpers;
54
- } // namespace random_internal
55
-
56
49
  // MockingBitGen
57
50
  //
58
51
  // `absl::MockingBitGen` is a mock Uniform Random Bit Generator (URBG) class
@@ -113,7 +106,7 @@ class MockingBitGen {
113
106
  static auto GetMockFnType(ResultT, std::tuple<Args...>)
114
107
  -> ::testing::MockFunction<ResultT(Args...)>;
115
108
 
116
- // MockFnCaller is a helper method for use with absl::apply to
109
+ // MockFnCaller is a helper method for use with std::apply to
117
110
  // apply an ArgTupleT to a compatible MockFunction.
118
111
  // NOTE: MockFnCaller is essentially equivalent to the lambda:
119
112
  // [fn](auto... args) { return fn->Call(std::move(args)...)}
@@ -155,7 +148,7 @@ class MockingBitGen {
155
148
  // Requires tuple_args to point to a ArgTupleT, which is a
156
149
  // std::tuple<Args...> used to invoke the mock function. Requires result
157
150
  // to point to a ResultT, which is the result of the call.
158
- *static_cast<ResultT*>(result) = absl::apply(
151
+ *static_cast<ResultT*>(result) = std::apply(
159
152
  MockFnCaller<MockFnType, ValidatorT, ResultT, ArgTupleT>{&mock_fn_},
160
153
  *static_cast<ArgTupleT*>(args_tuple));
161
154
  }
@@ -181,13 +174,13 @@ class MockingBitGen {
181
174
  using MockFnType = decltype(GetMockFnType(std::declval<ResultT>(),
182
175
  std::declval<ArgTupleT>()));
183
176
 
184
- using WrappedFnType = absl::conditional_t<
177
+ using WrappedFnType = std::conditional_t<
185
178
  std::is_same<SelfT, ::testing::NiceMock<MockingBitGen>>::value,
186
179
  ::testing::NiceMock<MockFnType>,
187
- absl::conditional_t<
180
+ std::conditional_t<
188
181
  std::is_same<SelfT, ::testing::NaggyMock<MockingBitGen>>::value,
189
182
  ::testing::NaggyMock<MockFnType>,
190
- absl::conditional_t<
183
+ std::conditional_t<
191
184
  std::is_same<SelfT,
192
185
  ::testing::StrictMock<MockingBitGen>>::value,
193
186
  ::testing::StrictMock<MockFnType>, MockFnType>>>;
@@ -196,7 +189,7 @@ class MockingBitGen {
196
189
  FunctionHolderImpl<WrappedFnType, ValidatorT, ResultT, ArgTupleT>;
197
190
  auto& mock = mocks_[type];
198
191
  if (!mock) {
199
- mock = absl::make_unique<ImplT>();
192
+ mock = std::make_unique<ImplT>();
200
193
  }
201
194
  return static_cast<ImplT*>(mock.get())->mock_fn_;
202
195
  }
@@ -224,11 +217,8 @@ class MockingBitGen {
224
217
  absl::flat_hash_map<FastTypeIdType, std::unique_ptr<FunctionHolder>> mocks_;
225
218
  absl::BitGen gen_;
226
219
 
227
- template <typename>
228
- friend struct ::absl::random_internal::DistributionCaller; // for InvokeMock
229
- friend class ::absl::BitGenRef; // for InvokeMock
230
- friend class ::absl::random_internal::MockHelpers; // for RegisterMock,
231
- // InvokeMock
220
+ friend class ::absl::RandomMockingAccess; // for InvokeMock
221
+ friend class ::absl::random_internal::MockHelpers; // for RegisterMock
232
222
  };
233
223
 
234
224
  ABSL_NAMESPACE_END