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
@@ -1,331 +0,0 @@
1
- // Copyright 2017 The Abseil Authors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // https://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #include "absl/base/internal/invoke.h"
16
-
17
- #include <functional>
18
- #include <memory>
19
- #include <string>
20
- #include <utility>
21
-
22
- #include "gmock/gmock.h"
23
- #include "gtest/gtest.h"
24
- #include "absl/memory/memory.h"
25
- #include "absl/strings/str_cat.h"
26
-
27
- namespace absl {
28
- ABSL_NAMESPACE_BEGIN
29
- namespace base_internal {
30
- namespace {
31
-
32
- int Function(int a, int b) { return a - b; }
33
-
34
- void VoidFunction(int& a, int& b) {
35
- a += b;
36
- b = a - b;
37
- a -= b;
38
- }
39
-
40
- int ZeroArgFunction() { return -1937; }
41
-
42
- int Sink(std::unique_ptr<int> p) {
43
- return *p;
44
- }
45
-
46
- std::unique_ptr<int> Factory(int n) {
47
- return make_unique<int>(n);
48
- }
49
-
50
- void NoOp() {}
51
-
52
- struct ConstFunctor {
53
- int operator()(int a, int b) const { return a - b; }
54
- };
55
-
56
- struct MutableFunctor {
57
- int operator()(int a, int b) { return a - b; }
58
- };
59
-
60
- struct EphemeralFunctor {
61
- int operator()(int a, int b) && { return a - b; }
62
- };
63
-
64
- struct OverloadedFunctor {
65
- template <typename... Args>
66
- std::string operator()(const Args&... args) & {
67
- return StrCat("&", args...);
68
- }
69
- template <typename... Args>
70
- std::string operator()(const Args&... args) const& {
71
- return StrCat("const&", args...);
72
- }
73
- template <typename... Args>
74
- std::string operator()(const Args&... args) && {
75
- return StrCat("&&", args...);
76
- }
77
- };
78
-
79
- struct Class {
80
- int Method(int a, int b) { return a - b; }
81
- int ConstMethod(int a, int b) const { return a - b; }
82
- int RefMethod(int a, int b) & { return a - b; }
83
- int RefRefMethod(int a, int b) && { return a - b; }
84
- int NoExceptMethod(int a, int b) noexcept { return a - b; }
85
- int VolatileMethod(int a, int b) volatile { return a - b; }
86
-
87
- int member;
88
- };
89
-
90
- struct FlipFlop {
91
- int ConstMethod() const { return member; }
92
- FlipFlop operator*() const { return {-member}; }
93
-
94
- int member;
95
- };
96
-
97
- // CallMaybeWithArg(f) resolves either to invoke(f) or invoke(f, 42), depending
98
- // on which one is valid.
99
- template <typename F>
100
- decltype(base_internal::invoke(std::declval<const F&>())) CallMaybeWithArg(
101
- const F& f) {
102
- return base_internal::invoke(f);
103
- }
104
-
105
- template <typename F>
106
- decltype(base_internal::invoke(std::declval<const F&>(), 42)) CallMaybeWithArg(
107
- const F& f) {
108
- return base_internal::invoke(f, 42);
109
- }
110
-
111
- TEST(InvokeTest, Function) {
112
- EXPECT_EQ(1, base_internal::invoke(Function, 3, 2));
113
- EXPECT_EQ(1, base_internal::invoke(&Function, 3, 2));
114
- }
115
-
116
- TEST(InvokeTest, NonCopyableArgument) {
117
- EXPECT_EQ(42, base_internal::invoke(Sink, make_unique<int>(42)));
118
- }
119
-
120
- TEST(InvokeTest, NonCopyableResult) {
121
- EXPECT_THAT(base_internal::invoke(Factory, 42), ::testing::Pointee(42));
122
- }
123
-
124
- TEST(InvokeTest, VoidResult) { base_internal::invoke(NoOp); }
125
-
126
- TEST(InvokeTest, ConstFunctor) {
127
- EXPECT_EQ(1, base_internal::invoke(ConstFunctor(), 3, 2));
128
- }
129
-
130
- TEST(InvokeTest, MutableFunctor) {
131
- MutableFunctor f;
132
- EXPECT_EQ(1, base_internal::invoke(f, 3, 2));
133
- EXPECT_EQ(1, base_internal::invoke(MutableFunctor(), 3, 2));
134
- }
135
-
136
- TEST(InvokeTest, EphemeralFunctor) {
137
- EphemeralFunctor f;
138
- EXPECT_EQ(1, base_internal::invoke(std::move(f), 3, 2));
139
- EXPECT_EQ(1, base_internal::invoke(EphemeralFunctor(), 3, 2));
140
- }
141
-
142
- TEST(InvokeTest, OverloadedFunctor) {
143
- OverloadedFunctor f;
144
- const OverloadedFunctor& cf = f;
145
-
146
- EXPECT_EQ("&", base_internal::invoke(f));
147
- EXPECT_EQ("& 42", base_internal::invoke(f, " 42"));
148
-
149
- EXPECT_EQ("const&", base_internal::invoke(cf));
150
- EXPECT_EQ("const& 42", base_internal::invoke(cf, " 42"));
151
-
152
- EXPECT_EQ("&&", base_internal::invoke(std::move(f)));
153
-
154
- OverloadedFunctor f2;
155
- EXPECT_EQ("&& 42", base_internal::invoke(std::move(f2), " 42"));
156
- }
157
-
158
- TEST(InvokeTest, ReferenceWrapper) {
159
- ConstFunctor cf;
160
- MutableFunctor mf;
161
- EXPECT_EQ(1, base_internal::invoke(std::cref(cf), 3, 2));
162
- EXPECT_EQ(1, base_internal::invoke(std::ref(cf), 3, 2));
163
- EXPECT_EQ(1, base_internal::invoke(std::ref(mf), 3, 2));
164
- }
165
-
166
- TEST(InvokeTest, MemberFunction) {
167
- std::unique_ptr<Class> p(new Class);
168
- std::unique_ptr<const Class> cp(new Class);
169
- std::unique_ptr<volatile Class> vp(new Class);
170
-
171
- EXPECT_EQ(1, base_internal::invoke(&Class::Method, p, 3, 2));
172
- EXPECT_EQ(1, base_internal::invoke(&Class::Method, p.get(), 3, 2));
173
- EXPECT_EQ(1, base_internal::invoke(&Class::Method, *p, 3, 2));
174
- EXPECT_EQ(1, base_internal::invoke(&Class::RefMethod, p, 3, 2));
175
- EXPECT_EQ(1, base_internal::invoke(&Class::RefMethod, p.get(), 3, 2));
176
- EXPECT_EQ(1, base_internal::invoke(&Class::RefMethod, *p, 3, 2));
177
- EXPECT_EQ(1, base_internal::invoke(&Class::RefRefMethod, std::move(*p), 3,
178
- 2)); // NOLINT
179
- EXPECT_EQ(1, base_internal::invoke(&Class::NoExceptMethod, p, 3, 2));
180
- EXPECT_EQ(1, base_internal::invoke(&Class::NoExceptMethod, p.get(), 3, 2));
181
- EXPECT_EQ(1, base_internal::invoke(&Class::NoExceptMethod, *p, 3, 2));
182
-
183
- EXPECT_EQ(1, base_internal::invoke(&Class::ConstMethod, p, 3, 2));
184
- EXPECT_EQ(1, base_internal::invoke(&Class::ConstMethod, p.get(), 3, 2));
185
- EXPECT_EQ(1, base_internal::invoke(&Class::ConstMethod, *p, 3, 2));
186
-
187
- EXPECT_EQ(1, base_internal::invoke(&Class::ConstMethod, cp, 3, 2));
188
- EXPECT_EQ(1, base_internal::invoke(&Class::ConstMethod, cp.get(), 3, 2));
189
- EXPECT_EQ(1, base_internal::invoke(&Class::ConstMethod, *cp, 3, 2));
190
-
191
- EXPECT_EQ(1, base_internal::invoke(&Class::VolatileMethod, p, 3, 2));
192
- EXPECT_EQ(1, base_internal::invoke(&Class::VolatileMethod, p.get(), 3, 2));
193
- EXPECT_EQ(1, base_internal::invoke(&Class::VolatileMethod, *p, 3, 2));
194
- EXPECT_EQ(1, base_internal::invoke(&Class::VolatileMethod, vp, 3, 2));
195
- EXPECT_EQ(1, base_internal::invoke(&Class::VolatileMethod, vp.get(), 3, 2));
196
- EXPECT_EQ(1, base_internal::invoke(&Class::VolatileMethod, *vp, 3, 2));
197
-
198
- EXPECT_EQ(1,
199
- base_internal::invoke(&Class::Method, make_unique<Class>(), 3, 2));
200
- EXPECT_EQ(1, base_internal::invoke(&Class::ConstMethod, make_unique<Class>(),
201
- 3, 2));
202
- EXPECT_EQ(1, base_internal::invoke(&Class::ConstMethod,
203
- make_unique<const Class>(), 3, 2));
204
- }
205
-
206
- TEST(InvokeTest, DataMember) {
207
- std::unique_ptr<Class> p(new Class{42});
208
- std::unique_ptr<const Class> cp(new Class{42});
209
- EXPECT_EQ(42, base_internal::invoke(&Class::member, p));
210
- EXPECT_EQ(42, base_internal::invoke(&Class::member, *p));
211
- EXPECT_EQ(42, base_internal::invoke(&Class::member, p.get()));
212
-
213
- base_internal::invoke(&Class::member, p) = 42;
214
- base_internal::invoke(&Class::member, p.get()) = 42;
215
-
216
- EXPECT_EQ(42, base_internal::invoke(&Class::member, cp));
217
- EXPECT_EQ(42, base_internal::invoke(&Class::member, *cp));
218
- EXPECT_EQ(42, base_internal::invoke(&Class::member, cp.get()));
219
- }
220
-
221
- TEST(InvokeTest, FlipFlop) {
222
- FlipFlop obj = {42};
223
- // This call could resolve to (obj.*&FlipFlop::ConstMethod)() or
224
- // ((*obj).*&FlipFlop::ConstMethod)(). We verify that it's the former.
225
- EXPECT_EQ(42, base_internal::invoke(&FlipFlop::ConstMethod, obj));
226
- EXPECT_EQ(42, base_internal::invoke(&FlipFlop::member, obj));
227
- }
228
-
229
- TEST(InvokeTest, SfinaeFriendly) {
230
- CallMaybeWithArg(NoOp);
231
- EXPECT_THAT(CallMaybeWithArg(Factory), ::testing::Pointee(42));
232
- }
233
-
234
- TEST(IsInvocableRTest, CallableExactMatch) {
235
- static_assert(
236
- base_internal::is_invocable_r<int, decltype(Function), int, int>::value,
237
- "Should be true for exact match of types on a free function");
238
- }
239
-
240
- TEST(IsInvocableRTest, CallableArgumentConversionMatch) {
241
- static_assert(
242
- base_internal::is_invocable_r<int, decltype(Function), char, int>::value,
243
- "Should be true for convertible argument type");
244
- }
245
-
246
- TEST(IsInvocableRTest, CallableReturnConversionMatch) {
247
- static_assert(base_internal::is_invocable_r<double, decltype(Function), int,
248
- int>::value,
249
- "Should be true for convertible return type");
250
- }
251
-
252
- TEST(IsInvocableRTest, CallableReturnVoid) {
253
- static_assert(base_internal::is_invocable_r<void, decltype(VoidFunction),
254
- int&, int&>::value,
255
- "Should be true for void expected and actual return types");
256
- static_assert(
257
- base_internal::is_invocable_r<void, decltype(Function), int, int>::value,
258
- "Should be true for void expected and non-void actual return types");
259
- }
260
-
261
- TEST(IsInvocableRTest, CallableRefQualifierMismatch) {
262
- static_assert(!base_internal::is_invocable_r<void, decltype(VoidFunction),
263
- int&, const int&>::value,
264
- "Should be false for reference constness mismatch");
265
- static_assert(!base_internal::is_invocable_r<void, decltype(VoidFunction),
266
- int&&, int&>::value,
267
- "Should be false for reference value category mismatch");
268
- }
269
-
270
- TEST(IsInvocableRTest, CallableArgumentTypeMismatch) {
271
- static_assert(!base_internal::is_invocable_r<int, decltype(Function),
272
- std::string, int>::value,
273
- "Should be false for argument type mismatch");
274
- }
275
-
276
- TEST(IsInvocableRTest, CallableReturnTypeMismatch) {
277
- static_assert(!base_internal::is_invocable_r<std::string, decltype(Function),
278
- int, int>::value,
279
- "Should be false for return type mismatch");
280
- }
281
-
282
- TEST(IsInvocableRTest, CallableTooFewArgs) {
283
- static_assert(
284
- !base_internal::is_invocable_r<int, decltype(Function), int>::value,
285
- "Should be false for too few arguments");
286
- }
287
-
288
- TEST(IsInvocableRTest, CallableTooManyArgs) {
289
- static_assert(!base_internal::is_invocable_r<int, decltype(Function), int,
290
- int, int>::value,
291
- "Should be false for too many arguments");
292
- }
293
-
294
- TEST(IsInvocableRTest, MemberFunctionAndReference) {
295
- static_assert(base_internal::is_invocable_r<int, decltype(&Class::Method),
296
- Class&, int, int>::value,
297
- "Should be true for exact match of types on a member function "
298
- "and class reference");
299
- }
300
-
301
- TEST(IsInvocableRTest, MemberFunctionAndPointer) {
302
- static_assert(base_internal::is_invocable_r<int, decltype(&Class::Method),
303
- Class*, int, int>::value,
304
- "Should be true for exact match of types on a member function "
305
- "and class pointer");
306
- }
307
-
308
- TEST(IsInvocableRTest, DataMemberAndReference) {
309
- static_assert(base_internal::is_invocable_r<int, decltype(&Class::member),
310
- Class&>::value,
311
- "Should be true for exact match of types on a data member and "
312
- "class reference");
313
- }
314
-
315
- TEST(IsInvocableRTest, DataMemberAndPointer) {
316
- static_assert(base_internal::is_invocable_r<int, decltype(&Class::member),
317
- Class*>::value,
318
- "Should be true for exact match of types on a data member and "
319
- "class pointer");
320
- }
321
-
322
- TEST(IsInvocableRTest, CallableZeroArgs) {
323
- static_assert(
324
- base_internal::is_invocable_r<int, decltype(ZeroArgFunction)>::value,
325
- "Should be true for exact match for a zero-arg free function");
326
- }
327
-
328
- } // namespace
329
- } // namespace base_internal
330
- ABSL_NAMESPACE_END
331
- } // namespace absl
@@ -1,148 +0,0 @@
1
- // Copyright 2020 The Abseil Authors
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // https://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #include "absl/hash/internal/low_level_hash.h"
16
-
17
- #include <cstddef>
18
- #include <cstdint>
19
-
20
- #include "absl/base/internal/unaligned_access.h"
21
- #include "absl/base/prefetch.h"
22
- #include "absl/numeric/int128.h"
23
-
24
- namespace absl {
25
- ABSL_NAMESPACE_BEGIN
26
- namespace hash_internal {
27
-
28
- static uint64_t Mix(uint64_t v0, uint64_t v1) {
29
- absl::uint128 p = v0;
30
- p *= v1;
31
- return absl::Uint128Low64(p) ^ absl::Uint128High64(p);
32
- }
33
-
34
- uint64_t LowLevelHashLenGt16(const void* data, size_t len, uint64_t seed,
35
- const uint64_t salt[5]) {
36
- const uint8_t* ptr = static_cast<const uint8_t*>(data);
37
- uint64_t starting_length = static_cast<uint64_t>(len);
38
- const uint8_t* last_16_ptr = ptr + starting_length - 16;
39
- uint64_t current_state = seed ^ salt[0];
40
-
41
- if (len > 64) {
42
- // If we have more than 64 bytes, we're going to handle chunks of 64
43
- // bytes at a time. We're going to build up four separate hash states
44
- // which we will then hash together. This avoids short dependency chains.
45
- uint64_t duplicated_state0 = current_state;
46
- uint64_t duplicated_state1 = current_state;
47
- uint64_t duplicated_state2 = current_state;
48
-
49
- do {
50
- // Always prefetch the next cacheline.
51
- PrefetchToLocalCache(ptr + ABSL_CACHELINE_SIZE);
52
-
53
- uint64_t a = absl::base_internal::UnalignedLoad64(ptr);
54
- uint64_t b = absl::base_internal::UnalignedLoad64(ptr + 8);
55
- uint64_t c = absl::base_internal::UnalignedLoad64(ptr + 16);
56
- uint64_t d = absl::base_internal::UnalignedLoad64(ptr + 24);
57
- uint64_t e = absl::base_internal::UnalignedLoad64(ptr + 32);
58
- uint64_t f = absl::base_internal::UnalignedLoad64(ptr + 40);
59
- uint64_t g = absl::base_internal::UnalignedLoad64(ptr + 48);
60
- uint64_t h = absl::base_internal::UnalignedLoad64(ptr + 56);
61
-
62
- current_state = Mix(a ^ salt[1], b ^ current_state);
63
- duplicated_state0 = Mix(c ^ salt[2], d ^ duplicated_state0);
64
-
65
- duplicated_state1 = Mix(e ^ salt[3], f ^ duplicated_state1);
66
- duplicated_state2 = Mix(g ^ salt[4], h ^ duplicated_state2);
67
-
68
- ptr += 64;
69
- len -= 64;
70
- } while (len > 64);
71
-
72
- current_state = (current_state ^ duplicated_state0) ^
73
- (duplicated_state1 + duplicated_state2);
74
- }
75
-
76
- // We now have a data `ptr` with at most 64 bytes and the current state
77
- // of the hashing state machine stored in current_state.
78
- if (len > 32) {
79
- uint64_t a = absl::base_internal::UnalignedLoad64(ptr);
80
- uint64_t b = absl::base_internal::UnalignedLoad64(ptr + 8);
81
- uint64_t c = absl::base_internal::UnalignedLoad64(ptr + 16);
82
- uint64_t d = absl::base_internal::UnalignedLoad64(ptr + 24);
83
-
84
- uint64_t cs0 = Mix(a ^ salt[1], b ^ current_state);
85
- uint64_t cs1 = Mix(c ^ salt[2], d ^ current_state);
86
- current_state = cs0 ^ cs1;
87
-
88
- ptr += 32;
89
- len -= 32;
90
- }
91
-
92
- // We now have a data `ptr` with at most 32 bytes and the current state
93
- // of the hashing state machine stored in current_state.
94
- if (len > 16) {
95
- uint64_t a = absl::base_internal::UnalignedLoad64(ptr);
96
- uint64_t b = absl::base_internal::UnalignedLoad64(ptr + 8);
97
-
98
- current_state = Mix(a ^ salt[1], b ^ current_state);
99
- }
100
-
101
- // We now have a data `ptr` with at least 1 and at most 16 bytes. But we can
102
- // safely read from `ptr + len - 16`.
103
- uint64_t a = absl::base_internal::UnalignedLoad64(last_16_ptr);
104
- uint64_t b = absl::base_internal::UnalignedLoad64(last_16_ptr + 8);
105
-
106
- return Mix(a ^ salt[1] ^ starting_length, b ^ current_state);
107
- }
108
-
109
- uint64_t LowLevelHash(const void* data, size_t len, uint64_t seed,
110
- const uint64_t salt[5]) {
111
- if (len > 16) return LowLevelHashLenGt16(data, len, seed, salt);
112
-
113
- // Prefetch the cacheline that data resides in.
114
- PrefetchToLocalCache(data);
115
- const uint8_t* ptr = static_cast<const uint8_t*>(data);
116
- uint64_t starting_length = static_cast<uint64_t>(len);
117
- uint64_t current_state = seed ^ salt[0];
118
- if (len == 0) return current_state;
119
-
120
- uint64_t a = 0;
121
- uint64_t b = 0;
122
-
123
- // We now have a data `ptr` with at least 1 and at most 16 bytes.
124
- if (len > 8) {
125
- // When we have at least 9 and at most 16 bytes, set A to the first 64
126
- // bits of the input and B to the last 64 bits of the input. Yes, they
127
- // will overlap in the middle if we are working with less than the full 16
128
- // bytes.
129
- a = absl::base_internal::UnalignedLoad64(ptr);
130
- b = absl::base_internal::UnalignedLoad64(ptr + len - 8);
131
- } else if (len > 3) {
132
- // If we have at least 4 and at most 8 bytes, set A to the first 32
133
- // bits and B to the last 32 bits.
134
- a = absl::base_internal::UnalignedLoad32(ptr);
135
- b = absl::base_internal::UnalignedLoad32(ptr + len - 4);
136
- } else {
137
- // If we have at least 1 and at most 3 bytes, read 2 bytes into A and the
138
- // other byte into B, with some adjustments.
139
- a = static_cast<uint64_t>((ptr[0] << 8) | ptr[len - 1]);
140
- b = static_cast<uint64_t>(ptr[len >> 1]);
141
- }
142
-
143
- return Mix(a ^ salt[1] ^ starting_length, b ^ current_state);
144
- }
145
-
146
- } // namespace hash_internal
147
- ABSL_NAMESPACE_END
148
- } // namespace absl
@@ -1,54 +0,0 @@
1
- // Copyright 2020 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
- // This file provides the Google-internal implementation of LowLevelHash.
16
- //
17
- // LowLevelHash is a fast hash function for hash tables, the fastest we've
18
- // currently (late 2020) found that passes the SMHasher tests. The algorithm
19
- // relies on intrinsic 128-bit multiplication for speed. This is not meant to be
20
- // secure - just fast.
21
- //
22
- // It is closely based on a version of wyhash, but does not maintain or
23
- // guarantee future compatibility with it.
24
-
25
- #ifndef ABSL_HASH_INTERNAL_LOW_LEVEL_HASH_H_
26
- #define ABSL_HASH_INTERNAL_LOW_LEVEL_HASH_H_
27
-
28
- #include <stdint.h>
29
- #include <stdlib.h>
30
-
31
- #include "absl/base/config.h"
32
-
33
- namespace absl {
34
- ABSL_NAMESPACE_BEGIN
35
- namespace hash_internal {
36
-
37
- // Hash function for a byte array. A 64-bit seed and a set of five 64-bit
38
- // integers are hashed into the result.
39
- //
40
- // To allow all hashable types (including string_view and Span) to depend on
41
- // this algorithm, we keep the API low-level, with as few dependencies as
42
- // possible.
43
- uint64_t LowLevelHash(const void* data, size_t len, uint64_t seed,
44
- const uint64_t salt[5]);
45
-
46
- // Same as above except the length must be greater than 16.
47
- uint64_t LowLevelHashLenGt16(const void* data, size_t len, uint64_t seed,
48
- const uint64_t salt[5]);
49
-
50
- } // namespace hash_internal
51
- ABSL_NAMESPACE_END
52
- } // namespace absl
53
-
54
- #endif // ABSL_HASH_INTERNAL_LOW_LEVEL_HASH_H_
@@ -1,131 +0,0 @@
1
- // Copyright 2017 The Abseil Authors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // https://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #ifndef ABSL_RANDOM_INTERNAL_POOL_URBG_H_
16
- #define ABSL_RANDOM_INTERNAL_POOL_URBG_H_
17
-
18
- #include <cinttypes>
19
- #include <limits>
20
-
21
- #include "absl/random/internal/traits.h"
22
- #include "absl/types/span.h"
23
-
24
- namespace absl {
25
- ABSL_NAMESPACE_BEGIN
26
- namespace random_internal {
27
-
28
- // RandenPool is a thread-safe random number generator [random.req.urbg] that
29
- // uses an underlying pool of Randen generators to generate values. Each thread
30
- // has affinity to one instance of the underlying pool generators. Concurrent
31
- // access is guarded by a spin-lock.
32
- template <typename T>
33
- class RandenPool {
34
- public:
35
- using result_type = T;
36
- static_assert(std::is_unsigned<result_type>::value,
37
- "RandenPool template argument must be a built-in unsigned "
38
- "integer type");
39
-
40
- static constexpr result_type(min)() {
41
- return (std::numeric_limits<result_type>::min)();
42
- }
43
-
44
- static constexpr result_type(max)() {
45
- return (std::numeric_limits<result_type>::max)();
46
- }
47
-
48
- RandenPool() {}
49
-
50
- // Returns a single value.
51
- inline result_type operator()() { return Generate(); }
52
-
53
- // Fill data with random values.
54
- static void Fill(absl::Span<result_type> data);
55
-
56
- protected:
57
- // Generate returns a single value.
58
- static result_type Generate();
59
- };
60
-
61
- extern template class RandenPool<uint8_t>;
62
- extern template class RandenPool<uint16_t>;
63
- extern template class RandenPool<uint32_t>;
64
- extern template class RandenPool<uint64_t>;
65
-
66
- // PoolURBG uses an underlying pool of random generators to implement a
67
- // thread-compatible [random.req.urbg] interface with an internal cache of
68
- // values.
69
- template <typename T, size_t kBufferSize>
70
- class PoolURBG {
71
- // Inheritance to access the protected static members of RandenPool.
72
- using unsigned_type = typename make_unsigned_bits<T>::type;
73
- using PoolType = RandenPool<unsigned_type>;
74
- using SpanType = absl::Span<unsigned_type>;
75
-
76
- static constexpr size_t kInitialBuffer = kBufferSize + 1;
77
- static constexpr size_t kHalfBuffer = kBufferSize / 2;
78
-
79
- public:
80
- using result_type = T;
81
-
82
- static_assert(std::is_unsigned<result_type>::value,
83
- "PoolURBG must be parameterized by an unsigned integer type");
84
-
85
- static_assert(kBufferSize > 1,
86
- "PoolURBG must be parameterized by a buffer-size > 1");
87
-
88
- static_assert(kBufferSize <= 256,
89
- "PoolURBG must be parameterized by a buffer-size <= 256");
90
-
91
- static constexpr result_type(min)() {
92
- return (std::numeric_limits<result_type>::min)();
93
- }
94
-
95
- static constexpr result_type(max)() {
96
- return (std::numeric_limits<result_type>::max)();
97
- }
98
-
99
- PoolURBG() : next_(kInitialBuffer) {}
100
-
101
- // copy-constructor does not copy cache.
102
- PoolURBG(const PoolURBG&) : next_(kInitialBuffer) {}
103
- const PoolURBG& operator=(const PoolURBG&) {
104
- next_ = kInitialBuffer;
105
- return *this;
106
- }
107
-
108
- // move-constructor does move cache.
109
- PoolURBG(PoolURBG&&) = default;
110
- PoolURBG& operator=(PoolURBG&&) = default;
111
-
112
- inline result_type operator()() {
113
- if (next_ >= kBufferSize) {
114
- next_ = (kBufferSize > 2 && next_ > kBufferSize) ? kHalfBuffer : 0;
115
- PoolType::Fill(SpanType(reinterpret_cast<unsigned_type*>(state_ + next_),
116
- kBufferSize - next_));
117
- }
118
- return state_[next_++];
119
- }
120
-
121
- private:
122
- // Buffer size.
123
- size_t next_; // index within state_
124
- result_type state_[kBufferSize];
125
- };
126
-
127
- } // namespace random_internal
128
- ABSL_NAMESPACE_END
129
- } // namespace absl
130
-
131
- #endif // ABSL_RANDOM_INTERNAL_POOL_URBG_H_