re2 1.24.1 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/LICENSE +15 -20
  2. package/README.md +62 -4
  3. package/binding.gyp +1 -2
  4. package/lib/addon.cc +7 -3
  5. package/lib/exec.cc +4 -4
  6. package/lib/match.cc +4 -4
  7. package/lib/pattern.cc +148 -1
  8. package/lib/replace.cc +5 -4
  9. package/lib/search.cc +1 -1
  10. package/lib/set.cc +75 -0
  11. package/lib/test.cc +1 -1
  12. package/lib/unicode_properties.h +15840 -0
  13. package/lib/wrapped_re2.h +11 -4
  14. package/lib/wrapped_re2_set.h +3 -1
  15. package/llms-full.txt +37 -7
  16. package/llms.txt +4 -1
  17. package/package.json +11 -10
  18. package/re2.d.ts +2 -0
  19. package/vendor/abseil-cpp/CMake/AbseilDll.cmake +87 -74
  20. package/vendor/abseil-cpp/CMakeLists.txt +3 -3
  21. package/vendor/abseil-cpp/FAQ.md +130 -79
  22. package/vendor/abseil-cpp/MODULE.bazel +6 -7
  23. package/vendor/abseil-cpp/absl/BUILD.bazel +6 -0
  24. package/vendor/abseil-cpp/absl/algorithm/BUILD.bazel +4 -0
  25. package/vendor/abseil-cpp/absl/algorithm/CMakeLists.txt +4 -0
  26. package/vendor/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  27. package/vendor/abseil-cpp/absl/algorithm/container.h +164 -17
  28. package/vendor/abseil-cpp/absl/algorithm/container_test.cc +390 -13
  29. package/vendor/abseil-cpp/absl/base/BUILD.bazel +53 -6
  30. package/vendor/abseil-cpp/absl/base/CMakeLists.txt +28 -4
  31. package/vendor/abseil-cpp/absl/base/attributes.h +61 -42
  32. package/vendor/abseil-cpp/absl/base/call_once.h +1 -0
  33. package/vendor/abseil-cpp/absl/base/casts.h +8 -1
  34. package/vendor/abseil-cpp/absl/base/casts_test.cc +3 -6
  35. package/vendor/abseil-cpp/absl/base/config.h +54 -10
  36. package/vendor/abseil-cpp/absl/base/exception_safety_testing_test.cc +9 -9
  37. package/vendor/abseil-cpp/absl/base/fast_type_id.h +30 -2
  38. package/vendor/abseil-cpp/absl/base/fast_type_id_test.cc +3 -0
  39. package/vendor/abseil-cpp/absl/base/internal/exception_safety_testing.h +15 -12
  40. package/vendor/abseil-cpp/absl/base/internal/hardening.h +136 -0
  41. package/vendor/abseil-cpp/absl/base/internal/hardening_test.cc +168 -0
  42. package/vendor/abseil-cpp/absl/base/internal/iterator_traits.h +2 -2
  43. package/vendor/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -0
  44. package/vendor/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  45. package/vendor/abseil-cpp/absl/base/internal/sysinfo.cc +1 -2
  46. package/vendor/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  47. package/vendor/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  48. package/vendor/abseil-cpp/absl/base/macros.h +36 -20
  49. package/vendor/abseil-cpp/absl/base/nullability.h +4 -3
  50. package/vendor/abseil-cpp/absl/base/optimization.h +3 -2
  51. package/vendor/abseil-cpp/absl/base/optimization_test.cc +4 -3
  52. package/vendor/abseil-cpp/absl/base/options.h +55 -1
  53. package/vendor/abseil-cpp/absl/base/policy_checks.h +5 -5
  54. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  55. package/vendor/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  56. package/vendor/abseil-cpp/absl/base/throw_delegate_test.cc +19 -28
  57. package/vendor/abseil-cpp/absl/cleanup/BUILD.bazel +2 -0
  58. package/vendor/abseil-cpp/absl/cleanup/CMakeLists.txt +2 -0
  59. package/vendor/abseil-cpp/absl/cleanup/cleanup.h +3 -2
  60. package/vendor/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  61. package/vendor/abseil-cpp/absl/container/BUILD.bazel +19 -7
  62. package/vendor/abseil-cpp/absl/container/CMakeLists.txt +6 -5
  63. package/vendor/abseil-cpp/absl/container/btree_benchmark.cc +3 -5
  64. package/vendor/abseil-cpp/absl/container/btree_set.h +5 -5
  65. package/vendor/abseil-cpp/absl/container/btree_test.cc +11 -14
  66. package/vendor/abseil-cpp/absl/container/chunked_queue.h +8 -6
  67. package/vendor/abseil-cpp/absl/container/chunked_queue_test.cc +5 -5
  68. package/vendor/abseil-cpp/absl/container/fixed_array.h +14 -13
  69. package/vendor/abseil-cpp/absl/container/fixed_array_test.cc +3 -3
  70. package/vendor/abseil-cpp/absl/container/flat_hash_map.h +18 -6
  71. package/vendor/abseil-cpp/absl/container/flat_hash_map_test.cc +34 -1
  72. package/vendor/abseil-cpp/absl/container/flat_hash_set.h +21 -7
  73. package/vendor/abseil-cpp/absl/container/flat_hash_set_test.cc +39 -7
  74. package/vendor/abseil-cpp/absl/container/inlined_vector.h +29 -29
  75. package/vendor/abseil-cpp/absl/container/inlined_vector_test.cc +2 -2
  76. package/vendor/abseil-cpp/absl/container/internal/btree.h +32 -24
  77. package/vendor/abseil-cpp/absl/container/internal/btree_container.h +16 -17
  78. package/vendor/abseil-cpp/absl/container/internal/common.h +6 -5
  79. package/vendor/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  80. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple.h +16 -16
  81. package/vendor/abseil-cpp/absl/container/internal/compressed_tuple_test.cc +13 -13
  82. package/vendor/abseil-cpp/absl/container/internal/container_memory.h +41 -31
  83. package/vendor/abseil-cpp/absl/container/internal/hash_function_defaults.h +2 -2
  84. package/vendor/abseil-cpp/absl/container/internal/hash_generator_testing.h +4 -4
  85. package/vendor/abseil-cpp/absl/container/internal/hash_policy_traits.h +3 -3
  86. package/vendor/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +27 -19
  87. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -2
  88. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler.h +0 -17
  89. package/vendor/abseil-cpp/absl/container/internal/hashtablez_sampler_test.cc +12 -30
  90. package/vendor/abseil-cpp/absl/container/internal/inlined_vector.h +28 -28
  91. package/vendor/abseil-cpp/absl/container/internal/layout.h +13 -13
  92. package/vendor/abseil-cpp/absl/container/internal/layout_test.cc +3 -2
  93. package/vendor/abseil-cpp/absl/container/internal/raw_hash_map.h +60 -62
  94. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.cc +59 -39
  95. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set.h +619 -326
  96. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_benchmark.cc +25 -2
  97. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_probe_benchmark.cc +4 -4
  98. package/vendor/abseil-cpp/absl/container/internal/raw_hash_set_test.cc +575 -159
  99. package/vendor/abseil-cpp/absl/container/linked_hash_map.h +2 -2
  100. package/vendor/abseil-cpp/absl/container/node_hash_map.h +27 -15
  101. package/vendor/abseil-cpp/absl/container/node_hash_map_test.cc +34 -0
  102. package/vendor/abseil-cpp/absl/container/node_hash_set.h +25 -11
  103. package/vendor/abseil-cpp/absl/container/node_hash_set_test.cc +39 -7
  104. package/vendor/abseil-cpp/absl/container/sample_element_size_test.cc +7 -4
  105. package/vendor/abseil-cpp/absl/crc/BUILD.bazel +0 -1
  106. package/vendor/abseil-cpp/absl/crc/CMakeLists.txt +2 -3
  107. package/vendor/abseil-cpp/absl/crc/crc32c_benchmark.cc +2 -1
  108. package/vendor/abseil-cpp/absl/crc/internal/cpu_detect.cc +6 -6
  109. package/vendor/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  110. package/vendor/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  111. package/vendor/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  112. package/vendor/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +143 -81
  113. package/vendor/abseil-cpp/absl/debugging/BUILD.bazel +9 -31
  114. package/vendor/abseil-cpp/absl/debugging/CMakeLists.txt +3 -33
  115. package/vendor/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  116. package/vendor/abseil-cpp/absl/debugging/internal/demangle_test.cc +2 -1
  117. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.cc +12 -2
  118. package/vendor/abseil-cpp/absl/debugging/internal/examine_stack.h +2 -3
  119. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +11 -0
  120. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -4
  121. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  122. package/vendor/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +4 -0
  123. package/vendor/abseil-cpp/absl/debugging/internal/symbolize.h +46 -36
  124. package/vendor/abseil-cpp/absl/debugging/stacktrace.cc +18 -58
  125. package/vendor/abseil-cpp/absl/debugging/stacktrace.h +5 -48
  126. package/vendor/abseil-cpp/absl/debugging/stacktrace_test.cc +10 -124
  127. package/vendor/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  128. package/vendor/abseil-cpp/absl/debugging/symbolize_elf.inc +58 -106
  129. package/vendor/abseil-cpp/absl/debugging/symbolize_test.cc +37 -36
  130. package/vendor/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  131. package/vendor/abseil-cpp/absl/flags/BUILD.bazel +6 -3
  132. package/vendor/abseil-cpp/absl/flags/CMakeLists.txt +1 -1
  133. package/vendor/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  134. package/vendor/abseil-cpp/absl/flags/commandlineflag_test.cc +1 -1
  135. package/vendor/abseil-cpp/absl/flags/flag_benchmark.cc +5 -5
  136. package/vendor/abseil-cpp/absl/flags/flag_test.cc +30 -30
  137. package/vendor/abseil-cpp/absl/flags/internal/flag.cc +4 -4
  138. package/vendor/abseil-cpp/absl/flags/internal/flag.h +6 -6
  139. package/vendor/abseil-cpp/absl/flags/marshalling.h +2 -28
  140. package/vendor/abseil-cpp/absl/flags/marshalling_test.cc +12 -11
  141. package/vendor/abseil-cpp/absl/flags/reflection_test.cc +1 -1
  142. package/vendor/abseil-cpp/absl/functional/BUILD.bazel +26 -1
  143. package/vendor/abseil-cpp/absl/functional/CMakeLists.txt +29 -1
  144. package/vendor/abseil-cpp/absl/functional/any_invocable.h +13 -14
  145. package/vendor/abseil-cpp/absl/functional/any_invocable_test.cc +46 -47
  146. package/vendor/abseil-cpp/absl/functional/bind_back.h +79 -0
  147. package/vendor/abseil-cpp/absl/functional/bind_back_test.cc +237 -0
  148. package/vendor/abseil-cpp/absl/functional/bind_front.h +7 -1
  149. package/vendor/abseil-cpp/absl/functional/bind_front_test.cc +4 -4
  150. package/vendor/abseil-cpp/absl/functional/function_ref_test.cc +2 -2
  151. package/vendor/abseil-cpp/absl/functional/internal/any_invocable.h +28 -28
  152. package/vendor/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
  153. package/vendor/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  154. package/vendor/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  155. package/vendor/abseil-cpp/absl/functional/overload_test.cc +13 -13
  156. package/vendor/abseil-cpp/absl/hash/BUILD.bazel +1 -2
  157. package/vendor/abseil-cpp/absl/hash/CMakeLists.txt +1 -2
  158. package/vendor/abseil-cpp/absl/hash/hash.h +1 -1
  159. package/vendor/abseil-cpp/absl/hash/hash_test.cc +14 -20
  160. package/vendor/abseil-cpp/absl/hash/hash_testing.h +11 -9
  161. package/vendor/abseil-cpp/absl/hash/internal/city.cc +39 -51
  162. package/vendor/abseil-cpp/absl/hash/internal/hash.cc +165 -47
  163. package/vendor/abseil-cpp/absl/hash/internal/hash.h +82 -26
  164. package/vendor/abseil-cpp/absl/hash/internal/low_level_hash_test.cc +36 -1
  165. package/vendor/abseil-cpp/absl/hash/internal/spy_hash_state.h +8 -5
  166. package/vendor/abseil-cpp/absl/log/BUILD.bazel +5 -2
  167. package/vendor/abseil-cpp/absl/log/CMakeLists.txt +5 -3
  168. package/vendor/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  169. package/vendor/abseil-cpp/absl/log/internal/BUILD.bazel +15 -1
  170. package/vendor/abseil-cpp/absl/log/internal/log_message.cc +5 -4
  171. package/vendor/abseil-cpp/absl/log/internal/log_message.h +14 -0
  172. package/vendor/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  173. package/vendor/abseil-cpp/absl/log/internal/proto.cc +13 -0
  174. package/vendor/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  175. package/vendor/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  176. package/vendor/abseil-cpp/absl/log/internal/structured_proto_test.cc +3 -3
  177. package/vendor/abseil-cpp/absl/log/internal/vlog_config.cc +2 -2
  178. package/vendor/abseil-cpp/absl/log/internal/vlog_config_benchmark.cc +3 -3
  179. package/vendor/abseil-cpp/absl/log/log_format_test.cc +19 -2
  180. package/vendor/abseil-cpp/absl/log/log_modifier_methods_test.cc +18 -0
  181. package/vendor/abseil-cpp/absl/log/log_streamer.h +29 -2
  182. package/vendor/abseil-cpp/absl/log/log_streamer_test.cc +18 -0
  183. package/vendor/abseil-cpp/absl/log/scoped_mock_log_test.cc +1 -1
  184. package/vendor/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  185. package/vendor/abseil-cpp/absl/log/vlog_is_on_test.cc +6 -5
  186. package/vendor/abseil-cpp/absl/memory/memory.h +55 -5
  187. package/vendor/abseil-cpp/absl/memory/memory_test.cc +55 -1
  188. package/vendor/abseil-cpp/absl/meta/BUILD.bazel +2 -0
  189. package/vendor/abseil-cpp/absl/meta/internal/requires.h +1 -1
  190. package/vendor/abseil-cpp/absl/meta/type_traits.h +119 -55
  191. package/vendor/abseil-cpp/absl/meta/type_traits_test.cc +7 -7
  192. package/vendor/abseil-cpp/absl/numeric/int128_test.cc +6 -6
  193. package/vendor/abseil-cpp/absl/profiling/BUILD.bazel +3 -1
  194. package/vendor/abseil-cpp/absl/profiling/hashtable.cc +0 -4
  195. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.cc +32 -33
  196. package/vendor/abseil-cpp/absl/profiling/internal/profile_builder.h +25 -2
  197. package/vendor/abseil-cpp/absl/profiling/internal/sample_recorder_test.cc +8 -5
  198. package/vendor/abseil-cpp/absl/random/BUILD.bazel +13 -1
  199. package/vendor/abseil-cpp/absl/random/CMakeLists.txt +23 -2
  200. package/vendor/abseil-cpp/absl/random/benchmarks.cc +1 -1
  201. package/vendor/abseil-cpp/absl/random/beta_distribution.h +2 -2
  202. package/vendor/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  203. package/vendor/abseil-cpp/absl/random/bit_gen_ref_test.cc +43 -0
  204. package/vendor/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  205. package/vendor/abseil-cpp/absl/random/distributions.h +17 -17
  206. package/vendor/abseil-cpp/absl/random/distributions_test.cc +4 -4
  207. package/vendor/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  208. package/vendor/abseil-cpp/absl/random/internal/BUILD.bazel +4 -2
  209. package/vendor/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  210. package/vendor/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  211. package/vendor/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  212. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  213. package/vendor/abseil-cpp/absl/random/internal/iostream_state_saver_test.cc +3 -2
  214. package/vendor/abseil-cpp/absl/random/internal/mock_helpers.h +14 -40
  215. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  216. package/vendor/abseil-cpp/absl/random/internal/nonsecure_base_test.cc +2 -2
  217. package/vendor/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  218. package/vendor/abseil-cpp/absl/random/internal/pcg_engine_test.cc +3 -2
  219. package/vendor/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  220. package/vendor/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  221. package/vendor/abseil-cpp/absl/random/internal/randen_engine_test.cc +3 -2
  222. package/vendor/abseil-cpp/absl/random/internal/randen_test.cc +3 -2
  223. package/vendor/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  224. package/vendor/abseil-cpp/absl/random/internal/seed_material.cc +4 -4
  225. package/vendor/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  226. package/vendor/abseil-cpp/absl/random/internal/traits.h +21 -0
  227. package/vendor/abseil-cpp/absl/random/internal/traits_test.cc +5 -0
  228. package/vendor/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  229. package/vendor/abseil-cpp/absl/random/internal/uniform_helper_test.cc +2 -1
  230. package/vendor/abseil-cpp/absl/random/mocking_access.h +74 -0
  231. package/vendor/abseil-cpp/absl/random/mocking_bit_gen.h +9 -19
  232. package/vendor/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  233. package/vendor/abseil-cpp/absl/status/BUILD.bazel +81 -0
  234. package/vendor/abseil-cpp/absl/status/CMakeLists.txt +91 -0
  235. package/vendor/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  236. package/vendor/abseil-cpp/absl/status/internal/status_internal.h +26 -2
  237. package/vendor/abseil-cpp/absl/status/internal/status_matchers.h +22 -8
  238. package/vendor/abseil-cpp/absl/status/internal/statusor_internal.h +43 -43
  239. package/vendor/abseil-cpp/absl/status/status.cc +62 -70
  240. package/vendor/abseil-cpp/absl/status/status.h +249 -23
  241. package/vendor/abseil-cpp/absl/status/status_benchmark.cc +12 -0
  242. package/vendor/abseil-cpp/absl/status/status_builder.cc +196 -0
  243. package/vendor/abseil-cpp/absl/status/status_builder.h +978 -0
  244. package/vendor/abseil-cpp/absl/status/status_builder_test.cc +380 -0
  245. package/vendor/abseil-cpp/absl/status/status_macros.h +484 -0
  246. package/vendor/abseil-cpp/absl/status/status_macros_test.cc +634 -0
  247. package/vendor/abseil-cpp/absl/status/status_matchers.h +2 -1
  248. package/vendor/abseil-cpp/absl/status/status_matchers_test.cc +3 -4
  249. package/vendor/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  250. package/vendor/abseil-cpp/absl/status/status_test.cc +443 -13
  251. package/vendor/abseil-cpp/absl/status/statusor.h +69 -36
  252. package/vendor/abseil-cpp/absl/status/statusor_test.cc +132 -35
  253. package/vendor/abseil-cpp/absl/strings/BUILD.bazel +42 -7
  254. package/vendor/abseil-cpp/absl/strings/CMakeLists.txt +33 -4
  255. package/vendor/abseil-cpp/absl/strings/ascii.h +1 -2
  256. package/vendor/abseil-cpp/absl/strings/atod_manual_test.cc +5 -5
  257. package/vendor/abseil-cpp/absl/strings/cord.cc +26 -7
  258. package/vendor/abseil-cpp/absl/strings/cord.h +23 -13
  259. package/vendor/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  260. package/vendor/abseil-cpp/absl/strings/cord_test.cc +85 -9
  261. package/vendor/abseil-cpp/absl/strings/escaping.cc +176 -30
  262. package/vendor/abseil-cpp/absl/strings/escaping.h +12 -2
  263. package/vendor/abseil-cpp/absl/strings/escaping_benchmark.cc +1 -3
  264. package/vendor/abseil-cpp/absl/strings/escaping_test.cc +18 -18
  265. package/vendor/abseil-cpp/absl/strings/has_absl_stringify_test.cc +2 -2
  266. package/vendor/abseil-cpp/absl/strings/has_ostream_operator_test.cc +2 -2
  267. package/vendor/abseil-cpp/absl/strings/internal/append_and_overwrite.h +10 -10
  268. package/vendor/abseil-cpp/absl/strings/internal/cordz_sample_token_test.cc +1 -1
  269. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  270. package/vendor/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  271. package/vendor/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  272. package/vendor/abseil-cpp/absl/strings/internal/escaping.h +2 -26
  273. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_internal.h +23 -2
  274. package/vendor/abseil-cpp/absl/strings/internal/generic_printer_test.cc +6 -2
  275. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -24
  276. package/vendor/abseil-cpp/absl/strings/internal/resize_uninitialized_test.cc +16 -41
  277. package/vendor/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  278. package/vendor/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  279. package/vendor/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  280. package/vendor/abseil-cpp/absl/strings/internal/str_format/convert_test.cc +12 -20
  281. package/vendor/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +510 -307
  282. package/vendor/abseil-cpp/absl/strings/internal/str_join_internal.h +0 -1
  283. package/vendor/abseil-cpp/absl/strings/internal/str_split_internal.h +9 -10
  284. package/vendor/abseil-cpp/absl/strings/internal/string_constant_test.cc +6 -5
  285. package/vendor/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  286. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
  287. package/vendor/abseil-cpp/absl/strings/internal/stringify_stream_test.cc +111 -0
  288. package/vendor/abseil-cpp/absl/strings/numbers.cc +406 -0
  289. package/vendor/abseil-cpp/absl/strings/numbers.h +4 -0
  290. package/vendor/abseil-cpp/absl/strings/numbers_test.cc +33 -0
  291. package/vendor/abseil-cpp/absl/strings/resize_and_overwrite.h +10 -6
  292. package/vendor/abseil-cpp/absl/strings/str_cat.h +36 -1
  293. package/vendor/abseil-cpp/absl/strings/str_cat_benchmark.cc +1 -2
  294. package/vendor/abseil-cpp/absl/strings/str_cat_test.cc +28 -0
  295. package/vendor/abseil-cpp/absl/strings/str_join_test.cc +4 -4
  296. package/vendor/abseil-cpp/absl/strings/str_split.h +11 -6
  297. package/vendor/abseil-cpp/absl/strings/str_split_test.cc +13 -0
  298. package/vendor/abseil-cpp/absl/strings/substitute.h +2 -2
  299. package/vendor/abseil-cpp/absl/synchronization/BUILD.bazel +3 -0
  300. package/vendor/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +21 -0
  301. package/vendor/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  302. package/vendor/abseil-cpp/absl/synchronization/mutex.cc +13 -0
  303. package/vendor/abseil-cpp/absl/synchronization/mutex.h +32 -2
  304. package/vendor/abseil-cpp/absl/synchronization/mutex_test.cc +17 -3
  305. package/vendor/abseil-cpp/absl/time/BUILD.bazel +80 -0
  306. package/vendor/abseil-cpp/absl/time/CMakeLists.txt +73 -0
  307. package/vendor/abseil-cpp/absl/time/clock.h +3 -0
  308. package/vendor/abseil-cpp/absl/time/clock_interface.cc +71 -0
  309. package/vendor/abseil-cpp/absl/time/clock_interface.h +93 -0
  310. package/vendor/abseil-cpp/absl/time/clock_interface_test.cc +128 -0
  311. package/vendor/abseil-cpp/absl/time/format.cc +3 -10
  312. package/vendor/abseil-cpp/absl/time/format_test.cc +12 -0
  313. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +90 -89
  314. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_format_test.cc +80 -5
  315. package/vendor/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +1 -2
  316. package/vendor/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  317. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/version +1 -1
  318. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/America/Vancouver +0 -0
  319. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Ho_Chi_Minh +0 -0
  320. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Phnom_Penh +0 -0
  321. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Saigon +0 -0
  322. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Tbilisi +0 -0
  323. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Asia/Vientiane +0 -0
  324. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Canada/Pacific +0 -0
  325. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Chisinau +0 -0
  326. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/Europe/Tiraspol +0 -0
  327. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zone1970.tab +1 -1
  328. package/vendor/abseil-cpp/absl/time/internal/cctz/testdata/zoneinfo/zonenow.tab +3 -3
  329. package/vendor/abseil-cpp/absl/time/simulated_clock.cc +225 -0
  330. package/vendor/abseil-cpp/absl/time/simulated_clock.h +109 -0
  331. package/vendor/abseil-cpp/absl/time/simulated_clock_test.cc +614 -0
  332. package/vendor/abseil-cpp/absl/types/BUILD.bazel +116 -0
  333. package/vendor/abseil-cpp/absl/types/CMakeLists.txt +100 -0
  334. package/vendor/abseil-cpp/absl/types/any.h +26 -4
  335. package/vendor/abseil-cpp/absl/types/any_span.h +1067 -0
  336. package/vendor/abseil-cpp/absl/types/any_span_benchmark.cc +258 -0
  337. package/vendor/abseil-cpp/absl/types/any_span_test.cc +1210 -0
  338. package/vendor/abseil-cpp/absl/types/compare.h +4 -4
  339. package/vendor/abseil-cpp/absl/types/internal/any_span.h +477 -0
  340. package/vendor/abseil-cpp/absl/types/internal/span.h +5 -6
  341. package/vendor/abseil-cpp/absl/types/optional.h +30 -3
  342. package/vendor/abseil-cpp/absl/types/optional_ref.h +295 -0
  343. package/vendor/abseil-cpp/absl/types/optional_ref_test.cc +370 -0
  344. package/vendor/abseil-cpp/absl/types/source_location.cc +18 -0
  345. package/vendor/abseil-cpp/absl/types/source_location.h +172 -0
  346. package/vendor/abseil-cpp/absl/types/source_location_test.cc +139 -0
  347. package/vendor/abseil-cpp/absl/types/span.h +19 -23
  348. package/vendor/abseil-cpp/absl/types/variant.h +75 -18
  349. package/vendor/abseil-cpp/absl/types/variant_test.cc +23 -23
  350. package/vendor/abseil-cpp/absl/utility/BUILD.bazel +1 -0
  351. package/vendor/abseil-cpp/absl/utility/CMakeLists.txt +1 -0
  352. package/vendor/abseil-cpp/absl/utility/utility.h +99 -16
  353. package/vendor/abseil-cpp/ci/absl_alternate_options.h +2 -0
  354. package/vendor/abseil-cpp/ci/linux_arm_clang-latest_libcxx_bazel.sh +10 -4
  355. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_asan_bazel.sh +13 -6
  356. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_bazel.sh +10 -4
  357. package/vendor/abseil-cpp/ci/linux_clang-latest_libcxx_tsan_bazel.sh +12 -5
  358. package/vendor/abseil-cpp/ci/linux_clang-latest_libstdcxx_bazel.sh +9 -2
  359. package/vendor/abseil-cpp/ci/linux_docker_containers.sh +4 -4
  360. package/vendor/abseil-cpp/ci/linux_gcc-floor_libstdcxx_bazel.sh +10 -3
  361. package/vendor/abseil-cpp/ci/linux_gcc-latest_libstdcxx_bazel.sh +8 -2
  362. package/vendor/abseil-cpp/ci/macos_xcode_bazel.sh +4 -3
  363. package/vendor/abseil-cpp/ci/macos_xcode_cmake.sh +2 -2
  364. package/vendor/abseil-cpp/ci/windows_clangcl_bazel.bat +1 -1
  365. package/vendor/abseil-cpp/ci/windows_msvc_bazel.bat +1 -1
  366. package/AGENTS.md +0 -131
  367. package/ARCHITECTURE.md +0 -152
  368. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc +0 -118
  369. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h +0 -71
  370. package/vendor/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc +0 -97
@@ -42,6 +42,7 @@ cc_library(
42
42
  deps = [
43
43
  "//absl/base:config",
44
44
  "//absl/base:core_headers",
45
+ "//absl/base:hardening",
45
46
  "//absl/base:nullability",
46
47
  ],
47
48
  )
@@ -106,6 +107,7 @@ cc_library(
106
107
  "//absl/base:config",
107
108
  "//absl/base:core_headers",
108
109
  "//absl/base:endian",
110
+ "//absl/base:hardening",
109
111
  "//absl/base:iterator_traits_internal",
110
112
  "//absl/base:nullability",
111
113
  "//absl/base:raw_logging_internal",
@@ -114,6 +116,7 @@ cc_library(
114
116
  "//absl/meta:type_traits",
115
117
  "//absl/numeric:bits",
116
118
  "//absl/numeric:int128",
119
+ "//absl/types:source_location",
117
120
  ],
118
121
  )
119
122
 
@@ -151,6 +154,7 @@ cc_library(
151
154
  "//absl/base:config",
152
155
  "//absl/base:core_headers",
153
156
  "//absl/base:dynamic_annotations",
157
+ "//absl/base:hardening",
154
158
  "//absl/base:throw_delegate",
155
159
  ],
156
160
  )
@@ -179,6 +183,7 @@ cc_library(
179
183
  ":resize_and_overwrite",
180
184
  "//absl/base:config",
181
185
  "//absl/base:core_headers",
186
+ "//absl/base:hardening",
182
187
  "//absl/base:throw_delegate",
183
188
  ],
184
189
  )
@@ -217,6 +222,7 @@ cc_test(
217
222
  "internal/escaping_test_common.h",
218
223
  ],
219
224
  copts = ABSL_TEST_COPTS,
225
+ tags = ["no_test_chromiumos_x86_64"],
220
226
  visibility = ["//visibility:private"],
221
227
  deps = [
222
228
  ":cord",
@@ -254,7 +260,6 @@ cc_test(
254
260
  visibility = ["//visibility:private"],
255
261
  deps = [
256
262
  ":strings",
257
- "//absl/types:optional",
258
263
  "@googletest//:gtest",
259
264
  "@googletest//:gtest_main",
260
265
  ],
@@ -278,7 +283,6 @@ cc_test(
278
283
  visibility = ["//visibility:private"],
279
284
  deps = [
280
285
  ":has_ostream_operator",
281
- "//absl/types:optional",
282
286
  "@googletest//:gtest",
283
287
  "@googletest//:gtest_main",
284
288
  ],
@@ -401,7 +405,6 @@ cc_test(
401
405
  visibility = ["//visibility:private"],
402
406
  deps = [
403
407
  ":strings",
404
- "//absl/meta:type_traits",
405
408
  "@googletest//:gtest",
406
409
  "@googletest//:gtest_main",
407
410
  ],
@@ -424,6 +427,36 @@ cc_test(
424
427
  ],
425
428
  )
426
429
 
430
+ cc_library(
431
+ name = "stringify_stream",
432
+ hdrs = ["internal/stringify_stream.h"],
433
+ copts = ABSL_DEFAULT_COPTS,
434
+ linkopts = ABSL_DEFAULT_LINKOPTS,
435
+ visibility = [
436
+ "//absl:friends",
437
+ "//absl/status:__pkg__",
438
+ ],
439
+ deps = [
440
+ ":string_view",
441
+ "//absl/base:config",
442
+ ],
443
+ )
444
+
445
+ cc_test(
446
+ name = "stringify_stream_test",
447
+ srcs = ["internal/stringify_stream_test.cc"],
448
+ copts = ABSL_TEST_COPTS,
449
+ linkopts = ABSL_DEFAULT_LINKOPTS,
450
+ deps = [
451
+ ":string_view",
452
+ ":stringify_stream",
453
+ "//absl/base:config",
454
+ "//absl/strings:str_format",
455
+ "@googletest//:gtest",
456
+ "@googletest//:gtest_main",
457
+ ],
458
+ )
459
+
427
460
  cc_binary(
428
461
  name = "charset_benchmark",
429
462
  testonly = True,
@@ -645,8 +678,10 @@ cc_library(
645
678
  "//absl/base:config",
646
679
  "//absl/base:core_headers",
647
680
  "//absl/base:endian",
681
+ "//absl/base:hardening",
648
682
  "//absl/base:nullability",
649
683
  "//absl/base:raw_logging_internal",
684
+ "//absl/cleanup",
650
685
  "//absl/container:inlined_vector",
651
686
  "//absl/crc:crc32c",
652
687
  "//absl/crc:crc_cord_state",
@@ -943,6 +978,7 @@ cc_test(
943
978
  ":cord_rep_test_util",
944
979
  ":string_view",
945
980
  "//absl/base:config",
981
+ "//absl/base:hardening",
946
982
  "//absl/types:span",
947
983
  "@googletest//:gtest",
948
984
  "@googletest//:gtest_main",
@@ -978,7 +1014,7 @@ cc_test(
978
1014
  "//absl/log:check",
979
1015
  "//absl/random",
980
1016
  "//absl/types:compare",
981
- "//absl/types:optional",
1017
+ "//absl/types:span",
982
1018
  "@googletest//:gtest",
983
1019
  "@googletest//:gtest_main",
984
1020
  ],
@@ -1086,6 +1122,7 @@ cc_test(
1086
1122
  "//absl/container:btree",
1087
1123
  "//absl/container:flat_hash_map",
1088
1124
  "//absl/container:node_hash_map",
1125
+ "//absl/hash",
1089
1126
  "@googletest//:gtest",
1090
1127
  "@googletest//:gtest_main",
1091
1128
  ],
@@ -1371,7 +1408,6 @@ cc_library(
1371
1408
  "//absl/numeric:bits",
1372
1409
  "//absl/numeric:int128",
1373
1410
  "//absl/numeric:representation",
1374
- "//absl/types:optional",
1375
1411
  "//absl/types:span",
1376
1412
  "//absl/utility",
1377
1413
  ],
@@ -1465,7 +1501,6 @@ cc_test(
1465
1501
  "//absl/base:raw_logging_internal",
1466
1502
  "//absl/log",
1467
1503
  "//absl/numeric:int128",
1468
- "//absl/types:optional",
1469
1504
  "//absl/types:span",
1470
1505
  "@googletest//:gtest",
1471
1506
  "@googletest//:gtest_main",
@@ -1535,7 +1570,6 @@ cc_binary(
1535
1570
  ":str_format",
1536
1571
  ":strings",
1537
1572
  "//absl/base",
1538
- "//absl/types:optional",
1539
1573
  ],
1540
1574
  )
1541
1575
 
@@ -1563,6 +1597,7 @@ cc_library(
1563
1597
  linkopts = ABSL_DEFAULT_LINKOPTS,
1564
1598
  visibility = [
1565
1599
  "//absl:__subpackages__",
1600
+ "//absl:friends",
1566
1601
  ],
1567
1602
  deps = [
1568
1603
  ":str_format",
@@ -81,11 +81,14 @@ absl_cc_library(
81
81
  absl::config
82
82
  absl::core_headers
83
83
  absl::endian
84
+ absl::hardening
84
85
  absl::int128
85
86
  absl::iterator_traits_internal
86
87
  absl::memory
87
88
  absl::nullability
88
89
  absl::raw_logging_internal
90
+ absl::source_location
91
+ absl::strings
89
92
  absl::throw_delegate
90
93
  absl::type_traits
91
94
  PUBLIC
@@ -116,6 +119,32 @@ absl_cc_library(
116
119
  PUBLIC
117
120
  )
118
121
 
122
+ absl_cc_library(
123
+ NAME
124
+ stringify_stream
125
+ HDRS
126
+ "internal/stringify_stream.h"
127
+ COPTS
128
+ ${ABSL_DEFAULT_COPTS}
129
+ DEPS
130
+ absl::string_view
131
+ absl::config
132
+ )
133
+
134
+ absl_cc_test(
135
+ NAME
136
+ stringify_stream_test
137
+ SRCS
138
+ "internal/stringify_stream_test.cc"
139
+ COPTS
140
+ ${ABSL_TEST_COPTS}
141
+ DEPS
142
+ absl::string_view
143
+ absl::stringify_stream
144
+ absl::str_format
145
+ GTest::gmock_main
146
+ )
147
+
119
148
  # Internal-only target, do not depend on directly.
120
149
  absl_cc_library(
121
150
  NAME
@@ -151,6 +180,7 @@ absl_cc_library(
151
180
  absl::config
152
181
  absl::core_headers
153
182
  absl::dynamic_annotations
183
+ absl::hardening
154
184
  absl::throw_delegate
155
185
  )
156
186
 
@@ -178,6 +208,7 @@ absl_cc_library(
178
208
  DEPS
179
209
  absl::config
180
210
  absl::core_headers
211
+ absl::hardening
181
212
  absl::strings_resize_and_overwrite
182
213
  absl::throw_delegate
183
214
  )
@@ -231,7 +262,6 @@ absl_cc_test(
231
262
  COPTS
232
263
  ${ABSL_TEST_COPTS}
233
264
  DEPS
234
- absl::optional
235
265
  absl::strings
236
266
  GTest::gmock_main
237
267
  )
@@ -245,7 +275,6 @@ absl_cc_test(
245
275
  ${ABSL_TEST_COPTS}
246
276
  DEPS
247
277
  absl::has_ostream_operator
248
- absl::optional
249
278
  GTest::gmock_main
250
279
  )
251
280
 
@@ -313,7 +342,6 @@ absl_cc_test(
313
342
  ${ABSL_TEST_COPTS}
314
343
  DEPS
315
344
  absl::strings
316
- absl::type_traits
317
345
  GTest::gmock_main
318
346
  )
319
347
 
@@ -371,6 +399,7 @@ absl_cc_test(
371
399
  absl::dynamic_annotations
372
400
  absl::btree
373
401
  absl::flat_hash_map
402
+ absl::hash
374
403
  absl::node_hash_map
375
404
  GTest::gmock_main
376
405
  )
@@ -1049,6 +1078,7 @@ absl_cc_library(
1049
1078
  absl::crc_cord_state
1050
1079
  absl::endian
1051
1080
  absl::function_ref
1081
+ absl::hardening
1052
1082
  absl::inlined_vector
1053
1083
  absl::nullability
1054
1084
  absl::optional
@@ -1138,7 +1168,6 @@ absl_cc_test(
1138
1168
  absl::hash_testing
1139
1169
  absl::no_destructor
1140
1170
  absl::log
1141
- absl::optional
1142
1171
  absl::random_random
1143
1172
  absl::str_format
1144
1173
  absl::strings
@@ -60,7 +60,6 @@
60
60
  #include "absl/base/attributes.h"
61
61
  #include "absl/base/config.h"
62
62
  #include "absl/base/nullability.h"
63
- #include "absl/strings/internal/resize_uninitialized.h"
64
63
  #include "absl/strings/resize_and_overwrite.h"
65
64
  #include "absl/strings/string_view.h"
66
65
 
@@ -131,7 +130,7 @@ inline bool ascii_iscntrl(unsigned char c) {
131
130
  // ascii_isxdigit()
132
131
  //
133
132
  // Determines whether the given character can be represented as a hexadecimal
134
- // digit character (i.e. {0-9} or {A-F}).
133
+ // digit character (i.e. {0-9} or {A-F} or {a-f}).
135
134
  inline bool ascii_isxdigit(unsigned char c) {
136
135
  return (ascii_internal::kPropertyBits[c] & 0x80) != 0;
137
136
  }
@@ -39,13 +39,13 @@
39
39
 
40
40
  #include <cstdint>
41
41
  #include <cstdio>
42
+ #include <optional>
42
43
  #include <string>
43
44
 
44
45
  #include "absl/base/casts.h"
45
46
  #include "absl/strings/numbers.h"
46
47
  #include "absl/strings/str_format.h"
47
48
  #include "absl/strings/string_view.h"
48
- #include "absl/types/optional.h"
49
49
 
50
50
  static constexpr uint8_t kUnhex[256] = {
51
51
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, //
@@ -85,10 +85,10 @@ static constexpr uint8_t kUnhex[256] = {
85
85
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, //
86
86
  };
87
87
 
88
- static absl::optional<std::string> ReadFileToString(const char* filename) {
88
+ static std::optional<std::string> ReadFileToString(const char* filename) {
89
89
  FILE* f = fopen(filename, "rb");
90
90
  if (!f) {
91
- return absl::nullopt;
91
+ return std::nullopt;
92
92
  }
93
93
  fseek(f, 0, SEEK_END);
94
94
  size_t size = ftell(f);
@@ -97,13 +97,13 @@ static absl::optional<std::string> ReadFileToString(const char* filename) {
97
97
  size_t n = fread(&s[0], 1, size, f);
98
98
  fclose(f);
99
99
  if (n != size) {
100
- return absl::nullopt;
100
+ return std::nullopt;
101
101
  }
102
102
  return s;
103
103
  }
104
104
 
105
105
  static bool ProcessOneTestFile(const char* filename) {
106
- absl::optional<std::string> contents = ReadFileToString(filename);
106
+ std::optional<std::string> contents = ReadFileToString(filename);
107
107
  if (!contents) {
108
108
  absl::FPrintF(stderr, "Invalid file: %s\n", filename);
109
109
  return false;
@@ -26,6 +26,7 @@
26
26
  #include <iostream>
27
27
  #include <limits>
28
28
  #include <memory>
29
+ #include <optional>
29
30
  #include <ostream>
30
31
  #include <sstream>
31
32
  #include <string>
@@ -34,10 +35,11 @@
34
35
  #include "absl/base/attributes.h"
35
36
  #include "absl/base/config.h"
36
37
  #include "absl/base/internal/endian.h"
38
+ #include "absl/base/internal/hardening.h"
37
39
  #include "absl/base/internal/raw_logging.h"
38
40
  #include "absl/base/macros.h"
39
- #include "absl/base/optimization.h"
40
41
  #include "absl/base/nullability.h"
42
+ #include "absl/base/optimization.h"
41
43
  #include "absl/container/inlined_vector.h"
42
44
  #include "absl/crc/crc32c.h"
43
45
  #include "absl/crc/internal/crc_cord_state.h"
@@ -56,7 +58,6 @@
56
58
  #include "absl/strings/str_cat.h"
57
59
  #include "absl/strings/string_view.h"
58
60
  #include "absl/strings/strip.h"
59
- #include "absl/types/optional.h"
60
61
  #include "absl/types/span.h"
61
62
 
62
63
  namespace absl {
@@ -886,9 +887,9 @@ const crc_internal::CrcCordState* absl_nullable Cord::MaybeGetCrcCordState()
886
887
  return &contents_.tree()->crc()->crc_cord_state;
887
888
  }
888
889
 
889
- absl::optional<uint32_t> Cord::ExpectedChecksum() const {
890
+ std::optional<uint32_t> Cord::ExpectedChecksum() const {
890
891
  if (!contents_.is_tree() || !contents_.tree()->IsCrc()) {
891
- return absl::nullopt;
892
+ return std::nullopt;
892
893
  }
893
894
  return static_cast<uint32_t>(
894
895
  contents_.tree()->crc()->crc_cord_state.Checksum());
@@ -1085,9 +1086,27 @@ void Cord::CopyToArraySlowPath(char* absl_nonnull dst) const {
1085
1086
  }
1086
1087
  }
1087
1088
 
1089
+ size_t CopyCordToSpan(const Cord& src, absl::Span<char> dst) {
1090
+ if (src.size() <= dst.size()) {
1091
+ src.CopyToArrayImpl(dst.data());
1092
+ return src.size();
1093
+ }
1094
+
1095
+ const size_t result = dst.size();
1096
+ for (absl::string_view chunk : src.Chunks()) {
1097
+ size_t n = std::min(chunk.size(), dst.size());
1098
+ if (n == 0) {
1099
+ break;
1100
+ }
1101
+ memcpy(dst.data(), chunk.data(), n);
1102
+ dst.remove_prefix(n);
1103
+ }
1104
+ return result;
1105
+ }
1106
+
1088
1107
  Cord Cord::ChunkIterator::AdvanceAndReadBytes(size_t n) {
1089
- ABSL_HARDENING_ASSERT(bytes_remaining_ >= n &&
1090
- "Attempted to iterate past `end()`");
1108
+ // Failure of this assertion indicates an attempt to iterate past `end()`.
1109
+ absl::base_internal::HardeningAssertGE(bytes_remaining_, n);
1091
1110
  Cord subcord;
1092
1111
  auto constexpr method = CordzUpdateTracker::kCordReader;
1093
1112
 
@@ -1155,7 +1174,7 @@ Cord Cord::ChunkIterator::AdvanceAndReadBytes(size_t n) {
1155
1174
  }
1156
1175
 
1157
1176
  char Cord::operator[](size_t i) const {
1158
- ABSL_HARDENING_ASSERT(i < size());
1177
+ absl::base_internal::HardeningAssertLT(i, size());
1159
1178
  size_t offset = i;
1160
1179
  const CordRep* rep = contents_.tree();
1161
1180
  if (rep == nullptr) {
@@ -67,6 +67,7 @@
67
67
  #include <cstring>
68
68
  #include <iosfwd>
69
69
  #include <iterator>
70
+ #include <optional>
70
71
  #include <string>
71
72
  #include <type_traits>
72
73
  #include <utility>
@@ -74,6 +75,7 @@
74
75
  #include "absl/base/attributes.h"
75
76
  #include "absl/base/config.h"
76
77
  #include "absl/base/internal/endian.h"
78
+ #include "absl/base/internal/hardening.h"
77
79
  #include "absl/base/macros.h"
78
80
  #include "absl/base/nullability.h"
79
81
  #include "absl/base/optimization.h"
@@ -96,6 +98,7 @@
96
98
  #include "absl/strings/string_view.h"
97
99
  #include "absl/types/compare.h"
98
100
  #include "absl/types/optional.h"
101
+ #include "absl/types/span.h"
99
102
 
100
103
  namespace absl {
101
104
  ABSL_NAMESPACE_BEGIN
@@ -105,6 +108,7 @@ template <typename Releaser>
105
108
  Cord MakeCordFromExternal(absl::string_view, Releaser&&);
106
109
  void CopyCordToString(const Cord& src, std::string* absl_nonnull dst);
107
110
  void AppendCordToString(const Cord& src, std::string* absl_nonnull dst);
111
+ [[nodiscard]] size_t CopyCordToSpan(const Cord& src, absl::Span<char> dst);
108
112
 
109
113
  // Cord memory accounting modes
110
114
  enum class CordMemoryAccounting {
@@ -173,7 +177,7 @@ class Cord {
173
177
  private:
174
178
  template <typename T>
175
179
  using EnableIfString =
176
- absl::enable_if_t<std::is_same<T, std::string>::value, int>;
180
+ std::enable_if_t<std::is_same<T, std::string>::value, int>;
177
181
 
178
182
  public:
179
183
  // Cord::Cord() Constructors.
@@ -222,7 +226,7 @@ class Cord {
222
226
  // remain live until the releaser is invoked. The callable releaser also must:
223
227
  //
224
228
  // * be move constructible
225
- // * support `void operator()(absl::string_view) const` or `void operator()`
229
+ // * support `void operator()(absl::string_view)` or `void operator()()`
226
230
  //
227
231
  // Example:
228
232
  //
@@ -432,6 +436,12 @@ class Cord {
432
436
  friend void AppendCordToString(const Cord& src,
433
437
  std::string* absl_nonnull dst);
434
438
 
439
+ // CopyCordToSpan()
440
+ //
441
+ // Copies up to `dst.size()` bytes starting from the beginning of `src` to
442
+ // `dst`. Returns the number of bytes copied.
443
+ friend size_t CopyCordToSpan(const Cord& src, absl::Span<char> dst);
444
+
435
445
  class CharIterator;
436
446
 
437
447
  //----------------------------------------------------------------------------
@@ -763,7 +773,7 @@ class Cord {
763
773
  //
764
774
  // If this cord's representation is a single flat array, returns a
765
775
  // string_view referencing that array. Otherwise returns nullopt.
766
- absl::optional<absl::string_view> TryFlat() const
776
+ std::optional<absl::string_view> TryFlat() const
767
777
  ABSL_ATTRIBUTE_LIFETIME_BOUND;
768
778
 
769
779
  // Cord::Flatten()
@@ -816,11 +826,11 @@ class Cord {
816
826
 
817
827
  // Returns this cord's expected checksum, if it has one. Otherwise, returns
818
828
  // nullopt.
819
- absl::optional<uint32_t> ExpectedChecksum() const;
829
+ std::optional<uint32_t> ExpectedChecksum() const;
820
830
 
821
831
  template <typename H>
822
832
  friend H AbslHashValue(H hash_state, const absl::Cord& c) {
823
- absl::optional<absl::string_view> maybe_flat = c.TryFlat();
833
+ std::optional<absl::string_view> maybe_flat = c.TryFlat();
824
834
  if (maybe_flat.has_value()) {
825
835
  return H::combine(std::move(hash_state), *maybe_flat);
826
836
  }
@@ -1136,7 +1146,7 @@ template <typename Releaser>
1136
1146
  CordRep* absl_nonnull NewExternalRep(absl::string_view data,
1137
1147
  Releaser&& releaser) {
1138
1148
  assert(!data.empty());
1139
- using ReleaserType = absl::decay_t<Releaser>;
1149
+ using ReleaserType = std::decay_t<Releaser>;
1140
1150
  CordRepExternal* rep = new CordRepExternalImpl<ReleaserType>(
1141
1151
  std::forward<Releaser>(releaser), 0);
1142
1152
  InitializeCordRepExternal(data, rep);
@@ -1161,7 +1171,7 @@ Cord MakeCordFromExternal(absl::string_view data, Releaser&& releaser) {
1161
1171
  data, std::forward<Releaser>(releaser)),
1162
1172
  Cord::MethodIdentifier::kMakeCordFromExternal);
1163
1173
  } else {
1164
- using ReleaserType = absl::decay_t<Releaser>;
1174
+ using ReleaserType = std::decay_t<Releaser>;
1165
1175
  cord_internal::InvokeReleaser(
1166
1176
  cord_internal::Rank1{}, ReleaserType(std::forward<Releaser>(releaser)),
1167
1177
  data);
@@ -1396,7 +1406,7 @@ inline size_t Cord::EstimatedMemoryUsage(
1396
1406
  return result;
1397
1407
  }
1398
1408
 
1399
- inline absl::optional<absl::string_view> Cord::TryFlat() const
1409
+ inline std::optional<absl::string_view> Cord::TryFlat() const
1400
1410
  ABSL_ATTRIBUTE_LIFETIME_BOUND {
1401
1411
  absl::cord_internal::CordRep* rep = contents_.tree();
1402
1412
  if (rep == nullptr) {
@@ -1406,7 +1416,7 @@ inline absl::optional<absl::string_view> Cord::TryFlat() const
1406
1416
  if (GetFlatAux(rep, &fragment)) {
1407
1417
  return fragment;
1408
1418
  }
1409
- return absl::nullopt;
1419
+ return std::nullopt;
1410
1420
  }
1411
1421
 
1412
1422
  inline absl::string_view Cord::Flatten() ABSL_ATTRIBUTE_LIFETIME_BOUND {
@@ -1552,8 +1562,8 @@ inline void Cord::ChunkIterator::AdvanceBytesBtree(size_t n) {
1552
1562
  }
1553
1563
 
1554
1564
  inline Cord::ChunkIterator& Cord::ChunkIterator::operator++() {
1555
- ABSL_HARDENING_ASSERT(bytes_remaining_ > 0 &&
1556
- "Attempted to iterate past `end()`");
1565
+ // Failure of this assertion indicates an attempt to iterate past `end()`.
1566
+ absl::base_internal::HardeningAssertGT(bytes_remaining_, size_t{0});
1557
1567
  assert(bytes_remaining_ >= current_chunk_.size());
1558
1568
  bytes_remaining_ -= current_chunk_.size();
1559
1569
  if (bytes_remaining_ > 0) {
@@ -1582,12 +1592,12 @@ inline bool Cord::ChunkIterator::operator!=(const ChunkIterator& other) const {
1582
1592
  }
1583
1593
 
1584
1594
  inline Cord::ChunkIterator::reference Cord::ChunkIterator::operator*() const {
1585
- ABSL_HARDENING_ASSERT(bytes_remaining_ != 0);
1595
+ absl::base_internal::HardeningAssertGT(bytes_remaining_, size_t{0});
1586
1596
  return current_chunk_;
1587
1597
  }
1588
1598
 
1589
1599
  inline Cord::ChunkIterator::pointer Cord::ChunkIterator::operator->() const {
1590
- ABSL_HARDENING_ASSERT(bytes_remaining_ != 0);
1600
+ absl::base_internal::HardeningAssertGT(bytes_remaining_, size_t{0});
1591
1601
  return &current_chunk_;
1592
1602
  }
1593
1603
 
@@ -32,6 +32,7 @@
32
32
  #include <utility>
33
33
 
34
34
  #include "absl/base/config.h"
35
+ #include "absl/base/internal/hardening.h"
35
36
  #include "absl/base/macros.h"
36
37
  #include "absl/numeric/bits.h"
37
38
  #include "absl/strings/internal/cord_internal.h"
@@ -549,7 +550,7 @@ inline size_t CordBuffer::length() const {
549
550
  }
550
551
 
551
552
  inline void CordBuffer::SetLength(size_t length) {
552
- ABSL_HARDENING_ASSERT(length <= capacity());
553
+ absl::base_internal::HardeningAssertLE(length, capacity());
553
554
  if (rep_.is_short()) {
554
555
  rep_.set_short_length(length);
555
556
  } else {
@@ -558,7 +559,8 @@ inline void CordBuffer::SetLength(size_t length) {
558
559
  }
559
560
 
560
561
  inline void CordBuffer::IncreaseLengthBy(size_t n) {
561
- ABSL_HARDENING_ASSERT(n <= capacity() && length() + n <= capacity());
562
+ absl::base_internal::HardeningAssertLE(n, capacity());
563
+ absl::base_internal::HardeningAssertLE(length() + n, capacity());
562
564
  if (rep_.is_short()) {
563
565
  rep_.add_short_length(n);
564
566
  } else {