protovalidate 0.1.0.beta1

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 (1827) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +8 -0
  3. data/CHANGELOG.md +5 -0
  4. data/LICENSE.txt +201 -0
  5. data/NOTICE.md +30 -0
  6. data/README.md +93 -0
  7. data/Rakefile +32 -0
  8. data/ext/protovalidate/Cargo.lock +342 -0
  9. data/ext/protovalidate/Cargo.toml +27 -0
  10. data/ext/protovalidate/build.rs +4 -0
  11. data/ext/protovalidate/extconf.rb +8 -0
  12. data/ext/protovalidate/src/lib.rs +161 -0
  13. data/ext/protovalidate/sys/Cargo.toml +11 -0
  14. data/ext/protovalidate/sys/build.rs +218 -0
  15. data/ext/protovalidate/sys/filelists/absl.txt +126 -0
  16. data/ext/protovalidate/sys/filelists/antlr4.txt +139 -0
  17. data/ext/protovalidate/sys/filelists/celcpp.txt +199 -0
  18. data/ext/protovalidate/sys/filelists/protobuf.txt +83 -0
  19. data/ext/protovalidate/sys/filelists/protovalidate.txt +14 -0
  20. data/ext/protovalidate/sys/filelists/re2.txt +25 -0
  21. data/ext/protovalidate/sys/gen/buf/validate/validate.pb.cc +23621 -0
  22. data/ext/protovalidate/sys/gen/buf/validate/validate.pb.h +27800 -0
  23. data/ext/protovalidate/sys/gen/cel/expr/checked.pb.cc +6286 -0
  24. data/ext/protovalidate/sys/gen/cel/expr/checked.pb.h +6412 -0
  25. data/ext/protovalidate/sys/gen/cel/expr/syntax.pb.cc +7423 -0
  26. data/ext/protovalidate/sys/gen/cel/expr/syntax.pb.h +7510 -0
  27. data/ext/protovalidate/sys/gen/cel/expr/value.pb.cc +2512 -0
  28. data/ext/protovalidate/sys/gen/cel/expr/value.pb.h +2589 -0
  29. data/ext/protovalidate/sys/gen/internal/empty_descriptor_set_embed.inc +1 -0
  30. data/ext/protovalidate/sys/gen/parser/internal/CelBaseVisitor.cpp +9 -0
  31. data/ext/protovalidate/sys/gen/parser/internal/CelBaseVisitor.h +167 -0
  32. data/ext/protovalidate/sys/gen/parser/internal/CelLexer.cpp +308 -0
  33. data/ext/protovalidate/sys/gen/parser/internal/CelLexer.h +57 -0
  34. data/ext/protovalidate/sys/gen/parser/internal/CelParser.cpp +2484 -0
  35. data/ext/protovalidate/sys/gen/parser/internal/CelParser.h +697 -0
  36. data/ext/protovalidate/sys/gen/parser/internal/CelVisitor.cpp +9 -0
  37. data/ext/protovalidate/sys/gen/parser/internal/CelVisitor.h +98 -0
  38. data/ext/protovalidate/sys/shim/pv_shim.cc +260 -0
  39. data/ext/protovalidate/sys/shim/pv_shim.h +84 -0
  40. data/ext/protovalidate/sys/src/lib.rs +176 -0
  41. data/ext/protovalidate/sys/third_party/abseil-cpp/LICENSE +203 -0
  42. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/algorithm/algorithm.h +96 -0
  43. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/algorithm/container.h +2011 -0
  44. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/attributes.h +1100 -0
  45. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/call_once.h +228 -0
  46. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  47. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/casts.h +313 -0
  48. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/config.h +898 -0
  49. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/const_init.h +76 -0
  50. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/dynamic_annotations.h +480 -0
  51. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/fast_type_id.h +73 -0
  52. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
  53. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/atomic_hook_test_helper.h +34 -0
  54. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +72 -0
  55. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/cycleclock.h +144 -0
  56. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  57. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +170 -0
  58. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  59. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/endian.h +279 -0
  60. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  61. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/exception_safety_testing.h +1112 -0
  62. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/exception_testing.h +42 -0
  63. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  64. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
  65. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +75 -0
  66. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +97 -0
  67. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +667 -0
  68. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +133 -0
  69. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +196 -0
  70. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/nullability_traits.h +71 -0
  71. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
  72. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/poison.h +59 -0
  73. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/pretty_function.h +33 -0
  74. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +279 -0
  75. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/raw_logging.h +217 -0
  76. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
  77. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/scoped_set_env.h +45 -0
  78. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock.cc +225 -0
  79. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock.h +310 -0
  80. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
  81. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +71 -0
  82. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
  83. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
  84. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +95 -0
  85. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +40 -0
  86. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  87. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  88. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +493 -0
  89. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/sysinfo.h +74 -0
  90. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +163 -0
  91. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/thread_identity.h +325 -0
  92. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/tracing.cc +39 -0
  93. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/tracing.h +81 -0
  94. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +68 -0
  95. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +89 -0
  96. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +134 -0
  97. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +118 -0
  98. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  99. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/log_severity.cc +56 -0
  100. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/log_severity.h +185 -0
  101. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/macros.h +259 -0
  102. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/no_destructor.h +191 -0
  103. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/nullability.h +318 -0
  104. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/optimization.h +311 -0
  105. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/options.h +212 -0
  106. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/policy_checks.h +115 -0
  107. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/port.h +25 -0
  108. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/prefetch.h +209 -0
  109. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/thread_annotations.h +333 -0
  110. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/throw_delegate.cc +205 -0
  111. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/throw_delegate.h +65 -0
  112. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/cleanup/cleanup.h +143 -0
  113. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  114. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/btree_map.h +941 -0
  115. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/btree_set.h +872 -0
  116. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/chunked_queue.h +757 -0
  117. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/fixed_array.h +548 -0
  118. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/flat_hash_map.h +714 -0
  119. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/flat_hash_set.h +604 -0
  120. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  121. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/inlined_vector.h +1025 -0
  122. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/btree.h +3157 -0
  123. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/btree_container.h +875 -0
  124. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/chunked_queue.h +173 -0
  125. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/common.h +302 -0
  126. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +151 -0
  127. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +275 -0
  128. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/container_memory.h +571 -0
  129. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +281 -0
  130. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_generator_testing.h +172 -0
  131. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_policy_testing.h +173 -0
  132. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +195 -0
  133. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  134. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtable_debug.h +102 -0
  135. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  136. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +316 -0
  137. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +294 -0
  138. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
  139. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +80 -0
  140. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +1094 -0
  141. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/layout.h +828 -0
  142. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
  143. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +380 -0
  144. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +2110 -0
  145. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +4056 -0
  146. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +79 -0
  147. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/test_allocator.h +387 -0
  148. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/test_instance_tracker.h +274 -0
  149. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/tracked.h +83 -0
  150. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/linked_hash_map.h +666 -0
  151. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/linked_hash_set.h +527 -0
  152. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/node_hash_map.h +710 -0
  153. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/node_hash_set.h +603 -0
  154. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/crc32c.cc +95 -0
  155. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/crc32c.h +192 -0
  156. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +359 -0
  157. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +69 -0
  158. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc.cc +435 -0
  159. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc.h +83 -0
  160. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +319 -0
  161. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  162. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  163. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +131 -0
  164. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  165. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +161 -0
  166. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +122 -0
  167. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +78 -0
  168. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +459 -0
  169. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  170. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +824 -0
  171. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +81 -0
  172. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +195 -0
  173. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/failure_signal_handler.h +121 -0
  174. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +98 -0
  175. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  176. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  177. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  178. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  179. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  180. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2958 -0
  181. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle.h +76 -0
  182. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  183. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +50 -0
  184. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +413 -0
  185. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +141 -0
  186. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +334 -0
  187. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +70 -0
  188. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stack_consumption.h +50 -0
  189. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +299 -0
  190. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +148 -0
  191. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +96 -0
  192. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +121 -0
  193. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +121 -0
  194. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +270 -0
  195. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +208 -0
  196. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +25 -0
  197. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +81 -0
  198. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +410 -0
  199. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +163 -0
  200. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  201. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  202. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +209 -0
  203. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  204. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/leak_check.cc +73 -0
  205. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/leak_check.h +150 -0
  206. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/stacktrace.cc +204 -0
  207. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/stacktrace.h +259 -0
  208. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize.cc +62 -0
  209. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  210. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +102 -0
  211. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1708 -0
  212. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +63 -0
  213. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  214. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +99 -0
  215. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/commandlineflag.h +220 -0
  216. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/config.h +68 -0
  217. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/declare.h +77 -0
  218. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/flag.h +307 -0
  219. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  220. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/flag.h +969 -0
  221. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/parse.h +70 -0
  222. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  223. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +64 -0
  224. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  225. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/registry.h +98 -0
  226. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  227. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/usage.h +106 -0
  228. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/marshalling.h +335 -0
  229. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/parse.h +130 -0
  230. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  231. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/usage.h +43 -0
  232. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  233. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/any_invocable.h +335 -0
  234. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/bind_back.h +79 -0
  235. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/bind_front.h +200 -0
  236. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/function_ref.h +249 -0
  237. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +787 -0
  238. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
  239. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/front_binder.h +93 -0
  240. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/function_ref.h +151 -0
  241. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/overload.h +72 -0
  242. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/hash.h +466 -0
  243. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/hash_testing.h +382 -0
  244. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/city.cc +337 -0
  245. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
  246. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/hash.cc +430 -0
  247. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/hash.h +1619 -0
  248. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/spy_hash_state.h +289 -0
  249. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  250. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/absl_check.h +117 -0
  251. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/absl_log.h +115 -0
  252. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +93 -0
  253. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/check.h +210 -0
  254. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/check_test_impl.inc +1035 -0
  255. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/die_if_null.cc +34 -0
  256. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/die_if_null.h +97 -0
  257. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/flags.h +43 -0
  258. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/globals.cc +178 -0
  259. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/globals.h +230 -0
  260. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/initialize.h +45 -0
  261. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/append_truncated.h +75 -0
  262. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/check_impl.h +151 -0
  263. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/check_op.cc +147 -0
  264. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/check_op.h +565 -0
  265. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/conditions.cc +85 -0
  266. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/conditions.h +247 -0
  267. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/config.h +45 -0
  268. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/container.h +312 -0
  269. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/flags.h +59 -0
  270. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/fnmatch.cc +73 -0
  271. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/fnmatch.h +35 -0
  272. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/globals.cc +145 -0
  273. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/globals.h +101 -0
  274. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_format.cc +205 -0
  275. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_format.h +78 -0
  276. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_impl.h +280 -0
  277. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_message.cc +788 -0
  278. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_message.h +469 -0
  279. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +296 -0
  280. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_sink_set.h +54 -0
  281. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/nullguard.cc +35 -0
  282. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/nullguard.h +88 -0
  283. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/nullstream.h +128 -0
  284. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/proto.cc +231 -0
  285. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/proto.h +298 -0
  286. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/strip.h +99 -0
  287. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/structured.h +160 -0
  288. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +115 -0
  289. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/structured_proto.h +108 -0
  290. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/test_actions.h +90 -0
  291. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/test_helpers.h +71 -0
  292. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/test_matchers.h +94 -0
  293. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +347 -0
  294. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/vlog_config.h +164 -0
  295. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/voidify.h +50 -0
  296. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log.h +378 -0
  297. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_basic_test_impl.inc +654 -0
  298. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  299. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_entry.h +223 -0
  300. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_sink.cc +23 -0
  301. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_sink.h +71 -0
  302. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_sink_registry.h +64 -0
  303. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_streamer.h +208 -0
  304. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/scoped_mock_log.h +203 -0
  305. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/structured.h +75 -0
  306. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/vlog_is_on.h +72 -0
  307. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/memory/memory.h +328 -0
  308. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/meta/internal/constexpr_testing.h +73 -0
  309. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/meta/internal/requires.h +67 -0
  310. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/meta/type_traits.h +646 -0
  311. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/bits.h +262 -0
  312. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128.cc +344 -0
  313. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128.h +1224 -0
  314. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +303 -0
  315. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +347 -0
  316. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/internal/bits.h +394 -0
  317. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  318. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/hashtable.h +40 -0
  319. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  320. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  321. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/periodic_sampler.h +211 -0
  322. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/profile_builder.h +161 -0
  323. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +253 -0
  324. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +202 -0
  325. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/beta_distribution.h +429 -0
  326. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/bit_gen_ref.h +160 -0
  327. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/discrete_distribution.h +249 -0
  328. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/distributions.h +450 -0
  329. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/exponential_distribution.h +166 -0
  330. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/gaussian_distribution.h +276 -0
  331. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/chi_square.h +89 -0
  332. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +83 -0
  333. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/distribution_test_util.h +113 -0
  334. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  335. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/explicit_seed_seq.h +92 -0
  336. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +271 -0
  337. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  338. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  339. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +248 -0
  340. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/mock_helpers.h +134 -0
  341. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/mock_overload_set.h +122 -0
  342. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/mock_validators.h +98 -0
  343. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/nanobenchmark.h +172 -0
  344. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +160 -0
  345. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +287 -0
  346. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/platform.h +158 -0
  347. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
  348. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  349. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_engine.h +265 -0
  350. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  351. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  352. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  353. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +166 -0
  354. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/seed_material.h +105 -0
  355. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/sequence_urbg.h +60 -0
  356. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/traits.h +170 -0
  357. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  358. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +95 -0
  359. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +253 -0
  360. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/mock_distributions.h +269 -0
  361. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  362. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/mocking_bit_gen.h +227 -0
  363. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/poisson_distribution.h +262 -0
  364. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/random.h +224 -0
  365. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  366. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/seed_sequences.h +112 -0
  367. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +276 -0
  368. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +204 -0
  369. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/zipf_distribution.h +273 -0
  370. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/status_internal.cc +296 -0
  371. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/status_internal.h +157 -0
  372. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/status_matchers.h +260 -0
  373. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +657 -0
  374. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status.cc +413 -0
  375. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status.h +1174 -0
  376. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_builder.h +978 -0
  377. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_macros.h +484 -0
  378. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_matchers.h +167 -0
  379. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_payload_printer.cc +36 -0
  380. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_payload_printer.h +53 -0
  381. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/statusor.cc +106 -0
  382. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/statusor.h +776 -0
  383. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/ascii.cc +296 -0
  384. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/ascii.h +288 -0
  385. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/charconv.cc +1442 -0
  386. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/charconv.h +123 -0
  387. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/charset.h +163 -0
  388. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord.cc +1601 -0
  389. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord.h +1773 -0
  390. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_analysis.cc +196 -0
  391. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_analysis.h +63 -0
  392. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_buffer.h +574 -0
  393. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_test_helpers.h +122 -0
  394. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cordz_test_helpers.h +152 -0
  395. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/escaping.cc +1183 -0
  396. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/escaping.h +195 -0
  397. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +64 -0
  398. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/has_ostream_operator.h +42 -0
  399. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  400. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +357 -0
  401. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +433 -0
  402. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
  403. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
  404. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  405. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +70 -0
  406. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +942 -0
  407. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1237 -0
  408. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +944 -0
  409. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +187 -0
  410. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +267 -0
  411. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +69 -0
  412. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +212 -0
  413. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +64 -0
  414. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +47 -0
  415. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
  416. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
  417. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +195 -0
  418. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_test_util.h +205 -0
  419. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +102 -0
  420. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +87 -0
  421. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +165 -0
  422. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +98 -0
  423. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +424 -0
  424. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +295 -0
  425. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_sample_token.h +97 -0
  426. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +88 -0
  427. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  428. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +123 -0
  429. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +99 -0
  430. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +35 -0
  431. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/escaping.cc +68 -0
  432. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/escaping.h +35 -0
  433. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/escaping_test_common.h +133 -0
  434. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/generic_printer.h +115 -0
  435. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/generic_printer_internal.h +444 -0
  436. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/memutil.cc +48 -0
  437. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/memutil.h +40 -0
  438. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/numbers_test_common.h +184 -0
  439. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +43 -0
  440. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +114 -0
  441. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/pow10_helper.h +40 -0
  442. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +114 -0
  443. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
  444. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +615 -0
  445. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +653 -0
  446. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +275 -0
  447. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +237 -0
  448. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +98 -0
  449. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +357 -0
  450. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +53 -0
  451. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +456 -0
  452. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +2148 -0
  453. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +37 -0
  454. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +74 -0
  455. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +97 -0
  456. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +140 -0
  457. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +271 -0
  458. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +340 -0
  459. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +524 -0
  460. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/string_constant.h +67 -0
  461. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  462. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +69 -0
  463. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
  464. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/utf8.cc +148 -0
  465. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/utf8.h +64 -0
  466. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/match.cc +133 -0
  467. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/match.h +129 -0
  468. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/numbers.cc +1636 -0
  469. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/numbers.h +363 -0
  470. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  471. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_cat.cc +247 -0
  472. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_cat.h +668 -0
  473. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_format.h +887 -0
  474. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_join.h +301 -0
  475. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_replace.cc +91 -0
  476. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_replace.h +222 -0
  477. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_split.cc +144 -0
  478. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_split.h +587 -0
  479. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/string_view.h +60 -0
  480. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/strip.h +99 -0
  481. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/substitute.cc +187 -0
  482. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/substitute.h +769 -0
  483. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  484. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  485. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +73 -0
  486. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +107 -0
  487. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +173 -0
  488. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +56 -0
  489. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/futex.h +177 -0
  490. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +107 -0
  491. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.h +63 -0
  492. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +714 -0
  493. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +146 -0
  494. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +220 -0
  495. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +178 -0
  496. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  497. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +124 -0
  498. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +163 -0
  499. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +60 -0
  500. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +118 -0
  501. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.h +65 -0
  502. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +87 -0
  503. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +56 -0
  504. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/thread_pool.h +96 -0
  505. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +69 -0
  506. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +38 -0
  507. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.h +90 -0
  508. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +147 -0
  509. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.h +72 -0
  510. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/mutex.cc +2833 -0
  511. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/mutex.h +1352 -0
  512. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/notification.cc +85 -0
  513. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/notification.h +133 -0
  514. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/civil_time.cc +200 -0
  515. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/civil_time.h +589 -0
  516. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/clock.cc +603 -0
  517. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/clock.h +81 -0
  518. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/clock_interface.h +93 -0
  519. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/duration.cc +918 -0
  520. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/format.cc +155 -0
  521. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  522. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +644 -0
  523. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +460 -0
  524. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  525. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  526. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +33 -0
  527. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  528. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  529. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1069 -0
  530. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +47 -0
  531. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +80 -0
  532. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +115 -0
  533. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +97 -0
  534. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +1070 -0
  535. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +128 -0
  536. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +333 -0
  537. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +60 -0
  538. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +217 -0
  539. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  540. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  541. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  542. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  543. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +115 -0
  544. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
  545. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  546. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  547. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/test_util.h +33 -0
  548. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/simulated_clock.h +109 -0
  549. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/time.cc +507 -0
  550. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/time.h +1926 -0
  551. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/any.h +66 -0
  552. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/any_span.h +1067 -0
  553. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/compare.h +506 -0
  554. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/internal/any_span.h +477 -0
  555. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/internal/span.h +140 -0
  556. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/optional.h +68 -0
  557. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  558. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/source_location.cc +18 -0
  559. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  560. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/span.h +827 -0
  561. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/variant.h +139 -0
  562. data/ext/protovalidate/sys/third_party/abseil-cpp/absl/utility/utility.h +151 -0
  563. data/ext/protovalidate/sys/third_party/antlr4/LICENSE.txt +28 -0
  564. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +10 -0
  565. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorListener.h +167 -0
  566. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +10 -0
  567. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +121 -0
  568. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +23 -0
  569. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRFileStream.h +30 -0
  570. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +180 -0
  571. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRInputStream.h +79 -0
  572. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +61 -0
  573. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BailErrorStrategy.h +59 -0
  574. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BaseErrorListener.cpp +25 -0
  575. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BaseErrorListener.h +36 -0
  576. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +414 -0
  577. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BufferedTokenStream.h +200 -0
  578. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CharStream.cpp +11 -0
  579. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CharStream.h +37 -0
  580. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonToken.cpp +193 -0
  581. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonToken.h +158 -0
  582. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +39 -0
  583. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenFactory.h +74 -0
  584. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenStream.cpp +78 -0
  585. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenStream.h +79 -0
  586. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +15 -0
  587. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ConsoleErrorListener.h +35 -0
  588. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +336 -0
  589. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +466 -0
  590. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +84 -0
  591. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +80 -0
  592. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Exceptions.cpp +64 -0
  593. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Exceptions.h +99 -0
  594. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FailedPredicateException.cpp +52 -0
  595. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FailedPredicateException.h +32 -0
  596. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FlatHashMap.h +57 -0
  597. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FlatHashSet.h +57 -0
  598. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InputMismatchException.cpp +18 -0
  599. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InputMismatchException.h +24 -0
  600. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/IntStream.cpp +12 -0
  601. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/IntStream.h +218 -0
  602. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +19 -0
  603. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InterpreterRuleContext.h +45 -0
  604. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Lexer.cpp +294 -0
  605. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Lexer.h +196 -0
  606. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerInterpreter.cpp +60 -0
  607. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerInterpreter.h +46 -0
  608. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +36 -0
  609. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerNoViableAltException.h +31 -0
  610. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ListTokenSource.cpp +92 -0
  611. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ListTokenSource.h +88 -0
  612. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/NoViableAltException.cpp +46 -0
  613. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/NoViableAltException.h +42 -0
  614. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Parser.cpp +670 -0
  615. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Parser.h +461 -0
  616. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserInterpreter.cpp +294 -0
  617. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserInterpreter.h +173 -0
  618. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserRuleContext.cpp +138 -0
  619. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserRuleContext.h +147 -0
  620. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +53 -0
  621. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ProxyErrorListener.h +38 -0
  622. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RecognitionException.cpp +65 -0
  623. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RecognitionException.h +98 -0
  624. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Recognizer.cpp +157 -0
  625. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Recognizer.h +160 -0
  626. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContext.cpp +144 -0
  627. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContext.h +141 -0
  628. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +27 -0
  629. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +32 -0
  630. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +54 -0
  631. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuntimeMetaData.h +155 -0
  632. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Token.cpp +9 -0
  633. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Token.h +92 -0
  634. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenFactory.h +30 -0
  635. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenSource.cpp +9 -0
  636. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenSource.h +85 -0
  637. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStream.cpp +11 -0
  638. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStream.h +137 -0
  639. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +428 -0
  640. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStreamRewriter.h +295 -0
  641. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +208 -0
  642. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedCharStream.h +117 -0
  643. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +270 -0
  644. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +115 -0
  645. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Version.h +42 -0
  646. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Vocabulary.cpp +64 -0
  647. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Vocabulary.h +177 -0
  648. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/WritableToken.cpp +9 -0
  649. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/WritableToken.h +23 -0
  650. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/antlr4-common.h +101 -0
  651. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/antlr4-runtime.h +168 -0
  652. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATN.cpp +159 -0
  653. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATN.h +133 -0
  654. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +106 -0
  655. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfig.h +157 -0
  656. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +233 -0
  657. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +157 -0
  658. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +39 -0
  659. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +48 -0
  660. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +628 -0
  661. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +32 -0
  662. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +33 -0
  663. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSimulator.h +71 -0
  664. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNState.cpp +56 -0
  665. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNState.h +139 -0
  666. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +33 -0
  667. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNStateType.h +36 -0
  668. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNType.h +20 -0
  669. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +29 -0
  670. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ActionTransition.h +35 -0
  671. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +16 -0
  672. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +68 -0
  673. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +129 -0
  674. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +51 -0
  675. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +27 -0
  676. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AtomTransition.h +33 -0
  677. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +24 -0
  678. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicState.h +23 -0
  679. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockEndState.h +26 -0
  680. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockStartState.h +30 -0
  681. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +14 -0
  682. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +47 -0
  683. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +14 -0
  684. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +70 -0
  685. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +25 -0
  686. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionInfo.h +227 -0
  687. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionState.cpp +12 -0
  688. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionState.h +34 -0
  689. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +31 -0
  690. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +42 -0
  691. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +15 -0
  692. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ErrorInfo.h +43 -0
  693. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/HashUtils.h +18 -0
  694. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +189 -0
  695. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +76 -0
  696. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +67 -0
  697. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +44 -0
  698. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +621 -0
  699. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +199 -0
  700. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerAction.cpp +15 -0
  701. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerAction.h +100 -0
  702. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +108 -0
  703. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +128 -0
  704. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionType.h +57 -0
  705. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +43 -0
  706. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +59 -0
  707. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +45 -0
  708. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +75 -0
  709. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +50 -0
  710. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +76 -0
  711. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +43 -0
  712. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerModeAction.h +57 -0
  713. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +36 -0
  714. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +53 -0
  715. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +36 -0
  716. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +53 -0
  717. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +43 -0
  718. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +57 -0
  719. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +36 -0
  720. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +51 -0
  721. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +43 -0
  722. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +51 -0
  723. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +16 -0
  724. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +42 -0
  725. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LoopEndState.h +26 -0
  726. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +22 -0
  727. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/NotSetTransition.h +27 -0
  728. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +16 -0
  729. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +25 -0
  730. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +102 -0
  731. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParseInfo.h +102 -0
  732. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +1413 -0
  733. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +911 -0
  734. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +50 -0
  735. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +29 -0
  736. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +25 -0
  737. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +23 -0
  738. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +35 -0
  739. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +17 -0
  740. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +62 -0
  741. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +24 -0
  742. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateTransition.h +50 -0
  743. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +601 -0
  744. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContext.h +225 -0
  745. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +56 -0
  746. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +63 -0
  747. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +167 -0
  748. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +101 -0
  749. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +71 -0
  750. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextType.h +21 -0
  751. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +202 -0
  752. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionMode.h +436 -0
  753. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +179 -0
  754. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +60 -0
  755. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +26 -0
  756. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RangeTransition.h +31 -0
  757. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStartState.h +26 -0
  758. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStopState.h +27 -0
  759. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +33 -0
  760. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleTransition.h +42 -0
  761. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +418 -0
  762. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContext.h +237 -0
  763. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContextType.h +23 -0
  764. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SerializedATNView.h +101 -0
  765. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SetTransition.cpp +28 -0
  766. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SetTransition.h +38 -0
  767. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +79 -0
  768. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +43 -0
  769. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +24 -0
  770. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +37 -0
  771. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +19 -0
  772. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +25 -0
  773. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/TokensStartState.h +24 -0
  774. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/Transition.cpp +36 -0
  775. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/Transition.h +65 -0
  776. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/TransitionType.cpp +27 -0
  777. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/TransitionType.h +33 -0
  778. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +21 -0
  779. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/WildcardTransition.h +27 -0
  780. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFA.cpp +115 -0
  781. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFA.h +96 -0
  782. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +60 -0
  783. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFASerializer.h +32 -0
  784. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFAState.cpp +59 -0
  785. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFAState.h +154 -0
  786. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +17 -0
  787. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +22 -0
  788. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/internal/Synchronization.cpp +100 -0
  789. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/internal/Synchronization.h +154 -0
  790. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +124 -0
  791. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +33 -0
  792. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Interval.cpp +61 -0
  793. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Interval.h +84 -0
  794. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +508 -0
  795. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/IntervalSet.h +190 -0
  796. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +120 -0
  797. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/MurmurHash.h +102 -0
  798. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Predicate.cpp +4 -0
  799. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Predicate.h +21 -0
  800. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Any.cpp +8 -0
  801. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Any.h +16 -0
  802. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Arrays.cpp +43 -0
  803. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Arrays.h +149 -0
  804. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/BitSet.h +76 -0
  805. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/CPPUtils.cpp +207 -0
  806. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/CPPUtils.h +65 -0
  807. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Casts.h +34 -0
  808. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Declarations.h +161 -0
  809. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/StringUtils.cpp +38 -0
  810. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/StringUtils.h +16 -0
  811. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Unicode.h +28 -0
  812. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Utf8.cpp +242 -0
  813. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Utf8.h +54 -0
  814. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +129 -0
  815. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNode.h +24 -0
  816. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +54 -0
  817. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +43 -0
  818. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +66 -0
  819. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +53 -0
  820. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTree.cpp +12 -0
  821. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTree.h +111 -0
  822. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +9 -0
  823. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +39 -0
  824. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +50 -0
  825. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeType.h +22 -0
  826. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +9 -0
  827. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +57 -0
  828. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +48 -0
  829. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +55 -0
  830. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNode.h +40 -0
  831. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +54 -0
  832. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +32 -0
  833. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/Trees.cpp +241 -0
  834. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/Trees.h +78 -0
  835. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +9 -0
  836. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +44 -0
  837. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +69 -0
  838. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +132 -0
  839. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +64 -0
  840. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +105 -0
  841. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +370 -0
  842. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +185 -0
  843. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +77 -0
  844. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +117 -0
  845. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +39 -0
  846. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +86 -0
  847. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +28 -0
  848. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +51 -0
  849. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +36 -0
  850. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +80 -0
  851. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +154 -0
  852. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPath.h +86 -0
  853. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +31 -0
  854. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +40 -0
  855. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +180 -0
  856. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +53 -0
  857. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +13 -0
  858. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +22 -0
  859. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +20 -0
  860. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +27 -0
  861. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +30 -0
  862. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +26 -0
  863. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +20 -0
  864. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +25 -0
  865. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +33 -0
  866. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +26 -0
  867. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +23 -0
  868. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +23 -0
  869. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +24 -0
  870. data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +23 -0
  871. data/ext/protovalidate/sys/third_party/cel-cpp/LICENSE +202 -0
  872. data/ext/protovalidate/sys/third_party/cel-cpp/base/ast.h +20 -0
  873. data/ext/protovalidate/sys/third_party/cel-cpp/base/attribute.cc +330 -0
  874. data/ext/protovalidate/sys/third_party/cel-cpp/base/attribute.h +278 -0
  875. data/ext/protovalidate/sys/third_party/cel-cpp/base/attribute_set.h +108 -0
  876. data/ext/protovalidate/sys/third_party/cel-cpp/base/builtins.h +106 -0
  877. data/ext/protovalidate/sys/third_party/cel-cpp/base/function.h +20 -0
  878. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_adapter.h +19 -0
  879. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_descriptor.h +20 -0
  880. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_result.h +70 -0
  881. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_result_set.cc +28 -0
  882. data/ext/protovalidate/sys/third_party/cel-cpp/base/function_result_set.h +105 -0
  883. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/memory_manager_testing.h +54 -0
  884. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/message_wrapper.h +30 -0
  885. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/operators.h +91 -0
  886. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/unknown_set.cc +31 -0
  887. data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/unknown_set.h +131 -0
  888. data/ext/protovalidate/sys/third_party/cel-cpp/base/kind.h +25 -0
  889. data/ext/protovalidate/sys/third_party/cel-cpp/base/operators.h +507 -0
  890. data/ext/protovalidate/sys/third_party/cel-cpp/base/type_provider.h +26 -0
  891. data/ext/protovalidate/sys/third_party/cel-cpp/checker/checker_options.h +110 -0
  892. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/builtins_arena.cc +28 -0
  893. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/builtins_arena.h +29 -0
  894. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/field_path.h +77 -0
  895. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/namespace_generator.h +120 -0
  896. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/proto_type_mask.h +111 -0
  897. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/proto_type_mask_registry.h +83 -0
  898. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/test_ast_helpers.h +31 -0
  899. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_check_env.h +249 -0
  900. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_checker_builder_impl.h +170 -0
  901. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_checker_impl.h +58 -0
  902. data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_inference_context.h +229 -0
  903. data/ext/protovalidate/sys/third_party/cel-cpp/checker/optional.h +30 -0
  904. data/ext/protovalidate/sys/third_party/cel-cpp/checker/standard_library.h +26 -0
  905. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_check_issue.cc +59 -0
  906. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_check_issue.h +69 -0
  907. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker.cc +36 -0
  908. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker.h +65 -0
  909. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker_builder.h +186 -0
  910. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker_builder_factory.h +59 -0
  911. data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker_subset_factory.h +45 -0
  912. data/ext/protovalidate/sys/third_party/cel-cpp/checker/validation_result.cc +32 -0
  913. data/ext/protovalidate/sys/third_party/cel-cpp/checker/validation_result.h +117 -0
  914. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/checked_expr_conversion_example.h +59 -0
  915. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise1.h +32 -0
  916. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise10.h +46 -0
  917. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise2.h +40 -0
  918. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise4.h +34 -0
  919. data/ext/protovalidate/sys/third_party/cel-cpp/codelab/network_functions.h +197 -0
  920. data/ext/protovalidate/sys/third_party/cel-cpp/common/allocator.h +606 -0
  921. data/ext/protovalidate/sys/third_party/cel-cpp/common/any.cc +38 -0
  922. data/ext/protovalidate/sys/third_party/cel-cpp/common/any.h +90 -0
  923. data/ext/protovalidate/sys/third_party/cel-cpp/common/arena.h +110 -0
  924. data/ext/protovalidate/sys/third_party/cel-cpp/common/arena_string.h +365 -0
  925. data/ext/protovalidate/sys/third_party/cel-cpp/common/arena_string_pool.h +86 -0
  926. data/ext/protovalidate/sys/third_party/cel-cpp/common/arena_string_view.h +239 -0
  927. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/constant_proto.cc +123 -0
  928. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/constant_proto.h +37 -0
  929. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/expr_proto.cc +514 -0
  930. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/expr_proto.h +32 -0
  931. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/metadata.cc +262 -0
  932. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/metadata.h +920 -0
  933. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/navigable_ast_internal.h +311 -0
  934. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/navigable_ast_kinds.cc +80 -0
  935. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/navigable_ast_kinds.h +74 -0
  936. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/source_info_proto.cc +90 -0
  937. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/source_info_proto.h +32 -0
  938. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast.cc +98 -0
  939. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast.h +157 -0
  940. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_proto.cc +547 -0
  941. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_proto.h +52 -0
  942. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_rewrite.cc +389 -0
  943. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_rewrite.h +146 -0
  944. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_traverse.cc +380 -0
  945. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_traverse.h +105 -0
  946. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_visitor.h +118 -0
  947. data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_visitor_base.h +88 -0
  948. data/ext/protovalidate/sys/third_party/cel-cpp/common/casting.h +75 -0
  949. data/ext/protovalidate/sys/third_party/cel-cpp/common/constant.cc +101 -0
  950. data/ext/protovalidate/sys/third_party/cel-cpp/common/constant.h +491 -0
  951. data/ext/protovalidate/sys/third_party/cel-cpp/common/container.cc +171 -0
  952. data/ext/protovalidate/sys/third_party/cel-cpp/common/container.h +138 -0
  953. data/ext/protovalidate/sys/third_party/cel-cpp/common/data.h +120 -0
  954. data/ext/protovalidate/sys/third_party/cel-cpp/common/decl.cc +221 -0
  955. data/ext/protovalidate/sys/third_party/cel-cpp/common/decl.h +446 -0
  956. data/ext/protovalidate/sys/third_party/cel-cpp/common/decl_proto.h +50 -0
  957. data/ext/protovalidate/sys/third_party/cel-cpp/common/decl_proto_v1alpha1.h +55 -0
  958. data/ext/protovalidate/sys/third_party/cel-cpp/common/descriptor_pool_type_introspector.cc +244 -0
  959. data/ext/protovalidate/sys/third_party/cel-cpp/common/descriptor_pool_type_introspector.h +106 -0
  960. data/ext/protovalidate/sys/third_party/cel-cpp/common/expr.cc +320 -0
  961. data/ext/protovalidate/sys/third_party/cel-cpp/common/expr.h +1720 -0
  962. data/ext/protovalidate/sys/third_party/cel-cpp/common/expr_factory.h +402 -0
  963. data/ext/protovalidate/sys/third_party/cel-cpp/common/expr_printer.h +57 -0
  964. data/ext/protovalidate/sys/third_party/cel-cpp/common/format_type_name.h +30 -0
  965. data/ext/protovalidate/sys/third_party/cel-cpp/common/function_descriptor.cc +98 -0
  966. data/ext/protovalidate/sys/third_party/cel-cpp/common/function_descriptor.h +124 -0
  967. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/byte_string.cc +1074 -0
  968. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/byte_string.h +688 -0
  969. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/casting.h +237 -0
  970. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/metadata.h +41 -0
  971. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/reference_count.cc +118 -0
  972. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/reference_count.h +406 -0
  973. data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/value_conversion.h +115 -0
  974. data/ext/protovalidate/sys/third_party/cel-cpp/common/json.h +35 -0
  975. data/ext/protovalidate/sys/third_party/cel-cpp/common/kind.cc +80 -0
  976. data/ext/protovalidate/sys/third_party/cel-cpp/common/kind.h +76 -0
  977. data/ext/protovalidate/sys/third_party/cel-cpp/common/legacy_value.cc +1324 -0
  978. data/ext/protovalidate/sys/third_party/cel-cpp/common/legacy_value.h +131 -0
  979. data/ext/protovalidate/sys/third_party/cel-cpp/common/memory.cc +83 -0
  980. data/ext/protovalidate/sys/third_party/cel-cpp/common/memory.h +1505 -0
  981. data/ext/protovalidate/sys/third_party/cel-cpp/common/memory_testing.h +71 -0
  982. data/ext/protovalidate/sys/third_party/cel-cpp/common/minimal_descriptor_database.h +32 -0
  983. data/ext/protovalidate/sys/third_party/cel-cpp/common/minimal_descriptor_pool.h +36 -0
  984. data/ext/protovalidate/sys/third_party/cel-cpp/common/native_type.h +26 -0
  985. data/ext/protovalidate/sys/third_party/cel-cpp/common/navigable_ast.cc +202 -0
  986. data/ext/protovalidate/sys/third_party/cel-cpp/common/navigable_ast.h +168 -0
  987. data/ext/protovalidate/sys/third_party/cel-cpp/common/operators.cc +233 -0
  988. data/ext/protovalidate/sys/third_party/cel-cpp/common/operators.h +87 -0
  989. data/ext/protovalidate/sys/third_party/cel-cpp/common/optional_ref.h +163 -0
  990. data/ext/protovalidate/sys/third_party/cel-cpp/common/reference.h +269 -0
  991. data/ext/protovalidate/sys/third_party/cel-cpp/common/reference_count.h +26 -0
  992. data/ext/protovalidate/sys/third_party/cel-cpp/common/signature.cc +640 -0
  993. data/ext/protovalidate/sys/third_party/cel-cpp/common/signature.h +101 -0
  994. data/ext/protovalidate/sys/third_party/cel-cpp/common/source.cc +679 -0
  995. data/ext/protovalidate/sys/third_party/cel-cpp/common/source.h +261 -0
  996. data/ext/protovalidate/sys/third_party/cel-cpp/common/standard_definitions.h +349 -0
  997. data/ext/protovalidate/sys/third_party/cel-cpp/common/type.cc +737 -0
  998. data/ext/protovalidate/sys/third_party/cel-cpp/common/type.h +1303 -0
  999. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_introspector.cc +277 -0
  1000. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_introspector.h +157 -0
  1001. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_kind.h +113 -0
  1002. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_proto.h +39 -0
  1003. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_reflector.h +43 -0
  1004. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_spec_resolver.cc +324 -0
  1005. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_spec_resolver.h +46 -0
  1006. data/ext/protovalidate/sys/third_party/cel-cpp/common/type_testing.h +24 -0
  1007. data/ext/protovalidate/sys/third_party/cel-cpp/common/typeinfo.cc +73 -0
  1008. data/ext/protovalidate/sys/third_party/cel-cpp/common/typeinfo.h +221 -0
  1009. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/any_type.h +74 -0
  1010. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/basic_struct_type.cc +53 -0
  1011. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/basic_struct_type.h +119 -0
  1012. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bool_type.h +73 -0
  1013. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bool_wrapper_type.h +79 -0
  1014. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bytes_type.h +73 -0
  1015. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bytes_wrapper_type.h +79 -0
  1016. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/double_type.h +73 -0
  1017. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/double_wrapper_type.h +79 -0
  1018. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/duration_type.h +73 -0
  1019. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/dyn_type.h +73 -0
  1020. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/enum_type.cc +43 -0
  1021. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/enum_type.h +128 -0
  1022. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/error_type.h +75 -0
  1023. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type.cc +89 -0
  1024. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type.h +91 -0
  1025. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type_pool.cc +29 -0
  1026. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type_pool.h +102 -0
  1027. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/int_type.h +72 -0
  1028. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/int_wrapper_type.h +78 -0
  1029. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/legacy_type_introspector.h +34 -0
  1030. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type.cc +77 -0
  1031. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type.h +115 -0
  1032. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type_pool.cc +29 -0
  1033. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type_pool.h +80 -0
  1034. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type.cc +122 -0
  1035. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type.h +124 -0
  1036. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type_pool.cc +30 -0
  1037. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type_pool.h +93 -0
  1038. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/message_type.cc +95 -0
  1039. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/message_type.h +209 -0
  1040. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/null_type.h +73 -0
  1041. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type.cc +109 -0
  1042. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type.h +118 -0
  1043. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type_pool.cc +33 -0
  1044. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type_pool.h +99 -0
  1045. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/optional_type.cc +68 -0
  1046. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/optional_type.h +114 -0
  1047. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/string_type.h +73 -0
  1048. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/string_wrapper_type.h +86 -0
  1049. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/struct_type.cc +87 -0
  1050. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/struct_type.h +158 -0
  1051. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/timestamp_type.h +73 -0
  1052. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_param_type.h +78 -0
  1053. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_pool.cc +96 -0
  1054. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_pool.h +99 -0
  1055. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type.cc +74 -0
  1056. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type.h +92 -0
  1057. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type_pool.cc +26 -0
  1058. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type_pool.h +86 -0
  1059. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/types.h +99 -0
  1060. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/uint_type.h +73 -0
  1061. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/uint_wrapper_type.h +79 -0
  1062. data/ext/protovalidate/sys/third_party/cel-cpp/common/types/unknown_type.h +74 -0
  1063. data/ext/protovalidate/sys/third_party/cel-cpp/common/unknown.h +27 -0
  1064. data/ext/protovalidate/sys/third_party/cel-cpp/common/value.cc +2791 -0
  1065. data/ext/protovalidate/sys/third_party/cel-cpp/common/value.h +2947 -0
  1066. data/ext/protovalidate/sys/third_party/cel-cpp/common/value_kind.h +104 -0
  1067. data/ext/protovalidate/sys/third_party/cel-cpp/common/value_testing.h +307 -0
  1068. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bool_value.cc +97 -0
  1069. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bool_value.h +111 -0
  1070. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value.cc +194 -0
  1071. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value.h +338 -0
  1072. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value_input_stream.h +133 -0
  1073. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value_output_stream.h +176 -0
  1074. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_list_value.cc +614 -0
  1075. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_list_value.h +423 -0
  1076. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_map_value.cc +823 -0
  1077. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_map_value.h +469 -0
  1078. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_struct_value.cc +385 -0
  1079. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_struct_value.h +459 -0
  1080. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_value.h +84 -0
  1081. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/double_value.cc +137 -0
  1082. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/double_value.h +101 -0
  1083. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/duration_value.cc +105 -0
  1084. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/duration_value.h +147 -0
  1085. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/enum_value.h +49 -0
  1086. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/error_value.cc +194 -0
  1087. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/error_value.h +276 -0
  1088. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/int_value.cc +111 -0
  1089. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/int_value.h +117 -0
  1090. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_list_value.cc +76 -0
  1091. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_list_value.h +167 -0
  1092. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_map_value.cc +76 -0
  1093. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_map_value.h +185 -0
  1094. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_struct_value.cc +43 -0
  1095. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_struct_value.h +183 -0
  1096. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value.cc +304 -0
  1097. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value.h +284 -0
  1098. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value_builder.h +110 -0
  1099. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value_variant.h +214 -0
  1100. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value.cc +378 -0
  1101. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value.h +323 -0
  1102. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value_builder.h +110 -0
  1103. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value_variant.h +212 -0
  1104. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/message_value.cc +306 -0
  1105. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/message_value.h +268 -0
  1106. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/null_value.cc +78 -0
  1107. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/null_value.h +96 -0
  1108. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/opaque_value.cc +194 -0
  1109. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/opaque_value.h +338 -0
  1110. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/optional_value.cc +435 -0
  1111. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/optional_value.h +207 -0
  1112. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_list_value.cc +486 -0
  1113. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_list_value.h +229 -0
  1114. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_map_value.cc +439 -0
  1115. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_map_value.h +250 -0
  1116. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_value.cc +103 -0
  1117. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_value.h +40 -0
  1118. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_map_field_value.cc +583 -0
  1119. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_map_field_value.h +242 -0
  1120. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_message_value.cc +411 -0
  1121. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_message_value.h +249 -0
  1122. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_repeated_field_value.cc +365 -0
  1123. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_repeated_field_value.h +220 -0
  1124. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/string_value.cc +1518 -0
  1125. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/string_value.h +489 -0
  1126. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value.cc +390 -0
  1127. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value.h +373 -0
  1128. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value_builder.cc +1552 -0
  1129. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value_builder.h +35 -0
  1130. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value_variant.h +205 -0
  1131. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/timestamp_value.cc +105 -0
  1132. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/timestamp_value.h +146 -0
  1133. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/type_value.cc +72 -0
  1134. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/type_value.h +108 -0
  1135. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/uint_value.cc +110 -0
  1136. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/uint_value.h +119 -0
  1137. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/unknown_value.cc +66 -0
  1138. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/unknown_value.h +121 -0
  1139. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_builder.cc +1432 -0
  1140. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_builder.h +36 -0
  1141. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_variant.cc +537 -0
  1142. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_variant.h +831 -0
  1143. data/ext/protovalidate/sys/third_party/cel-cpp/common/values/values.h +351 -0
  1144. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/compiler.h +195 -0
  1145. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/compiler_factory.h +70 -0
  1146. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/compiler_library_subset_factory.h +80 -0
  1147. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/optional.h +28 -0
  1148. data/ext/protovalidate/sys/third_party/cel-cpp/compiler/standard_library.h +27 -0
  1149. data/ext/protovalidate/sys/third_party/cel-cpp/env/config.h +173 -0
  1150. data/ext/protovalidate/sys/third_party/cel-cpp/env/env.h +76 -0
  1151. data/ext/protovalidate/sys/third_party/cel-cpp/env/env_runtime.h +85 -0
  1152. data/ext/protovalidate/sys/third_party/cel-cpp/env/env_std_extensions.h +42 -0
  1153. data/ext/protovalidate/sys/third_party/cel-cpp/env/env_yaml.h +74 -0
  1154. data/ext/protovalidate/sys/third_party/cel-cpp/env/internal/ext_registry.h +74 -0
  1155. data/ext/protovalidate/sys/third_party/cel-cpp/env/internal/runtime_ext_registry.h +84 -0
  1156. data/ext/protovalidate/sys/third_party/cel-cpp/env/runtime_std_extensions.h +46 -0
  1157. data/ext/protovalidate/sys/third_party/cel-cpp/env/type_info.h +42 -0
  1158. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/cel_expression_builder_flat_impl.cc +111 -0
  1159. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/cel_expression_builder_flat_impl.h +108 -0
  1160. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/check_ast_extensions.cc +58 -0
  1161. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/check_ast_extensions.h +34 -0
  1162. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/comprehension_vulnerability_check.cc +275 -0
  1163. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/comprehension_vulnerability_check.h +51 -0
  1164. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/constant_folding.cc +280 -0
  1165. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/constant_folding.h +42 -0
  1166. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder.cc +2667 -0
  1167. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder.h +104 -0
  1168. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder_extensions.cc +474 -0
  1169. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder_extensions.h +481 -0
  1170. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/instrumentation.h +60 -0
  1171. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/qualified_reference_resolver.cc +359 -0
  1172. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/qualified_reference_resolver.h +53 -0
  1173. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/regex_precompilation_optimization.cc +274 -0
  1174. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/regex_precompilation_optimization.h +29 -0
  1175. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/resolver.cc +222 -0
  1176. data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/resolver.h +127 -0
  1177. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_trail.cc +28 -0
  1178. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_trail.h +65 -0
  1179. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_utility.cc +260 -0
  1180. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_utility.h +179 -0
  1181. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/cel_expression_flat_impl.cc +147 -0
  1182. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/cel_expression_flat_impl.h +175 -0
  1183. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/compiler_constant_step.cc +37 -0
  1184. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/compiler_constant_step.h +76 -0
  1185. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/comprehension_slots.h +153 -0
  1186. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/comprehension_step.cc +685 -0
  1187. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/comprehension_step.h +119 -0
  1188. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/const_value_step.h +31 -0
  1189. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/container_access_step.cc +370 -0
  1190. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/container_access_step.h +26 -0
  1191. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_list_step.cc +283 -0
  1192. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_list_step.h +40 -0
  1193. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_map_step.cc +289 -0
  1194. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_map_step.h +59 -0
  1195. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_struct_step.cc +270 -0
  1196. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_struct_step.h +44 -0
  1197. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/direct_expression_step.cc +34 -0
  1198. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/direct_expression_step.h +99 -0
  1199. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/equality_steps.cc +293 -0
  1200. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/equality_steps.h +45 -0
  1201. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_core.cc +178 -0
  1202. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_core.h +516 -0
  1203. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_stack.cc +92 -0
  1204. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_stack.h +327 -0
  1205. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/expression_step_base.h +12 -0
  1206. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/function_step.cc +529 -0
  1207. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/function_step.h +48 -0
  1208. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ident_step.cc +174 -0
  1209. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ident_step.h +31 -0
  1210. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/iterator_stack.h +77 -0
  1211. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/jump_step.cc +172 -0
  1212. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/jump_step.h +74 -0
  1213. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/lazy_init_step.cc +236 -0
  1214. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/lazy_init_step.h +87 -0
  1215. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/logic_step.cc +487 -0
  1216. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/logic_step.h +49 -0
  1217. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/optional_or_step.cc +305 -0
  1218. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/optional_or_step.h +51 -0
  1219. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/regex_match_step.cc +135 -0
  1220. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/regex_match_step.h +37 -0
  1221. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/select_step.cc +581 -0
  1222. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/select_step.h +33 -0
  1223. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/shadowable_value_step.cc +98 -0
  1224. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/shadowable_value_step.h +26 -0
  1225. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ternary_step.cc +194 -0
  1226. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ternary_step.h +26 -0
  1227. data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/trace_step.h +73 -0
  1228. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/adapter_activation_impl.cc +87 -0
  1229. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/adapter_activation_impl.h +68 -0
  1230. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/cel_value_equal.cc +242 -0
  1231. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/cel_value_equal.h +34 -0
  1232. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/errors.cc +64 -0
  1233. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/errors.h +54 -0
  1234. data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/interop.h +20 -0
  1235. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/activation.cc +119 -0
  1236. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/activation.h +170 -0
  1237. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/activation_bind_helper.h +60 -0
  1238. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_rewrite.h +175 -0
  1239. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_traverse.h +110 -0
  1240. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_visitor.h +185 -0
  1241. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_visitor_base.h +109 -0
  1242. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/base_activation.h +75 -0
  1243. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/builtin_func_registrar.cc +65 -0
  1244. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/builtin_func_registrar.h +30 -0
  1245. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_attribute.cc +90 -0
  1246. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_attribute.h +64 -0
  1247. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_builtins.h +19 -0
  1248. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_expr_builder_factory.cc +146 -0
  1249. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_expr_builder_factory.h +43 -0
  1250. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_expression.h +144 -0
  1251. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function.cc +76 -0
  1252. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function.h +80 -0
  1253. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_adapter.h +121 -0
  1254. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_adapter_impl.h +407 -0
  1255. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_registry.cc +122 -0
  1256. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_registry.h +146 -0
  1257. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_number.cc +31 -0
  1258. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_number.h +36 -0
  1259. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_options.cc +51 -0
  1260. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_options.h +233 -0
  1261. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_type_registry.cc +64 -0
  1262. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_type_registry.h +145 -0
  1263. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value.cc +412 -0
  1264. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value.h +770 -0
  1265. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value_internal.h +103 -0
  1266. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value_producer.h +25 -0
  1267. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/comparison_functions.h +36 -0
  1268. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/container_function_registrar.h +36 -0
  1269. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/container_backed_list_impl.h +44 -0
  1270. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/container_backed_map_impl.cc +131 -0
  1271. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/container_backed_map_impl.h +70 -0
  1272. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_access.cc +85 -0
  1273. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_access.h +70 -0
  1274. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_backed_list_impl.h +33 -0
  1275. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_backed_map_impl.h +35 -0
  1276. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_list_impl.cc +36 -0
  1277. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_list_impl.h +59 -0
  1278. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_map_impl.cc +298 -0
  1279. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_map_impl.h +77 -0
  1280. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/equality_function_registrar.h +44 -0
  1281. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/extension_func_registrar.h +20 -0
  1282. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/logical_function_registrar.h +36 -0
  1283. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/message_wrapper.h +139 -0
  1284. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/portable_cel_function_adapter.h +72 -0
  1285. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/set_util.h +43 -0
  1286. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/source_position.h +65 -0
  1287. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/string_extension_func_registrar.cc +29 -0
  1288. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/string_extension_func_registrar.h +31 -0
  1289. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_descriptor_pool_builder.h +40 -0
  1290. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrap_util.cc +1479 -0
  1291. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrap_util.h +45 -0
  1292. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrapper.cc +60 -0
  1293. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrapper.h +53 -0
  1294. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/field_access_impl.cc +746 -0
  1295. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/field_access_impl.h +80 -0
  1296. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_adapter.h +177 -0
  1297. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_info_apis.h +108 -0
  1298. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_provider.cc +232 -0
  1299. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_provider.h +79 -0
  1300. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/proto_message_type_adapter.cc +708 -0
  1301. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/proto_message_type_adapter.h +137 -0
  1302. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/protobuf_descriptor_type_provider.cc +70 -0
  1303. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/protobuf_descriptor_type_provider.h +67 -0
  1304. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/protobuf_value_factory.h +36 -0
  1305. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/trivial_legacy_type_info.h +54 -0
  1306. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/transform_utility.h +39 -0
  1307. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_attribute_set.h +20 -0
  1308. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_function_result_set.cc +1 -0
  1309. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_function_result_set.h +27 -0
  1310. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_set.h +22 -0
  1311. data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/value_export_util.h +28 -0
  1312. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/bindings_ext.h +46 -0
  1313. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/comprehensions_v2.h +39 -0
  1314. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/comprehensions_v2_functions.h +35 -0
  1315. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/comprehensions_v2_macros.h +34 -0
  1316. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/encoders.h +45 -0
  1317. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/formatting.cc +570 -0
  1318. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/formatting.h +39 -0
  1319. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/lists_functions.h +138 -0
  1320. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/math_ext.h +39 -0
  1321. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/math_ext_decls.h +33 -0
  1322. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/math_ext_macros.h +38 -0
  1323. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/proto_ext.h +42 -0
  1324. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/ast_converters.h +56 -0
  1325. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/bind_proto_to_activation.h +38 -0
  1326. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/enum_adapter.h +30 -0
  1327. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/map_reflection.cc +132 -0
  1328. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/map_reflection.h +67 -0
  1329. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/qualify.cc +457 -0
  1330. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/qualify.h +117 -0
  1331. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/memory_manager.cc +37 -0
  1332. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/memory_manager.h +56 -0
  1333. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/runtime_adapter.h +51 -0
  1334. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/value.h +98 -0
  1335. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/value_testing.h +78 -0
  1336. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/regex_ext.h +131 -0
  1337. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/regex_functions.h +52 -0
  1338. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/select_optimization.cc +958 -0
  1339. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/select_optimization.h +90 -0
  1340. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/sets_functions.h +45 -0
  1341. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/strings.cc +432 -0
  1342. data/ext/protovalidate/sys/third_party/cel-cpp/extensions/strings.h +73 -0
  1343. data/ext/protovalidate/sys/third_party/cel-cpp/internal/align.h +95 -0
  1344. data/ext/protovalidate/sys/third_party/cel-cpp/internal/benchmark.h +20 -0
  1345. data/ext/protovalidate/sys/third_party/cel-cpp/internal/casts.h +50 -0
  1346. data/ext/protovalidate/sys/third_party/cel-cpp/internal/empty_descriptors.cc +73 -0
  1347. data/ext/protovalidate/sys/third_party/cel-cpp/internal/empty_descriptors.h +31 -0
  1348. data/ext/protovalidate/sys/third_party/cel-cpp/internal/equals_text_proto.h +65 -0
  1349. data/ext/protovalidate/sys/third_party/cel-cpp/internal/exceptions.h +35 -0
  1350. data/ext/protovalidate/sys/third_party/cel-cpp/internal/json.cc +2041 -0
  1351. data/ext/protovalidate/sys/third_party/cel-cpp/internal/json.h +141 -0
  1352. data/ext/protovalidate/sys/third_party/cel-cpp/internal/lexis.cc +79 -0
  1353. data/ext/protovalidate/sys/third_party/cel-cpp/internal/lexis.h +32 -0
  1354. data/ext/protovalidate/sys/third_party/cel-cpp/internal/manual.h +91 -0
  1355. data/ext/protovalidate/sys/third_party/cel-cpp/internal/message_equality.cc +1490 -0
  1356. data/ext/protovalidate/sys/third_party/cel-cpp/internal/message_equality.h +54 -0
  1357. data/ext/protovalidate/sys/third_party/cel-cpp/internal/message_type_name.h +56 -0
  1358. data/ext/protovalidate/sys/third_party/cel-cpp/internal/minimal_descriptor_database.h +32 -0
  1359. data/ext/protovalidate/sys/third_party/cel-cpp/internal/minimal_descriptor_pool.h +40 -0
  1360. data/ext/protovalidate/sys/third_party/cel-cpp/internal/names.h +26 -0
  1361. data/ext/protovalidate/sys/third_party/cel-cpp/internal/new.cc +142 -0
  1362. data/ext/protovalidate/sys/third_party/cel-cpp/internal/new.h +61 -0
  1363. data/ext/protovalidate/sys/third_party/cel-cpp/internal/noop_delete.h +53 -0
  1364. data/ext/protovalidate/sys/third_party/cel-cpp/internal/number.h +299 -0
  1365. data/ext/protovalidate/sys/third_party/cel-cpp/internal/overflow.cc +339 -0
  1366. data/ext/protovalidate/sys/third_party/cel-cpp/internal/overflow.h +178 -0
  1367. data/ext/protovalidate/sys/third_party/cel-cpp/internal/parse_text_proto.h +121 -0
  1368. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_file_util.h +73 -0
  1369. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_matchers.h +140 -0
  1370. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_time_encoding.cc +103 -0
  1371. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_time_encoding.h +49 -0
  1372. data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_util.h +87 -0
  1373. data/ext/protovalidate/sys/third_party/cel-cpp/internal/protobuf_runtime_version.h +32 -0
  1374. data/ext/protovalidate/sys/third_party/cel-cpp/internal/re2_options.h +61 -0
  1375. data/ext/protovalidate/sys/third_party/cel-cpp/internal/runfiles.h +36 -0
  1376. data/ext/protovalidate/sys/third_party/cel-cpp/internal/status_builder.h +114 -0
  1377. data/ext/protovalidate/sys/third_party/cel-cpp/internal/status_macros.h +152 -0
  1378. data/ext/protovalidate/sys/third_party/cel-cpp/internal/string_pool.cc +79 -0
  1379. data/ext/protovalidate/sys/third_party/cel-cpp/internal/string_pool.h +59 -0
  1380. data/ext/protovalidate/sys/third_party/cel-cpp/internal/strings.cc +693 -0
  1381. data/ext/protovalidate/sys/third_party/cel-cpp/internal/strings.h +90 -0
  1382. data/ext/protovalidate/sys/third_party/cel-cpp/internal/testing.h +44 -0
  1383. data/ext/protovalidate/sys/third_party/cel-cpp/internal/testing_descriptor_pool.h +35 -0
  1384. data/ext/protovalidate/sys/third_party/cel-cpp/internal/testing_message_factory.h +31 -0
  1385. data/ext/protovalidate/sys/third_party/cel-cpp/internal/time.cc +198 -0
  1386. data/ext/protovalidate/sys/third_party/cel-cpp/internal/time.h +65 -0
  1387. data/ext/protovalidate/sys/third_party/cel-cpp/internal/to_address.h +68 -0
  1388. data/ext/protovalidate/sys/third_party/cel-cpp/internal/unicode.h +28 -0
  1389. data/ext/protovalidate/sys/third_party/cel-cpp/internal/utf8.cc +526 -0
  1390. data/ext/protovalidate/sys/third_party/cel-cpp/internal/utf8.h +82 -0
  1391. data/ext/protovalidate/sys/third_party/cel-cpp/internal/well_known_types.cc +2181 -0
  1392. data/ext/protovalidate/sys/third_party/cel-cpp/internal/well_known_types.h +1593 -0
  1393. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/ast_factory.cc +320 -0
  1394. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/ast_factory.h +174 -0
  1395. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/ast_factory_interface.h +130 -0
  1396. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/lexer.cc +711 -0
  1397. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/lexer.h +286 -0
  1398. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/options.h +29 -0
  1399. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser.cc +226 -0
  1400. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser.h +110 -0
  1401. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser_worker.cc +261 -0
  1402. data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser_worker.h +1143 -0
  1403. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro.cc +561 -0
  1404. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro.h +229 -0
  1405. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_expr_factory.cc +128 -0
  1406. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_expr_factory.h +333 -0
  1407. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_registry.cc +87 -0
  1408. data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_registry.h +59 -0
  1409. data/ext/protovalidate/sys/third_party/cel-cpp/parser/options.h +115 -0
  1410. data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser.cc +1995 -0
  1411. data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser.h +102 -0
  1412. data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser_interface.h +160 -0
  1413. data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser_subset_factory.h +41 -0
  1414. data/ext/protovalidate/sys/third_party/cel-cpp/parser/source_factory.h +47 -0
  1415. data/ext/protovalidate/sys/third_party/cel-cpp/parser/standard_macros.h +31 -0
  1416. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy.h +333 -0
  1417. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_parse_context.h +65 -0
  1418. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_parse_result.h +105 -0
  1419. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_parser.h +40 -0
  1420. data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_validation_result.h +84 -0
  1421. data/ext/protovalidate/sys/third_party/cel-cpp/policy/compiler.h +50 -0
  1422. data/ext/protovalidate/sys/third_party/cel-cpp/policy/internal/issue_reporter.h +57 -0
  1423. data/ext/protovalidate/sys/third_party/cel-cpp/policy/internal/optimizer_expr_factory.h +419 -0
  1424. data/ext/protovalidate/sys/third_party/cel-cpp/policy/internal/yaml_string_element_scanner.h +40 -0
  1425. data/ext/protovalidate/sys/third_party/cel-cpp/policy/test_util.h +33 -0
  1426. data/ext/protovalidate/sys/third_party/cel-cpp/policy/yaml_policy_parser.h +135 -0
  1427. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/activation.cc +141 -0
  1428. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/activation.h +184 -0
  1429. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/activation_interface.h +109 -0
  1430. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/bind_proto_to_activation.h +174 -0
  1431. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/comprehension_vulnerability_check.h +35 -0
  1432. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/constant_folding.h +69 -0
  1433. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/embedder_context.h +147 -0
  1434. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function.h +115 -0
  1435. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_adapter.h +830 -0
  1436. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_overload_reference.h +34 -0
  1437. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_provider.h +46 -0
  1438. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_registry.cc +263 -0
  1439. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_registry.h +160 -0
  1440. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/activation_attribute_matcher_access.cc +61 -0
  1441. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/activation_attribute_matcher_access.h +60 -0
  1442. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/attribute_matcher.h +48 -0
  1443. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/convert_constant.cc +78 -0
  1444. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/convert_constant.h +39 -0
  1445. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/errors.cc +69 -0
  1446. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/errors.h +71 -0
  1447. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/function_adapter.h +232 -0
  1448. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/issue_collector.h +64 -0
  1449. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/legacy_runtime_type_provider.h +37 -0
  1450. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_env.cc +73 -0
  1451. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_env.h +134 -0
  1452. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_env_testing.h +60 -0
  1453. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_friend_access.h +45 -0
  1454. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_impl.cc +159 -0
  1455. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_impl.h +125 -0
  1456. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_type_provider.cc +96 -0
  1457. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_type_provider.h +66 -0
  1458. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/optional_types.h +152 -0
  1459. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/reference_resolver.h +46 -0
  1460. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/regex_precompilation.h +32 -0
  1461. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/register_function_helper.h +99 -0
  1462. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime.h +229 -0
  1463. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_builder.h +101 -0
  1464. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_builder_factory.h +65 -0
  1465. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_issue.h +88 -0
  1466. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_options.h +209 -0
  1467. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/arithmetic_functions.cc +233 -0
  1468. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/arithmetic_functions.h +35 -0
  1469. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/comparison_functions.cc +272 -0
  1470. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/comparison_functions.h +36 -0
  1471. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_functions.cc +136 -0
  1472. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_functions.h +36 -0
  1473. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_membership_functions.cc +331 -0
  1474. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_membership_functions.h +34 -0
  1475. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/equality_functions.cc +612 -0
  1476. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/equality_functions.h +60 -0
  1477. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/logical_functions.cc +66 -0
  1478. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/logical_functions.h +36 -0
  1479. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/regex_functions.cc +56 -0
  1480. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/regex_functions.h +38 -0
  1481. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/string_functions.cc +140 -0
  1482. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/string_functions.h +34 -0
  1483. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/time_functions.cc +499 -0
  1484. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/time_functions.h +56 -0
  1485. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/type_conversion_functions.cc +470 -0
  1486. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/type_conversion_functions.h +34 -0
  1487. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard_functions.h +33 -0
  1488. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard_runtime_builder_factory.h +43 -0
  1489. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/type_registry.cc +84 -0
  1490. data/ext/protovalidate/sys/third_party/cel-cpp/runtime/type_registry.h +155 -0
  1491. data/ext/protovalidate/sys/third_party/cel-cpp/tools/branch_coverage.h +68 -0
  1492. data/ext/protovalidate/sys/third_party/cel-cpp/tools/cel_field_extractor.h +70 -0
  1493. data/ext/protovalidate/sys/third_party/cel-cpp/tools/cel_unparser.h +60 -0
  1494. data/ext/protovalidate/sys/third_party/cel-cpp/tools/descriptor_pool_builder.h +93 -0
  1495. data/ext/protovalidate/sys/third_party/cel-cpp/tools/flatbuffers_backed_impl.h +58 -0
  1496. data/ext/protovalidate/sys/third_party/cel-cpp/tools/navigable_ast.h +169 -0
  1497. data/ext/protovalidate/sys/third_party/cel-cpp/tools/proto_to_predicate.h +48 -0
  1498. data/ext/protovalidate/sys/third_party/cel-cpp/validator/ast_depth_validator.h +27 -0
  1499. data/ext/protovalidate/sys/third_party/cel-cpp/validator/comprehension_nesting_validator.h +31 -0
  1500. data/ext/protovalidate/sys/third_party/cel-cpp/validator/homogeneous_literal_validator.h +38 -0
  1501. data/ext/protovalidate/sys/third_party/cel-cpp/validator/regex_validator.h +53 -0
  1502. data/ext/protovalidate/sys/third_party/cel-cpp/validator/timestamp_literal_validator.h +29 -0
  1503. data/ext/protovalidate/sys/third_party/cel-cpp/validator/validator.cc +85 -0
  1504. data/ext/protovalidate/sys/third_party/cel-cpp/validator/validator.h +151 -0
  1505. data/ext/protovalidate/sys/third_party/protobuf/LICENSE +32 -0
  1506. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.cc +65 -0
  1507. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.h +161 -0
  1508. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.pb.cc +528 -0
  1509. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.pb.h +516 -0
  1510. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any_lite.cc +95 -0
  1511. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/api.pb.cc +1959 -0
  1512. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/api.pb.h +1985 -0
  1513. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena.cc +1004 -0
  1514. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena.h +1238 -0
  1515. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_align.cc +21 -0
  1516. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_align.h +199 -0
  1517. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_allocation_policy.h +102 -0
  1518. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_cleanup.h +108 -0
  1519. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_test_util.h +91 -0
  1520. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenastring.cc +290 -0
  1521. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenastring.h +545 -0
  1522. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenaz_sampler.cc +227 -0
  1523. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenaz_sampler.h +238 -0
  1524. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/annotation_test_util.h +105 -0
  1525. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/code_generator.h +256 -0
  1526. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/code_generator_lite.h +77 -0
  1527. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.h +517 -0
  1528. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/command_line_interface_tester.h +162 -0
  1529. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/importer.cc +594 -0
  1530. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/importer.h +338 -0
  1531. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/mock_code_generator.h +144 -0
  1532. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/notices.h +242 -0
  1533. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/package_info.h +40 -0
  1534. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/parser.cc +2716 -0
  1535. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/parser.h +642 -0
  1536. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/plugin.h +73 -0
  1537. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.h +2320 -0
  1538. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/retention.h +70 -0
  1539. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/scc.h +155 -0
  1540. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/subprocess.h +91 -0
  1541. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/versions.h +78 -0
  1542. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/zip_writer.h +45 -0
  1543. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/cpp_edition_defaults.h +12 -0
  1544. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/cpp_features.pb.cc +539 -0
  1545. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/cpp_features.pb.h +630 -0
  1546. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.cc +10801 -0
  1547. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.h +3417 -0
  1548. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.pb.cc +18982 -0
  1549. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.pb.h +23170 -0
  1550. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_database.cc +1102 -0
  1551. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_database.h +423 -0
  1552. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_legacy.h +32 -0
  1553. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_lite.h +110 -0
  1554. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_test_utils.h +129 -0
  1555. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_visitor.h +187 -0
  1556. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/duration.pb.cc +481 -0
  1557. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/duration.pb.h +367 -0
  1558. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/dynamic_message.cc +1104 -0
  1559. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/dynamic_message.h +217 -0
  1560. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/empty.pb.cc +285 -0
  1561. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/empty.pb.h +245 -0
  1562. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/endian.h +192 -0
  1563. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/explicitly_constructed.h +71 -0
  1564. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set.cc +1925 -0
  1565. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set.h +1886 -0
  1566. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set_heavy.cc +459 -0
  1567. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set_inl.h +274 -0
  1568. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/feature_resolver.cc +637 -0
  1569. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/feature_resolver.h +108 -0
  1570. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_access_listener.h +166 -0
  1571. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_mask.pb.cc +472 -0
  1572. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_mask.pb.h +396 -0
  1573. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_with_arena.h +110 -0
  1574. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_enum_reflection.h +187 -0
  1575. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_enum_util.cc +223 -0
  1576. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_enum_util.h +185 -0
  1577. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_bases.cc +88 -0
  1578. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_bases.h +68 -0
  1579. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_reflection.cc +4185 -0
  1580. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_reflection.h +372 -0
  1581. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_decl.h +615 -0
  1582. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_full.cc +105 -0
  1583. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_gen.cc +960 -0
  1584. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_gen.h +193 -0
  1585. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_impl.h +1229 -0
  1586. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_lite.cc +3308 -0
  1587. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_util.cc +434 -0
  1588. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_util.h +445 -0
  1589. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/has_bits.h +138 -0
  1590. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/implicit_weak_message.cc +139 -0
  1591. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/implicit_weak_message.h +266 -0
  1592. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/inlined_string_field.cc +144 -0
  1593. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/inlined_string_field.h +379 -0
  1594. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_feature_helper.cc +28 -0
  1595. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_feature_helper.h +130 -0
  1596. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_metadata_locator.h +291 -0
  1597. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_visibility.h +55 -0
  1598. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_visibility_for_testing.h +27 -0
  1599. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/coded_stream.cc +1045 -0
  1600. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/coded_stream.h +1885 -0
  1601. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/gzip_stream.cc +333 -0
  1602. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/gzip_stream.h +189 -0
  1603. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/io_win32.cc +450 -0
  1604. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/io_win32.h +118 -0
  1605. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/package_info.h +30 -0
  1606. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/printer.cc +842 -0
  1607. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/printer.h +1183 -0
  1608. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/strtod.cc +260 -0
  1609. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/strtod.h +57 -0
  1610. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/test_zero_copy_stream.h +185 -0
  1611. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/tokenizer.cc +1262 -0
  1612. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/tokenizer.h +441 -0
  1613. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_sink.cc +45 -0
  1614. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_sink.h +59 -0
  1615. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream.cc +128 -0
  1616. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream.h +269 -0
  1617. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc +354 -0
  1618. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h +319 -0
  1619. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc +699 -0
  1620. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h +533 -0
  1621. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/descriptor_traits.h +510 -0
  1622. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/lexer.cc +512 -0
  1623. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/lexer.h +341 -0
  1624. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/message_path.cc +46 -0
  1625. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/message_path.h +61 -0
  1626. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/parser.cc +1437 -0
  1627. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/parser.h +37 -0
  1628. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/parser_traits.h +400 -0
  1629. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/unparser.cc +915 -0
  1630. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/unparser.h +38 -0
  1631. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/unparser_traits.h +414 -0
  1632. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/untyped_message.cc +577 -0
  1633. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/untyped_message.h +246 -0
  1634. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/writer.cc +307 -0
  1635. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/writer.h +214 -0
  1636. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/zero_copy_buffered_stream.cc +152 -0
  1637. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/zero_copy_buffered_stream.h +338 -0
  1638. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/json.cc +137 -0
  1639. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/json.h +200 -0
  1640. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map.cc +297 -0
  1641. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map.h +1787 -0
  1642. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_entry.h +139 -0
  1643. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_field.cc +597 -0
  1644. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_field.h +925 -0
  1645. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_field_lite.h +124 -0
  1646. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_test.inc +4427 -0
  1647. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_test_util.h +617 -0
  1648. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_type_handler.h +374 -0
  1649. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message.cc +745 -0
  1650. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message.h +1936 -0
  1651. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_lite.cc +807 -0
  1652. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_lite.h +1861 -0
  1653. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_unittest.inc +2302 -0
  1654. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_unittest_legacy_apis.inc +98 -0
  1655. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/metadata.h +13 -0
  1656. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/metadata_lite.h +271 -0
  1657. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/micro_string.cc +376 -0
  1658. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/micro_string.h +649 -0
  1659. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/os_macros_restore.inc +97 -0
  1660. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/os_macros_undef.inc +166 -0
  1661. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/package_info.h +43 -0
  1662. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/parse_context.cc +850 -0
  1663. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/parse_context.h +1883 -0
  1664. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port.cc +131 -0
  1665. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port.h +908 -0
  1666. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port_def.inc +820 -0
  1667. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port_undef.inc +97 -0
  1668. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/proto3_lite_unittest.inc +127 -0
  1669. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/raw_ptr.cc +29 -0
  1670. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/raw_ptr.h +64 -0
  1671. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection.h +603 -0
  1672. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_internal.h +313 -0
  1673. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_mode.cc +36 -0
  1674. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_mode.h +144 -0
  1675. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_ops.cc +456 -0
  1676. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_ops.h +67 -0
  1677. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_tester.h +127 -0
  1678. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_visit_field_info.h +1378 -0
  1679. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_visit_fields.h +511 -0
  1680. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field.cc +76 -0
  1681. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field.h +1814 -0
  1682. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_proxy.h +697 -0
  1683. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_proxy_iterator.h +236 -0
  1684. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_proxy_traits.h +100 -0
  1685. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_reflection_unittest.inc +687 -0
  1686. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_ptr_field.cc +251 -0
  1687. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h +2706 -0
  1688. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/runtime_version.h +27 -0
  1689. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/serial_arena.h +447 -0
  1690. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/service.cc +22 -0
  1691. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/service.h +271 -0
  1692. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/source_context.pb.cc +463 -0
  1693. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/source_context.pb.h +376 -0
  1694. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/string_block.h +181 -0
  1695. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/string_member_robber.h +17 -0
  1696. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/struct.pb.cc +1663 -0
  1697. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/struct.pb.h +1426 -0
  1698. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/callback.h +584 -0
  1699. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/common.cc +121 -0
  1700. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/common.h +94 -0
  1701. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/platform_macros.h +115 -0
  1702. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/port.h +228 -0
  1703. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/status_macros.h +72 -0
  1704. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/symbol_checker.cc +219 -0
  1705. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/symbol_checker.h +142 -0
  1706. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_textproto.h +54 -0
  1707. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_util.h +3897 -0
  1708. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_util2.h +70 -0
  1709. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_util_lite.h +86 -0
  1710. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/text_format.cc +3324 -0
  1711. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/text_format.h +925 -0
  1712. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/thread_safe_arena.h +297 -0
  1713. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/timestamp.pb.cc +481 -0
  1714. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/timestamp.pb.h +367 -0
  1715. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/type.pb.cc +3129 -0
  1716. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/type.pb.h +3343 -0
  1717. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/unknown_field_set.cc +351 -0
  1718. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/unknown_field_set.h +464 -0
  1719. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc +107 -0
  1720. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/delimited_message_util.h +85 -0
  1721. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_comparator.cc +237 -0
  1722. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_comparator.h +256 -0
  1723. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_mask_util.cc +754 -0
  1724. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_mask_util.h +242 -0
  1725. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/internal_timeval.h +28 -0
  1726. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/json_util.h +34 -0
  1727. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/message_differencer.cc +2372 -0
  1728. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/message_differencer.h +1002 -0
  1729. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/package_info.h +23 -0
  1730. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/python/field_mask_util_clif_aux.h +32 -0
  1731. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/time_util.cc +563 -0
  1732. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/time_util.h +297 -0
  1733. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/type_resolver.h +56 -0
  1734. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/type_resolver_util.cc +436 -0
  1735. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/type_resolver_util.h +45 -0
  1736. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/varint_shuffle.h +165 -0
  1737. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format.cc +1785 -0
  1738. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format.h +374 -0
  1739. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format_lite.cc +901 -0
  1740. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format_lite.h +1720 -0
  1741. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format_unittest.h +1726 -0
  1742. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wrappers.pb.cc +3203 -0
  1743. data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wrappers.pb.h +2317 -0
  1744. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range.c +207 -0
  1745. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range.h +23 -0
  1746. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range_neon.inc +117 -0
  1747. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range_sse.inc +272 -0
  1748. data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_validity.h +30 -0
  1749. data/ext/protovalidate/sys/third_party/protovalidate-cc/LICENSE +201 -0
  1750. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/cel_rules.h +116 -0
  1751. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/cel_validation_rules.cc +166 -0
  1752. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/cel_validation_rules.h +72 -0
  1753. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/extra_func.cc +482 -0
  1754. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/extra_func.h +31 -0
  1755. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/field_rules.cc +388 -0
  1756. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/field_rules.h +92 -0
  1757. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv4.cc +69 -0
  1758. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv4.h +58 -0
  1759. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv6.cc +143 -0
  1760. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv6.h +51 -0
  1761. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/parser_common.h +256 -0
  1762. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/uri.cc +469 -0
  1763. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/uri.h +25 -0
  1764. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_factory.cc +31 -0
  1765. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_factory.h +43 -0
  1766. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_rules.cc +114 -0
  1767. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_rules.h +39 -0
  1768. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/proto_field.h +155 -0
  1769. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/rules.cc +437 -0
  1770. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/rules.h +221 -0
  1771. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/validation_rules.h +153 -0
  1772. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/validator.cc +190 -0
  1773. data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/validator.h +156 -0
  1774. data/ext/protovalidate/sys/third_party/re2/LICENSE +27 -0
  1775. data/ext/protovalidate/sys/third_party/re2/re2/bitmap256.cc +43 -0
  1776. data/ext/protovalidate/sys/third_party/re2/re2/bitmap256.h +88 -0
  1777. data/ext/protovalidate/sys/third_party/re2/re2/bitstate.cc +389 -0
  1778. data/ext/protovalidate/sys/third_party/re2/re2/compile.cc +1265 -0
  1779. data/ext/protovalidate/sys/third_party/re2/re2/dfa.cc +2135 -0
  1780. data/ext/protovalidate/sys/third_party/re2/re2/filtered_re2.cc +138 -0
  1781. data/ext/protovalidate/sys/third_party/re2/re2/filtered_re2.h +115 -0
  1782. data/ext/protovalidate/sys/third_party/re2/re2/mimics_pcre.cc +196 -0
  1783. data/ext/protovalidate/sys/third_party/re2/re2/nfa.cc +714 -0
  1784. data/ext/protovalidate/sys/third_party/re2/re2/onepass.cc +623 -0
  1785. data/ext/protovalidate/sys/third_party/re2/re2/parse.cc +2529 -0
  1786. data/ext/protovalidate/sys/third_party/re2/re2/perl_groups.cc +119 -0
  1787. data/ext/protovalidate/sys/third_party/re2/re2/pod_array.h +55 -0
  1788. data/ext/protovalidate/sys/third_party/re2/re2/prefilter.cc +711 -0
  1789. data/ext/protovalidate/sys/third_party/re2/re2/prefilter.h +168 -0
  1790. data/ext/protovalidate/sys/third_party/re2/re2/prefilter_tree.cc +376 -0
  1791. data/ext/protovalidate/sys/third_party/re2/re2/prefilter_tree.h +153 -0
  1792. data/ext/protovalidate/sys/third_party/re2/re2/prog.cc +1181 -0
  1793. data/ext/protovalidate/sys/third_party/re2/re2/prog.h +493 -0
  1794. data/ext/protovalidate/sys/third_party/re2/re2/re2.cc +1355 -0
  1795. data/ext/protovalidate/sys/third_party/re2/re2/re2.h +1074 -0
  1796. data/ext/protovalidate/sys/third_party/re2/re2/regexp.cc +1004 -0
  1797. data/ext/protovalidate/sys/third_party/re2/re2/regexp.h +693 -0
  1798. data/ext/protovalidate/sys/third_party/re2/re2/set.cc +185 -0
  1799. data/ext/protovalidate/sys/third_party/re2/re2/set.h +91 -0
  1800. data/ext/protovalidate/sys/third_party/re2/re2/simplify.cc +689 -0
  1801. data/ext/protovalidate/sys/third_party/re2/re2/sparse_array.h +394 -0
  1802. data/ext/protovalidate/sys/third_party/re2/re2/sparse_set.h +266 -0
  1803. data/ext/protovalidate/sys/third_party/re2/re2/stringpiece.h +18 -0
  1804. data/ext/protovalidate/sys/third_party/re2/re2/tostring.cc +351 -0
  1805. data/ext/protovalidate/sys/third_party/re2/re2/unicode_casefold.cc +604 -0
  1806. data/ext/protovalidate/sys/third_party/re2/re2/unicode_casefold.h +77 -0
  1807. data/ext/protovalidate/sys/third_party/re2/re2/unicode_groups.cc +6517 -0
  1808. data/ext/protovalidate/sys/third_party/re2/re2/unicode_groups.h +66 -0
  1809. data/ext/protovalidate/sys/third_party/re2/re2/walker-inl.h +249 -0
  1810. data/ext/protovalidate/sys/third_party/re2/util/malloc_counter.h +19 -0
  1811. data/ext/protovalidate/sys/third_party/re2/util/pcre.h +671 -0
  1812. data/ext/protovalidate/sys/third_party/re2/util/rune.cc +260 -0
  1813. data/ext/protovalidate/sys/third_party/re2/util/strutil.cc +26 -0
  1814. data/ext/protovalidate/sys/third_party/re2/util/strutil.h +16 -0
  1815. data/ext/protovalidate/sys/third_party/re2/util/utf.h +44 -0
  1816. data/ext/protovalidate/sys/versions.json +15 -0
  1817. data/lib/buf/validate/validate_pb.rb +55 -0
  1818. data/lib/protovalidate/errors.rb +32 -0
  1819. data/lib/protovalidate/native.rb +30 -0
  1820. data/lib/protovalidate/validator.rb +96 -0
  1821. data/lib/protovalidate/version.rb +10 -0
  1822. data/lib/protovalidate/violation.rb +115 -0
  1823. data/lib/protovalidate.rb +48 -0
  1824. data/sig/buf/validate/validate_pb.rbs +64 -0
  1825. data/sig/protovalidate/native.rbs +14 -0
  1826. data/sig/protovalidate.rbs +90 -0
  1827. metadata +1900 -0
@@ -0,0 +1,3324 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google LLC. All rights reserved.
3
+ //
4
+ // Use of this source code is governed by a BSD-style
5
+ // license that can be found in the LICENSE file or at
6
+ // https://developers.google.com/open-source/licenses/bsd
7
+
8
+ // Author: jschorr@google.com (Joseph Schorr)
9
+ // Based on original Protocol Buffers design by
10
+ // Sanjay Ghemawat, Jeff Dean, and others.
11
+
12
+ #include "google/protobuf/text_format.h"
13
+
14
+ #include <stdio.h>
15
+
16
+ #include <algorithm>
17
+ #include <atomic>
18
+ #include <climits>
19
+ #include <cmath>
20
+ #include <cstddef>
21
+ #include <cstdint>
22
+ #include <limits>
23
+ #include <memory>
24
+ #include <random>
25
+ #include <string>
26
+ #include <utility>
27
+ #include <vector>
28
+
29
+ #include "absl/base/macros.h"
30
+ #include "absl/container/btree_set.h"
31
+ #include "absl/log/absl_check.h"
32
+ #include "absl/memory/memory.h"
33
+ #include "absl/status/status.h"
34
+ #include "absl/status/statusor.h"
35
+ #include "absl/strings/ascii.h"
36
+ #include "absl/strings/charset.h"
37
+ #include "absl/strings/cord.h"
38
+ #include "absl/strings/escaping.h"
39
+ #include "absl/strings/match.h"
40
+ #include "absl/strings/numbers.h"
41
+ #include "absl/strings/str_cat.h"
42
+ #include "absl/strings/str_format.h"
43
+ #include "absl/strings/str_join.h"
44
+ #include "absl/strings/str_split.h"
45
+ #include "absl/strings/string_view.h"
46
+ #include "absl/time/clock.h"
47
+ #include "absl/time/time.h"
48
+ #include "google/protobuf/any.h"
49
+ #include "google/protobuf/descriptor.h"
50
+ #include "google/protobuf/descriptor.pb.h"
51
+ #include "google/protobuf/dynamic_message.h"
52
+ #include "google/protobuf/internal_visibility.h"
53
+ #include "google/protobuf/io/coded_stream.h"
54
+ #include "google/protobuf/io/strtod.h"
55
+ #include "google/protobuf/io/tokenizer.h"
56
+ #include "google/protobuf/io/zero_copy_stream.h"
57
+ #include "google/protobuf/io/zero_copy_stream_impl_lite.h"
58
+ #include "google/protobuf/map_field.h"
59
+ #include "google/protobuf/message.h"
60
+ #include "google/protobuf/reflection_mode.h"
61
+ #include "google/protobuf/repeated_field.h"
62
+ #include "google/protobuf/unknown_field_set.h"
63
+ #include "google/protobuf/wire_format_lite.h"
64
+ #include "utf8_validity.h"
65
+
66
+ // Must be included last.
67
+ #include "google/protobuf/port_def.inc"
68
+
69
+ namespace google {
70
+ namespace protobuf {
71
+
72
+ using internal::FieldReporterLevel;
73
+ using internal::ScopedReflectionMode;
74
+
75
+ namespace {
76
+
77
+ const absl::string_view kFieldValueReplacement = "[REDACTED]";
78
+
79
+ inline bool IsHexNumber(const std::string& str) {
80
+ return (str.length() >= 2 && str[0] == '0' &&
81
+ (str[1] == 'x' || str[1] == 'X'));
82
+ }
83
+
84
+ inline bool IsOctNumber(const std::string& str) {
85
+ return (str.length() >= 2 && str[0] == '0' &&
86
+ (str[1] >= '0' && str[1] < '8'));
87
+ }
88
+
89
+ // The number of fields that are redacted in AbslStringify.
90
+ std::atomic<int64_t> num_redacted_field{0};
91
+
92
+ inline void IncrementRedactedFieldCounter() {
93
+ num_redacted_field.fetch_add(1, std::memory_order_relaxed);
94
+ }
95
+
96
+ inline void TrimTrailingSpace(std::string& debug_string) {
97
+ // Single line mode currently might have an extra space at the end.
98
+ if (!debug_string.empty() && debug_string.back() == ' ') {
99
+ debug_string.pop_back();
100
+ }
101
+ }
102
+
103
+ } // namespace
104
+
105
+ namespace internal {
106
+ const char kDebugStringSilentMarker[] = "";
107
+ const char kDebugStringSilentMarkerForDetection[] = "\t ";
108
+
109
+ int64_t GetRedactedFieldCount() {
110
+ return num_redacted_field.load(std::memory_order_relaxed);
111
+ }
112
+
113
+ enum class Option { kNone, kShort, kUTF8 };
114
+
115
+ std::string StringifyMessage(const Message& message, Option option,
116
+ FieldReporterLevel reporter_level) {
117
+ // Indicate all scoped reflection calls are from DebugString function.
118
+ ScopedReflectionMode scope(ReflectionMode::kDebugString);
119
+
120
+ TextFormat::Printer printer;
121
+ internal::FieldReporterLevel reporter = reporter_level;
122
+ switch (option) {
123
+ case Option::kShort:
124
+ printer.SetSingleLineMode(true);
125
+ break;
126
+ case Option::kUTF8:
127
+ printer.SetUseUtf8StringEscaping(true);
128
+ break;
129
+ case Option::kNone:
130
+ break;
131
+ }
132
+ printer.SetExpandAny(true);
133
+ printer.SetRedactDebugString(true);
134
+ printer.SetRandomizeDebugString(true);
135
+ printer.SetReportSensitiveFields(reporter);
136
+ std::string result;
137
+ // TODO: Remove this suppression.
138
+ (void)printer.PrintToString(message, &result);
139
+
140
+ if (option == Option::kShort) {
141
+ TrimTrailingSpace(result);
142
+ }
143
+
144
+ return result;
145
+ }
146
+
147
+ PROTOBUF_EXPORT std::string StringifyMessage(const Message& message) {
148
+ return StringifyMessage(message, Option::kNone,
149
+ FieldReporterLevel::kAbslStringify);
150
+ }
151
+ } // namespace internal
152
+
153
+ std::string Message::DebugString() const {
154
+ return internal::StringifyMessage(*this, internal::Option::kNone,
155
+ FieldReporterLevel::kDebugString);
156
+ }
157
+
158
+ std::string Message::ShortDebugString() const {
159
+ return internal::StringifyMessage(*this, internal::Option::kShort,
160
+ FieldReporterLevel::kShortDebugString);
161
+ }
162
+
163
+ std::string Message::Utf8DebugString() const {
164
+ return internal::StringifyMessage(*this, internal::Option::kUTF8,
165
+ FieldReporterLevel::kUtf8DebugString);
166
+ }
167
+
168
+ void Message::PrintDebugString() const { printf("%s", DebugString().c_str()); }
169
+
170
+ PROTOBUF_EXPORT std::string ShortFormat(const Message& message) {
171
+ return internal::StringifyMessage(message, internal::Option::kShort,
172
+ FieldReporterLevel::kShortFormat);
173
+ }
174
+
175
+ PROTOBUF_EXPORT std::string Utf8Format(const Message& message) {
176
+ return internal::StringifyMessage(message, internal::Option::kUTF8,
177
+ FieldReporterLevel::kUtf8Format);
178
+ }
179
+
180
+
181
+ // ===========================================================================
182
+ // Implementation of the parse information tree class.
183
+ void TextFormat::ParseInfoTree::RecordLocation(
184
+ const FieldDescriptor* field, TextFormat::ParseLocationRange range) {
185
+ auto& vec = locations_[field];
186
+ if (!vec.empty() && vec.back().full.start.line == -1) {
187
+ vec.back().full = range;
188
+ } else {
189
+ FieldLocation loc;
190
+ loc.full = range;
191
+ vec.push_back(std::move(loc));
192
+ }
193
+ }
194
+
195
+ void TextFormat::ParseInfoTree::RecordNameLocation(
196
+ const FieldDescriptor* field, TextFormat::ParseLocationRange range) {
197
+ auto& vec = locations_[field];
198
+ if (!vec.empty() && vec.back().name.start.line == -1 &&
199
+ vec.back().full.start.line == -1) {
200
+ vec.back().name = range;
201
+ } else {
202
+ FieldLocation loc;
203
+ loc.name = range;
204
+ vec.push_back(std::move(loc));
205
+ }
206
+ }
207
+
208
+ void TextFormat::ParseInfoTree::RecordValueLocation(
209
+ const FieldDescriptor* field, TextFormat::ParseLocationRange range) {
210
+ auto& vec = locations_[field];
211
+ if (vec.empty() || vec.back().full.start.line != -1) {
212
+ FieldLocation loc;
213
+ loc.values.push_back(range);
214
+ vec.push_back(std::move(loc));
215
+ } else {
216
+ vec.back().values.push_back(range);
217
+ }
218
+ }
219
+
220
+ TextFormat::ParseInfoTree* TextFormat::ParseInfoTree::CreateNested(
221
+ const FieldDescriptor* field) {
222
+ // Owned by us in the map.
223
+ auto& vec = nested_[field];
224
+ vec.emplace_back(new TextFormat::ParseInfoTree());
225
+ return vec.back().get();
226
+ }
227
+
228
+ void CheckFieldIndex(const FieldDescriptor* field, int index) {
229
+ if (field == nullptr) {
230
+ return;
231
+ }
232
+
233
+ if (field->is_repeated() && index == -1) {
234
+ ABSL_DLOG(FATAL) << "Index must be in range of repeated field values. "
235
+ << "Field: " << field->name();
236
+ } else if (!field->is_repeated() && index != -1) {
237
+ ABSL_DLOG(FATAL) << "Index must be -1 for singular fields. "
238
+ << "Field: " << field->name();
239
+ }
240
+ }
241
+
242
+ TextFormat::ParseLocationRange TextFormat::ParseInfoTree::GetLocationRange(
243
+ const FieldDescriptor* field, int index) const {
244
+ CheckFieldIndex(field, index);
245
+ if (index == -1) {
246
+ index = 0;
247
+ }
248
+
249
+ auto it = locations_.find(field);
250
+ if (it == locations_.end() ||
251
+ index >= static_cast<int64_t>(it->second.size())) {
252
+ return TextFormat::ParseLocationRange();
253
+ }
254
+
255
+ return it->second[static_cast<size_t>(index)].full;
256
+ }
257
+
258
+ TextFormat::ParseLocation TextFormat::ParseInfoTree::GetLocation(
259
+ const FieldDescriptor* field, int index) const {
260
+ return GetLocationRange(field, index).start;
261
+ }
262
+
263
+ absl::StatusOr<TextFormat::FieldLocation>
264
+ TextFormat::ParseInfoTree::GetFieldLocation(
265
+ const FieldDescriptor* field) const {
266
+ if (field == nullptr) {
267
+ return absl::InvalidArgumentError("Field is null");
268
+ }
269
+ if (field->is_repeated()) {
270
+ return absl::InvalidArgumentError(absl::StrCat(
271
+ "Field ", field->name(),
272
+ " is repeated. Use GetFieldLocation(field, index) version."));
273
+ }
274
+ auto it = locations_.find(field);
275
+ if (it == locations_.end() || it->second.empty()) {
276
+ return absl::NotFoundError(
277
+ absl::StrCat("Field ", field->name(), " not set."));
278
+ }
279
+ return it->second[0];
280
+ }
281
+
282
+ absl::StatusOr<TextFormat::FieldLocation>
283
+ TextFormat::ParseInfoTree::GetFieldLocation(const FieldDescriptor* field,
284
+ uint32_t index) const {
285
+ if (field == nullptr) {
286
+ return absl::InvalidArgumentError("Field is null");
287
+ }
288
+ if (!field->is_repeated()) {
289
+ return absl::InvalidArgumentError(
290
+ absl::StrCat("Field ", field->name(),
291
+ " is singular. Use GetFieldLocation(field) version."));
292
+ }
293
+ auto it = locations_.find(field);
294
+ if (it == locations_.end() ||
295
+ index >= static_cast<int64_t>(it->second.size())) {
296
+ return absl::NotFoundError(
297
+ absl::StrCat("Field ", field->name(),
298
+ " not found or out of bounds for index ", index, "."));
299
+ }
300
+ return it->second[index];
301
+ }
302
+
303
+ TextFormat::ParseInfoTree* TextFormat::ParseInfoTree::GetTreeForNested(
304
+ const FieldDescriptor* field, int index) const {
305
+ CheckFieldIndex(field, index);
306
+ if (index == -1) {
307
+ index = 0;
308
+ }
309
+
310
+ auto it = nested_.find(field);
311
+ if (it == nested_.end() || index >= static_cast<int64_t>(it->second.size())) {
312
+ return nullptr;
313
+ }
314
+
315
+ return it->second[static_cast<size_t>(index)].get();
316
+ }
317
+
318
+ namespace {
319
+ // These functions implement the behavior of the "default" TextFormat::Finder,
320
+ // they are defined as standalone to be called when finder_ is nullptr.
321
+ const FieldDescriptor* DefaultFinderFindExtension(Message* message,
322
+ const std::string& name) {
323
+ const Descriptor* descriptor = message->GetDescriptor();
324
+ return descriptor->file()->pool()->FindExtensionByPrintableName(descriptor,
325
+ name);
326
+ }
327
+
328
+ const FieldDescriptor* DefaultFinderFindExtensionByNumber(
329
+ const Descriptor* descriptor, int number) {
330
+ return descriptor->file()->pool()->FindExtensionByNumber(descriptor, number);
331
+ }
332
+
333
+ const Descriptor* DefaultFinderFindAnyType(const Message& message,
334
+ const std::string& url_prefix,
335
+ const std::string& name) {
336
+ return message.GetDescriptor()->file()->pool()->FindMessageTypeByName(name);
337
+ }
338
+ } // namespace
339
+
340
+ auto TextFormat::Parser::UnsetFieldsMetadata::GetUnsetFieldId(
341
+ const Message& message, const FieldDescriptor& fd) -> Id {
342
+ return {&message, &fd};
343
+ }
344
+
345
+ // ===========================================================================
346
+ // Internal class for parsing an ASCII representation of a Protocol Message.
347
+ // This class makes use of the Protocol Message compiler's tokenizer found
348
+ // in //third_party/protobuf/io/tokenizer.h. Note that class's Parse
349
+ // method is *not* thread-safe and should only be used in a single thread at
350
+ // a time.
351
+
352
+ // Makes code slightly more readable. The meaning of "DO(foo)" is
353
+ // "Execute foo and fail if it fails.", where failure is indicated by
354
+ // returning false. Borrowed from parser.cc (Thanks Kenton!).
355
+ #define DO(STATEMENT) \
356
+ if (STATEMENT) { \
357
+ } else { \
358
+ return false; \
359
+ }
360
+
361
+ class TextFormat::Parser::ParserImpl {
362
+ public:
363
+ // Determines if repeated values for non-repeated fields and
364
+ // oneofs are permitted, e.g., the string "foo: 1 foo: 2" for a
365
+ // required/optional field named "foo", or "baz: 1 bar: 2"
366
+ // where "baz" and "bar" are members of the same oneof.
367
+ enum SingularOverwritePolicy {
368
+ ALLOW_SINGULAR_OVERWRITES = 0, // the last value is retained
369
+ FORBID_SINGULAR_OVERWRITES = 1, // an error is issued
370
+ };
371
+
372
+ ParserImpl(const Descriptor* root_message_type,
373
+ io::ZeroCopyInputStream* input_stream,
374
+ io::ErrorCollector* error_collector,
375
+ const TextFormat::Finder* finder, ParseInfoTree* parse_info_tree,
376
+ SingularOverwritePolicy singular_overwrite_policy,
377
+ bool allow_case_insensitive_field, bool allow_unknown_field,
378
+ bool allow_unknown_extension, bool allow_unknown_enum,
379
+ bool allow_field_number, bool allow_relaxed_whitespace,
380
+ bool allow_partial, int recursion_limit,
381
+ UnsetFieldsMetadata* no_op_fields)
382
+ : error_collector_(error_collector),
383
+ finder_(finder),
384
+ parse_info_tree_(parse_info_tree),
385
+ tokenizer_error_collector_(this),
386
+ tokenizer_(input_stream, &tokenizer_error_collector_),
387
+ root_message_type_(root_message_type),
388
+ singular_overwrite_policy_(singular_overwrite_policy),
389
+ allow_case_insensitive_field_(allow_case_insensitive_field),
390
+ allow_unknown_field_(allow_unknown_field),
391
+ allow_unknown_extension_(allow_unknown_extension),
392
+ allow_unknown_enum_(allow_unknown_enum),
393
+ allow_field_number_(allow_field_number),
394
+ allow_partial_(allow_partial),
395
+ initial_recursion_limit_(recursion_limit),
396
+ recursion_limit_(recursion_limit),
397
+ had_silent_marker_(false),
398
+ had_errors_(false),
399
+ no_op_fields_(no_op_fields) {
400
+ // For backwards-compatibility with proto1, we need to allow the 'f' suffix
401
+ // for floats.
402
+ tokenizer_.set_allow_f_after_float(true);
403
+
404
+ // '#' starts a comment.
405
+ tokenizer_.set_comment_style(io::Tokenizer::SH_COMMENT_STYLE);
406
+
407
+ if (allow_relaxed_whitespace) {
408
+ tokenizer_.set_require_space_after_number(false);
409
+ tokenizer_.set_allow_multiline_strings(true);
410
+ }
411
+
412
+ // Consume the starting token.
413
+ tokenizer_.Next();
414
+ }
415
+ ParserImpl(const ParserImpl&) = delete;
416
+ ParserImpl& operator=(const ParserImpl&) = delete;
417
+ ~ParserImpl() = default;
418
+
419
+ // Parses the ASCII representation specified in input and saves the
420
+ // information into the output pointer (a Message). Returns
421
+ // false if an error occurs (an error will also be logged to
422
+ // ABSL_LOG(ERROR)).
423
+ bool Parse(Message* output) {
424
+ // Consume fields until we cannot do so anymore.
425
+ while (true) {
426
+ if (LookingAtType(io::Tokenizer::TYPE_END)) {
427
+ // Ensures recursion limit properly unwinded, but only for success
428
+ // cases. This implicitly avoids the check when `Parse` returns false
429
+ // via `DO(...)`.
430
+ ABSL_DCHECK(had_errors_ || recursion_limit_ == initial_recursion_limit_)
431
+ << "Recursion limit at end of parse should be "
432
+ << initial_recursion_limit_ << ", but was " << recursion_limit_
433
+ << ". Difference of " << initial_recursion_limit_ - recursion_limit_
434
+ << " stack frames not accounted for stack unwind.";
435
+
436
+ return !had_errors_;
437
+ }
438
+
439
+ DO(ConsumeField(output));
440
+ }
441
+ }
442
+
443
+ bool ParseField(const FieldDescriptor* field, Message* output) {
444
+ bool suc;
445
+ if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
446
+ suc = ConsumeFieldMessage(output, output->GetReflection(), field);
447
+ } else {
448
+ suc = ConsumeFieldValue(output, output->GetReflection(), field);
449
+ }
450
+ return suc && LookingAtType(io::Tokenizer::TYPE_END);
451
+ }
452
+
453
+ void ReportError(int line, int col, absl::string_view message) {
454
+ had_errors_ = true;
455
+ if (error_collector_ == nullptr) {
456
+ if (line >= 0) {
457
+ ABSL_LOG(ERROR) << "Error parsing text-format "
458
+ << root_message_type_->full_name() << ": " << (line + 1)
459
+ << ":" << (col + 1) << ": " << message;
460
+ } else {
461
+ ABSL_LOG(ERROR) << "Error parsing text-format "
462
+ << root_message_type_->full_name() << ": " << message;
463
+ }
464
+ } else {
465
+ error_collector_->RecordError(line, col, message);
466
+ }
467
+ }
468
+
469
+ void ReportWarning(int line, int col, const absl::string_view message) {
470
+ if (error_collector_ == nullptr) {
471
+ if (line >= 0) {
472
+ ABSL_LOG_EVERY_POW_2(WARNING)
473
+ << "Warning parsing text-format " << root_message_type_->full_name()
474
+ << ": " << (line + 1) << ":" << (col + 1) << " (N = " << COUNTER
475
+ << "): " << message;
476
+ } else {
477
+ ABSL_LOG_EVERY_POW_2(WARNING)
478
+ << "Warning parsing text-format " << root_message_type_->full_name()
479
+ << " (N = " << COUNTER << "): " << message;
480
+ }
481
+ } else {
482
+ error_collector_->RecordWarning(line, col, message);
483
+ }
484
+ }
485
+
486
+ private:
487
+ static constexpr int32_t kint32max = std::numeric_limits<int32_t>::max();
488
+ static constexpr uint32_t kuint32max = std::numeric_limits<uint32_t>::max();
489
+ static constexpr int64_t kint64min = std::numeric_limits<int64_t>::min();
490
+ static constexpr int64_t kint64max = std::numeric_limits<int64_t>::max();
491
+ static constexpr uint64_t kuint64max = std::numeric_limits<uint64_t>::max();
492
+
493
+ // Reports an error with the given message with information indicating
494
+ // the position (as derived from the current token).
495
+ void ReportError(absl::string_view message) {
496
+ ReportError(tokenizer_.current().line, tokenizer_.current().column,
497
+ message);
498
+ }
499
+
500
+ // Reports a warning with the given message with information indicating
501
+ // the position (as derived from the current token).
502
+ void ReportWarning(absl::string_view message) {
503
+ ReportWarning(tokenizer_.current().line, tokenizer_.current().column,
504
+ message);
505
+ }
506
+
507
+ // Consumes the specified message with the given starting delimiter.
508
+ // This method checks to see that the end delimiter at the conclusion of
509
+ // the consumption matches the starting delimiter passed in here.
510
+ bool ConsumeMessage(Message* message, const std::string& delimiter) {
511
+ while (!LookingAt(">") && !LookingAt("}")) {
512
+ DO(ConsumeField(message));
513
+ }
514
+
515
+ // Confirm that we have a valid ending delimiter.
516
+ DO(Consume(delimiter));
517
+ return true;
518
+ }
519
+
520
+ // Consume either "<" or "{".
521
+ bool ConsumeMessageDelimiter(std::string* delimiter) {
522
+ if (TryConsume("<")) {
523
+ *delimiter = ">";
524
+ } else {
525
+ DO(Consume("{"));
526
+ *delimiter = "}";
527
+ }
528
+ return true;
529
+ }
530
+
531
+ // Consumes the current field (as returned by the tokenizer) on the
532
+ // passed in message.
533
+ bool ConsumeField(Message* message) {
534
+ const Reflection* reflection = message->GetReflection();
535
+ const Descriptor* descriptor = message->GetDescriptor();
536
+
537
+ std::string field_name;
538
+ bool reserved_field = false;
539
+ const FieldDescriptor* field = nullptr;
540
+ int start_line = tokenizer_.current().line;
541
+ int start_column = tokenizer_.current().column;
542
+
543
+ auto record_value_location = [&](int v_start_line, int v_start_column) {
544
+ if (parse_info_tree_ != nullptr && field != nullptr) {
545
+ int v_end_line = tokenizer_.previous().line;
546
+ int v_end_column = tokenizer_.previous().end_column;
547
+ RecordValueLocation(
548
+ parse_info_tree_, field,
549
+ ParseLocationRange(ParseLocation(v_start_line, v_start_column),
550
+ ParseLocation(v_end_line, v_end_column)));
551
+ }
552
+ };
553
+
554
+ auto record_name_location = [&](const FieldDescriptor* f,
555
+ const ParseLocationRange& n_range) {
556
+ if (parse_info_tree_ != nullptr && f != nullptr) {
557
+ RecordNameLocation(parse_info_tree_, f, n_range);
558
+ }
559
+ };
560
+
561
+ auto skip_parsing = [&](bool result) {
562
+ // For historical reasons, fields may optionally be separated by commas or
563
+ // semicolons.
564
+ TryConsume(";") || TryConsume(",");
565
+
566
+ // If a parse info tree exists, add the location for the parsed
567
+ // field.
568
+ if (parse_info_tree_ != nullptr) {
569
+ int end_line = tokenizer_.previous().line;
570
+ int end_column = tokenizer_.previous().end_column;
571
+
572
+ RecordLocation(
573
+ parse_info_tree_, field,
574
+ ParseLocationRange(ParseLocation(start_line, start_column),
575
+ ParseLocation(end_line, end_column)));
576
+ }
577
+
578
+ return result;
579
+ };
580
+
581
+ const FieldDescriptor* any_type_url_field;
582
+ const FieldDescriptor* any_value_field;
583
+ if (internal::GetAnyFieldDescriptors(*message, &any_type_url_field,
584
+ &any_value_field) &&
585
+ LookingAt("[")) {
586
+ int n_start_line = tokenizer_.current().line;
587
+ int n_start_column = tokenizer_.current().column;
588
+ std::string full_type_name, url_prefix;
589
+ DO(ConsumeAnyTypeUrlOrFullTypeName(full_type_name, url_prefix));
590
+ int n_end_line = tokenizer_.previous().line;
591
+ int n_end_column = tokenizer_.previous().end_column;
592
+ if (url_prefix.empty()) {
593
+ ReportError("Type URL prefix is missing");
594
+ return false;
595
+ }
596
+ std::string url_prefix_and_full_type_name =
597
+ absl::StrCat(url_prefix, full_type_name);
598
+ TryConsumeWhitespace();
599
+ // ':' is optional between message labels and values.
600
+ if (TryConsumeBeforeWhitespace(":")) {
601
+ TryConsumeWhitespace();
602
+ }
603
+ std::string serialized_value;
604
+ const Descriptor* value_descriptor =
605
+ finder_
606
+ ? finder_->FindAnyType(*message, url_prefix, full_type_name)
607
+ : DefaultFinderFindAnyType(*message, url_prefix, full_type_name);
608
+ if (value_descriptor == nullptr) {
609
+ ReportError(absl::StrCat("Could not find type \"",
610
+ url_prefix_and_full_type_name,
611
+ "\" stored in google.protobuf.Any."));
612
+ return false;
613
+ }
614
+ int v_start_line = tokenizer_.current().line;
615
+ int v_start_column = tokenizer_.current().column;
616
+ DO(ConsumeAnyValue(value_descriptor, &serialized_value));
617
+ record_value_location(v_start_line, v_start_column);
618
+
619
+ record_name_location(
620
+ any_type_url_field,
621
+ ParseLocationRange(ParseLocation(n_start_line, n_start_column),
622
+ ParseLocation(n_end_line, n_end_column)));
623
+
624
+ if (singular_overwrite_policy_ == FORBID_SINGULAR_OVERWRITES) {
625
+ // Fail if any_type_url_field has already been specified.
626
+ if ((!any_type_url_field->is_repeated() &&
627
+ reflection->HasField(*message, any_type_url_field)) ||
628
+ (!any_value_field->is_repeated() &&
629
+ reflection->HasField(*message, any_value_field))) {
630
+ ReportError("Non-repeated Any specified multiple times.");
631
+ return false;
632
+ }
633
+ }
634
+ reflection->SetString(message, any_type_url_field,
635
+ std::move(url_prefix_and_full_type_name));
636
+ reflection->SetString(message, any_value_field,
637
+ std::move(serialized_value));
638
+ return skip_parsing(true);
639
+ }
640
+ if (LookingAt("[")) {
641
+ // Extension.
642
+ int n_start_line = tokenizer_.current().line;
643
+ int n_start_column = tokenizer_.current().column;
644
+ std::string url_prefix;
645
+ DO(ConsumeAnyTypeUrlOrFullTypeName(field_name, url_prefix));
646
+ int n_end_line = tokenizer_.previous().line;
647
+ int n_end_column = tokenizer_.previous().end_column;
648
+ if (!url_prefix.empty()) {
649
+ ReportError("Extension name contains \"/\"");
650
+ return false;
651
+ }
652
+ TryConsumeWhitespace();
653
+
654
+ field = finder_ ? finder_->FindExtension(message, field_name)
655
+ : DefaultFinderFindExtension(message, field_name);
656
+
657
+ record_name_location(
658
+ field, ParseLocationRange(ParseLocation(n_start_line, n_start_column),
659
+ ParseLocation(n_end_line, n_end_column)));
660
+
661
+ if (field == nullptr) {
662
+ if (!allow_unknown_field_ && !allow_unknown_extension_) {
663
+ ReportError(absl::StrCat("Extension \"", field_name,
664
+ "\" is not defined or "
665
+ "is not an extension of \"",
666
+ descriptor->full_name(), "\"."));
667
+ return false;
668
+ } else {
669
+ ReportWarning(absl::StrCat(
670
+ "Ignoring extension \"", field_name,
671
+ "\" which is not defined or is not an extension of \"",
672
+ descriptor->full_name(), "\"."));
673
+ }
674
+ }
675
+ } else {
676
+ int n_start_line = tokenizer_.current().line;
677
+ int n_start_column = tokenizer_.current().column;
678
+ DO(ConsumeIdentifierBeforeWhitespace(&field_name));
679
+ int n_end_line = tokenizer_.previous().line;
680
+ int n_end_column = tokenizer_.previous().end_column;
681
+ TryConsumeWhitespace();
682
+
683
+ int32_t field_number;
684
+ if (allow_field_number_ && absl::SimpleAtoi(field_name, &field_number)) {
685
+ if (descriptor->IsExtensionNumber(field_number)) {
686
+ field = finder_
687
+ ? finder_->FindExtensionByNumber(descriptor, field_number)
688
+ : DefaultFinderFindExtensionByNumber(descriptor,
689
+ field_number);
690
+ } else if (descriptor->IsReservedNumber(field_number)) {
691
+ reserved_field = true;
692
+ } else {
693
+ field = descriptor->FindFieldByNumber(field_number);
694
+ }
695
+ } else {
696
+ field = descriptor->FindFieldByName(field_name);
697
+ // Group-like delimited fields will accept both the capitalized type
698
+ // names as well.
699
+ if (field == nullptr) {
700
+ std::string lower_field_name = field_name;
701
+ absl::AsciiStrToLower(&lower_field_name);
702
+ field = descriptor->FindFieldByName(lower_field_name);
703
+ // If the case-insensitive match worked but the field is NOT a group,
704
+ if (field != nullptr && !internal::cpp::IsGroupLike(*field)) {
705
+ field = nullptr;
706
+ }
707
+ if (field != nullptr && field->message_type()->name() != field_name) {
708
+ field = nullptr;
709
+ }
710
+ }
711
+
712
+ if (field == nullptr && allow_case_insensitive_field_) {
713
+ std::string lower_field_name = field_name;
714
+ absl::AsciiStrToLower(&lower_field_name);
715
+ field = descriptor->FindFieldByLowercaseName(lower_field_name);
716
+ }
717
+
718
+ if (field == nullptr) {
719
+ reserved_field = descriptor->IsReservedName(field_name);
720
+ }
721
+ }
722
+ record_name_location(
723
+ field, ParseLocationRange(ParseLocation(n_start_line, n_start_column),
724
+ ParseLocation(n_end_line, n_end_column)));
725
+ if (field == nullptr && !reserved_field) {
726
+ if (!allow_unknown_field_) {
727
+ ReportError(absl::StrCat("Message type \"", descriptor->full_name(),
728
+ "\" has no field named \"", field_name,
729
+ "\"."));
730
+ return false;
731
+ } else {
732
+ ReportWarning(absl::StrCat("Message type \"", descriptor->full_name(),
733
+ "\" has no field named \"", field_name,
734
+ "\"."));
735
+ }
736
+ }
737
+ }
738
+
739
+ // Skips unknown or reserved fields.
740
+ if (field == nullptr) {
741
+ ABSL_CHECK(allow_unknown_field_ || allow_unknown_extension_ ||
742
+ reserved_field);
743
+
744
+ // Try to guess the type of this field.
745
+ // If this field is not a message, there should be a ":" between the
746
+ // field name and the field value and also the field value should not
747
+ // start with "{" or "<" which indicates the beginning of a message body.
748
+ // If there is no ":" or there is a "{" or "<" after ":", this field has
749
+ // to be a message or the input is ill-formed.
750
+ if (TryConsumeBeforeWhitespace(":")) {
751
+ TryConsumeWhitespace();
752
+ if (!LookingAt("{") && !LookingAt("<")) {
753
+ return skip_parsing(SkipFieldValue());
754
+ }
755
+ }
756
+ return skip_parsing(SkipFieldMessage());
757
+ }
758
+
759
+ if (field->options().deprecated()) {
760
+ ReportWarning(absl::StrCat("text format contains deprecated field \"",
761
+ field_name, "\""));
762
+ }
763
+
764
+ if (singular_overwrite_policy_ == FORBID_SINGULAR_OVERWRITES) {
765
+ // Fail if the field is not repeated and it has already been specified.
766
+ if (!field->is_repeated() && reflection->HasField(*message, field)) {
767
+ ReportError(absl::StrCat("Non-repeated field \"", field_name,
768
+ "\" is specified multiple times."));
769
+ return false;
770
+ }
771
+ // Fail if the field is a member of a oneof and another member has already
772
+ // been specified.
773
+ const OneofDescriptor* oneof = field->containing_oneof();
774
+ if (oneof != nullptr && reflection->HasOneof(*message, oneof)) {
775
+ const FieldDescriptor* other_field =
776
+ reflection->GetOneofFieldDescriptor(*message, oneof);
777
+ ReportError(absl::StrCat("Field \"", field_name,
778
+ "\" is specified along with "
779
+ "field \"",
780
+ other_field->name(),
781
+ "\", another member "
782
+ "of oneof \"",
783
+ oneof->name(), "\"."));
784
+ return false;
785
+ }
786
+ }
787
+
788
+ // Perform special handling for embedded message types.
789
+ if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
790
+ // ':' is optional here.
791
+ bool consumed_semicolon = TryConsumeBeforeWhitespace(":");
792
+ if (consumed_semicolon) {
793
+ TryConsumeWhitespace();
794
+ }
795
+ if (consumed_semicolon && field->options().weak() &&
796
+ LookingAtType(io::Tokenizer::TYPE_STRING)) {
797
+ // we are getting a bytes string for a weak field.
798
+ int v_start_line = tokenizer_.current().line;
799
+ int v_start_column = tokenizer_.current().column;
800
+ std::string tmp;
801
+ DO(ConsumeString(&tmp));
802
+ MessageFactory* factory =
803
+ finder_ ? finder_->FindExtensionFactory(field) : nullptr;
804
+ // TODO: Remove this suppression.
805
+ (void)reflection->MutableMessage(message, field, factory)
806
+ ->ParseFromString(tmp);
807
+ record_value_location(v_start_line, v_start_column);
808
+ return skip_parsing(true);
809
+ }
810
+ } else {
811
+ // ':' is required here.
812
+ DO(ConsumeBeforeWhitespace(":"));
813
+ TryConsumeWhitespace();
814
+ }
815
+
816
+ if (field->is_repeated() && TryConsume("[")) {
817
+ // Short repeated format, e.g. "foo: [1, 2, 3]".
818
+ if (!TryConsume("]")) {
819
+ // "foo: []" is treated as empty.
820
+ while (true) {
821
+ int v_start_line = tokenizer_.current().line;
822
+ int v_start_column = tokenizer_.current().column;
823
+ if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
824
+ // Perform special handling for embedded message types.
825
+ DO(ConsumeFieldMessage(message, reflection, field));
826
+ } else {
827
+ DO(ConsumeFieldValue(message, reflection, field));
828
+ }
829
+ record_value_location(v_start_line, v_start_column);
830
+ if (TryConsume("]")) {
831
+ break;
832
+ }
833
+ DO(Consume(","));
834
+ }
835
+ }
836
+ } else if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
837
+ int v_start_line = tokenizer_.current().line;
838
+ int v_start_column = tokenizer_.current().column;
839
+ DO(ConsumeFieldMessage(message, reflection, field));
840
+ record_value_location(v_start_line, v_start_column);
841
+ } else {
842
+ int v_start_line = tokenizer_.current().line;
843
+ int v_start_column = tokenizer_.current().column;
844
+ DO(ConsumeFieldValue(message, reflection, field));
845
+ record_value_location(v_start_line, v_start_column);
846
+ }
847
+
848
+ return skip_parsing(true);
849
+ }
850
+
851
+ // Skips the next field including the field's name and value.
852
+ bool SkipField() {
853
+ std::string field_name;
854
+ if (LookingAt("[")) {
855
+ // Extension name or type URL.
856
+ std::string full_type_name, url_prefix;
857
+ DO(ConsumeAnyTypeUrlOrFullTypeName(full_type_name, url_prefix));
858
+ field_name = absl::StrCat(url_prefix, full_type_name);
859
+ } else {
860
+ DO(ConsumeIdentifierBeforeWhitespace(&field_name));
861
+ }
862
+ TryConsumeWhitespace();
863
+
864
+ // Try to guess the type of this field.
865
+ // If this field is not a message, there should be a ":" between the
866
+ // field name and the field value and also the field value should not
867
+ // start with "{" or "<" which indicates the beginning of a message body.
868
+ // If there is no ":" or there is a "{" or "<" after ":", this field has
869
+ // to be a message or the input is ill-formed.
870
+ if (TryConsumeBeforeWhitespace(":")) {
871
+ TryConsumeWhitespace();
872
+ if (!LookingAt("{") && !LookingAt("<")) {
873
+ DO(SkipFieldValue());
874
+ } else {
875
+ DO(SkipFieldMessage());
876
+ }
877
+ } else {
878
+ DO(SkipFieldMessage());
879
+ }
880
+ // For historical reasons, fields may optionally be separated by commas or
881
+ // semicolons.
882
+ TryConsume(";") || TryConsume(",");
883
+ return true;
884
+ }
885
+
886
+ bool ConsumeFieldMessage(Message* message, const Reflection* reflection,
887
+ const FieldDescriptor* field) {
888
+ if (--recursion_limit_ < 0) {
889
+ ReportError(
890
+ absl::StrCat("Message is too deep, the parser exceeded the "
891
+ "configured recursion limit of ",
892
+ initial_recursion_limit_, "."));
893
+ return false;
894
+ }
895
+ // If the parse information tree is not nullptr, create a nested one
896
+ // for the nested message.
897
+ ParseInfoTree* parent = parse_info_tree_;
898
+ if (parent != nullptr) {
899
+ parse_info_tree_ = CreateNested(parent, field);
900
+ }
901
+
902
+ std::string delimiter;
903
+ DO(ConsumeMessageDelimiter(&delimiter));
904
+ MessageFactory* factory =
905
+ finder_ ? finder_->FindExtensionFactory(field) : nullptr;
906
+ if (field->is_repeated()) {
907
+ DO(ConsumeMessage(reflection->AddMessage(message, field, factory),
908
+ delimiter));
909
+ } else {
910
+ DO(ConsumeMessage(reflection->MutableMessage(message, field, factory),
911
+ delimiter));
912
+ }
913
+
914
+ ++recursion_limit_;
915
+
916
+ // Reset the parse information tree.
917
+ parse_info_tree_ = parent;
918
+ return true;
919
+ }
920
+
921
+ // Skips the whole body of a message including the beginning delimiter and
922
+ // the ending delimiter.
923
+ bool SkipFieldMessage() {
924
+ if (--recursion_limit_ < 0) {
925
+ ReportError(
926
+ absl::StrCat("Message is too deep, the parser exceeded the "
927
+ "configured recursion limit of ",
928
+ initial_recursion_limit_, "."));
929
+ return false;
930
+ }
931
+
932
+ std::string delimiter;
933
+ DO(ConsumeMessageDelimiter(&delimiter));
934
+ while (!LookingAt(">") && !LookingAt("}")) {
935
+ DO(SkipField());
936
+ }
937
+ DO(Consume(delimiter));
938
+
939
+ ++recursion_limit_;
940
+ return true;
941
+ }
942
+
943
+ bool ConsumeFieldValue(Message* message, const Reflection* reflection,
944
+ const FieldDescriptor* field) {
945
+ // Define an easy to use macro for setting fields. This macro checks
946
+ // to see if the field is repeated (in which case we need to use the Add
947
+ // methods or not (in which case we need to use the Set methods).
948
+ // When checking for no-op operations, We verify that both the existing value in
949
+ // the message and the new value are the default. If the existing field value is
950
+ // not the default, setting it to the default should not be treated as a no-op.
951
+ // The pointer of this is kept in no_op_fields_ for bookkeeping.
952
+ #define SET_FIELD(CPPTYPE, CPPTYPELCASE, VALUE) \
953
+ if (field->is_repeated()) { \
954
+ reflection->Add##CPPTYPE(message, field, VALUE); \
955
+ } else { \
956
+ if (no_op_fields_ && !field->has_presence() && \
957
+ field->default_value_##CPPTYPELCASE() == \
958
+ reflection->Get##CPPTYPE(*message, field) && \
959
+ field->default_value_##CPPTYPELCASE() == VALUE) { \
960
+ no_op_fields_->ids_.insert( \
961
+ UnsetFieldsMetadata::GetUnsetFieldId(*message, *field)); \
962
+ } else { \
963
+ reflection->Set##CPPTYPE(message, field, std::move(VALUE)); \
964
+ } \
965
+ }
966
+
967
+ switch (field->cpp_type()) {
968
+ case FieldDescriptor::CPPTYPE_INT32: {
969
+ int64_t value;
970
+ DO(ConsumeSignedInteger(&value, kint32max));
971
+ SET_FIELD(Int32, int32, static_cast<int32_t>(value));
972
+ break;
973
+ }
974
+
975
+ case FieldDescriptor::CPPTYPE_UINT32: {
976
+ uint64_t value;
977
+ DO(ConsumeUnsignedInteger(&value, kuint32max));
978
+ SET_FIELD(UInt32, uint32, static_cast<uint32_t>(value));
979
+ break;
980
+ }
981
+
982
+ case FieldDescriptor::CPPTYPE_INT64: {
983
+ int64_t value;
984
+ DO(ConsumeSignedInteger(&value, kint64max));
985
+ SET_FIELD(Int64, int64, value);
986
+ break;
987
+ }
988
+
989
+ case FieldDescriptor::CPPTYPE_UINT64: {
990
+ uint64_t value;
991
+ DO(ConsumeUnsignedInteger(&value, kuint64max));
992
+ SET_FIELD(UInt64, uint64, value);
993
+ break;
994
+ }
995
+
996
+ case FieldDescriptor::CPPTYPE_FLOAT: {
997
+ double value;
998
+ DO(ConsumeDouble(&value));
999
+ SET_FIELD(Float, float, io::SafeDoubleToFloat(value));
1000
+ break;
1001
+ }
1002
+
1003
+ case FieldDescriptor::CPPTYPE_DOUBLE: {
1004
+ double value;
1005
+ DO(ConsumeDouble(&value));
1006
+ SET_FIELD(Double, double, value);
1007
+ break;
1008
+ }
1009
+
1010
+ case FieldDescriptor::CPPTYPE_STRING: {
1011
+ std::string value;
1012
+ DO(ConsumeString(&value));
1013
+ SET_FIELD(String, string, std::move(value));
1014
+ break;
1015
+ }
1016
+
1017
+ case FieldDescriptor::CPPTYPE_BOOL: {
1018
+ if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) {
1019
+ uint64_t value;
1020
+ DO(ConsumeUnsignedInteger(&value, 1));
1021
+ SET_FIELD(Bool, bool, static_cast<bool>(value));
1022
+ } else {
1023
+ std::string value;
1024
+ DO(ConsumeIdentifier(&value));
1025
+ if (value == "true" || value == "True" || value == "t") {
1026
+ SET_FIELD(Bool, bool, true);
1027
+ } else if (value == "false" || value == "False" || value == "f") {
1028
+ SET_FIELD(Bool, bool, false);
1029
+ } else {
1030
+ ReportError(absl::StrCat("Invalid value for boolean field \"",
1031
+ field->name(), "\". Value: \"", value,
1032
+ "\"."));
1033
+ return false;
1034
+ }
1035
+ }
1036
+ break;
1037
+ }
1038
+
1039
+ case FieldDescriptor::CPPTYPE_ENUM: {
1040
+ std::string value;
1041
+ int64_t int_value = kint64max;
1042
+ const EnumDescriptor* enum_type = field->enum_type();
1043
+ const EnumValueDescriptor* enum_value = nullptr;
1044
+
1045
+ if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) {
1046
+ DO(ConsumeIdentifier(&value));
1047
+ // Find the enumeration value.
1048
+ enum_value = enum_type->FindValueByName(value);
1049
+
1050
+ } else if (LookingAt("-") ||
1051
+ LookingAtType(io::Tokenizer::TYPE_INTEGER)) {
1052
+ DO(ConsumeSignedInteger(&int_value, kint32max));
1053
+ value = absl::StrCat(int_value); // for error reporting
1054
+ enum_value = enum_type->FindValueByNumber(int_value);
1055
+ } else {
1056
+ ReportError(absl::StrCat("Expected integer or identifier, got: ",
1057
+ tokenizer_.current().text));
1058
+ return false;
1059
+ }
1060
+
1061
+ if (enum_value == nullptr) {
1062
+ if (int_value != kint64max &&
1063
+ !field->legacy_enum_field_treated_as_closed()) {
1064
+ SET_FIELD(EnumValue, int64, int_value);
1065
+ return true;
1066
+ } else if (!allow_unknown_enum_) {
1067
+ ReportError(absl::StrCat("Unknown enumeration value of \"", value,
1068
+ "\" for field \"", field->name(), "\"."));
1069
+ return false;
1070
+ } else {
1071
+ ReportWarning(absl::StrCat("Unknown enumeration value of \"", value,
1072
+ "\" for field \"", field->name(),
1073
+ "\"."));
1074
+ return true;
1075
+ }
1076
+ }
1077
+
1078
+ SET_FIELD(Enum, enum, enum_value);
1079
+ break;
1080
+ }
1081
+
1082
+ case FieldDescriptor::CPPTYPE_MESSAGE: {
1083
+ // We should never get here. Put here instead of a default
1084
+ // so that if new types are added, we get a nice compiler warning.
1085
+ ABSL_LOG(FATAL) << "Reached an unintended state: CPPTYPE_MESSAGE";
1086
+ break;
1087
+ }
1088
+ }
1089
+ #undef SET_FIELD
1090
+ return true;
1091
+ }
1092
+
1093
+ bool SkipFieldValue() {
1094
+ if (--recursion_limit_ < 0) {
1095
+ ReportError(
1096
+ absl::StrCat("Message is too deep, the parser exceeded the "
1097
+ "configured recursion limit of ",
1098
+ initial_recursion_limit_, "."));
1099
+ return false;
1100
+ }
1101
+
1102
+ if (LookingAtType(io::Tokenizer::TYPE_STRING)) {
1103
+ while (LookingAtType(io::Tokenizer::TYPE_STRING)) {
1104
+ tokenizer_.Next();
1105
+ }
1106
+ ++recursion_limit_;
1107
+ return true;
1108
+ }
1109
+ if (TryConsume("[")) {
1110
+ if (!TryConsume("]")) {
1111
+ while (true) {
1112
+ if (!LookingAt("{") && !LookingAt("<")) {
1113
+ DO(SkipFieldValue());
1114
+ } else {
1115
+ DO(SkipFieldMessage());
1116
+ }
1117
+ if (TryConsume("]")) {
1118
+ break;
1119
+ }
1120
+ DO(Consume(","));
1121
+ }
1122
+ }
1123
+ ++recursion_limit_;
1124
+ return true;
1125
+ }
1126
+ // Possible field values other than string:
1127
+ // 12345 => TYPE_INTEGER
1128
+ // -12345 => TYPE_SYMBOL + TYPE_INTEGER
1129
+ // 1.2345 => TYPE_FLOAT
1130
+ // -1.2345 => TYPE_SYMBOL + TYPE_FLOAT
1131
+ // inf => TYPE_IDENTIFIER
1132
+ // -inf => TYPE_SYMBOL + TYPE_IDENTIFIER
1133
+ // TYPE_INTEGER => TYPE_IDENTIFIER
1134
+ // Divides them into two group, one with TYPE_SYMBOL
1135
+ // and the other without:
1136
+ // Group one:
1137
+ // 12345 => TYPE_INTEGER
1138
+ // 1.2345 => TYPE_FLOAT
1139
+ // inf => TYPE_IDENTIFIER
1140
+ // TYPE_INTEGER => TYPE_IDENTIFIER
1141
+ // Group two:
1142
+ // -12345 => TYPE_SYMBOL + TYPE_INTEGER
1143
+ // -1.2345 => TYPE_SYMBOL + TYPE_FLOAT
1144
+ // -inf => TYPE_SYMBOL + TYPE_IDENTIFIER
1145
+ // As we can see, the field value consists of an optional '-' and one of
1146
+ // TYPE_INTEGER, TYPE_FLOAT and TYPE_IDENTIFIER.
1147
+ bool has_minus = TryConsume("-");
1148
+ if (!LookingAtType(io::Tokenizer::TYPE_INTEGER) &&
1149
+ !LookingAtType(io::Tokenizer::TYPE_FLOAT) &&
1150
+ !LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) {
1151
+ std::string text = tokenizer_.current().text;
1152
+ ReportError(
1153
+ absl::StrCat("Cannot skip field value, unexpected token: ", text));
1154
+ ++recursion_limit_;
1155
+ return false;
1156
+ }
1157
+ // Combination of '-' and TYPE_IDENTIFIER may result in an invalid field
1158
+ // value while other combinations all generate valid values.
1159
+ // We check if the value of this combination is valid here.
1160
+ // TYPE_IDENTIFIER after a '-' should be one of the float values listed
1161
+ // below:
1162
+ // inf, inff, infinity, nan
1163
+ if (has_minus && LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) {
1164
+ std::string text = tokenizer_.current().text;
1165
+ absl::AsciiStrToLower(&text);
1166
+ if (text != "inf" &&
1167
+ text != "infinity" && text != "nan") {
1168
+ ReportError(absl::StrCat("Invalid float number: ", text));
1169
+ ++recursion_limit_;
1170
+ return false;
1171
+ }
1172
+ }
1173
+ tokenizer_.Next();
1174
+ ++recursion_limit_;
1175
+ return true;
1176
+ }
1177
+
1178
+ // Returns true if the current token's text is equal to that specified.
1179
+ bool LookingAt(const std::string& text) {
1180
+ return tokenizer_.current().text == text;
1181
+ }
1182
+
1183
+ // Returns true if the current token's type is equal to that specified.
1184
+ bool LookingAtType(io::Tokenizer::TokenType token_type) {
1185
+ return tokenizer_.current().type == token_type;
1186
+ }
1187
+
1188
+ // Consumes an identifier and saves its value in the identifier parameter.
1189
+ // Returns false if the token is not of type IDENTIFIER.
1190
+ bool ConsumeIdentifier(std::string* identifier) {
1191
+ if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) {
1192
+ *identifier = tokenizer_.current().text;
1193
+ tokenizer_.Next();
1194
+ return true;
1195
+ }
1196
+
1197
+ // If allow_field_number_ or allow_unknown_field_ is true, we should able
1198
+ // to parse integer identifiers.
1199
+ if ((allow_field_number_ || allow_unknown_field_ ||
1200
+ allow_unknown_extension_) &&
1201
+ LookingAtType(io::Tokenizer::TYPE_INTEGER)) {
1202
+ *identifier = tokenizer_.current().text;
1203
+ tokenizer_.Next();
1204
+ return true;
1205
+ }
1206
+
1207
+ ReportError(
1208
+ absl::StrCat("Expected identifier, got: ", tokenizer_.current().text));
1209
+ return false;
1210
+ }
1211
+
1212
+ // Similar to `ConsumeIdentifier`, but any following whitespace token may
1213
+ // be reported.
1214
+ bool ConsumeIdentifierBeforeWhitespace(std::string* identifier) {
1215
+ tokenizer_.set_report_whitespace(true);
1216
+ bool result = ConsumeIdentifier(identifier);
1217
+ tokenizer_.set_report_whitespace(false);
1218
+ return result;
1219
+ }
1220
+
1221
+ // Consumes a string and saves its value in the text parameter.
1222
+ // Returns false if the token is not of type STRING.
1223
+ bool ConsumeString(std::string* text) {
1224
+ if (!LookingAtType(io::Tokenizer::TYPE_STRING)) {
1225
+ ReportError(
1226
+ absl::StrCat("Expected string, got: ", tokenizer_.current().text));
1227
+ return false;
1228
+ }
1229
+
1230
+ text->clear();
1231
+ while (LookingAtType(io::Tokenizer::TYPE_STRING)) {
1232
+ io::Tokenizer::ParseStringAppend(tokenizer_.current().text, text);
1233
+
1234
+ tokenizer_.Next();
1235
+ }
1236
+
1237
+ return true;
1238
+ }
1239
+
1240
+ // Consumes a uint64_t and saves its value in the value parameter.
1241
+ // Returns false if the token is not of type INTEGER.
1242
+ bool ConsumeUnsignedInteger(uint64_t* value, uint64_t max_value) {
1243
+ if (!LookingAtType(io::Tokenizer::TYPE_INTEGER)) {
1244
+ ReportError(
1245
+ absl::StrCat("Expected integer, got: ", tokenizer_.current().text));
1246
+ return false;
1247
+ }
1248
+
1249
+ if (!io::Tokenizer::ParseInteger(tokenizer_.current().text, max_value,
1250
+ value)) {
1251
+ ReportError(absl::StrCat("Integer out of range (",
1252
+ tokenizer_.current().text, ")"));
1253
+ return false;
1254
+ }
1255
+
1256
+ tokenizer_.Next();
1257
+ return true;
1258
+ }
1259
+
1260
+ // Consumes an int64_t and saves its value in the value parameter.
1261
+ // Note that since the tokenizer does not support negative numbers,
1262
+ // we actually may consume an additional token (for the minus sign) in this
1263
+ // method. Returns false if the token is not an integer
1264
+ // (signed or otherwise).
1265
+ bool ConsumeSignedInteger(int64_t* value, uint64_t max_value) {
1266
+ bool negative = false;
1267
+
1268
+ if (TryConsume("-")) {
1269
+ negative = true;
1270
+ // Two's complement always allows one more negative integer than
1271
+ // positive.
1272
+ ++max_value;
1273
+ }
1274
+
1275
+ uint64_t unsigned_value;
1276
+
1277
+ DO(ConsumeUnsignedInteger(&unsigned_value, max_value));
1278
+
1279
+ if (negative) {
1280
+ if ((static_cast<uint64_t>(kint64max) + 1) == unsigned_value) {
1281
+ *value = kint64min;
1282
+ } else {
1283
+ *value = -static_cast<int64_t>(unsigned_value);
1284
+ }
1285
+ } else {
1286
+ *value = static_cast<int64_t>(unsigned_value);
1287
+ }
1288
+
1289
+ return true;
1290
+ }
1291
+
1292
+ // Consumes a double and saves its value in the value parameter.
1293
+ // Accepts decimal numbers only, rejects hex or oct numbers.
1294
+ bool ConsumeUnsignedDecimalAsDouble(double* value, uint64_t max_value) {
1295
+ if (!LookingAtType(io::Tokenizer::TYPE_INTEGER)) {
1296
+ ReportError(
1297
+ absl::StrCat("Expected integer, got: ", tokenizer_.current().text));
1298
+ return false;
1299
+ }
1300
+
1301
+ const std::string& text = tokenizer_.current().text;
1302
+ if (IsHexNumber(text) || IsOctNumber(text)) {
1303
+ ReportError(absl::StrCat("Expect a decimal number, got: ", text));
1304
+ return false;
1305
+ }
1306
+
1307
+ uint64_t uint64_value;
1308
+ if (io::Tokenizer::ParseInteger(text, max_value, &uint64_value)) {
1309
+ *value = static_cast<double>(uint64_value);
1310
+ } else {
1311
+ // Uint64 overflow, attempt to parse as a double instead.
1312
+ *value = io::Tokenizer::ParseFloat(text);
1313
+ }
1314
+
1315
+ tokenizer_.Next();
1316
+ return true;
1317
+ }
1318
+
1319
+ // Consumes a double and saves its value in the value parameter.
1320
+ // Note that since the tokenizer does not support negative numbers,
1321
+ // we actually may consume an additional token (for the minus sign) in this
1322
+ // method. Returns false if the token is not a double
1323
+ // (signed or otherwise).
1324
+ bool ConsumeDouble(double* value) {
1325
+ bool negative = false;
1326
+
1327
+ if (TryConsume("-")) {
1328
+ negative = true;
1329
+ }
1330
+
1331
+ // A double can actually be an integer, according to the tokenizer.
1332
+ // Therefore, we must check both cases here.
1333
+ if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) {
1334
+ // We have found an integer value for the double.
1335
+ DO(ConsumeUnsignedDecimalAsDouble(value, kuint64max));
1336
+ } else if (LookingAtType(io::Tokenizer::TYPE_FLOAT)) {
1337
+ // We have found a float value for the double.
1338
+ *value = io::Tokenizer::ParseFloat(tokenizer_.current().text);
1339
+
1340
+ // Mark the current token as consumed.
1341
+ tokenizer_.Next();
1342
+ } else if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) {
1343
+ std::string text = tokenizer_.current().text;
1344
+ absl::AsciiStrToLower(&text);
1345
+ if (text == "inf" ||
1346
+ text == "infinity") {
1347
+ *value = std::numeric_limits<double>::infinity();
1348
+ tokenizer_.Next();
1349
+ } else if (text == "nan") {
1350
+ *value = std::numeric_limits<double>::quiet_NaN();
1351
+ tokenizer_.Next();
1352
+ } else {
1353
+ ReportError(absl::StrCat("Expected double, got: ", text));
1354
+ return false;
1355
+ }
1356
+ } else {
1357
+ ReportError(
1358
+ absl::StrCat("Expected double, got: ", tokenizer_.current().text));
1359
+ return false;
1360
+ }
1361
+
1362
+ if (negative) {
1363
+ *value = -*value;
1364
+ }
1365
+
1366
+ return true;
1367
+ }
1368
+
1369
+ // Consumes an Any type URL of the form "some.domain/path/full.type.Name" or a
1370
+ // full type name of the form "full.type.Name" enclosed in brackets (the
1371
+ // enclosing `[]` are also consumed).
1372
+ // The full type name is returned in `full_type_name`, and the type URL prefix
1373
+ // is returned in `url_prefix` (which is empty if a full type name without a
1374
+ // prefix is consumed).
1375
+ bool ConsumeAnyTypeUrlOrFullTypeName(std::string& full_type_name,
1376
+ std::string& url_prefix) {
1377
+ // Collect all characters between [ and ] using the URL chars mode of
1378
+ // the tokenizer. The mode switch must happen first so that it is active
1379
+ // when we advance the tokenizer to the token following the "[" in the
1380
+ // consume call.
1381
+ tokenizer_.set_report_url_chars(true);
1382
+ Consume("[");
1383
+
1384
+ std::string text;
1385
+ std::string url_chars;
1386
+ while (TryConsumeUrlChars(url_chars)) {
1387
+ text.append(url_chars);
1388
+ }
1389
+
1390
+ // The mode switch must happen first so that it is active when we advance
1391
+ // the tokenizer to the token following the "]" in the consume call.
1392
+ tokenizer_.set_report_url_chars(false);
1393
+ DO(ConsumeBeforeWhitespace("]"));
1394
+
1395
+ size_t last_slash_pos = text.find_last_of('/');
1396
+
1397
+ if (last_slash_pos == std::string::npos) {
1398
+ // No slash found, this must be a type name.
1399
+ url_prefix = "";
1400
+ full_type_name = text; // validated below
1401
+ } else {
1402
+ // Found a slash, this must be a type URL.
1403
+ url_prefix = text.substr(0, last_slash_pos + 1);
1404
+ full_type_name = text.substr(last_slash_pos + 1); // validated below
1405
+
1406
+ // Validate prefix
1407
+ if (url_prefix == "/") {
1408
+ ReportError("Type URL prefix is empty");
1409
+ return false;
1410
+ }
1411
+
1412
+ if (url_prefix[0] == '/') {
1413
+ ReportError("Type URL starts with \"/\"");
1414
+ return false;
1415
+ }
1416
+
1417
+ // Validate URL percent encodings in prefix: Every '%' needs to be
1418
+ // followed by two hex characters.
1419
+ for (size_t i = 0; i < url_prefix.size(); ++i) {
1420
+ static constexpr absl::CharSet kHexDigits =
1421
+ absl::CharSet::AsciiHexDigits();
1422
+ if (url_prefix[i] == '%' && (i + 2 >= url_prefix.size() ||
1423
+ !kHexDigits.contains(url_prefix[i + 1]) ||
1424
+ !kHexDigits.contains(url_prefix[i + 2]))) {
1425
+ ReportError(absl::StrFormat("Invalid percent encode, got: \"%s\"",
1426
+ url_prefix.substr(i, 3)));
1427
+ return false;
1428
+ }
1429
+ }
1430
+ }
1431
+
1432
+ // Validate type name: Must be non-empty and consist of valid identifiers
1433
+ // separated by '.'.
1434
+ for (absl::string_view identifier : absl::StrSplit(full_type_name, '.')) {
1435
+ if (!tokenizer_.IsIdentifier(identifier)) {
1436
+ ReportError(absl::StrFormat(
1437
+ "Invalid identifier in type name, got: \"%s\"", identifier));
1438
+ return false;
1439
+ }
1440
+ }
1441
+
1442
+ return true;
1443
+ }
1444
+
1445
+ bool TryConsumeUrlChars(std::string& url_chars) {
1446
+ if (!LookingAtType(io::Tokenizer::TYPE_URL_CHARS)) {
1447
+ return false;
1448
+ }
1449
+
1450
+ url_chars = tokenizer_.current().text;
1451
+ tokenizer_.Next();
1452
+ return true;
1453
+ }
1454
+
1455
+ // A helper function for reconstructing Any::value. Consumes a text of
1456
+ // full_type_name, then serializes it into serialized_value.
1457
+ bool ConsumeAnyValue(const Descriptor* value_descriptor,
1458
+ std::string* serialized_value) {
1459
+ DynamicMessageFactory factory;
1460
+ const Message* value_prototype = factory.GetPrototype(value_descriptor);
1461
+ if (value_prototype == nullptr) {
1462
+ return false;
1463
+ }
1464
+ std::unique_ptr<Message> value(value_prototype->New());
1465
+ std::string sub_delimiter;
1466
+ DO(ConsumeMessageDelimiter(&sub_delimiter));
1467
+ DO(ConsumeMessage(value.get(), sub_delimiter));
1468
+
1469
+ if (allow_partial_) {
1470
+ // TODO: Remove this suppression.
1471
+ (void)value->AppendPartialToString(serialized_value);
1472
+ } else {
1473
+ if (!value->IsInitialized()) {
1474
+ std::vector<std::string> missing_fields;
1475
+ value->FindInitializationErrors(&missing_fields);
1476
+ ReportError(absl::StrCat(
1477
+ "Value of type \"", value_descriptor->full_name(),
1478
+ "\" stored in google.protobuf.Any has missing required fields: ",
1479
+ absl::StrJoin(missing_fields, ", ")));
1480
+ return false;
1481
+ }
1482
+ // TODO: Remove this suppression.
1483
+ (void)value->AppendToString(serialized_value);
1484
+ }
1485
+ return true;
1486
+ }
1487
+
1488
+ // Consumes a token and confirms that it matches that specified in the
1489
+ // value parameter. Returns false if the token found does not match that
1490
+ // which was specified.
1491
+ bool Consume(const std::string& value) {
1492
+ const std::string& current_value = tokenizer_.current().text;
1493
+
1494
+ if (current_value != value) {
1495
+ ReportError(absl::StrCat("Expected \"", value, "\", found \"",
1496
+ current_value, "\"."));
1497
+ return false;
1498
+ }
1499
+
1500
+ tokenizer_.Next();
1501
+
1502
+ return true;
1503
+ }
1504
+
1505
+ // Similar to `Consume`, but the following token may be tokenized as
1506
+ // TYPE_WHITESPACE.
1507
+ bool ConsumeBeforeWhitespace(const std::string& value) {
1508
+ // Report whitespace after this token, but only once.
1509
+ tokenizer_.set_report_whitespace(true);
1510
+ bool result = Consume(value);
1511
+ tokenizer_.set_report_whitespace(false);
1512
+ return result;
1513
+ }
1514
+
1515
+ // Attempts to consume the supplied value. Returns false if the token found
1516
+ // does not match the value specified.
1517
+ bool TryConsume(const std::string& value) {
1518
+ if (tokenizer_.current().text == value) {
1519
+ tokenizer_.Next();
1520
+ return true;
1521
+ } else {
1522
+ return false;
1523
+ }
1524
+ }
1525
+
1526
+ // Similar to `TryConsume`, but the following token may be tokenized as
1527
+ // TYPE_WHITESPACE.
1528
+ bool TryConsumeBeforeWhitespace(const std::string& value) {
1529
+ // Report whitespace after this token, but only once.
1530
+ tokenizer_.set_report_whitespace(true);
1531
+ bool result = TryConsume(value);
1532
+ tokenizer_.set_report_whitespace(false);
1533
+ return result;
1534
+ }
1535
+
1536
+ bool TryConsumeWhitespace() {
1537
+ had_silent_marker_ = false;
1538
+ if (LookingAtType(io::Tokenizer::TYPE_WHITESPACE)) {
1539
+ if (tokenizer_.current().text ==
1540
+ absl::StrCat(" ", internal::kDebugStringSilentMarkerForDetection)) {
1541
+ had_silent_marker_ = true;
1542
+ }
1543
+ tokenizer_.Next();
1544
+ return true;
1545
+ }
1546
+ return false;
1547
+ }
1548
+
1549
+ // An internal instance of the Tokenizer's error collector, used to
1550
+ // collect any base-level parse errors and feed them to the ParserImpl.
1551
+ class ParserErrorCollector : public io::ErrorCollector {
1552
+ public:
1553
+ explicit ParserErrorCollector(TextFormat::Parser::ParserImpl* parser)
1554
+ : parser_(parser) {}
1555
+
1556
+ ParserErrorCollector(const ParserErrorCollector&) = delete;
1557
+ ParserErrorCollector& operator=(const ParserErrorCollector&) = delete;
1558
+ ~ParserErrorCollector() override = default;
1559
+
1560
+ void RecordError(int line, int column, absl::string_view message) override {
1561
+ parser_->ReportError(line, column, message);
1562
+ }
1563
+
1564
+ void RecordWarning(int line, int column,
1565
+ absl::string_view message) override {
1566
+ parser_->ReportWarning(line, column, message);
1567
+ }
1568
+
1569
+ private:
1570
+ TextFormat::Parser::ParserImpl* parser_;
1571
+ };
1572
+
1573
+ io::ErrorCollector* error_collector_;
1574
+ const TextFormat::Finder* finder_;
1575
+ ParseInfoTree* parse_info_tree_;
1576
+ ParserErrorCollector tokenizer_error_collector_;
1577
+ io::Tokenizer tokenizer_;
1578
+ const Descriptor* root_message_type_;
1579
+ SingularOverwritePolicy singular_overwrite_policy_;
1580
+ const bool allow_case_insensitive_field_;
1581
+ const bool allow_unknown_field_;
1582
+ const bool allow_unknown_extension_;
1583
+ const bool allow_unknown_enum_;
1584
+ const bool allow_field_number_;
1585
+ const bool allow_partial_;
1586
+ const int initial_recursion_limit_;
1587
+ int recursion_limit_;
1588
+ bool had_silent_marker_;
1589
+ bool had_errors_;
1590
+ UnsetFieldsMetadata* no_op_fields_{};
1591
+
1592
+ };
1593
+
1594
+ // ===========================================================================
1595
+ // Internal class for writing text to the io::ZeroCopyOutputStream. Adapted
1596
+ // from the Printer found in //third_party/protobuf/io/printer.h
1597
+ class TextFormat::Printer::TextGenerator
1598
+ : public TextFormat::BaseTextGenerator {
1599
+ public:
1600
+ explicit TextGenerator(io::ZeroCopyOutputStream* output,
1601
+ int initial_indent_level)
1602
+ : output_(output),
1603
+ buffer_(nullptr),
1604
+ buffer_size_(0),
1605
+ at_start_of_line_(true),
1606
+ failed_(false),
1607
+ insert_silent_marker_(false),
1608
+ indent_level_(initial_indent_level),
1609
+ initial_indent_level_(initial_indent_level) {}
1610
+
1611
+ explicit TextGenerator(io::ZeroCopyOutputStream* output,
1612
+ bool insert_silent_marker, int initial_indent_level)
1613
+ : output_(output),
1614
+ buffer_(nullptr),
1615
+ buffer_size_(0),
1616
+ at_start_of_line_(true),
1617
+ failed_(false),
1618
+ insert_silent_marker_(insert_silent_marker),
1619
+ indent_level_(initial_indent_level),
1620
+ initial_indent_level_(initial_indent_level) {}
1621
+
1622
+ TextGenerator(const TextGenerator&) = delete;
1623
+ TextGenerator& operator=(const TextGenerator&) = delete;
1624
+ ~TextGenerator() override {
1625
+ // Only BackUp() if we're sure we've successfully called Next() at least
1626
+ // once.
1627
+ if (!failed_) {
1628
+ output_->BackUp(buffer_size_);
1629
+ }
1630
+ }
1631
+
1632
+ // Indent text by two spaces. After calling Indent(), two spaces will be
1633
+ // inserted at the beginning of each line of text. Indent() may be called
1634
+ // multiple times to produce deeper indents.
1635
+ void Indent() override { ++indent_level_; }
1636
+
1637
+ // Reduces the current indent level by two spaces, or crashes if the indent
1638
+ // level is zero.
1639
+ void Outdent() override {
1640
+ if (indent_level_ == 0 || indent_level_ < initial_indent_level_) {
1641
+ ABSL_DLOG(FATAL) << " Outdent() without matching Indent().";
1642
+ return;
1643
+ }
1644
+
1645
+ --indent_level_;
1646
+ }
1647
+
1648
+ size_t GetCurrentIndentationSize() const override {
1649
+ return 2 * indent_level_;
1650
+ }
1651
+
1652
+ // Print text to the output stream.
1653
+ void Print(const char* text, size_t size) override {
1654
+ if (indent_level_ > 0) {
1655
+ size_t pos = 0; // The number of bytes we've written so far.
1656
+ for (size_t i = 0; i < size; i++) {
1657
+ if (text[i] == '\n') {
1658
+ // Saw newline. If there is more text, we may need to insert an
1659
+ // indent here. So, write what we have so far, including the '\n'.
1660
+ Write(text + pos, i - pos + 1);
1661
+ pos = i + 1;
1662
+
1663
+ // Setting this true will cause the next Write() to insert an indent
1664
+ // first.
1665
+ at_start_of_line_ = true;
1666
+ }
1667
+ }
1668
+ // Write the rest.
1669
+ Write(text + pos, size - pos);
1670
+ } else {
1671
+ Write(text, size);
1672
+ if (size > 0 && text[size - 1] == '\n') {
1673
+ at_start_of_line_ = true;
1674
+ }
1675
+ }
1676
+ }
1677
+
1678
+ // True if any write to the underlying stream failed. (We don't just
1679
+ // crash in this case because this is an I/O failure, not a programming
1680
+ // error.)
1681
+ bool failed() const { return failed_; }
1682
+
1683
+ void PrintMaybeWithMarker(MarkerToken, absl::string_view text) override {
1684
+ Print(text.data(), text.size());
1685
+ if (ConsumeInsertSilentMarker()) {
1686
+ PrintLiteral(internal::kDebugStringSilentMarker);
1687
+ }
1688
+ }
1689
+
1690
+ void PrintMaybeWithMarker(MarkerToken, absl::string_view text_head,
1691
+ absl::string_view text_tail) override {
1692
+ Print(text_head.data(), text_head.size());
1693
+ if (ConsumeInsertSilentMarker()) {
1694
+ PrintLiteral(internal::kDebugStringSilentMarker);
1695
+ }
1696
+ Print(text_tail.data(), text_tail.size());
1697
+ }
1698
+
1699
+ private:
1700
+ void Write(const char* data, size_t size) {
1701
+ if (failed_) return;
1702
+ if (size == 0) return;
1703
+
1704
+ if (at_start_of_line_) {
1705
+ // Insert an indent.
1706
+ at_start_of_line_ = false;
1707
+ WriteIndent();
1708
+ if (failed_) return;
1709
+ }
1710
+
1711
+ while (static_cast<int64_t>(size) > buffer_size_) {
1712
+ // Data exceeds space in the buffer. Copy what we can and request a
1713
+ // new buffer.
1714
+ if (buffer_size_ > 0) {
1715
+ memcpy(buffer_, data, buffer_size_);
1716
+ data += buffer_size_;
1717
+ size -= buffer_size_;
1718
+ }
1719
+ void* void_buffer = nullptr;
1720
+ failed_ = !output_->Next(&void_buffer, &buffer_size_);
1721
+ if (failed_) return;
1722
+ buffer_ = reinterpret_cast<char*>(void_buffer);
1723
+ }
1724
+
1725
+ // Buffer is big enough to receive the data; copy it.
1726
+ memcpy(buffer_, data, size);
1727
+ buffer_ += size;
1728
+ buffer_size_ -= size;
1729
+ }
1730
+
1731
+ void WriteIndent() {
1732
+ if (indent_level_ == 0) {
1733
+ return;
1734
+ }
1735
+ ABSL_DCHECK(!failed_);
1736
+ int size = GetCurrentIndentationSize();
1737
+
1738
+ while (size > buffer_size_) {
1739
+ // Data exceeds space in the buffer. Write what we can and request a new
1740
+ // buffer.
1741
+ if (buffer_size_ > 0) {
1742
+ memset(buffer_, ' ', buffer_size_);
1743
+ }
1744
+ size -= buffer_size_;
1745
+ void* void_buffer;
1746
+ failed_ = !output_->Next(&void_buffer, &buffer_size_);
1747
+ if (failed_) return;
1748
+ buffer_ = reinterpret_cast<char*>(void_buffer);
1749
+ }
1750
+
1751
+ // Buffer is big enough to receive the data; copy it.
1752
+ memset(buffer_, ' ', size);
1753
+ buffer_ += size;
1754
+ buffer_size_ -= size;
1755
+ }
1756
+
1757
+ // Return the current value of insert_silent_marker_. If it is true, set it
1758
+ // to false as we assume that a silent marker is inserted after a call to this
1759
+ // function.
1760
+ bool ConsumeInsertSilentMarker() {
1761
+ if (insert_silent_marker_) {
1762
+ insert_silent_marker_ = false;
1763
+ return true;
1764
+ }
1765
+ return false;
1766
+ }
1767
+
1768
+ io::ZeroCopyOutputStream* const output_;
1769
+ char* buffer_;
1770
+ int buffer_size_;
1771
+ bool at_start_of_line_;
1772
+ bool failed_;
1773
+ // This flag is false when inserting silent marker is disabled or a silent
1774
+ // marker has been inserted.
1775
+ bool insert_silent_marker_;
1776
+
1777
+ int indent_level_;
1778
+ int initial_indent_level_;
1779
+ };
1780
+
1781
+ // ===========================================================================
1782
+ // An internal field value printer that may insert a silent marker in
1783
+ // DebugStrings.
1784
+ class TextFormat::Printer::DebugStringFieldValuePrinter
1785
+ : public TextFormat::FastFieldValuePrinter {
1786
+ public:
1787
+ void PrintMessageStart(const Message& /*message*/, int /*field_index*/,
1788
+ int /*field_count*/, bool single_line_mode,
1789
+ BaseTextGenerator* generator) const override {
1790
+ if (single_line_mode) {
1791
+ generator->PrintMaybeWithMarker(MarkerToken(), " ", "{ ");
1792
+ } else {
1793
+ generator->PrintMaybeWithMarker(MarkerToken(), " ", "{\n");
1794
+ }
1795
+ }
1796
+ };
1797
+
1798
+ namespace {
1799
+
1800
+ // Returns true if `ch` needs to be escaped in TextFormat, independent of any
1801
+ // UTF-8 validity issues.
1802
+ bool DefinitelyNeedsEscape(unsigned char ch) {
1803
+ if (ch >= 0x80) {
1804
+ return false; // High byte; no escapes necessary if UTF-8 is valid.
1805
+ }
1806
+
1807
+ if (!absl::ascii_isprint(ch)) {
1808
+ return true; // Unprintable characters need escape.
1809
+ }
1810
+
1811
+ switch (ch) {
1812
+ case '\"':
1813
+ case '\'':
1814
+ case '\\':
1815
+ // These characters need escapes despite being printable.
1816
+ return true;
1817
+ }
1818
+
1819
+ return false;
1820
+ }
1821
+
1822
+ // Returns true if this is a high byte that requires UTF-8 validation. If the
1823
+ // UTF-8 validation fails, we must escape the byte.
1824
+ bool NeedsUtf8Validation(unsigned char ch) { return ch > 127; }
1825
+
1826
+ // Returns the number of bytes in the prefix of `val` that do not need escaping.
1827
+ // This is like utf8_range::SpanStructurallyValid(), except that it also
1828
+ // terminates at any ASCII char that needs to be escaped in TextFormat (any char
1829
+ // that has `DefinitelyNeedsEscape(ch) == true`).
1830
+ //
1831
+ // If we could get a variant of utf8_range::SpanStructurallyValid() that could
1832
+ // terminate on any of these chars, that might be more efficient, but it would
1833
+ // be much more complicated to modify that heavily SIMD code.
1834
+ size_t SkipPassthroughBytes(absl::string_view val) {
1835
+ for (size_t i = 0; i < val.size(); i++) {
1836
+ unsigned char uc = val[i];
1837
+ if (DefinitelyNeedsEscape(uc)) return i;
1838
+ if (NeedsUtf8Validation(uc)) {
1839
+ // Find the end of this region of consecutive high bytes, so that we only
1840
+ // give high bytes to the UTF-8 checker. This avoids needing to perform
1841
+ // a second scan of the ASCII characters looking for characters that
1842
+ // need escaping.
1843
+ //
1844
+ // We assume that high bytes are less frequent than plain, printable ASCII
1845
+ // bytes, so we accept the double-scan of high bytes.
1846
+ size_t end = i + 1;
1847
+ for (; end < val.size(); end++) {
1848
+ if (!NeedsUtf8Validation(val[end])) break;
1849
+ }
1850
+ size_t n = end - i;
1851
+ size_t ok = utf8_range::SpanStructurallyValid(val.substr(i, n));
1852
+ if (ok != n) return i + ok;
1853
+ i += ok - 1;
1854
+ }
1855
+ }
1856
+ return val.size();
1857
+ }
1858
+
1859
+ } // namespace
1860
+
1861
+ void TextFormat::Printer::HardenedPrintString(
1862
+ absl::string_view src, TextFormat::BaseTextGenerator* generator) {
1863
+ // Print as UTF-8, while guarding against any invalid UTF-8 in the string
1864
+ // field.
1865
+ //
1866
+ // If in the future we have a guaranteed invariant that invalid UTF-8 will
1867
+ // never be present, we could avoid the UTF-8 check here.
1868
+
1869
+ generator->PrintLiteral("\"");
1870
+ while (!src.empty()) {
1871
+ size_t n = SkipPassthroughBytes(src);
1872
+ if (n != 0) {
1873
+ generator->PrintString(src.substr(0, n));
1874
+ src.remove_prefix(n);
1875
+ if (src.empty()) break;
1876
+ }
1877
+
1878
+ // If repeated calls to CEscape() and PrintString() are expensive, we could
1879
+ // consider batching them, at the cost of some complexity.
1880
+ generator->PrintString(absl::CEscape(src.substr(0, 1)));
1881
+ src.remove_prefix(1);
1882
+ }
1883
+ generator->PrintLiteral("\"");
1884
+ }
1885
+
1886
+ // ===========================================================================
1887
+ // An internal field value printer that escape UTF8 strings.
1888
+ class TextFormat::Printer::FastFieldValuePrinterUtf8Escaping
1889
+ : public TextFormat::Printer::DebugStringFieldValuePrinter {
1890
+ public:
1891
+ void PrintString(const std::string& val,
1892
+ TextFormat::BaseTextGenerator* generator) const override {
1893
+ TextFormat::Printer::HardenedPrintString(val, generator);
1894
+ }
1895
+ void PrintBytes(const std::string& val,
1896
+ TextFormat::BaseTextGenerator* generator) const override {
1897
+ return FastFieldValuePrinter::PrintString(val, generator);
1898
+ }
1899
+ };
1900
+
1901
+ // ===========================================================================
1902
+ // Implementation of the default Finder for extensions.
1903
+ TextFormat::Finder::~Finder() = default;
1904
+
1905
+ const FieldDescriptor* TextFormat::Finder::FindExtension(
1906
+ Message* message, const std::string& name) const {
1907
+ return DefaultFinderFindExtension(message, name);
1908
+ }
1909
+
1910
+ const FieldDescriptor* TextFormat::Finder::FindExtensionByNumber(
1911
+ const Descriptor* descriptor, int number) const {
1912
+ return DefaultFinderFindExtensionByNumber(descriptor, number);
1913
+ }
1914
+
1915
+ const Descriptor* TextFormat::Finder::FindAnyType(
1916
+ const Message& message, const std::string& url_prefix,
1917
+ const std::string& name) const {
1918
+ return DefaultFinderFindAnyType(message, url_prefix, name);
1919
+ }
1920
+
1921
+ MessageFactory* TextFormat::Finder::FindExtensionFactory(
1922
+ const FieldDescriptor* /*field*/) const {
1923
+ return nullptr;
1924
+ }
1925
+
1926
+ // ===========================================================================
1927
+
1928
+ TextFormat::Parser::Parser()
1929
+ : error_collector_(nullptr),
1930
+ finder_(nullptr),
1931
+ parse_info_tree_(nullptr),
1932
+ allow_partial_(false),
1933
+ allow_case_insensitive_field_(false),
1934
+ allow_unknown_field_(false),
1935
+ allow_unknown_extension_(false),
1936
+ allow_unknown_enum_(false),
1937
+ allow_field_number_(false),
1938
+ allow_relaxed_whitespace_(false),
1939
+ allow_singular_overwrites_(false),
1940
+ recursion_limit_(std::numeric_limits<int>::max()) {}
1941
+
1942
+ namespace {
1943
+
1944
+ template <typename T>
1945
+ bool CheckParseInputSize(T& input, io::ErrorCollector* error_collector) {
1946
+ if (input.size() > INT_MAX) {
1947
+ error_collector->RecordError(
1948
+ -1, 0,
1949
+ absl::StrCat(
1950
+ "Input size too large: ", static_cast<int64_t>(input.size()),
1951
+ " bytes", " > ", INT_MAX, " bytes."));
1952
+ return false;
1953
+ }
1954
+ return true;
1955
+ }
1956
+
1957
+ } // namespace
1958
+
1959
+ bool TextFormat::Parser::Parse(io::ZeroCopyInputStream* input,
1960
+ Message* output) {
1961
+ output->Clear();
1962
+
1963
+ ParserImpl::SingularOverwritePolicy overwrites_policy =
1964
+ allow_singular_overwrites_ ? ParserImpl::ALLOW_SINGULAR_OVERWRITES
1965
+ : ParserImpl::FORBID_SINGULAR_OVERWRITES;
1966
+
1967
+ ParserImpl parser(output->GetDescriptor(), input, error_collector_, finder_,
1968
+ parse_info_tree_, overwrites_policy,
1969
+ allow_case_insensitive_field_, allow_unknown_field_,
1970
+ allow_unknown_extension_, allow_unknown_enum_,
1971
+ allow_field_number_, allow_relaxed_whitespace_,
1972
+ allow_partial_, recursion_limit_, no_op_fields_);
1973
+ return MergeUsingImpl(input, output, &parser);
1974
+ }
1975
+
1976
+ bool TextFormat::Parser::ParseFromString(absl::string_view input,
1977
+ Message* output) {
1978
+ DO(CheckParseInputSize(input, error_collector_));
1979
+ io::ArrayInputStream input_stream(input.data(), input.size());
1980
+ return Parse(&input_stream, output);
1981
+ }
1982
+
1983
+ bool TextFormat::Parser::ParseFromCord(const absl::Cord& input,
1984
+ Message* output) {
1985
+ DO(CheckParseInputSize(input, error_collector_));
1986
+ io::CordInputStream input_stream(&input);
1987
+ return Parse(&input_stream, output);
1988
+ }
1989
+
1990
+ bool TextFormat::Parser::Merge(io::ZeroCopyInputStream* input,
1991
+ Message* output) {
1992
+ ParserImpl parser(output->GetDescriptor(), input, error_collector_, finder_,
1993
+ parse_info_tree_, ParserImpl::ALLOW_SINGULAR_OVERWRITES,
1994
+ allow_case_insensitive_field_, allow_unknown_field_,
1995
+ allow_unknown_extension_, allow_unknown_enum_,
1996
+ allow_field_number_, allow_relaxed_whitespace_,
1997
+ allow_partial_, recursion_limit_, no_op_fields_);
1998
+ return MergeUsingImpl(input, output, &parser);
1999
+ }
2000
+
2001
+ bool TextFormat::Parser::MergeFromString(absl::string_view input,
2002
+ Message* output) {
2003
+ DO(CheckParseInputSize(input, error_collector_));
2004
+ io::ArrayInputStream input_stream(input.data(), input.size());
2005
+ return Merge(&input_stream, output);
2006
+ }
2007
+
2008
+ bool TextFormat::Parser::MergeUsingImpl(io::ZeroCopyInputStream* /* input */,
2009
+ Message* output,
2010
+ ParserImpl* parser_impl) {
2011
+ if (!parser_impl->Parse(output)) return false;
2012
+ if (!allow_partial_ && !output->IsInitialized()) {
2013
+ std::vector<std::string> missing_fields;
2014
+ output->FindInitializationErrors(&missing_fields);
2015
+ parser_impl->ReportError(-1, 0,
2016
+ absl::StrCat("Message missing required fields: ",
2017
+ absl::StrJoin(missing_fields, ", ")));
2018
+ return false;
2019
+ }
2020
+ return true;
2021
+ }
2022
+
2023
+ bool TextFormat::Parser::ParseFieldValueFromString(absl::string_view input,
2024
+ const FieldDescriptor* field,
2025
+ Message* output) {
2026
+ io::ArrayInputStream input_stream(input.data(), input.size());
2027
+ ParserImpl parser(output->GetDescriptor(), &input_stream, error_collector_,
2028
+ finder_, parse_info_tree_,
2029
+ ParserImpl::ALLOW_SINGULAR_OVERWRITES,
2030
+ allow_case_insensitive_field_, allow_unknown_field_,
2031
+ allow_unknown_extension_, allow_unknown_enum_,
2032
+ allow_field_number_, allow_relaxed_whitespace_,
2033
+ allow_partial_, recursion_limit_, no_op_fields_);
2034
+ return parser.ParseField(field, output);
2035
+ }
2036
+
2037
+ /* static */ bool TextFormat::Parse(io::ZeroCopyInputStream* input,
2038
+ Message* output) {
2039
+ return Parser().Parse(input, output);
2040
+ }
2041
+
2042
+ /* static */ bool TextFormat::Merge(io::ZeroCopyInputStream* input,
2043
+ Message* output) {
2044
+ return Parser().Merge(input, output);
2045
+ }
2046
+
2047
+ /* static */ bool TextFormat::ParseFromString(absl::string_view input,
2048
+ Message* output) {
2049
+ return Parser().ParseFromString(input, output);
2050
+ }
2051
+
2052
+ /* static */ bool TextFormat::ParseFromCord(const absl::Cord& input,
2053
+ Message* output) {
2054
+ return Parser().ParseFromCord(input, output);
2055
+ }
2056
+
2057
+ /* static */ bool TextFormat::MergeFromString(absl::string_view input,
2058
+ Message* output) {
2059
+ return Parser().MergeFromString(input, output);
2060
+ }
2061
+
2062
+ #undef DO
2063
+
2064
+ // ===========================================================================
2065
+
2066
+ TextFormat::BaseTextGenerator::~BaseTextGenerator() = default;
2067
+
2068
+ namespace {
2069
+
2070
+ // A BaseTextGenerator that writes to a string.
2071
+ class StringBaseTextGenerator : public TextFormat::BaseTextGenerator {
2072
+ public:
2073
+ void Print(const char* text, size_t size) override {
2074
+ output_.append(text, size);
2075
+ }
2076
+
2077
+ std::string Consume() && { return std::move(output_); }
2078
+
2079
+ private:
2080
+ std::string output_;
2081
+ };
2082
+
2083
+ } // namespace
2084
+
2085
+ // The default implementation for FieldValuePrinter. We just delegate the
2086
+ // implementation to the default FastFieldValuePrinter to avoid duplicating the
2087
+ // logic.
2088
+ TextFormat::FieldValuePrinter::FieldValuePrinter() = default;
2089
+ TextFormat::FieldValuePrinter::~FieldValuePrinter() {}
2090
+
2091
+ #define FORWARD_IMPL(fn, ...) \
2092
+ StringBaseTextGenerator generator; \
2093
+ delegate_.fn(__VA_ARGS__, &generator); \
2094
+ return std::move(generator).Consume()
2095
+
2096
+ std::string TextFormat::FieldValuePrinter::PrintBool(bool val) const {
2097
+ FORWARD_IMPL(PrintBool, val);
2098
+ }
2099
+ std::string TextFormat::FieldValuePrinter::PrintInt32(int32_t val) const {
2100
+ FORWARD_IMPL(PrintInt32, val);
2101
+ }
2102
+ std::string TextFormat::FieldValuePrinter::PrintUInt32(uint32_t val) const {
2103
+ FORWARD_IMPL(PrintUInt32, val);
2104
+ }
2105
+ std::string TextFormat::FieldValuePrinter::PrintInt64(int64_t val) const {
2106
+ FORWARD_IMPL(PrintInt64, val);
2107
+ }
2108
+ std::string TextFormat::FieldValuePrinter::PrintUInt64(uint64_t val) const {
2109
+ FORWARD_IMPL(PrintUInt64, val);
2110
+ }
2111
+ std::string TextFormat::FieldValuePrinter::PrintFloat(float val) const {
2112
+ FORWARD_IMPL(PrintFloat, val);
2113
+ }
2114
+ std::string TextFormat::FieldValuePrinter::PrintDouble(double val) const {
2115
+ FORWARD_IMPL(PrintDouble, val);
2116
+ }
2117
+ std::string TextFormat::FieldValuePrinter::PrintString(
2118
+ const std::string& val) const {
2119
+ FORWARD_IMPL(PrintString, val);
2120
+ }
2121
+ std::string TextFormat::FieldValuePrinter::PrintBytes(
2122
+ const std::string& val) const {
2123
+ return PrintString(val);
2124
+ }
2125
+ std::string TextFormat::FieldValuePrinter::PrintEnum(
2126
+ int32_t val, const std::string& name) const {
2127
+ FORWARD_IMPL(PrintEnum, val, name);
2128
+ }
2129
+ std::string TextFormat::FieldValuePrinter::PrintFieldName(
2130
+ const Message& message, const Reflection* reflection,
2131
+ const FieldDescriptor* field) const {
2132
+ FORWARD_IMPL(PrintFieldName, message, reflection, field);
2133
+ }
2134
+ std::string TextFormat::FieldValuePrinter::PrintMessageStart(
2135
+ const Message& message, int field_index, int field_count,
2136
+ bool single_line_mode) const {
2137
+ FORWARD_IMPL(PrintMessageStart, message, field_index, field_count,
2138
+ single_line_mode);
2139
+ }
2140
+ std::string TextFormat::FieldValuePrinter::PrintMessageEnd(
2141
+ const Message& message, int field_index, int field_count,
2142
+ bool single_line_mode) const {
2143
+ FORWARD_IMPL(PrintMessageEnd, message, field_index, field_count,
2144
+ single_line_mode);
2145
+ }
2146
+ #undef FORWARD_IMPL
2147
+
2148
+ TextFormat::FastFieldValuePrinter::FastFieldValuePrinter() = default;
2149
+ TextFormat::FastFieldValuePrinter::~FastFieldValuePrinter() = default;
2150
+ void TextFormat::FastFieldValuePrinter::PrintBool(
2151
+ bool val, BaseTextGenerator* generator) const {
2152
+ if (val) {
2153
+ generator->PrintLiteral("true");
2154
+ } else {
2155
+ generator->PrintLiteral("false");
2156
+ }
2157
+ }
2158
+ void TextFormat::FastFieldValuePrinter::PrintInt32(
2159
+ int32_t val, BaseTextGenerator* generator) const {
2160
+ generator->PrintString(absl::StrCat(val));
2161
+ }
2162
+ void TextFormat::FastFieldValuePrinter::PrintUInt32(
2163
+ uint32_t val, BaseTextGenerator* generator) const {
2164
+ generator->PrintString(absl::StrCat(val));
2165
+ }
2166
+ void TextFormat::FastFieldValuePrinter::PrintInt64(
2167
+ int64_t val, BaseTextGenerator* generator) const {
2168
+ generator->PrintString(absl::StrCat(val));
2169
+ }
2170
+ void TextFormat::FastFieldValuePrinter::PrintUInt64(
2171
+ uint64_t val, BaseTextGenerator* generator) const {
2172
+ generator->PrintString(absl::StrCat(val));
2173
+ }
2174
+ void TextFormat::FastFieldValuePrinter::PrintFloat(
2175
+ float val, BaseTextGenerator* generator) const {
2176
+ generator->PrintString(!std::isnan(val) ? io::SimpleFtoa(val) : "nan");
2177
+ }
2178
+ void TextFormat::FastFieldValuePrinter::PrintDouble(
2179
+ double val, BaseTextGenerator* generator) const {
2180
+ generator->PrintString(!std::isnan(val) ? io::SimpleDtoa(val) : "nan");
2181
+ }
2182
+ void TextFormat::FastFieldValuePrinter::PrintEnum(
2183
+ int32_t /*val*/, const std::string& name,
2184
+ BaseTextGenerator* generator) const {
2185
+ generator->PrintString(name);
2186
+ }
2187
+
2188
+ void TextFormat::FastFieldValuePrinter::PrintString(
2189
+ const std::string& val, BaseTextGenerator* generator) const {
2190
+ generator->PrintLiteral("\"");
2191
+ if (!val.empty()) {
2192
+ generator->PrintString(absl::CEscape(val));
2193
+ }
2194
+ generator->PrintLiteral("\"");
2195
+ }
2196
+ void TextFormat::FastFieldValuePrinter::PrintBytes(
2197
+ const std::string& val, BaseTextGenerator* generator) const {
2198
+ PrintString(val, generator);
2199
+ }
2200
+ void TextFormat::FastFieldValuePrinter::PrintFieldName(
2201
+ const Message& message, int /*field_index*/, int /*field_count*/,
2202
+ const Reflection* reflection, const FieldDescriptor* field,
2203
+ BaseTextGenerator* generator) const {
2204
+ PrintFieldName(message, reflection, field, generator);
2205
+ }
2206
+ void TextFormat::FastFieldValuePrinter::PrintFieldName(
2207
+ const Message& /*message*/, const Reflection* /*reflection*/,
2208
+ const FieldDescriptor* field, BaseTextGenerator* generator) const {
2209
+ if (field->is_extension()) {
2210
+ generator->PrintLiteral("[");
2211
+ generator->PrintString(field->PrintableNameForExtension());
2212
+ generator->PrintLiteral("]");
2213
+ } else if (internal::cpp::IsGroupLike(*field)) {
2214
+ // Groups must be serialized with their original capitalization.
2215
+ generator->PrintString(field->message_type()->name());
2216
+ } else {
2217
+ generator->PrintString(field->name());
2218
+ }
2219
+ }
2220
+ void TextFormat::FastFieldValuePrinter::PrintMessageStart(
2221
+ const Message& /*message*/, int /*field_index*/, int /*field_count*/,
2222
+ bool single_line_mode, BaseTextGenerator* generator) const {
2223
+ if (single_line_mode) {
2224
+ generator->PrintLiteral(" { ");
2225
+ } else {
2226
+ generator->PrintLiteral(" {\n");
2227
+ }
2228
+ }
2229
+ bool TextFormat::FastFieldValuePrinter::PrintMessageContent(
2230
+ const Message& /*message*/, int /*field_index*/, int /*field_count*/,
2231
+ bool /*single_line_mode*/, BaseTextGenerator* /*generator*/) const {
2232
+ return false; // Use the default printing function.
2233
+ }
2234
+ void TextFormat::FastFieldValuePrinter::PrintMessageEnd(
2235
+ const Message& /*message*/, int /*field_index*/, int /*field_count*/,
2236
+ bool single_line_mode, BaseTextGenerator* generator) const {
2237
+ if (single_line_mode) {
2238
+ generator->PrintLiteral("} ");
2239
+ } else {
2240
+ generator->PrintLiteral("}\n");
2241
+ }
2242
+ }
2243
+
2244
+ namespace {
2245
+
2246
+ // A legacy compatibility wrapper. Takes ownership of the delegate.
2247
+ class FieldValuePrinterWrapper : public TextFormat::FastFieldValuePrinter {
2248
+ public:
2249
+ explicit FieldValuePrinterWrapper(
2250
+ const TextFormat::FieldValuePrinter* delegate)
2251
+ : delegate_(delegate) {}
2252
+
2253
+ void SetDelegate(const TextFormat::FieldValuePrinter* delegate) {
2254
+ delegate_.reset(delegate);
2255
+ }
2256
+
2257
+ void PrintBool(bool val,
2258
+ TextFormat::BaseTextGenerator* generator) const override {
2259
+ generator->PrintString(delegate_->PrintBool(val));
2260
+ }
2261
+ void PrintInt32(int32_t val,
2262
+ TextFormat::BaseTextGenerator* generator) const override {
2263
+ generator->PrintString(delegate_->PrintInt32(val));
2264
+ }
2265
+ void PrintUInt32(uint32_t val,
2266
+ TextFormat::BaseTextGenerator* generator) const override {
2267
+ generator->PrintString(delegate_->PrintUInt32(val));
2268
+ }
2269
+ void PrintInt64(int64_t val,
2270
+ TextFormat::BaseTextGenerator* generator) const override {
2271
+ generator->PrintString(delegate_->PrintInt64(val));
2272
+ }
2273
+ void PrintUInt64(uint64_t val,
2274
+ TextFormat::BaseTextGenerator* generator) const override {
2275
+ generator->PrintString(delegate_->PrintUInt64(val));
2276
+ }
2277
+ void PrintFloat(float val,
2278
+ TextFormat::BaseTextGenerator* generator) const override {
2279
+ generator->PrintString(delegate_->PrintFloat(val));
2280
+ }
2281
+ void PrintDouble(double val,
2282
+ TextFormat::BaseTextGenerator* generator) const override {
2283
+ generator->PrintString(delegate_->PrintDouble(val));
2284
+ }
2285
+ void PrintString(const std::string& val,
2286
+ TextFormat::BaseTextGenerator* generator) const override {
2287
+ generator->PrintString(delegate_->PrintString(val));
2288
+ }
2289
+ void PrintBytes(const std::string& val,
2290
+ TextFormat::BaseTextGenerator* generator) const override {
2291
+ generator->PrintString(delegate_->PrintBytes(val));
2292
+ }
2293
+ void PrintEnum(int32_t val, const std::string& name,
2294
+ TextFormat::BaseTextGenerator* generator) const override {
2295
+ generator->PrintString(delegate_->PrintEnum(val, name));
2296
+ }
2297
+ void PrintFieldName(const Message& message, int /*field_index*/,
2298
+ int /*field_count*/, const Reflection* reflection,
2299
+ const FieldDescriptor* field,
2300
+ TextFormat::BaseTextGenerator* generator) const override {
2301
+ generator->PrintString(
2302
+ delegate_->PrintFieldName(message, reflection, field));
2303
+ }
2304
+ void PrintFieldName(const Message& message, const Reflection* reflection,
2305
+ const FieldDescriptor* field,
2306
+ TextFormat::BaseTextGenerator* generator) const override {
2307
+ generator->PrintString(
2308
+ delegate_->PrintFieldName(message, reflection, field));
2309
+ }
2310
+ void PrintMessageStart(
2311
+ const Message& message, int field_index, int field_count,
2312
+ bool single_line_mode,
2313
+ TextFormat::BaseTextGenerator* generator) const override {
2314
+ generator->PrintString(delegate_->PrintMessageStart(
2315
+ message, field_index, field_count, single_line_mode));
2316
+ }
2317
+ void PrintMessageEnd(
2318
+ const Message& message, int field_index, int field_count,
2319
+ bool single_line_mode,
2320
+ TextFormat::BaseTextGenerator* generator) const override {
2321
+ generator->PrintString(delegate_->PrintMessageEnd(
2322
+ message, field_index, field_count, single_line_mode));
2323
+ }
2324
+
2325
+ private:
2326
+ std::unique_ptr<const TextFormat::FieldValuePrinter> delegate_;
2327
+ };
2328
+
2329
+ } // namespace
2330
+
2331
+ TextFormat::Printer::Printer()
2332
+ : initial_indent_level_(0),
2333
+ single_line_mode_(false),
2334
+ use_field_number_(false),
2335
+ use_short_repeated_primitives_(false),
2336
+ insert_silent_marker_(false),
2337
+ redact_debug_string_(false),
2338
+ randomize_debug_string_(false),
2339
+ report_sensitive_fields_(internal::FieldReporterLevel::kNoReport),
2340
+ hide_unknown_fields_(false),
2341
+ print_message_fields_in_index_order_(false),
2342
+ expand_any_(false),
2343
+ truncate_string_field_longer_than_(0LL),
2344
+ finder_(nullptr) {
2345
+ SetUseUtf8StringEscaping(false);
2346
+ }
2347
+
2348
+ void TextFormat::Printer::SetUseUtf8StringEscaping(bool as_utf8) {
2349
+ SetDefaultFieldValuePrinter(as_utf8 ? new FastFieldValuePrinterUtf8Escaping()
2350
+ : new DebugStringFieldValuePrinter());
2351
+ }
2352
+
2353
+ void TextFormat::Printer::SetDefaultFieldValuePrinter(
2354
+ const FieldValuePrinter* printer) {
2355
+ default_field_value_printer_ =
2356
+ std::make_unique<FieldValuePrinterWrapper>(printer);
2357
+ }
2358
+
2359
+ void TextFormat::Printer::SetDefaultFieldValuePrinter(
2360
+ const FastFieldValuePrinter* printer) {
2361
+ default_field_value_printer_.reset(printer);
2362
+ }
2363
+
2364
+ bool TextFormat::Printer::RegisterFieldValuePrinter(
2365
+ const FieldDescriptor* field, const FieldValuePrinter* printer) {
2366
+ if (field == nullptr || printer == nullptr) {
2367
+ return false;
2368
+ }
2369
+ std::unique_ptr<FieldValuePrinterWrapper> wrapper =
2370
+ std::make_unique<FieldValuePrinterWrapper>(nullptr);
2371
+ auto pair = custom_printers_.emplace(field, nullptr);
2372
+ if (pair.second) {
2373
+ wrapper->SetDelegate(printer);
2374
+ pair.first->second = std::move(wrapper);
2375
+ return true;
2376
+ } else {
2377
+ return false;
2378
+ }
2379
+ }
2380
+
2381
+ bool TextFormat::Printer::RegisterFieldValuePrinter(
2382
+ const FieldDescriptor* field, const FastFieldValuePrinter* printer) {
2383
+ if (field == nullptr || printer == nullptr) {
2384
+ return false;
2385
+ }
2386
+ auto pair = custom_printers_.emplace(field, nullptr);
2387
+ if (pair.second) {
2388
+ pair.first->second.reset(printer);
2389
+ return true;
2390
+ } else {
2391
+ return false;
2392
+ }
2393
+ }
2394
+
2395
+ bool TextFormat::Printer::RegisterMessagePrinter(
2396
+ const Descriptor* descriptor, const MessagePrinter* printer) {
2397
+ if (descriptor == nullptr || printer == nullptr) {
2398
+ return false;
2399
+ }
2400
+ auto pair = custom_message_printers_.emplace(descriptor, nullptr);
2401
+ if (pair.second) {
2402
+ pair.first->second.reset(printer);
2403
+ return true;
2404
+ } else {
2405
+ return false;
2406
+ }
2407
+ }
2408
+
2409
+ bool TextFormat::Printer::PrintToString(const Message& message,
2410
+ std::string* output) const {
2411
+ ABSL_DCHECK(output) << "output specified is nullptr";
2412
+
2413
+ output->clear();
2414
+ io::StringOutputStream output_stream(output);
2415
+
2416
+ return Print(message, &output_stream,
2417
+ internal::FieldReporterLevel::kMemberPrintToString);
2418
+ }
2419
+
2420
+ bool TextFormat::Printer::PrintUnknownFieldsToString(
2421
+ const UnknownFieldSet& unknown_fields, std::string* output) const {
2422
+ ABSL_DCHECK(output) << "output specified is nullptr";
2423
+
2424
+ output->clear();
2425
+ io::StringOutputStream output_stream(output);
2426
+ return PrintUnknownFields(unknown_fields, &output_stream);
2427
+ }
2428
+
2429
+ bool TextFormat::Printer::Print(const Message& message,
2430
+ io::ZeroCopyOutputStream* output) const {
2431
+ return Print(message, output, internal::FieldReporterLevel::kPrintWithStream);
2432
+ }
2433
+
2434
+ bool TextFormat::Printer::Print(const Message& message,
2435
+ io::ZeroCopyOutputStream* output,
2436
+ internal::FieldReporterLevel reporter) const {
2437
+ TextGenerator generator(output, insert_silent_marker_, initial_indent_level_);
2438
+
2439
+ internal::PrintTextMarker(&generator, redact_debug_string_,
2440
+ randomize_debug_string_, single_line_mode_);
2441
+
2442
+
2443
+ Print(message, &generator);
2444
+
2445
+ // Output false if the generator failed internally.
2446
+ return !generator.failed();
2447
+ }
2448
+
2449
+ // Maximum recursion depth for heuristically printing out length-prefixed
2450
+ // unknown fields as messages.
2451
+ static constexpr int kUnknownFieldRecursionLimit = 10;
2452
+
2453
+ bool TextFormat::Printer::PrintUnknownFields(
2454
+ const UnknownFieldSet& unknown_fields,
2455
+ io::ZeroCopyOutputStream* output) const {
2456
+ TextGenerator generator(output, initial_indent_level_);
2457
+
2458
+ PrintUnknownFields(unknown_fields, &generator, kUnknownFieldRecursionLimit);
2459
+
2460
+ // Output false if the generator failed internally.
2461
+ return !generator.failed();
2462
+ }
2463
+
2464
+ namespace {
2465
+ // Comparison functor for sorting FieldDescriptors by field index.
2466
+ // Normal fields have higher precedence than extensions.
2467
+ struct FieldIndexSorter {
2468
+ bool operator()(const FieldDescriptor* left,
2469
+ const FieldDescriptor* right) const {
2470
+ if (left->is_extension() && right->is_extension()) {
2471
+ return left->number() < right->number();
2472
+ } else if (left->is_extension()) {
2473
+ return false;
2474
+ } else if (right->is_extension()) {
2475
+ return true;
2476
+ } else {
2477
+ return left->index() < right->index();
2478
+ }
2479
+ }
2480
+ };
2481
+
2482
+ } // namespace
2483
+
2484
+ bool TextFormat::Printer::PrintAny(const Message& message,
2485
+ BaseTextGenerator* generator) const {
2486
+ const FieldDescriptor* type_url_field;
2487
+ const FieldDescriptor* value_field;
2488
+ if (!internal::GetAnyFieldDescriptors(message, &type_url_field,
2489
+ &value_field)) {
2490
+ return false;
2491
+ }
2492
+
2493
+ const Reflection* reflection = message.GetReflection();
2494
+
2495
+ // Extract the full type name from the type_url field.
2496
+ const std::string& type_url = reflection->GetString(message, type_url_field);
2497
+ std::string url_prefix;
2498
+ std::string full_type_name;
2499
+
2500
+ if (!internal::ParseAnyTypeUrl(type_url, &url_prefix, &full_type_name)) {
2501
+ return false;
2502
+ }
2503
+
2504
+ // Print the "value" in text.
2505
+ const Descriptor* value_descriptor =
2506
+ finder_ ? finder_->FindAnyType(message, url_prefix, full_type_name)
2507
+ : DefaultFinderFindAnyType(message, url_prefix, full_type_name);
2508
+ if (value_descriptor == nullptr) {
2509
+ ABSL_LOG(WARNING) << "Can't print proto content: proto type " << type_url
2510
+ << " not found";
2511
+ return false;
2512
+ }
2513
+ DynamicMessageFactory factory;
2514
+ std::unique_ptr<Message> value_message(
2515
+ factory.GetPrototype(value_descriptor)->New());
2516
+ std::string serialized_value = reflection->GetString(message, value_field);
2517
+ if (!value_message->ParseFromString(serialized_value)) {
2518
+ ABSL_LOG(WARNING) << type_url << ": failed to parse contents";
2519
+ return false;
2520
+ }
2521
+ generator->PrintLiteral("[");
2522
+ generator->PrintString(type_url);
2523
+ generator->PrintLiteral("]");
2524
+ const FastFieldValuePrinter* printer = GetFieldPrinter(value_field);
2525
+ printer->PrintMessageStart(message, -1, 0, single_line_mode_, generator);
2526
+ generator->Indent();
2527
+ Print(*value_message, generator);
2528
+ generator->Outdent();
2529
+ printer->PrintMessageEnd(message, -1, 0, single_line_mode_, generator);
2530
+ return true;
2531
+ }
2532
+
2533
+ void TextFormat::Printer::Print(const Message& message,
2534
+ BaseTextGenerator* generator) const {
2535
+ const Reflection* reflection = message.GetReflection();
2536
+ if (!reflection) {
2537
+ // This message does not provide any way to describe its structure.
2538
+ // Parse it again in an UnknownFieldSet, and display this instead.
2539
+ UnknownFieldSet unknown_fields;
2540
+ {
2541
+ std::string serialized = message.SerializeAsString();
2542
+ io::ArrayInputStream input(serialized.data(), serialized.size());
2543
+ // TODO: Remove this suppression.
2544
+ (void)unknown_fields.ParseFromZeroCopyStream(&input);
2545
+ }
2546
+ PrintUnknownFields(unknown_fields, generator, kUnknownFieldRecursionLimit);
2547
+ return;
2548
+ }
2549
+ const Descriptor* descriptor = message.GetDescriptor();
2550
+ auto itr = custom_message_printers_.find(descriptor);
2551
+ if (itr != custom_message_printers_.end()) {
2552
+ itr->second->Print(message, single_line_mode_, generator);
2553
+ return;
2554
+ }
2555
+ PrintMessage(message, generator);
2556
+ }
2557
+
2558
+ void TextFormat::Printer::PrintMessage(const Message& message,
2559
+ BaseTextGenerator* generator) const {
2560
+ if (generator == nullptr) {
2561
+ return;
2562
+ }
2563
+ const Descriptor* descriptor = message.GetDescriptor();
2564
+ if (descriptor->full_name() == internal::kAnyFullTypeName && expand_any_ &&
2565
+ PrintAny(message, generator)) {
2566
+ return;
2567
+ }
2568
+ const Reflection* reflection = message.GetReflection();
2569
+ std::vector<const FieldDescriptor*> fields;
2570
+ if (descriptor->options().map_entry()) {
2571
+ fields.push_back(descriptor->field(0));
2572
+ fields.push_back(descriptor->field(1));
2573
+ } else {
2574
+ reflection->ListFields(message, &fields);
2575
+ }
2576
+
2577
+ if (print_message_fields_in_index_order_) {
2578
+ std::sort(fields.begin(), fields.end(), FieldIndexSorter());
2579
+ }
2580
+ for (const FieldDescriptor* field : fields) {
2581
+ PrintField(message, reflection, field, generator);
2582
+ }
2583
+ if (!hide_unknown_fields_) {
2584
+ PrintUnknownFields(reflection->GetUnknownFields(message), generator,
2585
+ kUnknownFieldRecursionLimit);
2586
+ }
2587
+ }
2588
+
2589
+ void TextFormat::Printer::PrintFieldValueToString(const Message& message,
2590
+ const FieldDescriptor* field,
2591
+ int index,
2592
+ std::string* output) const {
2593
+ ABSL_DCHECK(output) << "output specified is nullptr";
2594
+
2595
+ output->clear();
2596
+ io::StringOutputStream output_stream(output);
2597
+ TextGenerator generator(&output_stream, initial_indent_level_);
2598
+
2599
+ PrintFieldValue(message, message.GetReflection(), field, index, &generator);
2600
+ }
2601
+
2602
+ class MapEntryMessageComparator {
2603
+ public:
2604
+ explicit MapEntryMessageComparator(const Descriptor* descriptor)
2605
+ : field_(descriptor->field(0)) {}
2606
+
2607
+ bool operator()(const Message* a, const Message* b) {
2608
+ const Reflection* reflection = a->GetReflection();
2609
+ switch (field_->cpp_type()) {
2610
+ case FieldDescriptor::CPPTYPE_BOOL: {
2611
+ bool first = reflection->GetBool(*a, field_);
2612
+ bool second = reflection->GetBool(*b, field_);
2613
+ return first < second;
2614
+ }
2615
+ case FieldDescriptor::CPPTYPE_INT32: {
2616
+ int32_t first = reflection->GetInt32(*a, field_);
2617
+ int32_t second = reflection->GetInt32(*b, field_);
2618
+ return first < second;
2619
+ }
2620
+ case FieldDescriptor::CPPTYPE_INT64: {
2621
+ int64_t first = reflection->GetInt64(*a, field_);
2622
+ int64_t second = reflection->GetInt64(*b, field_);
2623
+ return first < second;
2624
+ }
2625
+ case FieldDescriptor::CPPTYPE_UINT32: {
2626
+ uint32_t first = reflection->GetUInt32(*a, field_);
2627
+ uint32_t second = reflection->GetUInt32(*b, field_);
2628
+ return first < second;
2629
+ }
2630
+ case FieldDescriptor::CPPTYPE_UINT64: {
2631
+ uint64_t first = reflection->GetUInt64(*a, field_);
2632
+ uint64_t second = reflection->GetUInt64(*b, field_);
2633
+ return first < second;
2634
+ }
2635
+ case FieldDescriptor::CPPTYPE_STRING: {
2636
+ std::string first = reflection->GetString(*a, field_);
2637
+ std::string second = reflection->GetString(*b, field_);
2638
+ return first < second;
2639
+ }
2640
+ default:
2641
+ ABSL_DLOG(FATAL) << "Invalid key for map field.";
2642
+ return true;
2643
+ }
2644
+ }
2645
+
2646
+ private:
2647
+ const FieldDescriptor* field_;
2648
+ };
2649
+
2650
+ namespace internal {
2651
+
2652
+ struct MapEntries {
2653
+ std::vector<std::unique_ptr<const Message>> owned_entries;
2654
+ std::vector<const Message*> all_entries;
2655
+ };
2656
+
2657
+ class MapFieldPrinterHelper {
2658
+ public:
2659
+ // DynamicMapSorter::Sort cannot be used because it enforces syncing with
2660
+ // repeated field.
2661
+ static MapEntries SortMap(const Message& message,
2662
+ const Reflection* reflection,
2663
+ const FieldDescriptor* field);
2664
+ static void CopyKey(const MapKey& key, Message* message,
2665
+ const FieldDescriptor* field_desc);
2666
+ static void CopyValue(const MapValueConstRef& value, Message* message,
2667
+ const FieldDescriptor* field_desc);
2668
+ };
2669
+
2670
+ MapEntries MapFieldPrinterHelper::SortMap(const Message& message,
2671
+ const Reflection* reflection,
2672
+ const FieldDescriptor* field) {
2673
+ const MapFieldBase& base = *reflection->GetMapData(message, field);
2674
+
2675
+ std::vector<const Message*> all_entries;
2676
+ std::vector<std::unique_ptr<const Message>> owned_entries;
2677
+ if (base.IsRepeatedFieldValid()) {
2678
+ const RepeatedPtrField<Message>& map_field =
2679
+ reflection->GetRepeatedPtrFieldInternal<Message>(
2680
+ message, field,
2681
+ Reflection::GetRepeatedFieldIntent::kHiddenOrInternal);
2682
+ all_entries.reserve(map_field.size());
2683
+ for (int i = 0; i < map_field.size(); ++i) {
2684
+ all_entries.push_back(
2685
+ const_cast<RepeatedPtrField<Message>*>(&map_field)->Mutable(i));
2686
+ }
2687
+ } else {
2688
+ // TODO: For performance, instead of creating map entry message
2689
+ // for each element, just store map keys and sort them.
2690
+ const Descriptor* map_entry_desc = field->message_type();
2691
+ const Message* prototype =
2692
+ reflection->GetMessageFactory()->GetPrototype(map_entry_desc);
2693
+ all_entries.reserve(reflection->MapSize(message, field));
2694
+ owned_entries.reserve(reflection->MapSize(message, field));
2695
+ for (ConstMapIterator iter = reflection->ConstMapBegin(&message, field);
2696
+ iter != reflection->ConstMapEnd(&message, field); ++iter) {
2697
+ std::unique_ptr<Message> map_entry_message =
2698
+ absl::WrapUnique(prototype->New());
2699
+ CopyKey(iter.GetKey(), map_entry_message.get(), map_entry_desc->field(0));
2700
+ CopyValue(iter.GetValueRef(), map_entry_message.get(),
2701
+ map_entry_desc->field(1));
2702
+ all_entries.push_back(map_entry_message.get());
2703
+ owned_entries.push_back(std::move(map_entry_message));
2704
+ }
2705
+ }
2706
+
2707
+ std::stable_sort(all_entries.begin(), all_entries.end(),
2708
+ MapEntryMessageComparator(field->message_type()));
2709
+ return {std::move(owned_entries), std::move(all_entries)};
2710
+ }
2711
+
2712
+ void MapFieldPrinterHelper::CopyKey(const MapKey& key, Message* message,
2713
+ const FieldDescriptor* field_desc) {
2714
+ const Reflection* reflection = message->GetReflection();
2715
+ switch (field_desc->cpp_type()) {
2716
+ case FieldDescriptor::CPPTYPE_DOUBLE:
2717
+ case FieldDescriptor::CPPTYPE_FLOAT:
2718
+ case FieldDescriptor::CPPTYPE_ENUM:
2719
+ case FieldDescriptor::CPPTYPE_MESSAGE:
2720
+ ABSL_LOG(ERROR) << "Not supported.";
2721
+ break;
2722
+ case FieldDescriptor::CPPTYPE_STRING:
2723
+ reflection->SetString(message, field_desc,
2724
+ std::string(key.GetStringValue()));
2725
+ return;
2726
+ case FieldDescriptor::CPPTYPE_INT64:
2727
+ reflection->SetInt64(message, field_desc, key.GetInt64Value());
2728
+ return;
2729
+ case FieldDescriptor::CPPTYPE_INT32:
2730
+ reflection->SetInt32(message, field_desc, key.GetInt32Value());
2731
+ return;
2732
+ case FieldDescriptor::CPPTYPE_UINT64:
2733
+ reflection->SetUInt64(message, field_desc, key.GetUInt64Value());
2734
+ return;
2735
+ case FieldDescriptor::CPPTYPE_UINT32:
2736
+ reflection->SetUInt32(message, field_desc, key.GetUInt32Value());
2737
+ return;
2738
+ case FieldDescriptor::CPPTYPE_BOOL:
2739
+ reflection->SetBool(message, field_desc, key.GetBoolValue());
2740
+ return;
2741
+ }
2742
+ }
2743
+
2744
+ void MapFieldPrinterHelper::CopyValue(const MapValueConstRef& value,
2745
+ Message* message,
2746
+ const FieldDescriptor* field_desc) {
2747
+ const Reflection* reflection = message->GetReflection();
2748
+ switch (field_desc->cpp_type()) {
2749
+ case FieldDescriptor::CPPTYPE_DOUBLE:
2750
+ reflection->SetDouble(message, field_desc, value.GetDoubleValue());
2751
+ return;
2752
+ case FieldDescriptor::CPPTYPE_FLOAT:
2753
+ reflection->SetFloat(message, field_desc, value.GetFloatValue());
2754
+ return;
2755
+ case FieldDescriptor::CPPTYPE_ENUM:
2756
+ reflection->SetEnumValue(message, field_desc, value.GetEnumValue());
2757
+ return;
2758
+ case FieldDescriptor::CPPTYPE_MESSAGE: {
2759
+ Message* sub_message = value.GetMessageValue().New();
2760
+ sub_message->CopyFrom(value.GetMessageValue());
2761
+ reflection->SetAllocatedMessage(message, sub_message, field_desc);
2762
+ return;
2763
+ }
2764
+ case FieldDescriptor::CPPTYPE_STRING:
2765
+ reflection->SetString(message, field_desc,
2766
+ std::string(value.GetStringValue()));
2767
+ return;
2768
+ case FieldDescriptor::CPPTYPE_INT64:
2769
+ reflection->SetInt64(message, field_desc, value.GetInt64Value());
2770
+ return;
2771
+ case FieldDescriptor::CPPTYPE_INT32:
2772
+ reflection->SetInt32(message, field_desc, value.GetInt32Value());
2773
+ return;
2774
+ case FieldDescriptor::CPPTYPE_UINT64:
2775
+ reflection->SetUInt64(message, field_desc, value.GetUInt64Value());
2776
+ return;
2777
+ case FieldDescriptor::CPPTYPE_UINT32:
2778
+ reflection->SetUInt32(message, field_desc, value.GetUInt32Value());
2779
+ return;
2780
+ case FieldDescriptor::CPPTYPE_BOOL:
2781
+ reflection->SetBool(message, field_desc, value.GetBoolValue());
2782
+ return;
2783
+ }
2784
+ }
2785
+ } // namespace internal
2786
+
2787
+ void TextFormat::Printer::PrintField(const Message& message,
2788
+ const Reflection* reflection,
2789
+ const FieldDescriptor* field,
2790
+ BaseTextGenerator* generator) const {
2791
+ if (use_short_repeated_primitives_ && field->is_repeated() &&
2792
+ field->cpp_type() != FieldDescriptor::CPPTYPE_STRING &&
2793
+ field->cpp_type() != FieldDescriptor::CPPTYPE_MESSAGE) {
2794
+ PrintShortRepeatedField(message, reflection, field, generator);
2795
+ return;
2796
+ }
2797
+
2798
+ int count = 0;
2799
+
2800
+ if (field->is_repeated()) {
2801
+ count = reflection->FieldSize(message, field);
2802
+ } else if (reflection->HasField(message, field) ||
2803
+ field->containing_type()->options().map_entry()) {
2804
+ count = 1;
2805
+ }
2806
+
2807
+ bool is_map = field->is_map();
2808
+ const internal::MapEntries map_entries =
2809
+ is_map
2810
+ ? internal::MapFieldPrinterHelper::SortMap(message, reflection, field)
2811
+ : internal::MapEntries();
2812
+
2813
+ for (int j = 0; j < count; ++j) {
2814
+ const int field_index = field->is_repeated() ? j : -1;
2815
+
2816
+ PrintFieldName(message, field_index, count, reflection, field, generator);
2817
+
2818
+ if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
2819
+ if (TryRedactFieldValue(message, field, generator,
2820
+ /*insert_value_separator=*/true)) {
2821
+ break;
2822
+ }
2823
+ const FastFieldValuePrinter* printer = GetFieldPrinter(field);
2824
+ const Message& sub_message =
2825
+ field->is_repeated()
2826
+ ? (is_map ? *map_entries.all_entries[j]
2827
+ : reflection->GetRepeatedMessage(message, field, j))
2828
+ : reflection->GetMessage(message, field);
2829
+ printer->PrintMessageStart(sub_message, field_index, count,
2830
+ single_line_mode_, generator);
2831
+ generator->Indent();
2832
+ if (!printer->PrintMessageContent(sub_message, field_index, count,
2833
+ single_line_mode_, generator)) {
2834
+ Print(sub_message, generator);
2835
+ }
2836
+ generator->Outdent();
2837
+ printer->PrintMessageEnd(sub_message, field_index, count,
2838
+ single_line_mode_, generator);
2839
+ } else {
2840
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ");
2841
+ // Write the field value.
2842
+ PrintFieldValue(message, reflection, field, field_index, generator);
2843
+ if (single_line_mode_) {
2844
+ generator->PrintLiteral(" ");
2845
+ } else {
2846
+ generator->PrintLiteral("\n");
2847
+ }
2848
+ }
2849
+ }
2850
+ }
2851
+
2852
+ void TextFormat::Printer::PrintShortRepeatedField(
2853
+ const Message& message, const Reflection* reflection,
2854
+ const FieldDescriptor* field, BaseTextGenerator* generator) const {
2855
+ // Print primitive repeated field in short form.
2856
+ int size = reflection->FieldSize(message, field);
2857
+ PrintFieldName(message, /*field_index=*/-1, /*field_count=*/size, reflection,
2858
+ field, generator);
2859
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ", "[");
2860
+ for (int i = 0; i < size; i++) {
2861
+ if (i > 0) generator->PrintLiteral(", ");
2862
+ PrintFieldValue(message, reflection, field, i, generator);
2863
+ }
2864
+ if (single_line_mode_) {
2865
+ generator->PrintLiteral("] ");
2866
+ } else {
2867
+ generator->PrintLiteral("]\n");
2868
+ }
2869
+ }
2870
+
2871
+ void TextFormat::Printer::PrintFieldName(const Message& message,
2872
+ int field_index, int field_count,
2873
+ const Reflection* reflection,
2874
+ const FieldDescriptor* field,
2875
+ BaseTextGenerator* generator) const {
2876
+ // if use_field_number_ is true, prints field number instead
2877
+ // of field name.
2878
+ if (use_field_number_) {
2879
+ generator->PrintString(absl::StrCat(field->number()));
2880
+ return;
2881
+ }
2882
+
2883
+ const FastFieldValuePrinter* printer = GetFieldPrinter(field);
2884
+ printer->PrintFieldName(message, field_index, field_count, reflection, field,
2885
+ generator);
2886
+ }
2887
+
2888
+ void TextFormat::Printer::PrintFieldValue(const Message& message,
2889
+ const Reflection* reflection,
2890
+ const FieldDescriptor* field,
2891
+ int index,
2892
+ BaseTextGenerator* generator) const {
2893
+ ABSL_DCHECK(field->is_repeated() || (index == -1))
2894
+ << "Index must be -1 for non-repeated fields";
2895
+
2896
+ const FastFieldValuePrinter* printer = GetFieldPrinter(field);
2897
+ if (TryRedactFieldValue(message, field, generator,
2898
+ /*insert_value_separator=*/false)) {
2899
+ return;
2900
+ }
2901
+
2902
+ switch (field->cpp_type()) {
2903
+ #define OUTPUT_FIELD(CPPTYPE, METHOD) \
2904
+ case FieldDescriptor::CPPTYPE_##CPPTYPE: \
2905
+ printer->Print##METHOD( \
2906
+ field->is_repeated() \
2907
+ ? reflection->GetRepeated##METHOD(message, field, index) \
2908
+ : reflection->Get##METHOD(message, field), \
2909
+ generator); \
2910
+ break
2911
+
2912
+ OUTPUT_FIELD(INT32, Int32);
2913
+ OUTPUT_FIELD(INT64, Int64);
2914
+ OUTPUT_FIELD(UINT32, UInt32);
2915
+ OUTPUT_FIELD(UINT64, UInt64);
2916
+ OUTPUT_FIELD(FLOAT, Float);
2917
+ OUTPUT_FIELD(DOUBLE, Double);
2918
+ OUTPUT_FIELD(BOOL, Bool);
2919
+ #undef OUTPUT_FIELD
2920
+
2921
+ case FieldDescriptor::CPPTYPE_STRING: {
2922
+ std::string scratch;
2923
+ const std::string& value =
2924
+ field->is_repeated()
2925
+ ? reflection->GetRepeatedStringReference(message, field, index,
2926
+ &scratch)
2927
+ : reflection->GetStringReference(message, field, &scratch);
2928
+ const std::string* value_to_print = &value;
2929
+ std::string truncated_value;
2930
+ if (truncate_string_field_longer_than_ > 0 &&
2931
+ static_cast<size_t>(truncate_string_field_longer_than_) <
2932
+ value.size()) {
2933
+ truncated_value = value.substr(0, truncate_string_field_longer_than_) +
2934
+ "...<truncated>...";
2935
+ value_to_print = &truncated_value;
2936
+ }
2937
+ if (field->type() == FieldDescriptor::TYPE_STRING) {
2938
+ printer->PrintString(*value_to_print, generator);
2939
+ } else {
2940
+ ABSL_DCHECK_EQ(field->type(), FieldDescriptor::TYPE_BYTES);
2941
+ printer->PrintBytes(*value_to_print, generator);
2942
+ }
2943
+ break;
2944
+ }
2945
+
2946
+ case FieldDescriptor::CPPTYPE_ENUM: {
2947
+ int enum_value =
2948
+ field->is_repeated()
2949
+ ? reflection->GetRepeatedEnumValue(message, field, index)
2950
+ : reflection->GetEnumValue(message, field);
2951
+ const EnumValueDescriptor* enum_desc =
2952
+ field->enum_type()->FindValueByNumber(enum_value);
2953
+ if (enum_desc != nullptr) {
2954
+ printer->PrintEnum(enum_value, internal::NameOfEnumAsString(enum_desc),
2955
+ generator);
2956
+ } else {
2957
+ // Ordinarily, enum_desc should not be null, because proto2 has the
2958
+ // invariant that set enum field values must be in-range, but with the
2959
+ // new integer-based API for enums (or the RepeatedField<int> loophole),
2960
+ // it is possible for the user to force an unknown integer value. So we
2961
+ // simply use the integer value itself as the enum value name in this
2962
+ // case.
2963
+ printer->PrintEnum(enum_value, absl::StrCat(enum_value), generator);
2964
+ }
2965
+ break;
2966
+ }
2967
+
2968
+ case FieldDescriptor::CPPTYPE_MESSAGE:
2969
+ Print(field->is_repeated()
2970
+ ? reflection->GetRepeatedMessage(message, field, index)
2971
+ : reflection->GetMessage(message, field),
2972
+ generator);
2973
+ break;
2974
+ }
2975
+ }
2976
+
2977
+ /* static */ bool TextFormat::Print(const Message& message,
2978
+ io::ZeroCopyOutputStream* output) {
2979
+ return Printer().Print(message, output);
2980
+ }
2981
+
2982
+ /* static */ bool TextFormat::PrintUnknownFields(
2983
+ const UnknownFieldSet& unknown_fields, io::ZeroCopyOutputStream* output) {
2984
+ return Printer().PrintUnknownFields(unknown_fields, output);
2985
+ }
2986
+
2987
+ /* static */ bool TextFormat::PrintToString(const Message& message,
2988
+ std::string* output) {
2989
+ auto printer = Printer();
2990
+ return printer.PrintToString(message, output);
2991
+ }
2992
+
2993
+ /* static */ bool TextFormat::PrintUnknownFieldsToString(
2994
+ const UnknownFieldSet& unknown_fields, std::string* output) {
2995
+ return Printer().PrintUnknownFieldsToString(unknown_fields, output);
2996
+ }
2997
+
2998
+ /* static */ void TextFormat::PrintFieldValueToString(
2999
+ const Message& message, const FieldDescriptor* field, int index,
3000
+ std::string* output) {
3001
+ return Printer().PrintFieldValueToString(message, field, index, output);
3002
+ }
3003
+
3004
+ /* static */ bool TextFormat::ParseFieldValueFromString(
3005
+ absl::string_view input, const FieldDescriptor* field, Message* message) {
3006
+ return Parser().ParseFieldValueFromString(input, field, message);
3007
+ }
3008
+
3009
+ template <typename... T>
3010
+ PROTOBUF_NOINLINE void TextFormat::OutOfLinePrintString(
3011
+ BaseTextGenerator* generator, const T&... values) {
3012
+ generator->PrintString(absl::StrCat(values...));
3013
+ }
3014
+
3015
+ void TextFormat::Printer::PrintUnknownFields(
3016
+ const UnknownFieldSet& unknown_fields, BaseTextGenerator* generator,
3017
+ int recursion_budget) const {
3018
+ for (int i = 0; i < unknown_fields.field_count(); i++) {
3019
+ const UnknownField& field = unknown_fields.field(i);
3020
+
3021
+ switch (field.type()) {
3022
+ case UnknownField::TYPE_VARINT:
3023
+ OutOfLinePrintString(generator, field.number());
3024
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ");
3025
+ if (redact_debug_string_) {
3026
+ OutOfLinePrintString(generator, "UNKNOWN_VARINT ");
3027
+ OutOfLinePrintString(generator, kFieldValueReplacement);
3028
+ } else {
3029
+ OutOfLinePrintString(generator, field.varint());
3030
+ }
3031
+ if (single_line_mode_) {
3032
+ generator->PrintLiteral(" ");
3033
+ } else {
3034
+ generator->PrintLiteral("\n");
3035
+ }
3036
+ break;
3037
+ case UnknownField::TYPE_FIXED32: {
3038
+ OutOfLinePrintString(generator, field.number());
3039
+ if (redact_debug_string_) {
3040
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ",
3041
+ "UNKNOWN_FIXED32 ");
3042
+ OutOfLinePrintString(generator, kFieldValueReplacement);
3043
+ } else {
3044
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ", "0x");
3045
+ OutOfLinePrintString(generator,
3046
+ absl::Hex(field.fixed32(), absl::kZeroPad8));
3047
+ }
3048
+ if (single_line_mode_) {
3049
+ generator->PrintLiteral(" ");
3050
+ } else {
3051
+ generator->PrintLiteral("\n");
3052
+ }
3053
+ break;
3054
+ }
3055
+ case UnknownField::TYPE_FIXED64: {
3056
+ OutOfLinePrintString(generator, field.number());
3057
+ if (redact_debug_string_) {
3058
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ",
3059
+ "UNKNOWN_FIXED64 ");
3060
+ OutOfLinePrintString(generator, kFieldValueReplacement);
3061
+ } else {
3062
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ", "0x");
3063
+ OutOfLinePrintString(generator,
3064
+ absl::Hex(field.fixed64(), absl::kZeroPad16));
3065
+ }
3066
+ if (single_line_mode_) {
3067
+ generator->PrintLiteral(" ");
3068
+ } else {
3069
+ generator->PrintLiteral("\n");
3070
+ }
3071
+ break;
3072
+ }
3073
+ case UnknownField::TYPE_LENGTH_DELIMITED: {
3074
+ OutOfLinePrintString(generator, field.number());
3075
+ const absl::string_view value = field.length_delimited();
3076
+ // We create a CodedInputStream so that we can adhere to our recursion
3077
+ // budget when we attempt to parse the data. UnknownFieldSet parsing is
3078
+ // recursive because of groups.
3079
+ io::CodedInputStream input_stream(
3080
+ reinterpret_cast<const uint8_t*>(value.data()), value.size());
3081
+ input_stream.SetRecursionLimit(recursion_budget);
3082
+ UnknownFieldSet embedded_unknown_fields;
3083
+ if (!value.empty() && recursion_budget > 0 &&
3084
+ embedded_unknown_fields.ParseFromCodedStream(&input_stream)) {
3085
+ // This field is parseable as a Message.
3086
+ // It might not be a message, but in the case of ambiguity we assume
3087
+ // it is a message.
3088
+ if (redact_debug_string_) {
3089
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ",
3090
+ "UNKNOWN_MESSAGE ");
3091
+ OutOfLinePrintString(generator, kFieldValueReplacement);
3092
+ if (single_line_mode_) {
3093
+ generator->PrintLiteral(" ");
3094
+ } else {
3095
+ generator->PrintLiteral("\n");
3096
+ }
3097
+ break;
3098
+ }
3099
+ if (single_line_mode_) {
3100
+ generator->PrintMaybeWithMarker(MarkerToken(), " ", "{ ");
3101
+ } else {
3102
+ generator->PrintMaybeWithMarker(MarkerToken(), " ", "{\n");
3103
+ generator->Indent();
3104
+ }
3105
+ PrintUnknownFields(embedded_unknown_fields, generator,
3106
+ recursion_budget - 1);
3107
+ if (single_line_mode_) {
3108
+ generator->PrintLiteral("} ");
3109
+ } else {
3110
+ generator->Outdent();
3111
+ generator->PrintLiteral("}\n");
3112
+ }
3113
+ } else {
3114
+ // This field is not parseable as a Message (or we ran out of
3115
+ // recursion budget). So it is probably just a plain string.
3116
+ if (redact_debug_string_) {
3117
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ",
3118
+ "UNKNOWN_STRING ");
3119
+ OutOfLinePrintString(generator, kFieldValueReplacement);
3120
+ if (single_line_mode_) {
3121
+ generator->PrintLiteral(" ");
3122
+ } else {
3123
+ generator->PrintLiteral("\n");
3124
+ }
3125
+ break;
3126
+ }
3127
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ", "\"");
3128
+ generator->PrintString(absl::CEscape(value));
3129
+ if (single_line_mode_) {
3130
+ generator->PrintLiteral("\" ");
3131
+ } else {
3132
+ generator->PrintLiteral("\"\n");
3133
+ }
3134
+ }
3135
+ break;
3136
+ }
3137
+ case UnknownField::TYPE_GROUP:
3138
+ OutOfLinePrintString(generator, field.number());
3139
+ if (redact_debug_string_) {
3140
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ",
3141
+ "UNKNOWN_GROUP ");
3142
+ OutOfLinePrintString(generator, kFieldValueReplacement);
3143
+ if (single_line_mode_) {
3144
+ generator->PrintLiteral(" ");
3145
+ } else {
3146
+ generator->PrintLiteral("\n");
3147
+ }
3148
+ break;
3149
+ }
3150
+ if (single_line_mode_) {
3151
+ generator->PrintMaybeWithMarker(MarkerToken(), " ", "{ ");
3152
+ } else {
3153
+ generator->PrintMaybeWithMarker(MarkerToken(), " ", "{\n");
3154
+ generator->Indent();
3155
+ }
3156
+ // For groups, we recurse without checking the budget. This is OK,
3157
+ // because if the groups were too deeply nested then we would have
3158
+ // already rejected the message when we originally parsed it.
3159
+ PrintUnknownFields(field.group(), generator, recursion_budget - 1);
3160
+ if (single_line_mode_) {
3161
+ generator->PrintLiteral("} ");
3162
+ } else {
3163
+ generator->Outdent();
3164
+ generator->PrintLiteral("}\n");
3165
+ }
3166
+ break;
3167
+ }
3168
+ }
3169
+ }
3170
+
3171
+ // Traverse the tree of field options and check if any of them are sensitive.
3172
+ // We check for sensitive enum values in the options and in the fields of the
3173
+ // message-type options, recursively.
3174
+ TextFormat::RedactionState TextFormat::IsOptionSensitive(
3175
+ const Message& opts, const Reflection* reflection,
3176
+ const FieldDescriptor* option) {
3177
+ if (option->type() == FieldDescriptor::TYPE_ENUM) {
3178
+ auto count =
3179
+ option->is_repeated() ? reflection->FieldSize(opts, option) : 1;
3180
+ for (auto i = 0; i < count; i++) {
3181
+ int enum_val = option->is_repeated()
3182
+ ? reflection->GetRepeatedEnumValue(opts, option, i)
3183
+ : reflection->GetEnumValue(opts, option);
3184
+ const EnumValueDescriptor* option_value =
3185
+ option->enum_type()->FindValueByNumber(enum_val);
3186
+ if (option_value->options().debug_redact()) {
3187
+ return TextFormat::RedactionState{true, false};
3188
+ }
3189
+ }
3190
+ } else if (option->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
3191
+ auto count =
3192
+ option->is_repeated() ? reflection->FieldSize(opts, option) : 1;
3193
+ for (auto i = 0; i < count; i++) {
3194
+ const Message& sub_message =
3195
+ option->is_repeated()
3196
+ ? reflection->GetRepeatedMessage(opts, option, i)
3197
+ : reflection->GetMessage(opts, option);
3198
+ const Reflection* sub_reflection = sub_message.GetReflection();
3199
+ std::vector<const FieldDescriptor*> message_fields;
3200
+ sub_reflection->ListFields(sub_message, &message_fields);
3201
+ for (const FieldDescriptor* message_field : message_fields) {
3202
+ auto result = TextFormat::IsOptionSensitive(sub_message, sub_reflection,
3203
+ message_field);
3204
+ if (result.redact) {
3205
+ return result;
3206
+ }
3207
+ }
3208
+ }
3209
+ }
3210
+ return TextFormat::RedactionState{false, false};
3211
+ }
3212
+
3213
+ TextFormat::RedactionState TextFormat::GetRedactionState(
3214
+ const FieldDescriptor* field) {
3215
+ auto options = field->options();
3216
+ auto state = TextFormat::RedactionState{options.debug_redact(), false};
3217
+ std::vector<const FieldDescriptor*> field_options;
3218
+ const Reflection* reflection = options.GetReflection();
3219
+ reflection->ListFields(options, &field_options);
3220
+ for (const FieldDescriptor* option : field_options) {
3221
+ auto result = TextFormat::IsOptionSensitive(options, reflection, option);
3222
+ state = TextFormat::RedactionState{state.redact || result.redact,
3223
+ state.report || result.report};
3224
+ }
3225
+ return state;
3226
+ }
3227
+ bool TextFormat::Printer::TryRedactFieldValue(
3228
+ const Message& message, const FieldDescriptor* field,
3229
+ BaseTextGenerator* generator, bool insert_value_separator) const {
3230
+ TextFormat::RedactionState redaction_state =
3231
+ DescriptorPool::MemoizeProjection(
3232
+ field, [](const FieldDescriptor* field) {
3233
+ return TextFormat::GetRedactionState(field);
3234
+ });
3235
+ if (redaction_state.redact) {
3236
+ if (redact_debug_string_) {
3237
+ IncrementRedactedFieldCounter();
3238
+ if (insert_value_separator) {
3239
+ generator->PrintMaybeWithMarker(MarkerToken(), ": ");
3240
+ }
3241
+ generator->PrintString(kFieldValueReplacement);
3242
+ if (insert_value_separator) {
3243
+ if (single_line_mode_) {
3244
+ generator->PrintLiteral(" ");
3245
+ } else {
3246
+ generator->PrintLiteral("\n");
3247
+ }
3248
+ }
3249
+ return true;
3250
+ }
3251
+ }
3252
+ return false;
3253
+ }
3254
+
3255
+ class TextMarkerGenerator final {
3256
+ public:
3257
+ static TextMarkerGenerator CreateRandom();
3258
+
3259
+ void PrintMarker(TextFormat::BaseTextGenerator* generator, bool redact,
3260
+ bool randomize, bool single_line_mode) const {
3261
+ if (redact) {
3262
+ generator->Print(redaction_marker_.data(), redaction_marker_.size());
3263
+ }
3264
+ if (randomize) {
3265
+ generator->Print(random_marker_.data(), random_marker_.size());
3266
+ }
3267
+ if ((redact || randomize) && !single_line_mode) {
3268
+ generator->PrintLiteral("\n");
3269
+ }
3270
+ }
3271
+
3272
+ private:
3273
+ static constexpr absl::string_view kRedactionMarkers[] = {
3274
+ "goo.gle/debugonly ", "goo.gle/debugstr ", "goo.gle/debugproto "};
3275
+
3276
+ static constexpr absl::string_view kRandomMarker = " ";
3277
+
3278
+ static_assert(!kRandomMarker.empty(), "The random marker cannot be empty!");
3279
+
3280
+ constexpr TextMarkerGenerator(absl::string_view redaction_marker,
3281
+ absl::string_view random_marker)
3282
+ : redaction_marker_(redaction_marker), random_marker_(random_marker) {}
3283
+
3284
+ absl::string_view redaction_marker_;
3285
+ absl::string_view random_marker_;
3286
+ };
3287
+
3288
+ TextMarkerGenerator TextMarkerGenerator::CreateRandom() {
3289
+ // We avoid using sources backed by system entropy to allow the marker
3290
+ // generator to work in sandboxed environments that have no access to syscalls
3291
+ // such as getrandom or getpid. Note that this randomization has no security
3292
+ // implications, it's only used to break code that attempts to deserialize
3293
+ // debug strings.
3294
+ std::mt19937_64 random{
3295
+ static_cast<uint64_t>(absl::ToUnixMicros(absl::Now()))};
3296
+
3297
+ size_t redaction_marker_index = std::uniform_int_distribution<size_t>{
3298
+ 0, ABSL_ARRAYSIZE(kRedactionMarkers) - 1}(random);
3299
+
3300
+ size_t random_marker_size =
3301
+ std::uniform_int_distribution<size_t>{1, kRandomMarker.size()}(random);
3302
+
3303
+ return TextMarkerGenerator(kRedactionMarkers[redaction_marker_index],
3304
+ kRandomMarker.substr(0, random_marker_size));
3305
+ }
3306
+
3307
+ const TextMarkerGenerator& GetGlobalTextMarkerGenerator() {
3308
+ static const TextMarkerGenerator kTextMarkerGenerator =
3309
+ TextMarkerGenerator::CreateRandom();
3310
+ return kTextMarkerGenerator;
3311
+ }
3312
+
3313
+ namespace internal {
3314
+ void PrintTextMarker(TextFormat::BaseTextGenerator* generator, bool redact,
3315
+ bool randomize, bool single_line_mode) {
3316
+ GetGlobalTextMarkerGenerator().PrintMarker(generator, redact, randomize,
3317
+ single_line_mode);
3318
+ }
3319
+ } // namespace internal
3320
+
3321
+ } // namespace protobuf
3322
+ } // namespace google
3323
+
3324
+ #include "google/protobuf/port_undef.inc"