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
@@ -2518,6 +2518,10 @@ static void VerifyCharIterator(const absl::Cord& cord) {
2518
2518
  absl::Cord::CharRange range = cord.Chars();
2519
2519
  EXPECT_EQ(range.begin() == range.end(), cord.empty());
2520
2520
  EXPECT_EQ(range.begin() != range.end(), !cord.empty());
2521
+ EXPECT_EQ(absl::Cord::Distance(range.begin(), range.end()),
2522
+ static_cast<ptrdiff_t>(cord.size()));
2523
+ EXPECT_EQ(absl::Cord::Distance(range.end(), range.begin()),
2524
+ -static_cast<ptrdiff_t>(cord.size()));
2521
2525
 
2522
2526
  size_t i = 0;
2523
2527
  absl::Cord::CharIterator pre_iter = cord.char_begin();
@@ -2548,19 +2552,29 @@ static void VerifyCharIterator(const absl::Cord& cord) {
2548
2552
  absl::Cord::CharIterator advance_iter = range.begin();
2549
2553
  absl::Cord::Advance(&advance_iter, i);
2550
2554
  EXPECT_EQ(pre_iter, advance_iter);
2555
+ EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
2556
+ static_cast<ptrdiff_t>(i));
2551
2557
 
2552
2558
  advance_iter = range.begin();
2553
2559
  EXPECT_EQ(absl::Cord::AdvanceAndRead(&advance_iter, i), cord.Subcord(0, i));
2554
2560
  EXPECT_EQ(pre_iter, advance_iter);
2561
+ EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
2562
+ static_cast<ptrdiff_t>(i));
2555
2563
 
2556
2564
  advance_iter = pre_iter;
2557
2565
  absl::Cord::Advance(&advance_iter, cord.size() - i);
2558
2566
  EXPECT_EQ(range.end(), advance_iter);
2567
+ EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
2568
+ static_cast<ptrdiff_t>(cord.size()));
2569
+ EXPECT_EQ(absl::Cord::Distance(advance_iter, range.end()), 0);
2559
2570
 
2560
2571
  advance_iter = pre_iter;
2561
2572
  EXPECT_EQ(absl::Cord::AdvanceAndRead(&advance_iter, cord.size() - i),
2562
2573
  cord.Subcord(i, cord.size() - i));
2563
2574
  EXPECT_EQ(range.end(), advance_iter);
2575
+ EXPECT_EQ(absl::Cord::Distance(range.begin(), advance_iter),
2576
+ static_cast<ptrdiff_t>(cord.size()));
2577
+ EXPECT_EQ(absl::Cord::Distance(advance_iter, range.end()), 0);
2564
2578
 
2565
2579
  ++i;
2566
2580
  ++pre_iter;
@@ -2642,16 +2656,25 @@ TEST_P(CordTest, CharIteratorAdvanceAndRead) {
2642
2656
 
2643
2657
  MaybeHarden(cord);
2644
2658
 
2659
+
2645
2660
  for (size_t chunk_size :
2646
2661
  {kChunkSize1, kChunkSize2, kChunkSize3, kChunkSize4}) {
2647
2662
  absl::Cord::CharIterator it = cord.char_begin();
2663
+ size_t it_remaining = cord.size();
2664
+ size_t it_advanced = 0;
2648
2665
  size_t offset = 0;
2649
2666
  while (offset < data.length()) {
2667
+ EXPECT_EQ(absl::Cord::Distance(it, cord.char_end()), it_remaining);
2668
+ EXPECT_EQ(absl::Cord::Distance(cord.char_begin(), it), it_advanced);
2650
2669
  const size_t n = std::min<size_t>(data.length() - offset, chunk_size);
2651
2670
  absl::Cord chunk = cord.AdvanceAndRead(&it, n);
2652
2671
  ASSERT_EQ(chunk.size(), n);
2653
2672
  ASSERT_EQ(chunk.Compare(data.substr(offset, n)), 0);
2654
2673
  offset += n;
2674
+ it_remaining -= n;
2675
+ it_advanced += n;
2676
+ EXPECT_EQ(absl::Cord::Distance(it, cord.char_end()), it_remaining);
2677
+ EXPECT_EQ(absl::Cord::Distance(cord.char_begin(), it), it_advanced);
2655
2678
  }
2656
2679
  }
2657
2680
  }
@@ -34,16 +34,15 @@ namespace absl {
34
34
  ABSL_NAMESPACE_BEGIN
35
35
 
36
36
  // Returns the CordzInfo for the cord, or nullptr if the cord is not sampled.
37
- inline absl::Nullable<const cord_internal::CordzInfo*> GetCordzInfoForTesting(
37
+ inline const cord_internal::CordzInfo* GetCordzInfoForTesting(
38
38
  const Cord& cord) {
39
39
  if (!cord.contents_.is_tree()) return nullptr;
40
40
  return cord.contents_.cordz_info();
41
41
  }
42
42
 
43
43
  // Returns true if the provided cordz_info is in the list of sampled cords.
44
- inline bool CordzInfoIsListed(
45
- absl::Nonnull<const cord_internal::CordzInfo*> cordz_info,
46
- cord_internal::CordzSampleToken token = {}) {
44
+ inline bool CordzInfoIsListed(const cord_internal::CordzInfo* cordz_info,
45
+ cord_internal::CordzSampleToken token = {}) {
47
46
  for (const cord_internal::CordzInfo& info : token) {
48
47
  if (cordz_info == &info) return true;
49
48
  }
@@ -121,7 +120,7 @@ class CordzSamplingIntervalHelper {
121
120
 
122
121
  // Wrapper struct managing a small CordRep `rep`
123
122
  struct TestCordRep {
124
- absl::Nonnull<cord_internal::CordRepFlat*> rep;
123
+ cord_internal::CordRepFlat* rep;
125
124
 
126
125
  TestCordRep() {
127
126
  rep = cord_internal::CordRepFlat::New(100);
@@ -59,7 +59,7 @@ inline unsigned int hex_digit_to_int(char c) {
59
59
  }
60
60
 
61
61
  inline bool IsSurrogate(char32_t c, absl::string_view src,
62
- absl::Nullable<std::string*> error) {
62
+ std::string* absl_nullable error) {
63
63
  if (c >= 0xD800 && c <= 0xDFFF) {
64
64
  if (error) {
65
65
  *error = absl::StrCat("invalid surrogate character (0xD800-DFFF): \\",
@@ -76,49 +76,49 @@ inline bool IsSurrogate(char32_t c, absl::string_view src,
76
76
  //
77
77
  // Unescapes C escape sequences and is the reverse of CEscape().
78
78
  //
79
- // If 'source' is valid, stores the unescaped string and its size in
80
- // 'dest' and 'dest_len' respectively, and returns true. Otherwise
81
- // returns false and optionally stores the error description in
82
- // 'error'. Set 'error' to nullptr to disable error reporting.
79
+ // If `src` is valid, stores the unescaped string `dst`, and returns
80
+ // true. Otherwise returns false and optionally stores the error
81
+ // description in `error`. Set `error` to nullptr to disable error
82
+ // reporting.
83
83
  //
84
- // 'dest' should point to a buffer that is at least as big as 'source'.
85
- // 'source' and 'dest' may be the same.
86
- //
87
- // NOTE: any changes to this function must also be reflected in the older
88
- // UnescapeCEscapeSequences().
84
+ // `src` and `dst` may use the same underlying buffer.
89
85
  // ----------------------------------------------------------------------
90
- bool CUnescapeInternal(absl::string_view source, bool leave_nulls_escaped,
91
- absl::Nonnull<char*> dest,
92
- absl::Nonnull<ptrdiff_t*> dest_len,
93
- absl::Nullable<std::string*> error) {
94
- char* d = dest;
95
- const char* p = source.data();
96
- const char* end = p + source.size();
97
- const char* last_byte = end - 1;
98
-
99
- // Small optimization for case where source = dest and there's no escaping
100
- while (p == d && p < end && *p != '\\') p++, d++;
101
-
102
- while (p < end) {
103
- if (*p != '\\') {
104
- *d++ = *p++;
86
+
87
+ bool CUnescapeInternal(absl::string_view src, bool leave_nulls_escaped,
88
+ std::string* absl_nonnull dst,
89
+ std::string* absl_nullable error) {
90
+ strings_internal::STLStringResizeUninitialized(dst, src.size());
91
+
92
+ absl::string_view::size_type p = 0; // Current src position.
93
+ std::string::size_type d = 0; // Current dst position.
94
+
95
+ // When unescaping in-place, skip any prefix that does not have escaping.
96
+ if (src.data() == dst->data()) {
97
+ while (p < src.size() && src[p] != '\\') p++, d++;
98
+ }
99
+
100
+ while (p < src.size()) {
101
+ if (src[p] != '\\') {
102
+ (*dst)[d++] = src[p++];
105
103
  } else {
106
- if (++p > last_byte) { // skip past the '\\'
107
- if (error) *error = "String cannot end with \\";
104
+ if (++p >= src.size()) { // skip past the '\\'
105
+ if (error != nullptr) {
106
+ *error = "String cannot end with \\";
107
+ }
108
108
  return false;
109
109
  }
110
- switch (*p) {
111
- case 'a': *d++ = '\a'; break;
112
- case 'b': *d++ = '\b'; break;
113
- case 'f': *d++ = '\f'; break;
114
- case 'n': *d++ = '\n'; break;
115
- case 'r': *d++ = '\r'; break;
116
- case 't': *d++ = '\t'; break;
117
- case 'v': *d++ = '\v'; break;
118
- case '\\': *d++ = '\\'; break;
119
- case '?': *d++ = '\?'; break; // \? Who knew?
120
- case '\'': *d++ = '\''; break;
121
- case '"': *d++ = '\"'; break;
110
+ switch (src[p]) {
111
+ case 'a': (*dst)[d++] = '\a'; break;
112
+ case 'b': (*dst)[d++] = '\b'; break;
113
+ case 'f': (*dst)[d++] = '\f'; break;
114
+ case 'n': (*dst)[d++] = '\n'; break;
115
+ case 'r': (*dst)[d++] = '\r'; break;
116
+ case 't': (*dst)[d++] = '\t'; break;
117
+ case 'v': (*dst)[d++] = '\v'; break;
118
+ case '\\': (*dst)[d++] = '\\'; break;
119
+ case '?': (*dst)[d++] = '\?'; break;
120
+ case '\'': (*dst)[d++] = '\''; break;
121
+ case '"': (*dst)[d++] = '\"'; break;
122
122
  case '0':
123
123
  case '1':
124
124
  case '2':
@@ -128,188 +128,170 @@ bool CUnescapeInternal(absl::string_view source, bool leave_nulls_escaped,
128
128
  case '6':
129
129
  case '7': {
130
130
  // octal digit: 1 to 3 digits
131
- const char* octal_start = p;
132
- unsigned int ch = static_cast<unsigned int>(*p - '0'); // digit 1
133
- if (p < last_byte && is_octal_digit(p[1]))
134
- ch = ch * 8 + static_cast<unsigned int>(*++p - '0'); // digit 2
135
- if (p < last_byte && is_octal_digit(p[1]))
136
- ch = ch * 8 + static_cast<unsigned int>(*++p - '0'); // digit 3
131
+ auto octal_start = p;
132
+ unsigned int ch = static_cast<unsigned int>(src[p] - '0'); // digit 1
133
+ if (p + 1 < src.size() && is_octal_digit(src[p + 1]))
134
+ ch = ch * 8 + static_cast<unsigned int>(src[++p] - '0'); // digit 2
135
+ if (p + 1 < src.size() && is_octal_digit(src[p + 1]))
136
+ ch = ch * 8 + static_cast<unsigned int>(src[++p] - '0'); // digit 3
137
137
  if (ch > 0xff) {
138
- if (error) {
139
- *error = "Value of \\" +
140
- std::string(octal_start,
141
- static_cast<size_t>(p + 1 - octal_start)) +
142
- " exceeds 0xff";
138
+ if (error != nullptr) {
139
+ *error =
140
+ "Value of \\" +
141
+ std::string(src.substr(octal_start, p + 1 - octal_start)) +
142
+ " exceeds 0xff";
143
143
  }
144
144
  return false;
145
145
  }
146
146
  if ((ch == 0) && leave_nulls_escaped) {
147
147
  // Copy the escape sequence for the null character
148
- const size_t octal_size = static_cast<size_t>(p + 1 - octal_start);
149
- *d++ = '\\';
150
- memmove(d, octal_start, octal_size);
151
- d += octal_size;
148
+ (*dst)[d++] = '\\';
149
+ while (octal_start <= p) {
150
+ (*dst)[d++] = src[octal_start++];
151
+ }
152
152
  break;
153
153
  }
154
- *d++ = static_cast<char>(ch);
154
+ (*dst)[d++] = static_cast<char>(ch);
155
155
  break;
156
156
  }
157
157
  case 'x':
158
158
  case 'X': {
159
- if (p >= last_byte) {
160
- if (error) *error = "String cannot end with \\x";
159
+ if (p + 1 >= src.size()) {
160
+ if (error != nullptr) {
161
+ *error = "String cannot end with \\x";
162
+ }
161
163
  return false;
162
- } else if (!absl::ascii_isxdigit(static_cast<unsigned char>(p[1]))) {
163
- if (error) *error = "\\x cannot be followed by a non-hex digit";
164
+ } else if (!absl::ascii_isxdigit(
165
+ static_cast<unsigned char>(src[p + 1]))) {
166
+ if (error != nullptr) {
167
+ *error = "\\x cannot be followed by a non-hex digit";
168
+ }
164
169
  return false;
165
170
  }
166
171
  unsigned int ch = 0;
167
- const char* hex_start = p;
168
- while (p < last_byte &&
169
- absl::ascii_isxdigit(static_cast<unsigned char>(p[1])))
172
+ auto hex_start = p;
173
+ while (p + 1 < src.size() &&
174
+ absl::ascii_isxdigit(static_cast<unsigned char>(src[p + 1]))) {
170
175
  // Arbitrarily many hex digits
171
- ch = (ch << 4) + hex_digit_to_int(*++p);
176
+ ch = (ch << 4) + hex_digit_to_int(src[++p]);
177
+ }
172
178
  if (ch > 0xFF) {
173
- if (error) {
179
+ if (error != nullptr) {
174
180
  *error = "Value of \\" +
175
- std::string(hex_start,
176
- static_cast<size_t>(p + 1 - hex_start)) +
181
+ std::string(src.substr(hex_start, p + 1 - hex_start)) +
177
182
  " exceeds 0xff";
178
183
  }
179
184
  return false;
180
185
  }
181
186
  if ((ch == 0) && leave_nulls_escaped) {
182
187
  // Copy the escape sequence for the null character
183
- const size_t hex_size = static_cast<size_t>(p + 1 - hex_start);
184
- *d++ = '\\';
185
- memmove(d, hex_start, hex_size);
186
- d += hex_size;
188
+ (*dst)[d++] = '\\';
189
+ while (hex_start <= p) {
190
+ (*dst)[d++] = src[hex_start++];
191
+ }
187
192
  break;
188
193
  }
189
- *d++ = static_cast<char>(ch);
194
+ (*dst)[d++] = static_cast<char>(ch);
190
195
  break;
191
196
  }
192
197
  case 'u': {
193
198
  // \uhhhh => convert 4 hex digits to UTF-8
194
199
  char32_t rune = 0;
195
- const char* hex_start = p;
196
- if (p + 4 >= end) {
197
- if (error) {
198
- *error = "\\u must be followed by 4 hex digits: \\" +
199
- std::string(hex_start,
200
- static_cast<size_t>(p + 1 - hex_start));
200
+ auto hex_start = p;
201
+ if (p + 4 >= src.size()) {
202
+ if (error != nullptr) {
203
+ *error = "\\u must be followed by 4 hex digits";
201
204
  }
202
205
  return false;
203
206
  }
204
207
  for (int i = 0; i < 4; ++i) {
205
208
  // Look one char ahead.
206
- if (absl::ascii_isxdigit(static_cast<unsigned char>(p[1]))) {
207
- rune = (rune << 4) + hex_digit_to_int(*++p); // Advance p.
209
+ if (absl::ascii_isxdigit(static_cast<unsigned char>(src[p + 1]))) {
210
+ rune = (rune << 4) + hex_digit_to_int(src[++p]);
208
211
  } else {
209
- if (error) {
212
+ if (error != nullptr) {
210
213
  *error = "\\u must be followed by 4 hex digits: \\" +
211
- std::string(hex_start,
212
- static_cast<size_t>(p + 1 - hex_start));
214
+ std::string(src.substr(hex_start, p + 1 - hex_start));
213
215
  }
214
216
  return false;
215
217
  }
216
218
  }
217
219
  if ((rune == 0) && leave_nulls_escaped) {
218
220
  // Copy the escape sequence for the null character
219
- *d++ = '\\';
220
- memmove(d, hex_start, 5); // u0000
221
- d += 5;
221
+ (*dst)[d++] = '\\';
222
+ while (hex_start <= p) {
223
+ (*dst)[d++] = src[hex_start++];
224
+ }
222
225
  break;
223
226
  }
224
- if (IsSurrogate(rune, absl::string_view(hex_start, 5), error)) {
227
+ if (IsSurrogate(rune, src.substr(hex_start, 5), error)) {
225
228
  return false;
226
229
  }
227
- d += strings_internal::EncodeUTF8Char(d, rune);
230
+ d += strings_internal::EncodeUTF8Char(dst->data() + d, rune);
228
231
  break;
229
232
  }
230
233
  case 'U': {
231
234
  // \Uhhhhhhhh => convert 8 hex digits to UTF-8
232
235
  char32_t rune = 0;
233
- const char* hex_start = p;
234
- if (p + 8 >= end) {
235
- if (error) {
236
- *error = "\\U must be followed by 8 hex digits: \\" +
237
- std::string(hex_start,
238
- static_cast<size_t>(p + 1 - hex_start));
236
+ auto hex_start = p;
237
+ if (p + 8 >= src.size()) {
238
+ if (error != nullptr) {
239
+ *error = "\\U must be followed by 8 hex digits";
239
240
  }
240
241
  return false;
241
242
  }
242
243
  for (int i = 0; i < 8; ++i) {
243
244
  // Look one char ahead.
244
- if (absl::ascii_isxdigit(static_cast<unsigned char>(p[1]))) {
245
+ if (absl::ascii_isxdigit(static_cast<unsigned char>(src[p + 1]))) {
245
246
  // Don't change rune until we're sure this
246
247
  // is within the Unicode limit, but do advance p.
247
- uint32_t newrune = (rune << 4) + hex_digit_to_int(*++p);
248
+ uint32_t newrune = (rune << 4) + hex_digit_to_int(src[++p]);
248
249
  if (newrune > 0x10FFFF) {
249
- if (error) {
250
- *error = "Value of \\" +
251
- std::string(hex_start,
252
- static_cast<size_t>(p + 1 - hex_start)) +
253
- " exceeds Unicode limit (0x10FFFF)";
250
+ if (error != nullptr) {
251
+ *error =
252
+ "Value of \\" +
253
+ std::string(src.substr(hex_start, p + 1 - hex_start)) +
254
+ " exceeds Unicode limit (0x10FFFF)";
254
255
  }
255
256
  return false;
256
257
  } else {
257
258
  rune = newrune;
258
259
  }
259
260
  } else {
260
- if (error) {
261
+ if (error != nullptr) {
261
262
  *error = "\\U must be followed by 8 hex digits: \\" +
262
- std::string(hex_start,
263
- static_cast<size_t>(p + 1 - hex_start));
263
+ std::string(src.substr(hex_start, p + 1 - hex_start));
264
264
  }
265
265
  return false;
266
266
  }
267
267
  }
268
268
  if ((rune == 0) && leave_nulls_escaped) {
269
269
  // Copy the escape sequence for the null character
270
- *d++ = '\\';
271
- memmove(d, hex_start, 9); // U00000000
272
- d += 9;
270
+ (*dst)[d++] = '\\';
271
+ // U00000000
272
+ while (hex_start <= p) {
273
+ (*dst)[d++] = src[hex_start++];
274
+ }
273
275
  break;
274
276
  }
275
- if (IsSurrogate(rune, absl::string_view(hex_start, 9), error)) {
277
+ if (IsSurrogate(rune, src.substr(hex_start, 9), error)) {
276
278
  return false;
277
279
  }
278
- d += strings_internal::EncodeUTF8Char(d, rune);
280
+ d += strings_internal::EncodeUTF8Char(dst->data() + d, rune);
279
281
  break;
280
282
  }
281
283
  default: {
282
- if (error) *error = std::string("Unknown escape sequence: \\") + *p;
284
+ if (error != nullptr) {
285
+ *error = std::string("Unknown escape sequence: \\") + src[p];
286
+ }
283
287
  return false;
284
288
  }
285
289
  }
286
- p++; // read past letter we escaped
290
+ p++; // Read past letter we escaped.
287
291
  }
288
292
  }
289
- *dest_len = d - dest;
290
- return true;
291
- }
292
293
 
293
- // ----------------------------------------------------------------------
294
- // CUnescapeInternal()
295
- //
296
- // Same as above but uses a std::string for output. 'source' and 'dest'
297
- // may be the same.
298
- // ----------------------------------------------------------------------
299
- bool CUnescapeInternal(absl::string_view source, bool leave_nulls_escaped,
300
- absl::Nonnull<std::string*> dest,
301
- absl::Nullable<std::string*> error) {
302
- strings_internal::STLStringResizeUninitialized(dest, source.size());
303
-
304
- ptrdiff_t dest_size;
305
- if (!CUnescapeInternal(source,
306
- leave_nulls_escaped,
307
- &(*dest)[0],
308
- &dest_size,
309
- error)) {
310
- return false;
311
- }
312
- dest->erase(static_cast<size_t>(dest_size));
294
+ dst->erase(d);
313
295
  return true;
314
296
  }
315
297
 
@@ -450,7 +432,7 @@ inline size_t CEscapedLength(absl::string_view src) {
450
432
  }
451
433
 
452
434
  void CEscapeAndAppendInternal(absl::string_view src,
453
- absl::Nonnull<std::string*> dest) {
435
+ std::string* absl_nonnull dest) {
454
436
  size_t escaped_len = CEscapedLength(src);
455
437
  if (escaped_len == src.size()) {
456
438
  dest->append(src.data(), src.size());
@@ -479,10 +461,10 @@ void CEscapeAndAppendInternal(absl::string_view src,
479
461
 
480
462
  // Reverses the mapping in Base64EscapeInternal; see that method's
481
463
  // documentation for details of the mapping.
482
- bool Base64UnescapeInternal(absl::Nullable<const char*> src_param, size_t szsrc,
483
- absl::Nullable<char*> dest, size_t szdest,
464
+ bool Base64UnescapeInternal(const char* absl_nullable src_param, size_t szsrc,
465
+ char* absl_nullable dest, size_t szdest,
484
466
  const std::array<signed char, 256>& unbase64,
485
- absl::Nonnull<size_t*> len) {
467
+ size_t* absl_nonnull len) {
486
468
  static const char kPad64Equals = '=';
487
469
  static const char kPad64Dot = '.';
488
470
 
@@ -818,8 +800,8 @@ constexpr std::array<signed char, 256> kUnWebSafeBase64 = {
818
800
  /* clang-format on */
819
801
 
820
802
  template <typename String>
821
- bool Base64UnescapeInternal(absl::Nullable<const char*> src, size_t slen,
822
- absl::Nonnull<String*> dest,
803
+ bool Base64UnescapeInternal(const char* absl_nullable src, size_t slen,
804
+ String* absl_nonnull dest,
823
805
  const std::array<signed char, 256>& unbase64) {
824
806
  // Determine the size of the output string. Base64 encodes every 3 bytes into
825
807
  // 4 characters. Any leftover chars are added directly for good measure.
@@ -888,7 +870,7 @@ constexpr std::array<signed char, 256> kHexValueStrict = {
888
870
  // or a string. This works because we use the [] operator to access
889
871
  // individual characters at a time.
890
872
  template <typename T>
891
- void HexStringToBytesInternal(absl::Nullable<const char*> from, T to,
873
+ void HexStringToBytesInternal(const char* absl_nullable from, T to,
892
874
  size_t num) {
893
875
  for (size_t i = 0; i < num; i++) {
894
876
  to[i] = static_cast<char>(kHexValueLenient[from[i * 2] & 0xFF] << 4) +
@@ -899,7 +881,7 @@ void HexStringToBytesInternal(absl::Nullable<const char*> from, T to,
899
881
  // This is a templated function so that T can be either a char* or a
900
882
  // std::string.
901
883
  template <typename T>
902
- void BytesToHexStringInternal(absl::Nullable<const unsigned char*> src, T dest,
884
+ void BytesToHexStringInternal(const unsigned char* absl_nullable src, T dest,
903
885
  size_t num) {
904
886
  auto dest_ptr = &dest[0];
905
887
  for (auto src_ptr = src; src_ptr != (src + num); ++src_ptr, dest_ptr += 2) {
@@ -915,8 +897,8 @@ void BytesToHexStringInternal(absl::Nullable<const unsigned char*> src, T dest,
915
897
  //
916
898
  // See CUnescapeInternal() for implementation details.
917
899
  // ----------------------------------------------------------------------
918
- bool CUnescape(absl::string_view source, absl::Nonnull<std::string*> dest,
919
- absl::Nullable<std::string*> error) {
900
+ bool CUnescape(absl::string_view source, std::string* absl_nonnull dest,
901
+ std::string* absl_nullable error) {
920
902
  return CUnescapeInternal(source, kUnescapeNulls, dest, error);
921
903
  }
922
904
 
@@ -938,23 +920,23 @@ std::string Utf8SafeCHexEscape(absl::string_view src) {
938
920
  return CEscapeInternal(src, true, true);
939
921
  }
940
922
 
941
- bool Base64Unescape(absl::string_view src, absl::Nonnull<std::string*> dest) {
923
+ bool Base64Unescape(absl::string_view src, std::string* absl_nonnull dest) {
942
924
  return Base64UnescapeInternal(src.data(), src.size(), dest, kUnBase64);
943
925
  }
944
926
 
945
927
  bool WebSafeBase64Unescape(absl::string_view src,
946
- absl::Nonnull<std::string*> dest) {
928
+ std::string* absl_nonnull dest) {
947
929
  return Base64UnescapeInternal(src.data(), src.size(), dest, kUnWebSafeBase64);
948
930
  }
949
931
 
950
- void Base64Escape(absl::string_view src, absl::Nonnull<std::string*> dest) {
932
+ void Base64Escape(absl::string_view src, std::string* absl_nonnull dest) {
951
933
  strings_internal::Base64EscapeInternal(
952
934
  reinterpret_cast<const unsigned char*>(src.data()), src.size(), dest,
953
935
  true, strings_internal::kBase64Chars);
954
936
  }
955
937
 
956
938
  void WebSafeBase64Escape(absl::string_view src,
957
- absl::Nonnull<std::string*> dest) {
939
+ std::string* absl_nonnull dest) {
958
940
  strings_internal::Base64EscapeInternal(
959
941
  reinterpret_cast<const unsigned char*>(src.data()), src.size(), dest,
960
942
  false, strings_internal::kWebSafeBase64Chars);
@@ -976,8 +958,7 @@ std::string WebSafeBase64Escape(absl::string_view src) {
976
958
  return dest;
977
959
  }
978
960
 
979
- bool HexStringToBytes(absl::string_view hex,
980
- absl::Nonnull<std::string*> bytes) {
961
+ bool HexStringToBytes(absl::string_view hex, std::string* absl_nonnull bytes) {
981
962
  std::string output;
982
963
 
983
964
  size_t num_bytes = hex.size() / 2;
@@ -71,12 +71,12 @@ ABSL_NAMESPACE_BEGIN
71
71
  // ...
72
72
  // }
73
73
  // EXPECT_EQ(unescaped_s, "foo\rbar\nbaz\t");
74
- bool CUnescape(absl::string_view source, absl::Nonnull<std::string*> dest,
75
- absl::Nullable<std::string*> error);
74
+ bool CUnescape(absl::string_view source, std::string* absl_nonnull dest,
75
+ std::string* absl_nullable error);
76
76
 
77
77
  // Overload of `CUnescape()` with no error reporting.
78
78
  inline bool CUnescape(absl::string_view source,
79
- absl::Nonnull<std::string*> dest) {
79
+ std::string* absl_nonnull dest) {
80
80
  return CUnescape(source, dest, nullptr);
81
81
  }
82
82
 
@@ -126,7 +126,7 @@ std::string Utf8SafeCHexEscape(absl::string_view src);
126
126
  // Encodes a `src` string into a base64-encoded 'dest' string with padding
127
127
  // characters. This function conforms with RFC 4648 section 4 (base64) and RFC
128
128
  // 2045.
129
- void Base64Escape(absl::string_view src, absl::Nonnull<std::string*> dest);
129
+ void Base64Escape(absl::string_view src, std::string* absl_nonnull dest);
130
130
  std::string Base64Escape(absl::string_view src);
131
131
 
132
132
  // WebSafeBase64Escape()
@@ -134,8 +134,7 @@ std::string Base64Escape(absl::string_view src);
134
134
  // Encodes a `src` string into a base64 string, like Base64Escape() does, but
135
135
  // outputs '-' instead of '+' and '_' instead of '/', and does not pad 'dest'.
136
136
  // This function conforms with RFC 4648 section 5 (base64url).
137
- void WebSafeBase64Escape(absl::string_view src,
138
- absl::Nonnull<std::string*> dest);
137
+ void WebSafeBase64Escape(absl::string_view src, std::string* absl_nonnull dest);
139
138
  std::string WebSafeBase64Escape(absl::string_view src);
140
139
 
141
140
  // Base64Unescape()
@@ -145,7 +144,7 @@ std::string WebSafeBase64Escape(absl::string_view src);
145
144
  // `src` contains invalid characters, `dest` is cleared and returns `false`.
146
145
  // If padding is included (note that `Base64Escape()` does produce it), it must
147
146
  // be correct. In the padding, '=' and '.' are treated identically.
148
- bool Base64Unescape(absl::string_view src, absl::Nonnull<std::string*> dest);
147
+ bool Base64Unescape(absl::string_view src, std::string* absl_nonnull dest);
149
148
 
150
149
  // WebSafeBase64Unescape()
151
150
  //
@@ -155,7 +154,7 @@ bool Base64Unescape(absl::string_view src, absl::Nonnull<std::string*> dest);
155
154
  // included (note that `WebSafeBase64Escape()` does not produce it), it must be
156
155
  // correct. In the padding, '=' and '.' are treated identically.
157
156
  bool WebSafeBase64Unescape(absl::string_view src,
158
- absl::Nonnull<std::string*> dest);
157
+ std::string* absl_nonnull dest);
159
158
 
160
159
  // HexStringToBytes()
161
160
  //
@@ -163,8 +162,8 @@ bool WebSafeBase64Unescape(absl::string_view src,
163
162
  // output string. If `hex` does not consist of valid hexadecimal data, this
164
163
  // function returns false and leaves `bytes` in an unspecified state. Returns
165
164
  // true on success.
166
- ABSL_MUST_USE_RESULT bool HexStringToBytes(absl::string_view hex,
167
- absl::Nonnull<std::string*> bytes);
165
+ [[nodiscard]] bool HexStringToBytes(absl::string_view hex,
166
+ std::string* absl_nonnull bytes);
168
167
 
169
168
  // HexStringToBytes()
170
169
  //
@@ -12,18 +12,17 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
 
15
- #include "absl/strings/escaping.h"
16
-
17
15
  #include <cstdint>
18
16
  #include <memory>
19
17
  #include <random>
20
18
  #include <string>
21
19
 
22
- #include "benchmark/benchmark.h"
23
20
  #include "absl/base/internal/raw_logging.h"
21
+ #include "absl/strings/escaping.h"
24
22
  #include "absl/strings/internal/escaping_test_common.h"
25
23
  #include "absl/strings/str_cat.h"
26
24
  #include "absl/strings/string_view.h"
25
+ #include "benchmark/benchmark.h"
27
26
 
28
27
  namespace {
29
28