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
@@ -169,15 +169,25 @@ TEST(Unescape, BasicFunction) {
169
169
  EXPECT_TRUE(absl::CUnescape(val.escaped, &out));
170
170
  EXPECT_EQ(out, val.unescaped);
171
171
  }
172
- std::string bad[] = {"\\u1", // too short
173
- "\\U1", // too short
174
- "\\Uffffff", // exceeds 0x10ffff (largest Unicode)
175
- "\\U00110000", // exceeds 0x10ffff (largest Unicode)
176
- "\\uD835", // surrogate character (D800-DFFF)
177
- "\\U0000DD04", // surrogate character (D800-DFFF)
178
- "\\777", // exceeds 0xff
179
- "\\xABCD"}; // exceeds 0xff
180
- for (const std::string& e : bad) {
172
+ constexpr absl::string_view bad[] = {
173
+ "\\u1", // too short
174
+ "\\U1", // too short
175
+ "\\Uffffff", // exceeds 0x10ffff (largest Unicode)
176
+ "\\U00110000", // exceeds 0x10ffff (largest Unicode)
177
+ "\\uD835", // surrogate character (D800-DFFF)
178
+ "\\U0000DD04", // surrogate character (D800-DFFF)
179
+ "\\777", // exceeds 0xff
180
+ "\\xABCD", // exceeds 0xff
181
+ "endswith\\", // ends with "\"
182
+ "endswith\\x", // ends with "\x"
183
+ "endswith\\X", // ends with "\X"
184
+ "\\x.2345678", // non-hex follows "\x"
185
+ "\\X.2345678", // non-hex follows "\X"
186
+ "\\u.2345678", // non-hex follows "\U"
187
+ "\\U.2345678", // non-hex follows "\U"
188
+ "\\.unknown", // unknown escape sequence
189
+ };
190
+ for (const auto e : bad) {
181
191
  std::string error;
182
192
  std::string out;
183
193
  EXPECT_FALSE(absl::CUnescape(e, &out, &error));
@@ -279,7 +279,7 @@ int BigUnsigned<max_words>::ReadDigits(const char* begin, const char* end,
279
279
  // Either way, [begin, decimal_point) will contain the set of dropped digits
280
280
  // that require an exponent adjustment.
281
281
  const char* decimal_point = std::find(begin, end, '.');
282
- exponent_adjust += (decimal_point - begin);
282
+ exponent_adjust += static_cast<int>(decimal_point - begin);
283
283
  }
284
284
  return exponent_adjust;
285
285
  }
@@ -176,7 +176,7 @@ TEST(BigUnsigned, MultiplyByBigUnsigned) {
176
176
 
177
177
  TEST(BigUnsigned, MultiplyByOverflow) {
178
178
  {
179
- // Check that multiplcation overflow predictably truncates.
179
+ // Check that multiplication overflow predictably truncates.
180
180
 
181
181
  // A big int with all bits on.
182
182
  BigUnsigned<4> all_bits_on("340282366920938463463374607431768211455");
@@ -25,7 +25,6 @@
25
25
  #include "absl/base/attributes.h"
26
26
  #include "absl/base/config.h"
27
27
  #include "absl/base/internal/endian.h"
28
- #include "absl/base/internal/invoke.h"
29
28
  #include "absl/base/macros.h"
30
29
  #include "absl/base/nullability.h"
31
30
  #include "absl/base/optimization.h"
@@ -358,16 +357,15 @@ struct CordRepExternal : public CordRep {
358
357
  struct Rank0 {};
359
358
  struct Rank1 : Rank0 {};
360
359
 
361
- template <typename Releaser, typename = ::absl::base_internal::invoke_result_t<
362
- Releaser, absl::string_view>>
360
+ template <typename Releaser,
361
+ typename = ::std::invoke_result_t<Releaser, absl::string_view>>
363
362
  void InvokeReleaser(Rank1, Releaser&& releaser, absl::string_view data) {
364
- ::absl::base_internal::invoke(std::forward<Releaser>(releaser), data);
363
+ ::std::invoke(std::forward<Releaser>(releaser), data);
365
364
  }
366
365
 
367
- template <typename Releaser,
368
- typename = ::absl::base_internal::invoke_result_t<Releaser>>
366
+ template <typename Releaser, typename = ::std::invoke_result_t<Releaser>>
369
367
  void InvokeReleaser(Rank0, Releaser&& releaser, absl::string_view) {
370
- ::absl::base_internal::invoke(std::forward<Releaser>(releaser));
368
+ ::std::invoke(std::forward<Releaser>(releaser));
371
369
  }
372
370
 
373
371
  // We use CompressedTuple so that we can benefit from EBCO.
@@ -637,7 +635,7 @@ class InlineData {
637
635
  poison();
638
636
  }
639
637
 
640
- void CopyInlineToString(absl::Nonnull<std::string*> dst) const {
638
+ void CopyInlineToString(std::string* dst) const {
641
639
  assert(!is_tree());
642
640
  // As Cord can store only 15 bytes it is smaller than std::string's
643
641
  // small string optimization buffer size. Therefore we will always trigger
@@ -917,8 +915,6 @@ inline CordRep* CordRep::Ref(CordRep* rep) {
917
915
 
918
916
  inline void CordRep::Unref(CordRep* rep) {
919
917
  assert(rep != nullptr);
920
- // Expect refcount to be 0. Avoiding the cost of an atomic decrement should
921
- // typically outweigh the cost of an extra branch checking for ref == 1.
922
918
  if (ABSL_PREDICT_FALSE(!rep->refcount.DecrementExpectHighRefcount())) {
923
919
  Destroy(rep);
924
920
  }
@@ -36,10 +36,6 @@ namespace absl {
36
36
  ABSL_NAMESPACE_BEGIN
37
37
  namespace cord_internal {
38
38
 
39
- #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
40
- constexpr size_t CordRepBtree::kMaxCapacity;
41
- #endif
42
-
43
39
  namespace {
44
40
 
45
41
  using NodeStack = CordRepBtree * [CordRepBtree::kMaxDepth];
@@ -54,7 +54,7 @@ static Queue& GlobalQueue() {
54
54
  CordzHandle::CordzHandle(bool is_snapshot) : is_snapshot_(is_snapshot) {
55
55
  Queue& global_queue = GlobalQueue();
56
56
  if (is_snapshot) {
57
- MutexLock lock(&global_queue.mutex);
57
+ MutexLock lock(global_queue.mutex);
58
58
  CordzHandle* dq_tail = global_queue.dq_tail.load(std::memory_order_acquire);
59
59
  if (dq_tail != nullptr) {
60
60
  dq_prev_ = dq_tail;
@@ -69,7 +69,7 @@ CordzHandle::~CordzHandle() {
69
69
  if (is_snapshot_) {
70
70
  std::vector<CordzHandle*> to_delete;
71
71
  {
72
- MutexLock lock(&global_queue.mutex);
72
+ MutexLock lock(global_queue.mutex);
73
73
  CordzHandle* next = dq_next_;
74
74
  if (dq_prev_ == nullptr) {
75
75
  // We were head of the queue, delete every CordzHandle until we reach
@@ -103,7 +103,7 @@ void CordzHandle::Delete(CordzHandle* handle) {
103
103
  if (handle) {
104
104
  Queue& queue = GlobalQueue();
105
105
  if (!handle->SafeToDelete()) {
106
- MutexLock lock(&queue.mutex);
106
+ MutexLock lock(queue.mutex);
107
107
  CordzHandle* dq_tail = queue.dq_tail.load(std::memory_order_acquire);
108
108
  if (dq_tail != nullptr) {
109
109
  handle->dq_prev_ = dq_tail;
@@ -119,7 +119,7 @@ void CordzHandle::Delete(CordzHandle* handle) {
119
119
  std::vector<const CordzHandle*> CordzHandle::DiagnosticsGetDeleteQueue() {
120
120
  std::vector<const CordzHandle*> handles;
121
121
  Queue& global_queue = GlobalQueue();
122
- MutexLock lock(&global_queue.mutex);
122
+ MutexLock lock(global_queue.mutex);
123
123
  CordzHandle* dq_tail = global_queue.dq_tail.load(std::memory_order_acquire);
124
124
  for (const CordzHandle* p = dq_tail; p; p = p->dq_prev_) {
125
125
  handles.push_back(p);
@@ -134,7 +134,7 @@ bool CordzHandle::DiagnosticsHandleIsSafeToInspect(
134
134
  if (handle->is_snapshot_) return false;
135
135
  bool snapshot_found = false;
136
136
  Queue& global_queue = GlobalQueue();
137
- MutexLock lock(&global_queue.mutex);
137
+ MutexLock lock(global_queue.mutex);
138
138
  for (const CordzHandle* p = global_queue.dq_tail; p; p = p->dq_prev_) {
139
139
  if (p == handle) return !snapshot_found;
140
140
  if (p == this) snapshot_found = true;
@@ -151,7 +151,7 @@ CordzHandle::DiagnosticsGetSafeToInspectDeletedHandles() {
151
151
  }
152
152
 
153
153
  Queue& global_queue = GlobalQueue();
154
- MutexLock lock(&global_queue.mutex);
154
+ MutexLock lock(global_queue.mutex);
155
155
  for (const CordzHandle* p = dq_next_; p != nullptr; p = p->dq_next_) {
156
156
  if (!p->is_snapshot()) {
157
157
  handles.push_back(p);
@@ -34,10 +34,6 @@ namespace absl {
34
34
  ABSL_NAMESPACE_BEGIN
35
35
  namespace cord_internal {
36
36
 
37
- #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
38
- constexpr size_t CordzInfo::kMaxStackDepth;
39
- #endif
40
-
41
37
  ABSL_CONST_INIT CordzInfo::List CordzInfo::global_list_{absl::kConstInit};
42
38
 
43
39
  namespace {
@@ -331,7 +327,7 @@ CordzInfo::~CordzInfo() {
331
327
  }
332
328
 
333
329
  void CordzInfo::Track() {
334
- SpinLockHolder l(&list_->mutex);
330
+ SpinLockHolder l(list_->mutex);
335
331
 
336
332
  CordzInfo* const head = list_->head.load(std::memory_order_acquire);
337
333
  if (head != nullptr) {
@@ -344,7 +340,7 @@ void CordzInfo::Track() {
344
340
  void CordzInfo::Untrack() {
345
341
  ODRCheck();
346
342
  {
347
- SpinLockHolder l(&list_->mutex);
343
+ SpinLockHolder l(list_->mutex);
348
344
 
349
345
  CordzInfo* const head = list_->head.load(std::memory_order_acquire);
350
346
  CordzInfo* const next = ci_next_.load(std::memory_order_acquire);
@@ -374,7 +370,7 @@ void CordzInfo::Untrack() {
374
370
 
375
371
  // We are likely part of a snapshot, extend the life of the CordRep
376
372
  {
377
- absl::MutexLock lock(&mutex_);
373
+ absl::MutexLock lock(mutex_);
378
374
  if (rep_) CordRep::Ref(rep_);
379
375
  }
380
376
  CordzHandle::Delete(this);
@@ -382,14 +378,14 @@ void CordzInfo::Untrack() {
382
378
 
383
379
  void CordzInfo::Lock(MethodIdentifier method)
384
380
  ABSL_EXCLUSIVE_LOCK_FUNCTION(mutex_) {
385
- mutex_.Lock();
381
+ mutex_.lock();
386
382
  update_tracker_.LossyAdd(method);
387
383
  assert(rep_);
388
384
  }
389
385
 
390
386
  void CordzInfo::Unlock() ABSL_UNLOCK_FUNCTION(mutex_) {
391
387
  bool tracked = rep_ != nullptr;
392
- mutex_.Unlock();
388
+ mutex_.unlock();
393
389
  if (!tracked) {
394
390
  Untrack();
395
391
  }
@@ -191,9 +191,7 @@ class ABSL_LOCKABLE CordzInfo : public CordzHandle {
191
191
  // Global cordz info list. CordzInfo stores a pointer to the global list
192
192
  // instance to harden against ODR violations.
193
193
  struct List {
194
- constexpr explicit List(absl::ConstInitType)
195
- : mutex(absl::kConstInit,
196
- absl::base_internal::SCHEDULE_COOPERATIVE_AND_KERNEL) {}
194
+ constexpr explicit List(absl::ConstInitType) {}
197
195
 
198
196
  SpinLock mutex;
199
197
  std::atomic<CordzInfo*> head ABSL_GUARDED_BY(mutex){nullptr};
@@ -292,7 +290,7 @@ inline void CordzInfo::SetCordRep(CordRep* rep) {
292
290
  inline void CordzInfo::UnsafeSetCordRep(CordRep* rep) { rep_ = rep; }
293
291
 
294
292
  inline CordRep* CordzInfo::RefCordRep() const ABSL_LOCKS_EXCLUDED(mutex_) {
295
- MutexLock lock(&mutex_);
293
+ MutexLock lock(mutex_);
296
294
  return rep_ ? CordRep::Ref(rep_) : nullptr;
297
295
  }
298
296
 
@@ -0,0 +1,56 @@
1
+ // Copyright 2022 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 <string>
16
+
17
+ #include "absl/strings/internal/damerau_levenshtein_distance.h"
18
+ #include "benchmark/benchmark.h"
19
+
20
+ namespace {
21
+
22
+ std::string MakeTestString(int desired_length, int num_edits) {
23
+ std::string test(desired_length, 'x');
24
+ for (int i = 0; (i < num_edits) && (i * 8 < desired_length); ++i) {
25
+ test[i * 8] = 'y';
26
+ }
27
+ return test;
28
+ }
29
+
30
+ void BenchmarkArgs(benchmark::internal::Benchmark* benchmark) {
31
+ // Each column is 8 bytes.
32
+ const auto string_size = {1, 8, 64, 100};
33
+ const auto num_edits = {1, 2, 16, 16, 64, 80};
34
+ const auto distance_cap = {1, 2, 3, 16, 64, 80};
35
+ for (const int s : string_size) {
36
+ for (const int n : num_edits) {
37
+ for (const int d : distance_cap) {
38
+ if (n > s) continue;
39
+ benchmark->Args({s, n, d});
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ using absl::strings_internal::CappedDamerauLevenshteinDistance;
46
+ void BM_Distance(benchmark::State& state) {
47
+ std::string s1 = MakeTestString(state.range(0), 0);
48
+ std::string s2 = MakeTestString(state.range(0), state.range(1));
49
+ const size_t cap = state.range(2);
50
+ for (auto _ : state) {
51
+ CappedDamerauLevenshteinDistance(s1, s2, cap);
52
+ }
53
+ }
54
+ BENCHMARK(BM_Distance)->Apply(BenchmarkArgs);
55
+
56
+ } // namespace
@@ -12,13 +12,12 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- #include "absl/strings/internal/memutil.h"
16
-
17
15
  #include <algorithm>
18
16
  #include <cstdlib>
19
17
 
20
- #include "benchmark/benchmark.h"
21
18
  #include "absl/strings/ascii.h"
19
+ #include "absl/strings/internal/memutil.h"
20
+ #include "benchmark/benchmark.h"
22
21
 
23
22
  // We fill the haystack with aaaaaaaaaaaaaaaaaa...aaaab.
24
23
  // That gives us:
@@ -12,11 +12,10 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- #include "absl/strings/internal/ostringstream.h"
16
-
17
15
  #include <sstream>
18
16
  #include <string>
19
17
 
18
+ #include "absl/strings/internal/ostringstream.h"
20
19
  #include "benchmark/benchmark.h"
21
20
 
22
21
  namespace {
@@ -26,6 +26,7 @@
26
26
  #include <cstring>
27
27
  #include <cwchar>
28
28
  #include <string>
29
+ #include <string_view>
29
30
  #include <type_traits>
30
31
 
31
32
  #include "absl/base/config.h"
@@ -34,13 +35,10 @@
34
35
  #include "absl/numeric/int128.h"
35
36
  #include "absl/strings/internal/str_format/extension.h"
36
37
  #include "absl/strings/internal/str_format/float_conversion.h"
38
+ #include "absl/strings/internal/utf8.h"
37
39
  #include "absl/strings/numbers.h"
38
40
  #include "absl/strings/string_view.h"
39
41
 
40
- #if defined(ABSL_HAVE_STD_STRING_VIEW)
41
- #include <string_view>
42
- #endif
43
-
44
42
  namespace absl {
45
43
  ABSL_NAMESPACE_BEGIN
46
44
  namespace str_format_internal {
@@ -311,68 +309,16 @@ inline bool ConvertStringArg(string_view v, const FormatConversionSpecImpl conv,
311
309
  conv.has_left_flag());
312
310
  }
313
311
 
314
- struct ShiftState {
315
- bool saw_high_surrogate = false;
316
- uint8_t bits = 0;
317
- };
318
-
319
- // Converts `v` from UTF-16 or UTF-32 to UTF-8 and writes to `buf`. `buf` is
320
- // assumed to have enough space for the output. `s` is used to carry state
321
- // between successive calls with a UTF-16 surrogate pair. Returns the number of
322
- // chars written, or `static_cast<size_t>(-1)` on failure.
323
- //
324
- // This is basically std::wcrtomb(), but always outputting UTF-8 instead of
325
- // respecting the current locale.
326
- inline size_t WideToUtf8(wchar_t wc, char *buf, ShiftState &s) {
327
- const auto v = static_cast<uint32_t>(wc);
328
- if (v < 0x80) {
329
- *buf = static_cast<char>(v);
330
- return 1;
331
- } else if (v < 0x800) {
332
- *buf++ = static_cast<char>(0xc0 | (v >> 6));
333
- *buf = static_cast<char>(0x80 | (v & 0x3f));
334
- return 2;
335
- } else if (v < 0xd800 || (v - 0xe000) < 0x2000) {
336
- *buf++ = static_cast<char>(0xe0 | (v >> 12));
337
- *buf++ = static_cast<char>(0x80 | ((v >> 6) & 0x3f));
338
- *buf = static_cast<char>(0x80 | (v & 0x3f));
339
- return 3;
340
- } else if ((v - 0x10000) < 0x100000) {
341
- *buf++ = static_cast<char>(0xf0 | (v >> 18));
342
- *buf++ = static_cast<char>(0x80 | ((v >> 12) & 0x3f));
343
- *buf++ = static_cast<char>(0x80 | ((v >> 6) & 0x3f));
344
- *buf = static_cast<char>(0x80 | (v & 0x3f));
345
- return 4;
346
- } else if (v < 0xdc00) {
347
- s.saw_high_surrogate = true;
348
- s.bits = static_cast<uint8_t>(v & 0x3);
349
- const uint8_t high_bits = ((v >> 6) & 0xf) + 1;
350
- *buf++ = static_cast<char>(0xf0 | (high_bits >> 2));
351
- *buf =
352
- static_cast<char>(0x80 | static_cast<uint8_t>((high_bits & 0x3) << 4) |
353
- static_cast<uint8_t>((v >> 2) & 0xf));
354
- return 2;
355
- } else if (v < 0xe000 && s.saw_high_surrogate) {
356
- *buf++ = static_cast<char>(0x80 | static_cast<uint8_t>(s.bits << 4) |
357
- static_cast<uint8_t>((v >> 6) & 0xf));
358
- *buf = static_cast<char>(0x80 | (v & 0x3f));
359
- s.saw_high_surrogate = false;
360
- s.bits = 0;
361
- return 2;
362
- } else {
363
- return static_cast<size_t>(-1);
364
- }
365
- }
366
-
367
312
  inline bool ConvertStringArg(const wchar_t *v,
368
313
  size_t len,
369
314
  const FormatConversionSpecImpl conv,
370
315
  FormatSinkImpl *sink) {
371
316
  FixedArray<char> mb(len * 4);
372
- ShiftState s;
317
+ strings_internal::ShiftState s;
373
318
  size_t chars_written = 0;
374
319
  for (size_t i = 0; i < len; ++i) {
375
- const size_t chars = WideToUtf8(v[i], &mb[chars_written], s);
320
+ const size_t chars =
321
+ strings_internal::WideToUtf8(v[i], &mb[chars_written], s);
376
322
  if (chars == static_cast<size_t>(-1)) { return false; }
377
323
  chars_written += chars;
378
324
  }
@@ -382,8 +328,8 @@ inline bool ConvertStringArg(const wchar_t *v,
382
328
  bool ConvertWCharTImpl(wchar_t v, const FormatConversionSpecImpl conv,
383
329
  FormatSinkImpl *sink) {
384
330
  char mb[4];
385
- ShiftState s;
386
- const size_t chars_written = WideToUtf8(v, mb, s);
331
+ strings_internal::ShiftState s;
332
+ const size_t chars_written = strings_internal::WideToUtf8(v, mb, s);
387
333
  return chars_written != static_cast<size_t>(-1) && !s.saw_high_surrogate &&
388
334
  ConvertStringArg(string_view(mb, chars_written), conv, sink);
389
335
  }
@@ -510,13 +456,11 @@ StringConvertResult FormatConvertImpl(string_view v,
510
456
  return {ConvertStringArg(v, conv, sink)};
511
457
  }
512
458
 
513
- #if defined(ABSL_HAVE_STD_STRING_VIEW)
514
459
  StringConvertResult FormatConvertImpl(std::wstring_view v,
515
460
  const FormatConversionSpecImpl conv,
516
461
  FormatSinkImpl* sink) {
517
462
  return {ConvertStringArg(v.data(), v.size(), conv, sink)};
518
463
  }
519
- #endif
520
464
 
521
465
  StringPtrConvertResult FormatConvertImpl(const char* v,
522
466
  const FormatConversionSpecImpl conv,
@@ -26,6 +26,7 @@
26
26
  #include <memory>
27
27
  #include <sstream>
28
28
  #include <string>
29
+ #include <string_view>
29
30
  #include <type_traits>
30
31
  #include <utility>
31
32
 
@@ -37,10 +38,6 @@
37
38
  #include "absl/strings/internal/str_format/extension.h"
38
39
  #include "absl/strings/string_view.h"
39
40
 
40
- #if defined(ABSL_HAVE_STD_STRING_VIEW)
41
- #include <string_view>
42
- #endif
43
-
44
41
  namespace absl {
45
42
  ABSL_NAMESPACE_BEGIN
46
43
 
@@ -228,7 +225,6 @@ StringConvertResult FormatConvertImpl(const std::wstring& v,
228
225
  StringConvertResult FormatConvertImpl(string_view v,
229
226
  FormatConversionSpecImpl conv,
230
227
  FormatSinkImpl* sink);
231
- #if defined(ABSL_HAVE_STD_STRING_VIEW)
232
228
  StringConvertResult FormatConvertImpl(std::wstring_view v,
233
229
  FormatConversionSpecImpl conv,
234
230
  FormatSinkImpl* sink);
@@ -239,7 +235,6 @@ inline StringConvertResult FormatConvertImpl(std::string_view v,
239
235
  return FormatConvertImpl(absl::string_view(v.data(), v.size()), conv, sink);
240
236
  }
241
237
  #endif // !ABSL_USES_STD_STRING_VIEW
242
- #endif // ABSL_HAVE_STD_STRING_VIEW
243
238
 
244
239
  using StringPtrConvertResult = ArgConvertResult<FormatConversionCharSetUnion(
245
240
  FormatConversionCharSetInternal::s,
@@ -651,15 +646,10 @@ class FormatArgImpl {
651
646
  ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(const wchar_t*, __VA_ARGS__); \
652
647
  ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(std::wstring, __VA_ARGS__)
653
648
 
654
- #if defined(ABSL_HAVE_STD_STRING_VIEW)
655
649
  #define ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_(...) \
656
650
  ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_NO_WSTRING_VIEW_( \
657
651
  __VA_ARGS__); \
658
652
  ABSL_INTERNAL_FORMAT_DISPATCH_INSTANTIATE_(std::wstring_view, __VA_ARGS__)
659
- #else
660
- #define ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_(...) \
661
- ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_NO_WSTRING_VIEW_(__VA_ARGS__)
662
- #endif
663
653
 
664
654
  ABSL_INTERNAL_FORMAT_DISPATCH_OVERLOADS_EXPAND_(extern);
665
655
 
@@ -27,6 +27,7 @@
27
27
  #include <set>
28
28
  #include <sstream>
29
29
  #include <string>
30
+ #include <string_view>
30
31
  #include <thread> // NOLINT
31
32
  #include <type_traits>
32
33
  #include <vector>
@@ -46,10 +47,6 @@
46
47
  #include "absl/types/optional.h"
47
48
  #include "absl/types/span.h"
48
49
 
49
- #if defined(ABSL_HAVE_STD_STRING_VIEW)
50
- #include <string_view>
51
- #endif
52
-
53
50
  namespace absl {
54
51
  ABSL_NAMESPACE_BEGIN
55
52
  namespace str_format_internal {
@@ -322,10 +319,8 @@ TEST_F(FormatConvertTest, BasicString) {
322
319
  TestStringConvert(std::string("hello"));
323
320
  TestStringConvert(std::wstring(L"hello"));
324
321
  TestStringConvert(string_view("hello"));
325
- #if defined(ABSL_HAVE_STD_STRING_VIEW)
326
322
  TestStringConvert(std::string_view("hello"));
327
323
  TestStringConvert(std::wstring_view(L"hello"));
328
- #endif // ABSL_HAVE_STD_STRING_VIEW
329
324
  }
330
325
 
331
326
  TEST_F(FormatConvertTest, NullString) {
@@ -33,28 +33,6 @@ std::string FlagsToString(Flags v) {
33
33
  return s;
34
34
  }
35
35
 
36
- #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
37
-
38
- #define ABSL_INTERNAL_X_VAL(id) \
39
- constexpr absl::FormatConversionChar FormatConversionCharInternal::id;
40
- ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_X_VAL, )
41
- #undef ABSL_INTERNAL_X_VAL
42
- // NOLINTNEXTLINE(readability-redundant-declaration)
43
- constexpr absl::FormatConversionChar FormatConversionCharInternal::kNone;
44
-
45
- #define ABSL_INTERNAL_CHAR_SET_CASE(c) \
46
- constexpr FormatConversionCharSet FormatConversionCharSetInternal::c;
47
- ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_CHAR_SET_CASE, )
48
- #undef ABSL_INTERNAL_CHAR_SET_CASE
49
-
50
- constexpr FormatConversionCharSet FormatConversionCharSetInternal::kStar;
51
- constexpr FormatConversionCharSet FormatConversionCharSetInternal::kIntegral;
52
- constexpr FormatConversionCharSet FormatConversionCharSetInternal::kFloating;
53
- constexpr FormatConversionCharSet FormatConversionCharSetInternal::kNumeric;
54
- constexpr FormatConversionCharSet FormatConversionCharSetInternal::kPointer;
55
-
56
- #endif // ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
57
-
58
36
  bool FormatSinkImpl::PutPaddedString(string_view value, int width,
59
37
  int precision, bool left) {
60
38
  size_t space_remaining = 0;
@@ -16,11 +16,13 @@
16
16
 
17
17
  #include "absl/strings/internal/str_format/extension.h"
18
18
 
19
+ #include <cstddef>
19
20
  #include <random>
20
21
  #include <string>
21
22
 
22
23
  #include "gmock/gmock.h"
23
24
  #include "gtest/gtest.h"
25
+ #include "absl/random/random.h"
24
26
  #include "absl/strings/str_format.h"
25
27
  #include "absl/strings/string_view.h"
26
28
 
@@ -44,8 +46,7 @@ class UserDefinedType {
44
46
  namespace {
45
47
 
46
48
  std::string MakeRandomString(size_t len) {
47
- std::random_device rd;
48
- std::mt19937 gen(rd());
49
+ absl::InsecureBitGen gen;
49
50
  std::uniform_int_distribution<> dis('a', 'z');
50
51
  std::string s(len, '0');
51
52
  for (char& c : s) {
@@ -33,9 +33,11 @@ struct ClearErrnoGuard {
33
33
 
34
34
  void BufferRawSink::Write(string_view v) {
35
35
  size_t to_write = std::min(v.size(), size_);
36
- std::memcpy(buffer_, v.data(), to_write);
37
- buffer_ += to_write;
38
- size_ -= to_write;
36
+ if (to_write > 0) {
37
+ std::memcpy(buffer_, v.data(), to_write);
38
+ buffer_ += to_write;
39
+ size_ -= to_write;
40
+ }
39
41
  total_written_ += v.size();
40
42
  }
41
43
 
@@ -132,8 +132,10 @@ class ParsedFormatBase {
132
132
  has_error_ = other.has_error_;
133
133
  items_ = other.items_;
134
134
  size_t text_size = items_.empty() ? 0 : items_.back().text_end;
135
- data_.reset(new char[text_size]);
136
- memcpy(data_.get(), other.data_.get(), text_size);
135
+ data_ = std::make_unique<char[]>(text_size);
136
+ if (text_size > 0) {
137
+ memcpy(data_.get(), other.data_.get(), text_size);
138
+ }
137
139
  return *this;
138
140
  }
139
141
 
@@ -43,6 +43,7 @@
43
43
  #include <utility>
44
44
 
45
45
  #include "absl/base/config.h"
46
+ #include "absl/base/internal/iterator_traits.h"
46
47
  #include "absl/base/internal/raw_logging.h"
47
48
  #include "absl/strings/internal/ostringstream.h"
48
49
  #include "absl/strings/internal/resize_uninitialized.h"
@@ -228,9 +229,8 @@ std::string JoinAlgorithm(Iterator start, Iterator end, absl::string_view s,
228
229
  // range will be traversed twice: once to calculate the total needed size, and
229
230
  // then again to copy the elements and delimiters to the output string.
230
231
  template <typename Iterator,
231
- typename = typename std::enable_if<std::is_convertible<
232
- typename std::iterator_traits<Iterator>::iterator_category,
233
- std::forward_iterator_tag>::value>::type>
232
+ typename = std::enable_if_t<
233
+ base_internal::IsAtLeastForwardIterator<Iterator>::value>>
234
234
  std::string JoinAlgorithm(Iterator start, Iterator end, absl::string_view s,
235
235
  NoFormatter) {
236
236
  std::string result;
@@ -30,6 +30,7 @@
30
30
  #define ABSL_STRINGS_INTERNAL_STR_SPLIT_INTERNAL_H_
31
31
 
32
32
  #include <array>
33
+ #include <cassert>
33
34
  #include <cstddef>
34
35
  #include <initializer_list>
35
36
  #include <iterator>
@@ -58,8 +59,12 @@ namespace strings_internal {
58
59
  class ConvertibleToStringView {
59
60
  public:
60
61
  ConvertibleToStringView(const char* s) // NOLINT(runtime/explicit)
61
- : value_(s) {}
62
- ConvertibleToStringView(char* s) : value_(s) {} // NOLINT(runtime/explicit)
62
+ : value_(s) {
63
+ assert(s != nullptr);
64
+ }
65
+ ConvertibleToStringView(char* s) : value_(s) { // NOLINT(runtime/explicit)
66
+ assert(s != nullptr);
67
+ }
63
68
  ConvertibleToStringView(absl::string_view s) // NOLINT(runtime/explicit)
64
69
  : value_(s) {}
65
70
  ConvertibleToStringView(const std::string& s) // NOLINT(runtime/explicit)