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,2372 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. 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/util/message_differencer.h"
13
+
14
+ #include <algorithm>
15
+ #include <cstddef>
16
+ #include <cstdint>
17
+ #include <functional>
18
+ #include <limits>
19
+ #include <memory>
20
+ #include <utility>
21
+ #include <vector>
22
+
23
+ #include "google/protobuf/descriptor.pb.h"
24
+ #include "absl/container/flat_hash_map.h"
25
+ #include "absl/log/absl_check.h"
26
+ #include "absl/log/absl_log.h"
27
+ #include "absl/strings/escaping.h"
28
+ #include "absl/strings/str_cat.h"
29
+ #include "absl/strings/str_format.h"
30
+ #include "google/protobuf/descriptor.h"
31
+ #include "google/protobuf/dynamic_message.h"
32
+ #include "google/protobuf/generated_enum_reflection.h"
33
+ #include "google/protobuf/io/printer.h"
34
+ #include "google/protobuf/io/zero_copy_stream.h"
35
+ #include "google/protobuf/io/zero_copy_stream_impl.h"
36
+ #include "google/protobuf/map_field.h"
37
+ #include "google/protobuf/message.h"
38
+ #include "google/protobuf/text_format.h"
39
+ #include "google/protobuf/util/field_comparator.h"
40
+
41
+ // Always include as last one, otherwise it can break compilation
42
+ #include "google/protobuf/port_def.inc"
43
+
44
+ namespace google {
45
+ namespace protobuf {
46
+
47
+ namespace util {
48
+
49
+ namespace {
50
+
51
+ std::string PrintShortTextFormat(const google::protobuf::Message& message) {
52
+ std::string debug_string;
53
+
54
+ google::protobuf::TextFormat::Printer printer;
55
+ printer.SetSingleLineMode(true);
56
+ printer.SetExpandAny(true);
57
+
58
+ // TODO: Remove this suppression.
59
+ (void)printer.PrintToString(message, &debug_string);
60
+ // Single line mode currently might have an extra space at the end.
61
+ if (!debug_string.empty() && debug_string[debug_string.size() - 1] == ' ') {
62
+ debug_string.resize(debug_string.size() - 1);
63
+ }
64
+
65
+ return debug_string;
66
+ }
67
+
68
+ } // namespace
69
+
70
+ // A reporter to report the total number of diffs.
71
+ // TODO: we can improve this to take into account the value differencers.
72
+ class NumDiffsReporter : public google::protobuf::util::MessageDifferencer::Reporter {
73
+ public:
74
+ NumDiffsReporter() : num_diffs_(0) {}
75
+
76
+ // Returns the total number of diffs.
77
+ int32_t GetNumDiffs() const { return num_diffs_; }
78
+ void Reset() { num_diffs_ = 0; }
79
+
80
+ // Report that a field has been added into Message2.
81
+ void ReportAdded(
82
+ const google::protobuf::Message& /* message1 */,
83
+ const google::protobuf::Message& /* message2 */,
84
+ const std::vector<google::protobuf::util::MessageDifferencer::SpecificField>&
85
+ /*field_path*/) override {
86
+ ++num_diffs_;
87
+ }
88
+
89
+ // Report that a field has been deleted from Message1.
90
+ void ReportDeleted(
91
+ const google::protobuf::Message& /* message1 */,
92
+ const google::protobuf::Message& /* message2 */,
93
+ const std::vector<google::protobuf::util::MessageDifferencer::SpecificField>&
94
+ /*field_path*/) override {
95
+ ++num_diffs_;
96
+ }
97
+
98
+ // Report that the value of a field has been modified.
99
+ void ReportModified(
100
+ const google::protobuf::Message& /* message1 */,
101
+ const google::protobuf::Message& /* message2 */,
102
+ const std::vector<google::protobuf::util::MessageDifferencer::SpecificField>&
103
+ /*field_path*/) override {
104
+ ++num_diffs_;
105
+ }
106
+
107
+ private:
108
+ int32_t num_diffs_;
109
+ };
110
+
111
+ // When comparing a repeated field as map, MultipleFieldMapKeyComparator can
112
+ // be used to specify multiple fields as key for key comparison.
113
+ // Two elements of a repeated field will be regarded as having the same key
114
+ // iff they have the same value for every specified key field.
115
+ // Note that you can also specify only one field as key.
116
+ class MessageDifferencer::MultipleFieldsMapKeyComparator
117
+ : public MessageDifferencer::MapKeyComparator {
118
+ public:
119
+ MultipleFieldsMapKeyComparator(
120
+ MessageDifferencer* message_differencer,
121
+ const std::vector<std::vector<const FieldDescriptor*> >& key_field_paths)
122
+ : message_differencer_(message_differencer),
123
+ key_field_paths_(key_field_paths) {
124
+ ABSL_CHECK(!key_field_paths_.empty());
125
+ for (const auto& path : key_field_paths_) {
126
+ ABSL_CHECK(!path.empty());
127
+ }
128
+ }
129
+ MultipleFieldsMapKeyComparator(MessageDifferencer* message_differencer,
130
+ const FieldDescriptor* key)
131
+ : message_differencer_(message_differencer) {
132
+ std::vector<const FieldDescriptor*> key_field_path;
133
+ key_field_path.push_back(key);
134
+ key_field_paths_.push_back(key_field_path);
135
+ }
136
+ MultipleFieldsMapKeyComparator(const MultipleFieldsMapKeyComparator&) =
137
+ delete;
138
+ MultipleFieldsMapKeyComparator& operator=(
139
+ const MultipleFieldsMapKeyComparator&) = delete;
140
+ bool IsMatch(const Message& message1, const Message& message2,
141
+ int unpacked_any,
142
+ const std::vector<SpecificField>& parent_fields) const override {
143
+ for (const auto& path : key_field_paths_) {
144
+ if (!IsMatchInternal(message1, message2, unpacked_any, parent_fields,
145
+ path, 0)) {
146
+ return false;
147
+ }
148
+ }
149
+ return true;
150
+ }
151
+
152
+ private:
153
+ bool IsMatchInternal(
154
+ const Message& message1, const Message& message2, int unpacked_any,
155
+ const std::vector<SpecificField>& parent_fields,
156
+ const std::vector<const FieldDescriptor*>& key_field_path,
157
+ int path_index) const {
158
+ const FieldDescriptor* field = key_field_path[path_index];
159
+ std::vector<SpecificField> current_parent_fields(parent_fields);
160
+ if (path_index == static_cast<int64_t>(key_field_path.size() - 1)) {
161
+ if (field->is_map()) {
162
+ return message_differencer_->CompareMapField(
163
+ message1, message2, unpacked_any, field, &current_parent_fields);
164
+ } else if (field->is_repeated()) {
165
+ return message_differencer_->CompareRepeatedField(
166
+ message1, message2, unpacked_any, field, &current_parent_fields);
167
+ } else {
168
+ return message_differencer_->CompareFieldValueUsingParentFields(
169
+ message1, message2, unpacked_any, field, -1, -1,
170
+ &current_parent_fields);
171
+ }
172
+ } else {
173
+ const Reflection* reflection1 = message1.GetReflection();
174
+ const Reflection* reflection2 = message2.GetReflection();
175
+ bool has_field1 = reflection1->HasField(message1, field);
176
+ bool has_field2 = reflection2->HasField(message2, field);
177
+ if (!has_field1 && !has_field2) {
178
+ return true;
179
+ }
180
+ if (has_field1 != has_field2) {
181
+ return false;
182
+ }
183
+ SpecificField specific_field;
184
+ specific_field.message1 = &message1;
185
+ specific_field.message2 = &message2;
186
+ specific_field.unpacked_any = unpacked_any;
187
+ specific_field.field = field;
188
+ current_parent_fields.push_back(specific_field);
189
+ return IsMatchInternal(reflection1->GetMessage(message1, field),
190
+ reflection2->GetMessage(message2, field),
191
+ false /*key is never Any*/, current_parent_fields,
192
+ key_field_path, path_index + 1);
193
+ }
194
+ }
195
+ MessageDifferencer* message_differencer_;
196
+ std::vector<std::vector<const FieldDescriptor*> > key_field_paths_;
197
+ };
198
+
199
+ // Preserve the order when treating repeated field as SMART_LIST. The current
200
+ // implementation is to find the longest matching sequence from the first
201
+ // element. The optimal solution requires to use //util/diff/lcs.h, which is
202
+ // not open sourced yet. Overwrite this method if you want to have that.
203
+ // TODO: change to use LCS once it is open sourced.
204
+ void MatchIndicesPostProcessorForSmartList(std::vector<int>* match_list1,
205
+ std::vector<int>* match_list2) {
206
+ int last_matched_index = -1;
207
+ for (size_t i = 0; i < match_list1->size(); ++i) {
208
+ if (match_list1->at(i) < 0) {
209
+ continue;
210
+ }
211
+ if (last_matched_index < 0 || match_list1->at(i) > last_matched_index) {
212
+ last_matched_index = match_list1->at(i);
213
+ } else {
214
+ match_list2->at(match_list1->at(i)) = -1;
215
+ match_list1->at(i) = -1;
216
+ }
217
+ }
218
+ }
219
+
220
+ void AddSpecificIndex(
221
+ google::protobuf::util::MessageDifferencer::SpecificField* specific_field,
222
+ const Message& message, const FieldDescriptor* field, int index) {
223
+ if (field->is_map()) {
224
+ const Reflection* reflection = message.GetReflection();
225
+ specific_field->map_entry1 =
226
+ &reflection->GetRepeatedMessage(message, field, index);
227
+ }
228
+ specific_field->index = index;
229
+ }
230
+
231
+ void AddSpecificNewIndex(
232
+ google::protobuf::util::MessageDifferencer::SpecificField* specific_field,
233
+ const Message& message, const FieldDescriptor* field, int index) {
234
+ if (field->is_map()) {
235
+ const Reflection* reflection = message.GetReflection();
236
+ specific_field->map_entry2 =
237
+ &reflection->GetRepeatedMessage(message, field, index);
238
+ }
239
+ specific_field->new_index = index;
240
+ }
241
+
242
+ MessageDifferencer::MapEntryKeyComparator::MapEntryKeyComparator(
243
+ MessageDifferencer* message_differencer)
244
+ : message_differencer_(message_differencer) {}
245
+
246
+ bool MessageDifferencer::MapEntryKeyComparator::IsMatch(
247
+ const Message& message1, const Message& message2, int unpacked_any,
248
+ const std::vector<SpecificField>& parent_fields) const {
249
+ // Map entry has its key in the field with tag 1. See the comment for
250
+ // map_entry in MessageOptions.
251
+ const FieldDescriptor* key = message1.GetDescriptor()->FindFieldByNumber(1);
252
+ // If key is not present in message1 and we're doing partial comparison or if
253
+ // map key is explicitly ignored treat the field as set instead,
254
+ const bool treat_as_set =
255
+ (message_differencer_->scope() == PARTIAL &&
256
+ !message1.GetReflection()->HasField(message1, key)) ||
257
+ message_differencer_->IsIgnored(message1, message2, key, parent_fields);
258
+
259
+ std::vector<SpecificField> current_parent_fields(parent_fields);
260
+ if (treat_as_set) {
261
+ return message_differencer_->Compare(message1, message2, unpacked_any,
262
+ &current_parent_fields);
263
+ }
264
+ return message_differencer_->CompareFieldValueUsingParentFields(
265
+ message1, message2, unpacked_any, key, -1, -1, &current_parent_fields);
266
+ }
267
+
268
+ bool MessageDifferencer::Equals(const Message& message1,
269
+ const Message& message2) {
270
+ MessageDifferencer differencer;
271
+
272
+ return differencer.Compare(message1, message2);
273
+ }
274
+
275
+ bool MessageDifferencer::Equivalent(const Message& message1,
276
+ const Message& message2) {
277
+ MessageDifferencer differencer;
278
+ differencer.set_message_field_comparison(MessageDifferencer::EQUIVALENT);
279
+
280
+ return differencer.Compare(message1, message2);
281
+ }
282
+
283
+ bool MessageDifferencer::ApproximatelyEquals(const Message& message1,
284
+ const Message& message2) {
285
+ MessageDifferencer differencer;
286
+ differencer.set_float_comparison(MessageDifferencer::APPROXIMATE);
287
+
288
+ return differencer.Compare(message1, message2);
289
+ }
290
+
291
+ bool MessageDifferencer::ApproximatelyEquivalent(const Message& message1,
292
+ const Message& message2) {
293
+ MessageDifferencer differencer;
294
+ differencer.set_message_field_comparison(MessageDifferencer::EQUIVALENT);
295
+ differencer.set_float_comparison(MessageDifferencer::APPROXIMATE);
296
+
297
+ return differencer.Compare(message1, message2);
298
+ }
299
+
300
+ // ===========================================================================
301
+
302
+ MessageDifferencer::MessageDifferencer()
303
+ : reporter_(nullptr),
304
+ message_field_comparison_(EQUAL),
305
+ scope_(FULL),
306
+ repeated_field_comparison_(AS_LIST),
307
+ map_entry_key_comparator_(this),
308
+ report_matches_(false),
309
+ report_moves_(true),
310
+ report_ignores_(true),
311
+ output_string_(nullptr),
312
+ match_indices_for_smart_list_callback_(
313
+ MatchIndicesPostProcessorForSmartList) {}
314
+
315
+ MessageDifferencer::~MessageDifferencer() {
316
+ for (MapKeyComparator* comparator : owned_key_comparators_) {
317
+ delete comparator;
318
+ }
319
+ }
320
+
321
+ void MessageDifferencer::set_field_comparator(FieldComparator* comparator) {
322
+ ABSL_CHECK(comparator) << "Field comparator can't be nullptr.";
323
+ field_comparator_kind_ = kFCBase;
324
+ field_comparator_.base = comparator;
325
+ }
326
+
327
+ void MessageDifferencer::set_field_comparator(
328
+ DefaultFieldComparator* comparator) {
329
+ ABSL_CHECK(comparator) << "Field comparator can't be nullptr.";
330
+ field_comparator_kind_ = kFCDefault;
331
+ field_comparator_.default_impl = comparator;
332
+ }
333
+
334
+ void MessageDifferencer::set_message_field_comparison(
335
+ MessageFieldComparison comparison) {
336
+ message_field_comparison_ = comparison;
337
+ }
338
+
339
+ MessageDifferencer::MessageFieldComparison
340
+ MessageDifferencer::message_field_comparison() const {
341
+ return message_field_comparison_;
342
+ }
343
+
344
+ void MessageDifferencer::set_scope(Scope scope) { scope_ = scope; }
345
+
346
+ MessageDifferencer::Scope MessageDifferencer::scope() const { return scope_; }
347
+
348
+ void MessageDifferencer::set_force_compare_no_presence(bool value) {
349
+ force_compare_no_presence_ = value;
350
+ }
351
+
352
+ void MessageDifferencer::set_float_comparison(FloatComparison comparison) {
353
+ default_field_comparator_.set_float_comparison(
354
+ comparison == EXACT ? DefaultFieldComparator::EXACT
355
+ : DefaultFieldComparator::APPROXIMATE);
356
+ }
357
+
358
+ void MessageDifferencer::set_repeated_field_comparison(
359
+ RepeatedFieldComparison comparison) {
360
+ repeated_field_comparison_ = comparison;
361
+ }
362
+
363
+ MessageDifferencer::RepeatedFieldComparison
364
+ MessageDifferencer::repeated_field_comparison() const {
365
+ return repeated_field_comparison_;
366
+ }
367
+
368
+ void MessageDifferencer::CheckRepeatedFieldComparisons(
369
+ const FieldDescriptor* field,
370
+ const RepeatedFieldComparison& new_comparison) {
371
+ ABSL_CHECK(field->is_repeated())
372
+ << "Field must be repeated: " << field->full_name();
373
+ const MapKeyComparator* key_comparator = GetMapKeyComparator(field);
374
+ ABSL_CHECK(key_comparator == nullptr)
375
+ << "Cannot treat this repeated field as both MAP and " << new_comparison
376
+ << " for comparison. Field name is: " << field->full_name();
377
+ }
378
+
379
+ void MessageDifferencer::TreatAsSet(const FieldDescriptor* field) {
380
+ CheckRepeatedFieldComparisons(field, AS_SET);
381
+ repeated_field_comparisons_[field] = AS_SET;
382
+ }
383
+
384
+ void MessageDifferencer::TreatAsSmartSet(const FieldDescriptor* field) {
385
+ CheckRepeatedFieldComparisons(field, AS_SMART_SET);
386
+ repeated_field_comparisons_[field] = AS_SMART_SET;
387
+ }
388
+
389
+ void MessageDifferencer::SetMatchIndicesForSmartListCallback(
390
+ std::function<void(std::vector<int>*, std::vector<int>*)> callback) {
391
+ match_indices_for_smart_list_callback_ = callback;
392
+ }
393
+
394
+ void MessageDifferencer::TreatAsList(const FieldDescriptor* field) {
395
+ CheckRepeatedFieldComparisons(field, AS_LIST);
396
+ repeated_field_comparisons_[field] = AS_LIST;
397
+ }
398
+
399
+ void MessageDifferencer::TreatAsSmartList(const FieldDescriptor* field) {
400
+ CheckRepeatedFieldComparisons(field, AS_SMART_LIST);
401
+ repeated_field_comparisons_[field] = AS_SMART_LIST;
402
+ }
403
+
404
+ void MessageDifferencer::TreatAsMap(const FieldDescriptor* field,
405
+ const FieldDescriptor* key) {
406
+ ABSL_CHECK_EQ(FieldDescriptor::CPPTYPE_MESSAGE, field->cpp_type())
407
+ << "Field has to be message type. Field name is: " << field->full_name();
408
+ ABSL_CHECK(key->containing_type() == field->message_type())
409
+ << key->full_name()
410
+ << " must be a direct subfield within the repeated field "
411
+ << field->full_name() << ", not " << key->containing_type()->full_name();
412
+ ABSL_CHECK(!repeated_field_comparisons_.contains(field))
413
+ << "Cannot treat the same field as both "
414
+ << repeated_field_comparisons_[field]
415
+ << " and MAP. Field name is: " << field->full_name();
416
+ MapKeyComparator* key_comparator =
417
+ new MultipleFieldsMapKeyComparator(this, key);
418
+ owned_key_comparators_.push_back(key_comparator);
419
+ map_field_key_comparator_[field] = key_comparator;
420
+ }
421
+
422
+ void MessageDifferencer::TreatAsMapWithMultipleFieldsAsKey(
423
+ const FieldDescriptor* field,
424
+ const std::vector<const FieldDescriptor*>& key_fields) {
425
+ std::vector<std::vector<const FieldDescriptor*> > key_field_paths;
426
+ for (const FieldDescriptor* key_filed : key_fields) {
427
+ std::vector<const FieldDescriptor*> key_field_path;
428
+ key_field_path.push_back(key_filed);
429
+ key_field_paths.push_back(key_field_path);
430
+ }
431
+ TreatAsMapWithMultipleFieldPathsAsKey(field, key_field_paths);
432
+ }
433
+
434
+ void MessageDifferencer::TreatAsMapWithMultipleFieldPathsAsKey(
435
+ const FieldDescriptor* field,
436
+ const std::vector<std::vector<const FieldDescriptor*> >& key_field_paths) {
437
+ ABSL_CHECK(field->is_repeated())
438
+ << "Field must be repeated: " << field->full_name();
439
+ ABSL_CHECK_EQ(FieldDescriptor::CPPTYPE_MESSAGE, field->cpp_type())
440
+ << "Field has to be message type. Field name is: " << field->full_name();
441
+ for (const auto& key_field_path : key_field_paths) {
442
+ for (size_t j = 0; j < key_field_path.size(); ++j) {
443
+ const FieldDescriptor* parent_field =
444
+ j == 0 ? field : key_field_path[j - 1];
445
+ const FieldDescriptor* child_field = key_field_path[j];
446
+ ABSL_CHECK(child_field->containing_type() == parent_field->message_type())
447
+ << child_field->full_name()
448
+ << " must be a direct subfield within the field: "
449
+ << parent_field->full_name();
450
+ if (j != 0) {
451
+ ABSL_CHECK_EQ(FieldDescriptor::CPPTYPE_MESSAGE,
452
+ parent_field->cpp_type())
453
+ << parent_field->full_name() << " has to be of type message.";
454
+ ABSL_CHECK(!parent_field->is_repeated())
455
+ << parent_field->full_name() << " cannot be a repeated field.";
456
+ }
457
+ }
458
+ }
459
+ ABSL_CHECK(!repeated_field_comparisons_.contains(field))
460
+ << "Cannot treat the same field as both "
461
+ << repeated_field_comparisons_[field]
462
+ << " and MAP. Field name is: " << field->full_name();
463
+ MapKeyComparator* key_comparator =
464
+ new MultipleFieldsMapKeyComparator(this, key_field_paths);
465
+ owned_key_comparators_.push_back(key_comparator);
466
+ map_field_key_comparator_[field] = key_comparator;
467
+ }
468
+
469
+ void MessageDifferencer::TreatAsMapUsingKeyComparator(
470
+ const FieldDescriptor* field, const MapKeyComparator* key_comparator) {
471
+ ABSL_CHECK(field->is_repeated())
472
+ << "Field must be repeated: " << field->full_name();
473
+ ABSL_CHECK(!repeated_field_comparisons_.contains(field))
474
+ << "Cannot treat the same field as both "
475
+ << repeated_field_comparisons_[field]
476
+ << " and MAP. Field name is: " << field->full_name();
477
+ map_field_key_comparator_[field] = key_comparator;
478
+ }
479
+
480
+ void MessageDifferencer::AddIgnoreCriteria(
481
+ std::unique_ptr<IgnoreCriteria> ignore_criteria) {
482
+ ignore_criteria_.push_back(std::move(ignore_criteria));
483
+ }
484
+
485
+ void MessageDifferencer::IgnoreField(const FieldDescriptor* field) {
486
+ ignored_fields_.insert(field);
487
+ }
488
+
489
+ void MessageDifferencer::SetFractionAndMargin(const FieldDescriptor* field,
490
+ double fraction, double margin) {
491
+ default_field_comparator_.SetFractionAndMargin(field, fraction, margin);
492
+ }
493
+
494
+ void MessageDifferencer::ReportDifferencesToString(std::string* output) {
495
+ ABSL_DCHECK(output) << "Specified output string was NULL";
496
+
497
+ output_string_ = output;
498
+ output_string_->clear();
499
+ }
500
+
501
+ void MessageDifferencer::ReportDifferencesTo(Reporter* reporter) {
502
+ // If an output string is set, clear it to prevent
503
+ // it superseding the specified reporter.
504
+ if (output_string_) {
505
+ output_string_ = nullptr;
506
+ }
507
+
508
+ reporter_ = reporter;
509
+ }
510
+
511
+ bool MessageDifferencer::FieldBefore(const FieldDescriptor* field1,
512
+ const FieldDescriptor* field2) {
513
+ // Handle sentinel values (i.e. make sure NULLs are always ordered
514
+ // at the end of the list).
515
+ if (field1 == nullptr) {
516
+ return false;
517
+ }
518
+
519
+ if (field2 == nullptr) {
520
+ return true;
521
+ }
522
+
523
+ // Always order fields by their tag number
524
+ return (field1->number() < field2->number());
525
+ }
526
+
527
+ bool MessageDifferencer::Compare(const Message& message1,
528
+ const Message& message2) {
529
+ const Descriptor* descriptor1 = message1.GetDescriptor();
530
+ const Descriptor* descriptor2 = message2.GetDescriptor();
531
+ if (descriptor1 != descriptor2) {
532
+ ABSL_DLOG(FATAL) << "Comparison between two messages with different "
533
+ << "descriptors. " << descriptor1->full_name() << " vs "
534
+ << descriptor2->full_name();
535
+ return false;
536
+ }
537
+
538
+ std::vector<SpecificField> parent_fields;
539
+ force_compare_no_presence_fields_.clear();
540
+ force_compare_failure_triggering_fields_.clear();
541
+
542
+ bool result = false;
543
+ // Setup the internal reporter if need be.
544
+ if (output_string_) {
545
+ io::StringOutputStream output_stream(output_string_);
546
+ StreamReporter reporter(&output_stream);
547
+ reporter.SetMessages(message1, message2);
548
+ reporter_ = &reporter;
549
+ result = Compare(message1, message2, false, &parent_fields);
550
+ reporter_ = nullptr;
551
+ } else {
552
+ result = Compare(message1, message2, false, &parent_fields);
553
+ }
554
+ return result;
555
+ }
556
+
557
+ bool MessageDifferencer::CompareWithFields(
558
+ const Message& message1, const Message& message2,
559
+ const std::vector<const FieldDescriptor*>& message1_fields_arg,
560
+ const std::vector<const FieldDescriptor*>& message2_fields_arg) {
561
+ if (message1.GetDescriptor() != message2.GetDescriptor()) {
562
+ ABSL_DLOG(FATAL) << "Comparison between two messages with different "
563
+ << "descriptors.";
564
+ return false;
565
+ }
566
+
567
+ std::vector<SpecificField> parent_fields;
568
+ force_compare_no_presence_fields_.clear();
569
+ force_compare_failure_triggering_fields_.clear();
570
+
571
+ bool result = false;
572
+
573
+ std::vector<const FieldDescriptor*> message1_fields(
574
+ message1_fields_arg.size() + 1);
575
+ std::vector<const FieldDescriptor*> message2_fields(
576
+ message2_fields_arg.size() + 1);
577
+
578
+ std::copy(message1_fields_arg.cbegin(), message1_fields_arg.cend(),
579
+ message1_fields.begin());
580
+ std::copy(message2_fields_arg.cbegin(), message2_fields_arg.cend(),
581
+ message2_fields.begin());
582
+
583
+ // Append sentinel values.
584
+ message1_fields[message1_fields_arg.size()] = nullptr;
585
+ message2_fields[message2_fields_arg.size()] = nullptr;
586
+
587
+ std::sort(message1_fields.begin(), message1_fields.end(), FieldBefore);
588
+ std::sort(message2_fields.begin(), message2_fields.end(), FieldBefore);
589
+
590
+ // Setup the internal reporter if need be.
591
+ if (output_string_) {
592
+ io::StringOutputStream output_stream(output_string_);
593
+ StreamReporter reporter(&output_stream);
594
+ reporter_ = &reporter;
595
+ result = CompareRequestedFieldsUsingSettings(
596
+ message1, message2, false, message1_fields, message2_fields,
597
+ &parent_fields);
598
+ reporter_ = nullptr;
599
+ } else {
600
+ result = CompareRequestedFieldsUsingSettings(
601
+ message1, message2, false, message1_fields, message2_fields,
602
+ &parent_fields);
603
+ }
604
+
605
+ return result;
606
+ }
607
+
608
+ bool MessageDifferencer::Compare(const Message& message1,
609
+ const Message& message2, int unpacked_any,
610
+ std::vector<SpecificField>* parent_fields) {
611
+ // Expand google.protobuf.Any payload if possible.
612
+ if (message1.GetDescriptor()->full_name() == internal::kAnyFullTypeName) {
613
+ std::unique_ptr<Message> data1;
614
+ std::unique_ptr<Message> data2;
615
+ if (unpack_any_field_.UnpackAny(message1, &data1) &&
616
+ unpack_any_field_.UnpackAny(message2, &data2) &&
617
+ data1->GetDescriptor() == data2->GetDescriptor()) {
618
+ return Compare(*data1, *data2, unpacked_any + 1, parent_fields);
619
+ }
620
+ // If the Any payload is unparsable, or the payload types are different
621
+ // between message1 and message2, fall through and treat Any as a regular
622
+ // proto.
623
+ }
624
+
625
+ bool unknown_compare_result = true;
626
+ // Ignore unknown fields in EQUIVALENT mode
627
+ if (message_field_comparison_ != EQUIVALENT) {
628
+ const Reflection* reflection1 = message1.GetReflection();
629
+ const Reflection* reflection2 = message2.GetReflection();
630
+ const UnknownFieldSet& unknown_field_set1 =
631
+ reflection1->GetUnknownFields(message1);
632
+ const UnknownFieldSet& unknown_field_set2 =
633
+ reflection2->GetUnknownFields(message2);
634
+ if (!CompareUnknownFields(message1, message2, unknown_field_set1,
635
+ unknown_field_set2, parent_fields)) {
636
+ if (reporter_ == nullptr) {
637
+ return false;
638
+ }
639
+ unknown_compare_result = false;
640
+ }
641
+ }
642
+
643
+ std::vector<const FieldDescriptor*> message1_fields =
644
+ RetrieveFields(message1, true);
645
+ std::vector<const FieldDescriptor*> message2_fields =
646
+ RetrieveFields(message2, false);
647
+
648
+ return CompareRequestedFieldsUsingSettings(message1, message2, unpacked_any,
649
+ message1_fields, message2_fields,
650
+ parent_fields) &&
651
+ unknown_compare_result;
652
+ }
653
+
654
+ std::vector<const FieldDescriptor*> MessageDifferencer::RetrieveFields(
655
+ const Message& message, bool base_message) {
656
+ const Descriptor* descriptor = message.GetDescriptor();
657
+
658
+ std::vector<const FieldDescriptor*> message_fields;
659
+ message_fields.reserve(descriptor->field_count() + 1);
660
+
661
+ const Reflection* reflection = message.GetReflection();
662
+ if (descriptor->options().map_entry()) {
663
+ if (this->scope_ == PARTIAL && base_message) {
664
+ reflection->ListFields(message, &message_fields);
665
+ } else {
666
+ // Map entry fields are always considered present.
667
+ for (int i = 0; i < descriptor->field_count(); i++) {
668
+ message_fields.push_back(descriptor->field(i));
669
+ }
670
+ }
671
+ } else {
672
+ reflection->ListFields(message, &message_fields);
673
+ }
674
+ // Add sentinel values to deal with the
675
+ // case where the number of the fields in
676
+ // each list are different.
677
+ message_fields.push_back(nullptr);
678
+
679
+ return message_fields;
680
+ }
681
+
682
+ bool MessageDifferencer::CompareRequestedFieldsUsingSettings(
683
+ const Message& message1, const Message& message2, int unpacked_any,
684
+ const std::vector<const FieldDescriptor*>& message1_fields,
685
+ const std::vector<const FieldDescriptor*>& message2_fields,
686
+ std::vector<SpecificField>* parent_fields) {
687
+ if (scope_ == FULL) {
688
+ if (message_field_comparison_ == EQUIVALENT) {
689
+ // We need to merge the field lists of both messages (i.e.
690
+ // we are merely checking for a difference in field values,
691
+ // rather than the addition or deletion of fields).
692
+ std::vector<const FieldDescriptor*> fields_union =
693
+ CombineFields(message1, message1_fields, FULL, message2_fields, FULL);
694
+ return CompareWithFieldsInternal(message1, message2, unpacked_any,
695
+ fields_union, fields_union,
696
+ parent_fields);
697
+ } else {
698
+ // Simple equality comparison, use the unaltered field lists.
699
+ return CompareWithFieldsInternal(message1, message2, unpacked_any,
700
+ message1_fields, message2_fields,
701
+ parent_fields);
702
+ }
703
+ } else {
704
+ if (message_field_comparison_ == EQUIVALENT) {
705
+ // We use the list of fields for message1 for both messages when
706
+ // comparing. This way, extra fields in message2 are ignored,
707
+ // and missing fields in message2 use their default value.
708
+ return CompareWithFieldsInternal(message1, message2, unpacked_any,
709
+ message1_fields, message1_fields,
710
+ parent_fields);
711
+ } else {
712
+ // We need to consider the full list of fields for message1
713
+ // but only the intersection for message2. This way, any fields
714
+ // only present in message2 will be ignored, but any fields only
715
+ // present in message1 will be marked as a difference.
716
+ std::vector<const FieldDescriptor*> fields_intersection = CombineFields(
717
+ message1, message1_fields, PARTIAL, message2_fields, PARTIAL);
718
+ return CompareWithFieldsInternal(message1, message2, unpacked_any,
719
+ message1_fields, fields_intersection,
720
+ parent_fields);
721
+ }
722
+ }
723
+ }
724
+
725
+ namespace {
726
+ bool ValidMissingField(const FieldDescriptor& f) {
727
+ switch (f.cpp_type()) {
728
+ case FieldDescriptor::CPPTYPE_INT32:
729
+ case FieldDescriptor::CPPTYPE_UINT32:
730
+ case FieldDescriptor::CPPTYPE_INT64:
731
+ case FieldDescriptor::CPPTYPE_UINT64:
732
+ case FieldDescriptor::CPPTYPE_FLOAT:
733
+ case FieldDescriptor::CPPTYPE_DOUBLE:
734
+ case FieldDescriptor::CPPTYPE_STRING:
735
+ case FieldDescriptor::CPPTYPE_BOOL:
736
+ case FieldDescriptor::CPPTYPE_ENUM:
737
+ return true;
738
+ default:
739
+ return false;
740
+ }
741
+ }
742
+ } // namespace
743
+
744
+ bool MessageDifferencer::ShouldCompareNoPresence(
745
+ const Message& message1, const Reflection& reflection1,
746
+ const FieldDescriptor* field2) const {
747
+ const bool compare_no_presence_by_field = force_compare_no_presence_ &&
748
+ !field2->has_presence() &&
749
+ !field2->is_repeated();
750
+ if (compare_no_presence_by_field) {
751
+ return true;
752
+ }
753
+ const bool compare_no_presence_by_address =
754
+ !field2->is_repeated() && !field2->has_presence() &&
755
+ ValidMissingField(*field2) &&
756
+ require_no_presence_fields_.ids_.contains(
757
+ TextFormat::Parser::UnsetFieldsMetadata::GetUnsetFieldId(message1,
758
+ *field2));
759
+ return compare_no_presence_by_address;
760
+ }
761
+
762
+ std::vector<const FieldDescriptor*> MessageDifferencer::CombineFields(
763
+ const Message& message1, const std::vector<const FieldDescriptor*>& fields1,
764
+ Scope fields1_scope, const std::vector<const FieldDescriptor*>& fields2,
765
+ Scope fields2_scope) {
766
+ const Reflection* reflection1 = message1.GetReflection();
767
+ size_t index1 = 0;
768
+ size_t index2 = 0;
769
+
770
+ std::vector<const FieldDescriptor*> combined_fields;
771
+ combined_fields.reserve(1 + std::max(fields1.size(), fields2.size()));
772
+
773
+ while (index1 < fields1.size() && index2 < fields2.size()) {
774
+ const FieldDescriptor* field1 = fields1[index1];
775
+ const FieldDescriptor* field2 = fields2[index2];
776
+
777
+ if (FieldBefore(field1, field2)) {
778
+ if (fields1_scope == FULL) {
779
+ combined_fields.push_back(field1);
780
+ }
781
+ ++index1;
782
+ } else if (FieldBefore(field2, field1)) {
783
+ if (fields2_scope == FULL) {
784
+ combined_fields.push_back(field2);
785
+ } else if (fields2_scope == PARTIAL &&
786
+ ShouldCompareNoPresence(message1, *reflection1, field2)) {
787
+ // In order to make MessageDifferencer play nicely with no-presence
788
+ // fields in unit tests, we want to check if the expected proto
789
+ // (message1) has some fields which are set to their default value but
790
+ // are not set to their default value in message2 (the actual message).
791
+ // Those fields will appear in fields2 (since they have non default
792
+ // value) but will not appear in fields1 (since they have the default
793
+ // value or were never set).
794
+ force_compare_no_presence_fields_.insert(field2);
795
+ combined_fields.push_back(field2);
796
+ }
797
+ ++index2;
798
+ } else {
799
+ combined_fields.push_back(field1);
800
+ ++index1;
801
+ ++index2;
802
+ }
803
+ }
804
+
805
+ combined_fields.push_back(nullptr);
806
+
807
+ return combined_fields;
808
+ }
809
+
810
+ // We push an element via a NOINLINE function to avoid using stack space on
811
+ // the caller for a temporary SpecificField object. They are quite large.
812
+ static PROTOBUF_NOINLINE MessageDifferencer::SpecificField& PushSpecificField(
813
+ std::vector<MessageDifferencer::SpecificField>* fields) {
814
+ fields->emplace_back();
815
+ return fields->back();
816
+ }
817
+
818
+ void MessageDifferencer::ForceCompareField(const FieldDescriptor* field) {
819
+ if (force_compare_no_presence_fields_.contains(field)) {
820
+ force_compare_failure_triggering_fields_.emplace(field->full_name());
821
+ }
822
+ }
823
+
824
+ bool MessageDifferencer::CompareWithFieldsInternal(
825
+ const Message& message1, const Message& message2, int unpacked_any,
826
+ const std::vector<const FieldDescriptor*>& message1_fields,
827
+ const std::vector<const FieldDescriptor*>& message2_fields,
828
+ std::vector<SpecificField>* parent_fields) {
829
+ bool isDifferent = false;
830
+ int field_index1 = 0;
831
+ int field_index2 = 0;
832
+
833
+ const Reflection* reflection1 = message1.GetReflection();
834
+ const Reflection* reflection2 = message2.GetReflection();
835
+
836
+ while (true) {
837
+ const FieldDescriptor* field1 = message1_fields[field_index1];
838
+ const FieldDescriptor* field2 = message2_fields[field_index2];
839
+
840
+ // Once we have reached sentinel values, we are done the comparison.
841
+ if (field1 == nullptr && field2 == nullptr) {
842
+ break;
843
+ }
844
+
845
+ // Check for differences in the field itself.
846
+ if (FieldBefore(field1, field2)) {
847
+ // Field 1 is not in the field list for message 2.
848
+ if (IsIgnored(message1, message2, field1, *parent_fields)) {
849
+ // We are ignoring field1. Report the ignore and move on to
850
+ // the next field in message1_fields.
851
+ if (reporter_ != nullptr) {
852
+ SpecificField& specific_field = PushSpecificField(parent_fields);
853
+ specific_field.message1 = &message1;
854
+ specific_field.message2 = &message2;
855
+ specific_field.unpacked_any = unpacked_any;
856
+ specific_field.field = field1;
857
+ if (report_ignores_) {
858
+ reporter_->ReportIgnored(message1, message2, *parent_fields);
859
+ }
860
+ parent_fields->pop_back();
861
+ }
862
+ ++field_index1;
863
+ continue;
864
+ }
865
+
866
+ if (reporter_ != nullptr) {
867
+ assert(field1 != nullptr);
868
+ int count = field1->is_repeated()
869
+ ? reflection1->FieldSize(message1, field1)
870
+ : 1;
871
+
872
+ for (int i = 0; i < count; ++i) {
873
+ SpecificField& specific_field = PushSpecificField(parent_fields);
874
+ specific_field.message1 = &message1;
875
+ specific_field.message2 = &message2;
876
+ specific_field.unpacked_any = unpacked_any;
877
+ specific_field.field = field1;
878
+ if (field1->is_repeated()) {
879
+ AddSpecificIndex(&specific_field, message1, field1, i);
880
+ } else {
881
+ specific_field.index = -1;
882
+ }
883
+
884
+ reporter_->ReportDeleted(message1, message2, *parent_fields);
885
+ parent_fields->pop_back();
886
+ }
887
+
888
+ isDifferent = true;
889
+ } else {
890
+ return false;
891
+ }
892
+
893
+ ++field_index1;
894
+ continue;
895
+ } else if (FieldBefore(field2, field1)) {
896
+ const bool ignore_field =
897
+ IsIgnored(message1, message2, field2, *parent_fields);
898
+ if (!ignore_field) {
899
+ ForceCompareField(field2);
900
+ }
901
+
902
+ // Field 2 is not in the field list for message 1.
903
+ if (ignore_field) {
904
+ // We are ignoring field2. Report the ignore and move on to
905
+ // the next field in message2_fields.
906
+ if (reporter_ != nullptr) {
907
+ SpecificField& specific_field = PushSpecificField(parent_fields);
908
+ specific_field.message1 = &message1;
909
+ specific_field.message2 = &message2;
910
+ specific_field.unpacked_any = unpacked_any;
911
+ specific_field.field = field2;
912
+ if (report_ignores_) {
913
+ reporter_->ReportIgnored(message1, message2, *parent_fields);
914
+ }
915
+ parent_fields->pop_back();
916
+ }
917
+ ++field_index2;
918
+ continue;
919
+ }
920
+
921
+ if (reporter_ != nullptr) {
922
+ int count = field2->is_repeated()
923
+ ? reflection2->FieldSize(message2, field2)
924
+ : 1;
925
+
926
+ for (int i = 0; i < count; ++i) {
927
+ SpecificField& specific_field = PushSpecificField(parent_fields);
928
+ specific_field.message1 = &message1,
929
+ specific_field.message2 = &message2;
930
+ specific_field.unpacked_any = unpacked_any;
931
+ specific_field.field = field2;
932
+ if (field2->is_repeated()) {
933
+ specific_field.index = i;
934
+ AddSpecificNewIndex(&specific_field, message2, field2, i);
935
+ } else {
936
+ specific_field.index = -1;
937
+ specific_field.new_index = -1;
938
+ }
939
+
940
+ specific_field.forced_compare_no_presence_ =
941
+ force_compare_no_presence_ &&
942
+ force_compare_no_presence_fields_.contains(specific_field.field);
943
+
944
+ reporter_->ReportAdded(message1, message2, *parent_fields);
945
+ parent_fields->pop_back();
946
+ }
947
+
948
+ isDifferent = true;
949
+ } else {
950
+ return false;
951
+ }
952
+
953
+ ++field_index2;
954
+ continue;
955
+ }
956
+
957
+ // By this point, field1 and field2 are guaranteed to point to the same
958
+ // field, so we can now compare the values.
959
+ if (IsIgnored(message1, message2, field1, *parent_fields)) {
960
+ // Ignore this field. Report and move on.
961
+ if (reporter_ != nullptr) {
962
+ SpecificField& specific_field = PushSpecificField(parent_fields);
963
+ specific_field.message1 = &message1;
964
+ specific_field.message2 = &message2;
965
+ specific_field.unpacked_any = unpacked_any;
966
+ specific_field.field = field1;
967
+ if (report_ignores_) {
968
+ reporter_->ReportIgnored(message1, message2, *parent_fields);
969
+ }
970
+ parent_fields->pop_back();
971
+ }
972
+
973
+ ++field_index1;
974
+ ++field_index2;
975
+ continue;
976
+ }
977
+
978
+ bool fieldDifferent = false;
979
+ assert(field1 != nullptr);
980
+ if (field1->is_map()) {
981
+ fieldDifferent = !CompareMapField(message1, message2, unpacked_any,
982
+ field1, parent_fields);
983
+ } else if (field1->is_repeated()) {
984
+ fieldDifferent = !CompareRepeatedField(message1, message2, unpacked_any,
985
+ field1, parent_fields);
986
+ } else {
987
+ fieldDifferent = !CompareFieldValueUsingParentFields(
988
+ message1, message2, unpacked_any, field1, -1, -1, parent_fields);
989
+
990
+ ForceCompareField(field1);
991
+
992
+ if (reporter_ != nullptr) {
993
+ SpecificField& specific_field = PushSpecificField(parent_fields);
994
+ specific_field.message1 = &message1;
995
+ specific_field.message2 = &message2;
996
+ specific_field.unpacked_any = unpacked_any;
997
+ specific_field.field = field1;
998
+ specific_field.forced_compare_no_presence_ =
999
+ force_compare_no_presence_ &&
1000
+ force_compare_no_presence_fields_.contains(field1);
1001
+
1002
+ if (fieldDifferent) {
1003
+ reporter_->ReportModified(message1, message2, *parent_fields);
1004
+ isDifferent = true;
1005
+ } else if (report_matches_) {
1006
+ reporter_->ReportMatched(message1, message2, *parent_fields);
1007
+ }
1008
+ parent_fields->pop_back();
1009
+ }
1010
+ }
1011
+ if (fieldDifferent) {
1012
+ if (reporter_ == nullptr) return false;
1013
+ isDifferent = true;
1014
+ }
1015
+ // Increment the field indices.
1016
+ ++field_index1;
1017
+ ++field_index2;
1018
+ }
1019
+
1020
+ return !isDifferent;
1021
+ }
1022
+
1023
+ bool MessageDifferencer::IsMatch(
1024
+ const FieldDescriptor* repeated_field,
1025
+ const MapKeyComparator* key_comparator, const Message* message1,
1026
+ const Message* message2, int unpacked_any,
1027
+ const std::vector<SpecificField>& parent_fields, Reporter* reporter,
1028
+ int index1, int index2) {
1029
+ std::vector<SpecificField> current_parent_fields(parent_fields);
1030
+ if (repeated_field->cpp_type() != FieldDescriptor::CPPTYPE_MESSAGE) {
1031
+ return CompareFieldValueUsingParentFields(
1032
+ *message1, *message2, unpacked_any, repeated_field, index1, index2,
1033
+ &current_parent_fields);
1034
+ }
1035
+ // Back up the Reporter and output_string_. They will be reset in the
1036
+ // following code.
1037
+ Reporter* backup_reporter = reporter_;
1038
+ std::string* output_string = output_string_;
1039
+ reporter_ = reporter;
1040
+ output_string_ = nullptr;
1041
+ bool match;
1042
+
1043
+ if (key_comparator == nullptr) {
1044
+ match = CompareFieldValueUsingParentFields(
1045
+ *message1, *message2, unpacked_any, repeated_field, index1, index2,
1046
+ &current_parent_fields);
1047
+ } else {
1048
+ const Reflection* reflection1 = message1->GetReflection();
1049
+ const Reflection* reflection2 = message2->GetReflection();
1050
+ const Message& m1 =
1051
+ reflection1->GetRepeatedMessage(*message1, repeated_field, index1);
1052
+ const Message& m2 =
1053
+ reflection2->GetRepeatedMessage(*message2, repeated_field, index2);
1054
+ SpecificField specific_field;
1055
+ specific_field.message1 = message1;
1056
+ specific_field.message2 = message2;
1057
+ specific_field.unpacked_any = unpacked_any;
1058
+ specific_field.field = repeated_field;
1059
+ if (repeated_field->is_map()) {
1060
+ specific_field.map_entry1 = &m1;
1061
+ specific_field.map_entry2 = &m2;
1062
+ }
1063
+ specific_field.index = index1;
1064
+ specific_field.new_index = index2;
1065
+ current_parent_fields.push_back(specific_field);
1066
+ match = key_comparator->IsMatch(m1, m2, false, current_parent_fields);
1067
+ }
1068
+
1069
+ reporter_ = backup_reporter;
1070
+ output_string_ = output_string;
1071
+ return match;
1072
+ }
1073
+
1074
+ bool MessageDifferencer::CompareMapFieldByMapReflection(
1075
+ const Message& message1, const Message& message2, int unpacked_any,
1076
+ const FieldDescriptor* map_field, std::vector<SpecificField>* parent_fields,
1077
+ DefaultFieldComparator* comparator) {
1078
+ ABSL_DCHECK_EQ(nullptr, reporter_);
1079
+ ABSL_DCHECK(map_field->is_map());
1080
+ ABSL_DCHECK(!map_field_key_comparator_.contains(map_field));
1081
+ ABSL_DCHECK_EQ(repeated_field_comparison_, AS_LIST);
1082
+ const Reflection* reflection1 = message1.GetReflection();
1083
+ const Reflection* reflection2 = message2.GetReflection();
1084
+ const int count1 = reflection1->MapSize(message1, map_field);
1085
+ const int count2 = reflection2->MapSize(message2, map_field);
1086
+ const bool treated_as_subset = IsTreatedAsSubset(map_field);
1087
+ if (count1 != count2 && !treated_as_subset) {
1088
+ return false;
1089
+ }
1090
+ if (count1 > count2) {
1091
+ return false;
1092
+ }
1093
+
1094
+ // First pass: check whether the same keys are present.
1095
+ for (ConstMapIterator it = reflection1->ConstMapBegin(&message1, map_field),
1096
+ it_end = reflection1->ConstMapEnd(&message1, map_field);
1097
+ it != it_end; ++it) {
1098
+ if (!reflection2->ContainsMapKey(message2, map_field, it.GetKey())) {
1099
+ return false;
1100
+ }
1101
+ }
1102
+
1103
+ // Second pass: compare values for matching keys.
1104
+ const FieldDescriptor* val_des = map_field->message_type()->map_value();
1105
+ switch (val_des->cpp_type()) {
1106
+ #define HANDLE_TYPE(CPPTYPE, METHOD, COMPAREMETHOD) \
1107
+ case FieldDescriptor::CPPTYPE_##CPPTYPE: { \
1108
+ for (ConstMapIterator \
1109
+ it = reflection1->ConstMapBegin(&message1, map_field), \
1110
+ it_end = reflection1->ConstMapEnd(&message1, map_field); \
1111
+ it != it_end; ++it) { \
1112
+ MapValueConstRef value2; \
1113
+ reflection2->LookupMapValue(message2, map_field, it.GetKey(), &value2); \
1114
+ if (!comparator->Compare##COMPAREMETHOD(*val_des, \
1115
+ it.GetValueRef().Get##METHOD(), \
1116
+ value2.Get##METHOD())) { \
1117
+ return false; \
1118
+ } \
1119
+ } \
1120
+ break; \
1121
+ }
1122
+ HANDLE_TYPE(INT32, Int32Value, Int32);
1123
+ HANDLE_TYPE(INT64, Int64Value, Int64);
1124
+ HANDLE_TYPE(UINT32, UInt32Value, UInt32);
1125
+ HANDLE_TYPE(UINT64, UInt64Value, UInt64);
1126
+ HANDLE_TYPE(DOUBLE, DoubleValue, Double);
1127
+ HANDLE_TYPE(FLOAT, FloatValue, Float);
1128
+ HANDLE_TYPE(BOOL, BoolValue, Bool);
1129
+ HANDLE_TYPE(STRING, StringValue, String);
1130
+ HANDLE_TYPE(ENUM, EnumValue, Int32);
1131
+ #undef HANDLE_TYPE
1132
+ case FieldDescriptor::CPPTYPE_MESSAGE: {
1133
+ for (ConstMapIterator it =
1134
+ reflection1->ConstMapBegin(&message1, map_field);
1135
+ it != reflection1->ConstMapEnd(&message1, map_field); ++it) {
1136
+ if (!reflection2->ContainsMapKey(message2, map_field, it.GetKey())) {
1137
+ return false;
1138
+ }
1139
+ bool compare_result;
1140
+ MapValueConstRef value2;
1141
+ reflection2->LookupMapValue(message2, map_field, it.GetKey(), &value2);
1142
+ // Append currently compared field to the end of parent_fields.
1143
+ SpecificField specific_value_field;
1144
+ specific_value_field.message1 = &message1;
1145
+ specific_value_field.message2 = &message2;
1146
+ specific_value_field.unpacked_any = unpacked_any;
1147
+ specific_value_field.field = val_des;
1148
+ parent_fields->push_back(specific_value_field);
1149
+ compare_result =
1150
+ Compare(it.GetValueRef().GetMessageValue(),
1151
+ value2.GetMessageValue(), false, parent_fields);
1152
+ parent_fields->pop_back();
1153
+ if (!compare_result) {
1154
+ return false;
1155
+ }
1156
+ }
1157
+ break;
1158
+ }
1159
+ }
1160
+ return true;
1161
+ }
1162
+
1163
+ bool MessageDifferencer::CompareMapField(
1164
+ const Message& message1, const Message& message2, int unpacked_any,
1165
+ const FieldDescriptor* repeated_field,
1166
+ std::vector<SpecificField>* parent_fields) {
1167
+ ABSL_DCHECK(repeated_field->is_map());
1168
+
1169
+ // the input FieldDescriptor is guaranteed to be repeated field.
1170
+ const Reflection* reflection1 = message1.GetReflection();
1171
+ const Reflection* reflection2 = message2.GetReflection();
1172
+
1173
+ // When both map fields are on map, do not sync to repeated field.
1174
+ if (reflection1->GetMapData(message1, repeated_field)->IsMapValid() &&
1175
+ reflection2->GetMapData(message2, repeated_field)->IsMapValid() &&
1176
+ // TODO: Add support for reporter
1177
+ reporter_ == nullptr &&
1178
+ // Users didn't set custom map field key comparator
1179
+ !map_field_key_comparator_.contains(repeated_field) &&
1180
+ // Users didn't set repeated field comparison
1181
+ repeated_field_comparison_ == AS_LIST &&
1182
+ // Users didn't set their own FieldComparator implementation
1183
+ field_comparator_kind_ == kFCDefault) {
1184
+ const FieldDescriptor* key_des = repeated_field->message_type()->map_key();
1185
+ const FieldDescriptor* val_des =
1186
+ repeated_field->message_type()->map_value();
1187
+ std::vector<SpecificField> current_parent_fields(*parent_fields);
1188
+ SpecificField specific_field;
1189
+ specific_field.message1 = &message1;
1190
+ specific_field.message2 = &message2;
1191
+ specific_field.unpacked_any = unpacked_any;
1192
+ specific_field.field = repeated_field;
1193
+ current_parent_fields.push_back(specific_field);
1194
+ if (!IsIgnored(message1, message2, key_des, current_parent_fields) &&
1195
+ !IsIgnored(message1, message2, val_des, current_parent_fields)) {
1196
+ return CompareMapFieldByMapReflection(
1197
+ message1, message2, unpacked_any, repeated_field,
1198
+ &current_parent_fields, field_comparator_.default_impl);
1199
+ }
1200
+ }
1201
+
1202
+ return CompareRepeatedRep(message1, message2, unpacked_any, repeated_field,
1203
+ parent_fields);
1204
+ }
1205
+
1206
+ bool MessageDifferencer::CompareRepeatedField(
1207
+ const Message& message1, const Message& message2, int unpacked_any,
1208
+ const FieldDescriptor* repeated_field,
1209
+ std::vector<SpecificField>* parent_fields) {
1210
+ ABSL_DCHECK(!repeated_field->is_map());
1211
+ return CompareRepeatedRep(message1, message2, unpacked_any, repeated_field,
1212
+ parent_fields);
1213
+ }
1214
+
1215
+ bool MessageDifferencer::CompareRepeatedRep(
1216
+ const Message& message1, const Message& message2, int unpacked_any,
1217
+ const FieldDescriptor* repeated_field,
1218
+ std::vector<SpecificField>* parent_fields) {
1219
+ // the input FieldDescriptor is guaranteed to be repeated field.
1220
+ ABSL_DCHECK(repeated_field->is_repeated());
1221
+ const Reflection* reflection1 = message1.GetReflection();
1222
+ const Reflection* reflection2 = message2.GetReflection();
1223
+
1224
+ const int count1 = reflection1->FieldSize(message1, repeated_field);
1225
+ const int count2 = reflection2->FieldSize(message2, repeated_field);
1226
+ const bool treated_as_subset = IsTreatedAsSubset(repeated_field);
1227
+
1228
+ // If the field is not treated as subset and no detailed reports is needed,
1229
+ // we do a quick check on the number of the elements to avoid unnecessary
1230
+ // comparison.
1231
+ if (count1 != count2 && reporter_ == nullptr && !treated_as_subset) {
1232
+ return false;
1233
+ }
1234
+ // A match can never be found if message1 has more items than message2.
1235
+ if (count1 > count2 && reporter_ == nullptr) {
1236
+ return false;
1237
+ }
1238
+
1239
+ // These two list are used for store the index of the correspondent
1240
+ // element in peer repeated field.
1241
+ std::vector<int> match_list1;
1242
+ std::vector<int> match_list2;
1243
+
1244
+ const MapKeyComparator* key_comparator = GetMapKeyComparator(repeated_field);
1245
+ bool smart_list = IsTreatedAsSmartList(repeated_field);
1246
+ bool simple_list = key_comparator == nullptr &&
1247
+ !IsTreatedAsSet(repeated_field) &&
1248
+ !IsTreatedAsSmartSet(repeated_field) && !smart_list;
1249
+
1250
+ // For simple lists, we avoid matching repeated field indices, saving the
1251
+ // memory allocations that would otherwise be needed for match_list1 and
1252
+ // match_list2.
1253
+ if (!simple_list) {
1254
+ // Try to match indices of the repeated fields. Return false if match fails.
1255
+ if (!MatchRepeatedFieldIndices(
1256
+ message1, message2, unpacked_any, repeated_field, key_comparator,
1257
+ *parent_fields, &match_list1, &match_list2) &&
1258
+ reporter_ == nullptr) {
1259
+ return false;
1260
+ }
1261
+ }
1262
+
1263
+ bool fieldDifferent = false;
1264
+ SpecificField specific_field;
1265
+ specific_field.message1 = &message1;
1266
+ specific_field.message2 = &message2;
1267
+ specific_field.unpacked_any = unpacked_any;
1268
+ specific_field.field = repeated_field;
1269
+
1270
+ // At this point, we have already matched pairs of fields (with the reporting
1271
+ // to be done later). Now to check if the paired elements are different.
1272
+ int next_unmatched_index = 0;
1273
+ for (int i = 0; i < count1; i++) {
1274
+ if (simple_list && i >= count2) {
1275
+ break;
1276
+ }
1277
+ if (!simple_list && match_list1[i] == -1) {
1278
+ if (smart_list) {
1279
+ if (reporter_ == nullptr) return false;
1280
+ AddSpecificIndex(&specific_field, message1, repeated_field, i);
1281
+ parent_fields->push_back(specific_field);
1282
+ reporter_->ReportDeleted(message1, message2, *parent_fields);
1283
+ parent_fields->pop_back();
1284
+ fieldDifferent = true;
1285
+ // Use -2 to mark this element has been reported.
1286
+ match_list1[i] = -2;
1287
+ }
1288
+ continue;
1289
+ }
1290
+ if (smart_list) {
1291
+ for (int j = next_unmatched_index; j < match_list1[i]; ++j) {
1292
+ ABSL_CHECK_LE(0, j);
1293
+ if (reporter_ == nullptr) return false;
1294
+ specific_field.index = j;
1295
+ AddSpecificNewIndex(&specific_field, message2, repeated_field, j);
1296
+ parent_fields->push_back(specific_field);
1297
+ reporter_->ReportAdded(message1, message2, *parent_fields);
1298
+ parent_fields->pop_back();
1299
+ fieldDifferent = true;
1300
+ // Use -2 to mark this element has been reported.
1301
+ match_list2[j] = -2;
1302
+ }
1303
+ }
1304
+ AddSpecificIndex(&specific_field, message1, repeated_field, i);
1305
+ if (simple_list) {
1306
+ AddSpecificNewIndex(&specific_field, message2, repeated_field, i);
1307
+ } else {
1308
+ AddSpecificNewIndex(&specific_field, message2, repeated_field,
1309
+ match_list1[i]);
1310
+ next_unmatched_index = match_list1[i] + 1;
1311
+ }
1312
+
1313
+ const bool result = CompareFieldValueUsingParentFields(
1314
+ message1, message2, unpacked_any, repeated_field, i,
1315
+ specific_field.new_index, parent_fields);
1316
+
1317
+ // If we have found differences, either report them or terminate if
1318
+ // no reporter is present. Note that ReportModified, ReportMoved, and
1319
+ // ReportMatched are all mutually exclusive.
1320
+ if (!result) {
1321
+ if (reporter_ == nullptr) return false;
1322
+ parent_fields->push_back(specific_field);
1323
+ reporter_->ReportModified(message1, message2, *parent_fields);
1324
+ parent_fields->pop_back();
1325
+ fieldDifferent = true;
1326
+ } else if (reporter_ != nullptr &&
1327
+ specific_field.index != specific_field.new_index &&
1328
+ !specific_field.field->is_map() && report_moves_) {
1329
+ parent_fields->push_back(specific_field);
1330
+ reporter_->ReportMoved(message1, message2, *parent_fields);
1331
+ parent_fields->pop_back();
1332
+ } else if (report_matches_ && reporter_ != nullptr) {
1333
+ parent_fields->push_back(specific_field);
1334
+ reporter_->ReportMatched(message1, message2, *parent_fields);
1335
+ parent_fields->pop_back();
1336
+ }
1337
+ }
1338
+
1339
+ // Report any remaining additions or deletions.
1340
+ for (int i = 0; i < count2; ++i) {
1341
+ if (!simple_list && match_list2[i] != -1) continue;
1342
+ if (simple_list && i < count1) continue;
1343
+ if (!treated_as_subset) {
1344
+ fieldDifferent = true;
1345
+ }
1346
+
1347
+ if (reporter_ == nullptr) continue;
1348
+ specific_field.index = i;
1349
+ AddSpecificNewIndex(&specific_field, message2, repeated_field, i);
1350
+ parent_fields->push_back(specific_field);
1351
+ reporter_->ReportAdded(message1, message2, *parent_fields);
1352
+ parent_fields->pop_back();
1353
+ }
1354
+
1355
+ for (int i = 0; i < count1; ++i) {
1356
+ if (!simple_list && match_list1[i] != -1) continue;
1357
+ if (simple_list && i < count2) continue;
1358
+ assert(reporter_ != nullptr);
1359
+ AddSpecificIndex(&specific_field, message1, repeated_field, i);
1360
+ parent_fields->push_back(specific_field);
1361
+ reporter_->ReportDeleted(message1, message2, *parent_fields);
1362
+ parent_fields->pop_back();
1363
+ fieldDifferent = true;
1364
+ }
1365
+ return !fieldDifferent;
1366
+ }
1367
+
1368
+ bool MessageDifferencer::CompareFieldValue(const Message& message1,
1369
+ const Message& message2,
1370
+ int unpacked_any,
1371
+ const FieldDescriptor* field,
1372
+ int index1, int index2) {
1373
+ return CompareFieldValueUsingParentFields(message1, message2, unpacked_any,
1374
+ field, index1, index2, nullptr);
1375
+ }
1376
+
1377
+ bool MessageDifferencer::CompareFieldValueUsingParentFields(
1378
+ const Message& message1, const Message& message2, int unpacked_any,
1379
+ const FieldDescriptor* field, int index1, int index2,
1380
+ std::vector<SpecificField>* parent_fields) {
1381
+ FieldContext field_context(parent_fields);
1382
+ FieldComparator::ComparisonResult result = GetFieldComparisonResult(
1383
+ message1, message2, field, index1, index2, &field_context);
1384
+
1385
+ if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE &&
1386
+ result == FieldComparator::RECURSE) {
1387
+ // Get the nested messages and compare them using one of the Compare
1388
+ // methods.
1389
+ const Reflection* reflection1 = message1.GetReflection();
1390
+ const Reflection* reflection2 = message2.GetReflection();
1391
+ const Message& m1 =
1392
+ field->is_repeated()
1393
+ ? reflection1->GetRepeatedMessage(message1, field, index1)
1394
+ : reflection1->GetMessage(message1, field);
1395
+ const Message& m2 =
1396
+ field->is_repeated()
1397
+ ? reflection2->GetRepeatedMessage(message2, field, index2)
1398
+ : reflection2->GetMessage(message2, field);
1399
+
1400
+ // parent_fields is used in calls to Reporter methods.
1401
+ if (parent_fields != nullptr) {
1402
+ // Append currently compared field to the end of parent_fields.
1403
+ SpecificField& specific_field = PushSpecificField(parent_fields);
1404
+ specific_field.message1 = &message1;
1405
+ specific_field.message2 = &message2;
1406
+ specific_field.unpacked_any = unpacked_any;
1407
+ specific_field.field = field;
1408
+ AddSpecificIndex(&specific_field, message1, field, index1);
1409
+ AddSpecificNewIndex(&specific_field, message2, field, index2);
1410
+ const bool compare_result = Compare(m1, m2, false, parent_fields);
1411
+ parent_fields->pop_back();
1412
+ return compare_result;
1413
+ } else {
1414
+ // Recreates parent_fields as if m1 and m2 had no parents.
1415
+ return Compare(m1, m2);
1416
+ }
1417
+ } else {
1418
+ return (result == FieldComparator::SAME);
1419
+ }
1420
+ }
1421
+
1422
+ bool MessageDifferencer::CheckPathChanged(
1423
+ const std::vector<SpecificField>& field_path) {
1424
+ for (const SpecificField& specific_field : field_path) {
1425
+ // Don't check indexes for map entries -- maps are unordered.
1426
+ if (specific_field.field != nullptr && specific_field.field->is_map())
1427
+ continue;
1428
+ if (specific_field.index != specific_field.new_index) return true;
1429
+ }
1430
+ return false;
1431
+ }
1432
+
1433
+ bool MessageDifferencer::IsTreatedAsSet(const FieldDescriptor* field) {
1434
+ if (!field->is_repeated()) return false;
1435
+ if (repeated_field_comparisons_.contains(field)) {
1436
+ return repeated_field_comparisons_[field] == AS_SET;
1437
+ }
1438
+ return GetMapKeyComparator(field) == nullptr &&
1439
+ repeated_field_comparison_ == AS_SET;
1440
+ }
1441
+
1442
+ bool MessageDifferencer::IsTreatedAsSmartSet(const FieldDescriptor* field) {
1443
+ if (!field->is_repeated()) return false;
1444
+ if (repeated_field_comparisons_.contains(field)) {
1445
+ return repeated_field_comparisons_[field] == AS_SMART_SET;
1446
+ }
1447
+ return GetMapKeyComparator(field) == nullptr &&
1448
+ repeated_field_comparison_ == AS_SMART_SET;
1449
+ }
1450
+
1451
+ bool MessageDifferencer::IsTreatedAsSmartList(const FieldDescriptor* field) {
1452
+ if (!field->is_repeated()) return false;
1453
+ if (repeated_field_comparisons_.contains(field)) {
1454
+ return repeated_field_comparisons_[field] == AS_SMART_LIST;
1455
+ }
1456
+ return GetMapKeyComparator(field) == nullptr &&
1457
+ repeated_field_comparison_ == AS_SMART_LIST;
1458
+ }
1459
+
1460
+ bool MessageDifferencer::IsTreatedAsSubset(const FieldDescriptor* field) {
1461
+ return scope_ == PARTIAL &&
1462
+ (IsTreatedAsSet(field) || GetMapKeyComparator(field) != nullptr);
1463
+ }
1464
+
1465
+ bool MessageDifferencer::IsIgnored(
1466
+ const Message& message1, const Message& message2,
1467
+ const FieldDescriptor* field,
1468
+ const std::vector<SpecificField>& parent_fields) {
1469
+ if (ignored_fields_.contains(field)) {
1470
+ return true;
1471
+ }
1472
+ for (const auto& criteria : ignore_criteria_) {
1473
+ if (criteria->IsIgnored(message1, message2, field, parent_fields)) {
1474
+ return true;
1475
+ }
1476
+ }
1477
+ return false;
1478
+ }
1479
+
1480
+ bool MessageDifferencer::IsUnknownFieldIgnored(
1481
+ const Message& message1, const Message& message2,
1482
+ const SpecificField& field,
1483
+ const std::vector<SpecificField>& parent_fields) {
1484
+ for (const auto& criteria : ignore_criteria_) {
1485
+ if (criteria->IsUnknownFieldIgnored(message1, message2, field,
1486
+ parent_fields)) {
1487
+ return true;
1488
+ }
1489
+ }
1490
+ return false;
1491
+ }
1492
+
1493
+ const MessageDifferencer::MapKeyComparator*
1494
+ MessageDifferencer ::GetMapKeyComparator(const FieldDescriptor* field) const {
1495
+ if (!field->is_repeated()) return nullptr;
1496
+ auto it = map_field_key_comparator_.find(field);
1497
+ if (it != map_field_key_comparator_.end()) {
1498
+ return it->second;
1499
+ }
1500
+ if (field->is_map()) {
1501
+ // field cannot already be treated as list or set since TreatAsList() and
1502
+ // TreatAsSet() call GetMapKeyComparator() and fail if it returns non-NULL.
1503
+ return &map_entry_key_comparator_;
1504
+ }
1505
+ return nullptr;
1506
+ }
1507
+
1508
+ namespace {
1509
+
1510
+ typedef std::pair<int, const UnknownField*> IndexUnknownFieldPair;
1511
+
1512
+ struct UnknownFieldOrdering {
1513
+ inline bool operator()(const IndexUnknownFieldPair& a,
1514
+ const IndexUnknownFieldPair& b) const {
1515
+ if (a.second->number() < b.second->number()) return true;
1516
+ if (a.second->number() > b.second->number()) return false;
1517
+ return a.second->type() < b.second->type();
1518
+ }
1519
+ };
1520
+
1521
+ } // namespace
1522
+
1523
+ bool MessageDifferencer::UnpackAnyField::UnpackAny(
1524
+ const Message& any, std::unique_ptr<Message>* data) {
1525
+ const Reflection* reflection = any.GetReflection();
1526
+ const FieldDescriptor* type_url_field;
1527
+ const FieldDescriptor* value_field;
1528
+ if (!internal::GetAnyFieldDescriptors(any, &type_url_field, &value_field)) {
1529
+ return false;
1530
+ }
1531
+ const std::string& type_url = reflection->GetString(any, type_url_field);
1532
+ std::string full_type_name;
1533
+ if (!internal::ParseAnyTypeUrl(type_url, &full_type_name)) {
1534
+ return false;
1535
+ }
1536
+
1537
+ const Descriptor* desc =
1538
+ any.GetDescriptor()->file()->pool()->FindMessageTypeByName(
1539
+ full_type_name);
1540
+ if (desc == nullptr) {
1541
+ return false;
1542
+ }
1543
+
1544
+ if (dynamic_message_factory_ == nullptr) {
1545
+ dynamic_message_factory_ = std::make_unique<DynamicMessageFactory>();
1546
+ }
1547
+ data->reset(dynamic_message_factory_->GetPrototype(desc)->New());
1548
+ std::string serialized_value = reflection->GetString(any, value_field);
1549
+ if (!(*data)->ParsePartialFromString(serialized_value)) {
1550
+ ABSL_DLOG(ERROR) << "Failed to parse value for " << full_type_name;
1551
+ return false;
1552
+ }
1553
+ return true;
1554
+ }
1555
+
1556
+ bool MessageDifferencer::CompareUnknownFields(
1557
+ const Message& message1, const Message& message2,
1558
+ const UnknownFieldSet& unknown_field_set1,
1559
+ const UnknownFieldSet& unknown_field_set2,
1560
+ std::vector<SpecificField>* parent_field) {
1561
+ // Ignore unknown fields in EQUIVALENT mode.
1562
+ if (message_field_comparison_ == EQUIVALENT) return true;
1563
+
1564
+ if (unknown_field_set1.empty() && unknown_field_set2.empty()) {
1565
+ return true;
1566
+ }
1567
+
1568
+ bool is_different = false;
1569
+
1570
+ // We first sort the unknown fields by field number and type (in other words,
1571
+ // in tag order), making sure to preserve ordering of values with the same
1572
+ // tag. This allows us to report only meaningful differences between the
1573
+ // two sets -- that is, differing values for the same tag. We use
1574
+ // IndexUnknownFieldPairs to keep track of the field's original index for
1575
+ // reporting purposes.
1576
+ std::vector<IndexUnknownFieldPair> fields1; // unknown_field_set1, sorted
1577
+ std::vector<IndexUnknownFieldPair> fields2; // unknown_field_set2, sorted
1578
+ fields1.reserve(unknown_field_set1.field_count());
1579
+ fields2.reserve(unknown_field_set2.field_count());
1580
+
1581
+ for (int i = 0; i < unknown_field_set1.field_count(); i++) {
1582
+ fields1.push_back(std::make_pair(i, &unknown_field_set1.field(i)));
1583
+ }
1584
+ for (int i = 0; i < unknown_field_set2.field_count(); i++) {
1585
+ fields2.push_back(std::make_pair(i, &unknown_field_set2.field(i)));
1586
+ }
1587
+
1588
+ UnknownFieldOrdering is_before;
1589
+ std::stable_sort(fields1.begin(), fields1.end(), is_before);
1590
+ std::stable_sort(fields2.begin(), fields2.end(), is_before);
1591
+
1592
+ // In order to fill in SpecificField::index, we have to keep track of how
1593
+ // many values we've seen with the same field number and type.
1594
+ // current_repeated points at the first field in this range, and
1595
+ // current_repeated_start{1,2} are the indexes of the first field in the
1596
+ // range within fields1 and fields2.
1597
+ const UnknownField* current_repeated = nullptr;
1598
+ int current_repeated_start1 = 0;
1599
+ int current_repeated_start2 = 0;
1600
+
1601
+ // Now that we have two sorted lists, we can detect fields which appear only
1602
+ // in one list or the other by traversing them simultaneously.
1603
+ size_t index1 = 0;
1604
+ size_t index2 = 0;
1605
+ while (index1 < fields1.size() || index2 < fields2.size()) {
1606
+ enum {
1607
+ ADDITION,
1608
+ DELETION,
1609
+ MODIFICATION,
1610
+ COMPARE_GROUPS,
1611
+ NO_CHANGE
1612
+ } change_type;
1613
+
1614
+ // focus_field is the field we're currently reporting on. (In the case
1615
+ // of a modification, it's the field on the left side.)
1616
+ const UnknownField* focus_field;
1617
+ bool match = false;
1618
+
1619
+ if (index2 == fields2.size() ||
1620
+ (index1 < fields1.size() &&
1621
+ is_before(fields1[index1], fields2[index2]))) {
1622
+ // fields1[index1] is not present in fields2.
1623
+ change_type = DELETION;
1624
+ focus_field = fields1[index1].second;
1625
+ } else if (index1 == fields1.size() ||
1626
+ is_before(fields2[index2], fields1[index1])) {
1627
+ // fields2[index2] is not present in fields1.
1628
+ if (scope_ == PARTIAL) {
1629
+ // Ignore.
1630
+ ++index2;
1631
+ continue;
1632
+ }
1633
+ change_type = ADDITION;
1634
+ focus_field = fields2[index2].second;
1635
+ } else {
1636
+ // Field type and number are the same. See if the values differ.
1637
+ change_type = MODIFICATION;
1638
+ focus_field = fields1[index1].second;
1639
+
1640
+ switch (focus_field->type()) {
1641
+ case UnknownField::TYPE_VARINT:
1642
+ match = fields1[index1].second->varint() ==
1643
+ fields2[index2].second->varint();
1644
+ break;
1645
+ case UnknownField::TYPE_FIXED32:
1646
+ match = fields1[index1].second->fixed32() ==
1647
+ fields2[index2].second->fixed32();
1648
+ break;
1649
+ case UnknownField::TYPE_FIXED64:
1650
+ match = fields1[index1].second->fixed64() ==
1651
+ fields2[index2].second->fixed64();
1652
+ break;
1653
+ case UnknownField::TYPE_LENGTH_DELIMITED:
1654
+ match = fields1[index1].second->length_delimited() ==
1655
+ fields2[index2].second->length_delimited();
1656
+ break;
1657
+ case UnknownField::TYPE_GROUP:
1658
+ // We must deal with this later, after building the SpecificField.
1659
+ change_type = COMPARE_GROUPS;
1660
+ break;
1661
+ }
1662
+ if (match && change_type != COMPARE_GROUPS) {
1663
+ change_type = NO_CHANGE;
1664
+ }
1665
+ }
1666
+
1667
+ if (current_repeated == nullptr ||
1668
+ focus_field->number() != current_repeated->number() ||
1669
+ focus_field->type() != current_repeated->type()) {
1670
+ // We've started a new repeated field.
1671
+ current_repeated = focus_field;
1672
+ current_repeated_start1 = index1;
1673
+ current_repeated_start2 = index2;
1674
+ }
1675
+
1676
+ if (change_type == NO_CHANGE && reporter_ == nullptr) {
1677
+ // Fields were already compared and matched and we have no reporter.
1678
+ ++index1;
1679
+ ++index2;
1680
+ continue;
1681
+ }
1682
+
1683
+ // Build the SpecificField. This is slightly complicated.
1684
+ SpecificField specific_field;
1685
+ specific_field.message1 = &message1;
1686
+ specific_field.message2 = &message2;
1687
+ specific_field.unknown_field_number = focus_field->number();
1688
+ specific_field.unknown_field_type = focus_field->type();
1689
+
1690
+ specific_field.unknown_field_set1 = &unknown_field_set1;
1691
+ specific_field.unknown_field_set2 = &unknown_field_set2;
1692
+
1693
+ if (change_type != ADDITION) {
1694
+ specific_field.unknown_field_index1 = fields1[index1].first;
1695
+ }
1696
+ if (change_type != DELETION) {
1697
+ specific_field.unknown_field_index2 = fields2[index2].first;
1698
+ }
1699
+
1700
+ // Calculate the field index.
1701
+ if (change_type == ADDITION) {
1702
+ specific_field.index = index2 - current_repeated_start2;
1703
+ specific_field.new_index = index2 - current_repeated_start2;
1704
+ } else {
1705
+ specific_field.index = index1 - current_repeated_start1;
1706
+ specific_field.new_index = index2 - current_repeated_start2;
1707
+ }
1708
+
1709
+ if (IsUnknownFieldIgnored(message1, message2, specific_field,
1710
+ *parent_field)) {
1711
+ if (report_ignores_ && reporter_ != nullptr) {
1712
+ parent_field->push_back(specific_field);
1713
+ reporter_->ReportUnknownFieldIgnored(message1, message2, *parent_field);
1714
+ parent_field->pop_back();
1715
+ }
1716
+ if (change_type != ADDITION) ++index1;
1717
+ if (change_type != DELETION) ++index2;
1718
+ continue;
1719
+ }
1720
+
1721
+ if (change_type == ADDITION || change_type == DELETION ||
1722
+ change_type == MODIFICATION) {
1723
+ if (reporter_ == nullptr) {
1724
+ // We found a difference and we have no reporter.
1725
+ return false;
1726
+ }
1727
+ is_different = true;
1728
+ }
1729
+
1730
+ parent_field->push_back(specific_field);
1731
+
1732
+ switch (change_type) {
1733
+ case ADDITION:
1734
+ reporter_->ReportAdded(message1, message2, *parent_field);
1735
+ ++index2;
1736
+ break;
1737
+ case DELETION:
1738
+ reporter_->ReportDeleted(message1, message2, *parent_field);
1739
+ ++index1;
1740
+ break;
1741
+ case MODIFICATION:
1742
+ reporter_->ReportModified(message1, message2, *parent_field);
1743
+ ++index1;
1744
+ ++index2;
1745
+ break;
1746
+ case COMPARE_GROUPS:
1747
+ if (!CompareUnknownFields(
1748
+ message1, message2, fields1[index1].second->group(),
1749
+ fields2[index2].second->group(), parent_field)) {
1750
+ if (reporter_ == nullptr) return false;
1751
+ is_different = true;
1752
+ reporter_->ReportModified(message1, message2, *parent_field);
1753
+ }
1754
+ ++index1;
1755
+ ++index2;
1756
+ break;
1757
+ case NO_CHANGE:
1758
+ ++index1;
1759
+ ++index2;
1760
+ if (report_matches_) {
1761
+ reporter_->ReportMatched(message1, message2, *parent_field);
1762
+ }
1763
+ }
1764
+
1765
+ parent_field->pop_back();
1766
+ }
1767
+
1768
+ return !is_different;
1769
+ }
1770
+
1771
+ namespace {
1772
+
1773
+ // Find maximum bipartite matching using the argumenting path algorithm.
1774
+ class MaximumMatcher {
1775
+ public:
1776
+ typedef std::function<bool(int, int)> NodeMatchCallback;
1777
+ // MaximumMatcher takes ownership of the passed in callback and uses it to
1778
+ // determine whether a node on the left side of the bipartial graph matches
1779
+ // a node on the right side. count1 is the number of nodes on the left side
1780
+ // of the graph and count2 to is the number of nodes on the right side.
1781
+ // Every node is referred to using 0-based indices.
1782
+ // If a maximum match is found, the result will be stored in match_list1 and
1783
+ // match_list2. match_list1[i] == j means the i-th node on the left side is
1784
+ // matched to the j-th node on the right side and match_list2[x] == y means
1785
+ // the x-th node on the right side is matched to y-th node on the left side.
1786
+ // match_list1[i] == -1 means the node is not matched. Same with match_list2.
1787
+ MaximumMatcher(int count1, int count2, NodeMatchCallback callback,
1788
+ std::vector<int>* match_list1, std::vector<int>* match_list2);
1789
+ MaximumMatcher(const MaximumMatcher&) = delete;
1790
+ MaximumMatcher& operator=(const MaximumMatcher&) = delete;
1791
+ // Find a maximum match and return the number of matched node pairs.
1792
+ // If early_return is true, this method will return 0 immediately when it
1793
+ // finds that not all nodes on the left side can be matched.
1794
+ int FindMaximumMatch(bool early_return);
1795
+
1796
+ private:
1797
+ // Determines whether the node on the left side of the bipartial graph
1798
+ // matches the one on the right side.
1799
+ bool Match(int left, int right);
1800
+ // Find an argumenting path starting from the node v on the left side. If a
1801
+ // path can be found, update match_list2_ to reflect the path and return
1802
+ // true.
1803
+ bool FindArgumentPathDFS(int v, std::vector<bool>* visited);
1804
+
1805
+ int count1_;
1806
+ int count2_;
1807
+ NodeMatchCallback match_callback_;
1808
+ absl::flat_hash_map<std::pair<int, int>, bool> cached_match_results_;
1809
+ std::vector<int>* match_list1_;
1810
+ std::vector<int>* match_list2_;
1811
+ };
1812
+
1813
+ MaximumMatcher::MaximumMatcher(int count1, int count2,
1814
+ NodeMatchCallback callback,
1815
+ std::vector<int>* match_list1,
1816
+ std::vector<int>* match_list2)
1817
+ : count1_(count1),
1818
+ count2_(count2),
1819
+ match_callback_(std::move(callback)),
1820
+ match_list1_(match_list1),
1821
+ match_list2_(match_list2) {
1822
+ match_list1_->assign(count1, -1);
1823
+ match_list2_->assign(count2, -1);
1824
+ }
1825
+
1826
+ int MaximumMatcher::FindMaximumMatch(bool early_return) {
1827
+ int result = 0;
1828
+ for (int i = 0; i < count1_; ++i) {
1829
+ std::vector<bool> visited(count1_);
1830
+ if (FindArgumentPathDFS(i, &visited)) {
1831
+ ++result;
1832
+ } else if (early_return) {
1833
+ return 0;
1834
+ }
1835
+ }
1836
+ // Backfill match_list1_ as we only filled match_list2_ when finding
1837
+ // argumenting paths.
1838
+ for (int i = 0; i < count2_; ++i) {
1839
+ if ((*match_list2_)[i] != -1) {
1840
+ (*match_list1_)[(*match_list2_)[i]] = i;
1841
+ }
1842
+ }
1843
+ return result;
1844
+ }
1845
+
1846
+ bool MaximumMatcher::Match(int left, int right) {
1847
+ std::pair<int, int> p(left, right);
1848
+ auto it = cached_match_results_.find(p);
1849
+ if (it != cached_match_results_.end()) {
1850
+ return it->second;
1851
+ }
1852
+ it = cached_match_results_.emplace_hint(it, p, match_callback_(left, right));
1853
+ return it->second;
1854
+ }
1855
+
1856
+ bool MaximumMatcher::FindArgumentPathDFS(int v, std::vector<bool>* visited) {
1857
+ (*visited)[v] = true;
1858
+ // We try to match those un-matched nodes on the right side first. This is
1859
+ // the step that the naive greedy matching algorithm uses. In the best cases
1860
+ // where the greedy algorithm can find a maximum matching, we will always
1861
+ // find a match in this step and the performance will be identical to the
1862
+ // greedy algorithm.
1863
+ for (int i = 0; i < count2_; ++i) {
1864
+ int matched = (*match_list2_)[i];
1865
+ if (matched == -1 && Match(v, i)) {
1866
+ (*match_list2_)[i] = v;
1867
+ return true;
1868
+ }
1869
+ }
1870
+ // Then we try those already matched nodes and see if we can find an
1871
+ // alternative match for the node matched to them.
1872
+ // The greedy algorithm will stop before this and fail to produce the
1873
+ // correct result.
1874
+ for (int i = 0; i < count2_; ++i) {
1875
+ int matched = (*match_list2_)[i];
1876
+ if (matched != -1 && Match(v, i)) {
1877
+ if (!(*visited)[matched] && FindArgumentPathDFS(matched, visited)) {
1878
+ (*match_list2_)[i] = v;
1879
+ return true;
1880
+ }
1881
+ }
1882
+ }
1883
+ return false;
1884
+ }
1885
+
1886
+ } // namespace
1887
+
1888
+ bool MessageDifferencer::MatchRepeatedFieldIndices(
1889
+ const Message& message1, const Message& message2, int unpacked_any,
1890
+ const FieldDescriptor* repeated_field,
1891
+ const MapKeyComparator* key_comparator,
1892
+ const std::vector<SpecificField>& parent_fields,
1893
+ std::vector<int>* match_list1, std::vector<int>* match_list2) {
1894
+ const int count1 =
1895
+ message1.GetReflection()->FieldSize(message1, repeated_field);
1896
+ const int count2 =
1897
+ message2.GetReflection()->FieldSize(message2, repeated_field);
1898
+ const bool is_treated_as_smart_set = IsTreatedAsSmartSet(repeated_field);
1899
+
1900
+ match_list1->assign(count1, -1);
1901
+ match_list2->assign(count2, -1);
1902
+
1903
+ // In the special case where both repeated fields have exactly one element,
1904
+ // return without calling the comparator. This optimization prevents the
1905
+ // pathological case of deeply nested repeated fields of size 1 from taking
1906
+ // exponential-time to compare.
1907
+ //
1908
+ // In the case where reporter_ is set, we need to do the compare here to
1909
+ // properly distinguish a modify from an add+delete. The code below will not
1910
+ // pass the reporter along in recursive calls to nested repeated fields, so
1911
+ // the inner call will have the opportunity to perform this optimization and
1912
+ // avoid exponential-time behavior.
1913
+ //
1914
+ // In the case where key_comparator is set, we need to do the compare here to
1915
+ // fulfill the interface contract that keys will be compared even if the user
1916
+ // asked to ignore that field. The code will only compare the key fields
1917
+ // which (hopefully) do not contain further repeated fields.
1918
+ if (count1 == 1 && count2 == 1 && reporter_ == nullptr &&
1919
+ key_comparator == nullptr) {
1920
+ match_list1->at(0) = 0;
1921
+ match_list2->at(0) = 0;
1922
+ return true;
1923
+ }
1924
+
1925
+ // Ensure that we don't report differences during the matching process. Since
1926
+ // field comparators could potentially use this message differencer object to
1927
+ // perform further comparisons, turn off reporting here and re-enable it
1928
+ // before returning.
1929
+ Reporter* reporter = reporter_;
1930
+ reporter_ = nullptr;
1931
+ NumDiffsReporter num_diffs_reporter;
1932
+ std::vector<int32_t> num_diffs_list1;
1933
+ if (is_treated_as_smart_set) {
1934
+ num_diffs_list1.assign(count1, std::numeric_limits<int32_t>::max());
1935
+ }
1936
+
1937
+ bool success = true;
1938
+ // Find potential match if this is a special repeated field.
1939
+ if (scope_ == PARTIAL) {
1940
+ // When partial matching is enabled, Compare(a, b) && Compare(a, c)
1941
+ // doesn't necessarily imply Compare(b, c). Therefore a naive greedy
1942
+ // algorithm will fail to find a maximum matching.
1943
+ // Here we use the augmenting path algorithm.
1944
+ auto callback = [&](int i1, int i2) {
1945
+ return IsMatch(repeated_field, key_comparator, &message1, &message2,
1946
+ unpacked_any, parent_fields, nullptr, i1, i2);
1947
+ };
1948
+ MaximumMatcher matcher(count1, count2, std::move(callback), match_list1,
1949
+ match_list2);
1950
+ // If diff info is not needed, we should end the matching process as
1951
+ // soon as possible if not all items can be matched.
1952
+ bool early_return = (reporter == nullptr);
1953
+ int match_count = matcher.FindMaximumMatch(early_return);
1954
+ if (match_count != count1 && early_return) return false;
1955
+ success = success && (match_count == count1);
1956
+ } else {
1957
+ int start_offset = 0;
1958
+ // If the two repeated fields are treated as sets, optimize for the case
1959
+ // where both start with same items stored in the same order.
1960
+ if (IsTreatedAsSet(repeated_field) || is_treated_as_smart_set ||
1961
+ IsTreatedAsSmartList(repeated_field)) {
1962
+ start_offset = std::min(count1, count2);
1963
+ for (int i = 0; i < count1 && i < count2; i++) {
1964
+ if (IsMatch(repeated_field, key_comparator, &message1, &message2,
1965
+ unpacked_any, parent_fields, nullptr, i, i)) {
1966
+ match_list1->at(i) = i;
1967
+ match_list2->at(i) = i;
1968
+ } else {
1969
+ start_offset = i;
1970
+ break;
1971
+ }
1972
+ }
1973
+ }
1974
+ for (int i = start_offset; i < count1; ++i) {
1975
+ // Indicates any matched elements for this repeated field.
1976
+ bool match = false;
1977
+ int matched_j = -1;
1978
+
1979
+ for (int j = start_offset; j < count2; j++) {
1980
+ if (match_list2->at(j) != -1) {
1981
+ if (!is_treated_as_smart_set || num_diffs_list1[i] == 0 ||
1982
+ num_diffs_list1[match_list2->at(j)] == 0) {
1983
+ continue;
1984
+ }
1985
+ }
1986
+
1987
+ if (is_treated_as_smart_set) {
1988
+ num_diffs_reporter.Reset();
1989
+ match =
1990
+ IsMatch(repeated_field, key_comparator, &message1, &message2,
1991
+ unpacked_any, parent_fields, &num_diffs_reporter, i, j);
1992
+ } else {
1993
+ match = IsMatch(repeated_field, key_comparator, &message1, &message2,
1994
+ unpacked_any, parent_fields, nullptr, i, j);
1995
+ }
1996
+
1997
+ if (is_treated_as_smart_set) {
1998
+ if (match) {
1999
+ num_diffs_list1[i] = 0;
2000
+ } else if (repeated_field->cpp_type() ==
2001
+ FieldDescriptor::CPPTYPE_MESSAGE) {
2002
+ // Replace with the one with fewer diffs.
2003
+ const int32_t num_diffs = num_diffs_reporter.GetNumDiffs();
2004
+ if (num_diffs < num_diffs_list1[i]) {
2005
+ // If j has been already matched to some element, ensure the
2006
+ // current num_diffs is smaller.
2007
+ if (match_list2->at(j) == -1 ||
2008
+ num_diffs < num_diffs_list1[match_list2->at(j)]) {
2009
+ num_diffs_list1[i] = num_diffs;
2010
+ match = true;
2011
+ }
2012
+ }
2013
+ }
2014
+ }
2015
+
2016
+ if (match) {
2017
+ matched_j = j;
2018
+ if (!is_treated_as_smart_set || num_diffs_list1[i] == 0) {
2019
+ break;
2020
+ }
2021
+ }
2022
+ }
2023
+
2024
+ match = (matched_j != -1);
2025
+ if (match) {
2026
+ if (is_treated_as_smart_set && match_list2->at(matched_j) != -1) {
2027
+ // This is to revert the previously matched index in list2.
2028
+ match_list1->at(match_list2->at(matched_j)) = -1;
2029
+ match = false;
2030
+ }
2031
+ match_list1->at(i) = matched_j;
2032
+ match_list2->at(matched_j) = i;
2033
+ }
2034
+ if (!match && reporter == nullptr) return false;
2035
+ success = success && match;
2036
+ }
2037
+ }
2038
+
2039
+ if (IsTreatedAsSmartList(repeated_field)) {
2040
+ match_indices_for_smart_list_callback_(match_list1, match_list2);
2041
+ }
2042
+
2043
+ reporter_ = reporter;
2044
+
2045
+ return success;
2046
+ }
2047
+
2048
+ FieldComparator::ComparisonResult MessageDifferencer::GetFieldComparisonResult(
2049
+ const Message& message1, const Message& message2,
2050
+ const FieldDescriptor* field, int index1, int index2,
2051
+ const FieldContext* field_context) {
2052
+ FieldComparator* comparator = field_comparator_kind_ == kFCBase
2053
+ ? field_comparator_.base
2054
+ : field_comparator_.default_impl;
2055
+ return comparator->Compare(message1, message2, field, index1, index2,
2056
+ field_context);
2057
+ }
2058
+
2059
+ // ===========================================================================
2060
+
2061
+ MessageDifferencer::Reporter::Reporter() = default;
2062
+ MessageDifferencer::Reporter::~Reporter() = default;
2063
+
2064
+ // ===========================================================================
2065
+
2066
+ MessageDifferencer::MapKeyComparator::MapKeyComparator() = default;
2067
+ MessageDifferencer::MapKeyComparator::~MapKeyComparator() = default;
2068
+
2069
+ // ===========================================================================
2070
+
2071
+ MessageDifferencer::IgnoreCriteria::IgnoreCriteria() = default;
2072
+ MessageDifferencer::IgnoreCriteria::~IgnoreCriteria() = default;
2073
+
2074
+ // ===========================================================================
2075
+
2076
+ // Note that the printer's delimiter is not used, because if we are given a
2077
+ // printer, we don't know its delimiter.
2078
+ MessageDifferencer::StreamReporter::StreamReporter(
2079
+ io::ZeroCopyOutputStream* output)
2080
+ : printer_(new io::Printer(output, '$')),
2081
+ delete_printer_(true),
2082
+ report_modified_aggregates_(false),
2083
+ message1_(nullptr),
2084
+ message2_(nullptr) {}
2085
+
2086
+ MessageDifferencer::StreamReporter::StreamReporter(io::Printer* printer)
2087
+ : printer_(printer),
2088
+ delete_printer_(false),
2089
+ report_modified_aggregates_(false),
2090
+ message1_(nullptr),
2091
+ message2_(nullptr) {}
2092
+
2093
+ MessageDifferencer::StreamReporter::~StreamReporter() {
2094
+ if (delete_printer_) delete printer_;
2095
+ }
2096
+
2097
+ void MessageDifferencer::StreamReporter::PrintPath(
2098
+ const std::vector<SpecificField>& field_path, bool left_side) {
2099
+ for (size_t i = 0; i < field_path.size(); ++i) {
2100
+ const SpecificField& specific_field = field_path[i];
2101
+
2102
+ if (specific_field.field != nullptr &&
2103
+ specific_field.field->name() == "value") {
2104
+ // check to see if this the value label of a map value. If so, skip it
2105
+ // because it isn't meaningful
2106
+ if (i > 0 && field_path[i - 1].field->is_map()) {
2107
+ continue;
2108
+ }
2109
+ }
2110
+ if (i > 0) {
2111
+ printer_->Print(".");
2112
+ }
2113
+ if (specific_field.field != nullptr) {
2114
+ if (specific_field.field->is_extension()) {
2115
+ printer_->Print("($name$)", "name", specific_field.field->full_name());
2116
+ } else {
2117
+ printer_->PrintRaw(specific_field.field->name());
2118
+ if (specific_field.forced_compare_no_presence_) {
2119
+ printer_->Print(" (added for better PARTIAL comparison)");
2120
+ }
2121
+ }
2122
+
2123
+ if (specific_field.field->is_map()) {
2124
+ PrintMapKey(left_side, specific_field);
2125
+ continue;
2126
+ }
2127
+ } else {
2128
+ printer_->PrintRaw(absl::StrCat(specific_field.unknown_field_number));
2129
+ }
2130
+ if (left_side && specific_field.index >= 0) {
2131
+ printer_->Print("[$name$]", "name", absl::StrCat(specific_field.index));
2132
+ }
2133
+ if (!left_side && specific_field.new_index >= 0) {
2134
+ printer_->Print("[$name$]", "name",
2135
+ absl::StrCat(specific_field.new_index));
2136
+ }
2137
+ }
2138
+ }
2139
+
2140
+ void MessageDifferencer::StreamReporter::PrintValue(
2141
+ const Message& message, const std::vector<SpecificField>& field_path,
2142
+ bool left_side) {
2143
+ const SpecificField& specific_field = field_path.back();
2144
+ const FieldDescriptor* field = specific_field.field;
2145
+ if (field != nullptr) {
2146
+ std::string output;
2147
+ int index = left_side ? specific_field.index : specific_field.new_index;
2148
+ if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
2149
+ const Reflection* reflection = message.GetReflection();
2150
+ const Message& field_message =
2151
+ field->is_repeated()
2152
+ ? reflection->GetRepeatedMessage(message, field, index)
2153
+ : reflection->GetMessage(message, field);
2154
+ const FieldDescriptor* fd = nullptr;
2155
+
2156
+ if (field->is_map() && message1_ != nullptr && message2_ != nullptr) {
2157
+ fd = field_message.GetDescriptor()->field(1);
2158
+ if (fd->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
2159
+ output = PrintShortTextFormat(
2160
+ field_message.GetReflection()->GetMessage(field_message, fd));
2161
+ } else {
2162
+ TextFormat::PrintFieldValueToString(field_message, fd, -1, &output);
2163
+ }
2164
+ } else {
2165
+ output = PrintShortTextFormat(field_message);
2166
+ }
2167
+ if (output.empty()) {
2168
+ printer_->Print("{ }");
2169
+ } else {
2170
+ if ((fd != nullptr) &&
2171
+ (fd->cpp_type() != FieldDescriptor::CPPTYPE_MESSAGE)) {
2172
+ printer_->PrintRaw(output);
2173
+ } else {
2174
+ printer_->Print("{ $name$ }", "name", output);
2175
+ }
2176
+ }
2177
+ } else {
2178
+ TextFormat::PrintFieldValueToString(message, field, index, &output);
2179
+ printer_->PrintRaw(output);
2180
+ }
2181
+ } else {
2182
+ const UnknownFieldSet* unknown_fields =
2183
+ (left_side ? specific_field.unknown_field_set1
2184
+ : specific_field.unknown_field_set2);
2185
+ const UnknownField* unknown_field =
2186
+ &unknown_fields->field(left_side ? specific_field.unknown_field_index1
2187
+ : specific_field.unknown_field_index2);
2188
+ PrintUnknownFieldValue(unknown_field);
2189
+ }
2190
+ }
2191
+
2192
+ void MessageDifferencer::StreamReporter::PrintUnknownFieldValue(
2193
+ const UnknownField* unknown_field) {
2194
+ ABSL_CHECK(unknown_field != nullptr) << " Cannot print NULL unknown_field.";
2195
+
2196
+ std::string output;
2197
+ switch (unknown_field->type()) {
2198
+ case UnknownField::TYPE_VARINT:
2199
+ output = absl::StrCat(unknown_field->varint());
2200
+ break;
2201
+ case UnknownField::TYPE_FIXED32:
2202
+ output = absl::StrCat(
2203
+ "0x", absl::Hex(unknown_field->fixed32(), absl::kZeroPad8));
2204
+ break;
2205
+ case UnknownField::TYPE_FIXED64:
2206
+ output = absl::StrCat(
2207
+ "0x", absl::Hex(unknown_field->fixed64(), absl::kZeroPad16));
2208
+ break;
2209
+ case UnknownField::TYPE_LENGTH_DELIMITED:
2210
+ output = absl::StrFormat(
2211
+ "\"%s\"", absl::CEscape(unknown_field->length_delimited()).c_str());
2212
+ break;
2213
+ case UnknownField::TYPE_GROUP:
2214
+ // TODO: Print the contents of the group like we do for
2215
+ // messages. Requires an equivalent of ShortDebugString() for
2216
+ // UnknownFieldSet.
2217
+ output = "{ ... }";
2218
+ break;
2219
+ }
2220
+ printer_->PrintRaw(output);
2221
+ }
2222
+
2223
+ void MessageDifferencer::StreamReporter::Print(const std::string& str) {
2224
+ printer_->Print(str);
2225
+ }
2226
+
2227
+ void MessageDifferencer::StreamReporter::PrintMapKey(
2228
+ bool left_side, const SpecificField& specific_field) {
2229
+ if (message1_ == nullptr || message2_ == nullptr) {
2230
+ ABSL_LOG(INFO) << "PrintPath cannot log map keys; "
2231
+ "use SetMessages to provide the messages "
2232
+ "being compared prior to any processing.";
2233
+ return;
2234
+ }
2235
+
2236
+ const Message* found_message =
2237
+ left_side ? specific_field.map_entry1 : specific_field.map_entry2;
2238
+ std::string key_string = "";
2239
+ if (found_message != nullptr) {
2240
+ // NB: the map key is always the first field
2241
+ const FieldDescriptor* fd = found_message->GetDescriptor()->field(0);
2242
+ if (fd->cpp_type() == FieldDescriptor::CPPTYPE_STRING) {
2243
+ // Not using PrintFieldValueToString for strings to avoid extra
2244
+ // characters
2245
+ key_string = found_message->GetReflection()->GetString(
2246
+ *found_message, found_message->GetDescriptor()->field(0));
2247
+ } else {
2248
+ TextFormat::PrintFieldValueToString(*found_message, fd, -1, &key_string);
2249
+ }
2250
+ if (key_string.empty()) {
2251
+ key_string = "''";
2252
+ }
2253
+ printer_->PrintRaw(absl::StrCat("[", key_string, "]"));
2254
+ }
2255
+ }
2256
+
2257
+ void MessageDifferencer::StreamReporter::ReportAdded(
2258
+ const Message& /*message1*/, const Message& message2,
2259
+ const std::vector<SpecificField>& field_path) {
2260
+ printer_->Print("added: ");
2261
+ PrintPath(field_path, false);
2262
+ printer_->Print(": ");
2263
+ PrintValue(message2, field_path, false);
2264
+ printer_->Print("\n"); // Print for newlines.
2265
+ }
2266
+
2267
+ void MessageDifferencer::StreamReporter::ReportDeleted(
2268
+ const Message& message1, const Message& /*message2*/,
2269
+ const std::vector<SpecificField>& field_path) {
2270
+ printer_->Print("deleted: ");
2271
+ PrintPath(field_path, true);
2272
+ printer_->Print(": ");
2273
+ PrintValue(message1, field_path, true);
2274
+ printer_->Print("\n"); // Print for newlines
2275
+ }
2276
+
2277
+ void MessageDifferencer::StreamReporter::ReportModified(
2278
+ const Message& message1, const Message& message2,
2279
+ const std::vector<SpecificField>& field_path) {
2280
+ if (!report_modified_aggregates_ && field_path.back().field == nullptr) {
2281
+ if (field_path.back().unknown_field_type == UnknownField::TYPE_GROUP) {
2282
+ // Any changes to the subfields have already been printed.
2283
+ return;
2284
+ }
2285
+ } else if (!report_modified_aggregates_) {
2286
+ if (field_path.back().field->cpp_type() ==
2287
+ FieldDescriptor::CPPTYPE_MESSAGE) {
2288
+ // Any changes to the subfields have already been printed.
2289
+ return;
2290
+ }
2291
+ }
2292
+
2293
+ printer_->Print("modified: ");
2294
+ PrintPath(field_path, true);
2295
+ if (CheckPathChanged(field_path)) {
2296
+ printer_->Print(" -> ");
2297
+ PrintPath(field_path, false);
2298
+ }
2299
+ printer_->Print(": ");
2300
+ PrintValue(message1, field_path, true);
2301
+ printer_->Print(" -> ");
2302
+ PrintValue(message2, field_path, false);
2303
+ printer_->Print("\n"); // Print for newlines.
2304
+ }
2305
+
2306
+ void MessageDifferencer::StreamReporter::ReportMoved(
2307
+ const Message& message1, const Message& /*message2*/,
2308
+ const std::vector<SpecificField>& field_path) {
2309
+ printer_->Print("moved: ");
2310
+ PrintPath(field_path, true);
2311
+ printer_->Print(" -> ");
2312
+ PrintPath(field_path, false);
2313
+ printer_->Print(" : ");
2314
+ PrintValue(message1, field_path, true);
2315
+ printer_->Print("\n"); // Print for newlines.
2316
+ }
2317
+
2318
+ void MessageDifferencer::StreamReporter::ReportMatched(
2319
+ const Message& message1, const Message& /*message2*/,
2320
+ const std::vector<SpecificField>& field_path) {
2321
+ printer_->Print("matched: ");
2322
+ PrintPath(field_path, true);
2323
+ if (CheckPathChanged(field_path)) {
2324
+ printer_->Print(" -> ");
2325
+ PrintPath(field_path, false);
2326
+ }
2327
+ printer_->Print(" : ");
2328
+ PrintValue(message1, field_path, true);
2329
+ printer_->Print("\n"); // Print for newlines.
2330
+ }
2331
+
2332
+ void MessageDifferencer::StreamReporter::ReportIgnored(
2333
+ const Message& /*message1*/, const Message& /*message2*/,
2334
+ const std::vector<SpecificField>& field_path) {
2335
+ printer_->Print("ignored: ");
2336
+ PrintPath(field_path, true);
2337
+ if (CheckPathChanged(field_path)) {
2338
+ printer_->Print(" -> ");
2339
+ PrintPath(field_path, false);
2340
+ }
2341
+ printer_->Print("\n"); // Print for newlines.
2342
+ }
2343
+
2344
+ void MessageDifferencer::StreamReporter::SetMessages(const Message& message1,
2345
+ const Message& message2) {
2346
+ message1_ = &message1;
2347
+ message2_ = &message2;
2348
+ }
2349
+
2350
+ void MessageDifferencer::StreamReporter::ReportUnknownFieldIgnored(
2351
+ const Message& /*message1*/, const Message& /*message2*/,
2352
+ const std::vector<SpecificField>& field_path) {
2353
+ printer_->Print("ignored: ");
2354
+ PrintPath(field_path, true);
2355
+ if (CheckPathChanged(field_path)) {
2356
+ printer_->Print(" -> ");
2357
+ PrintPath(field_path, false);
2358
+ }
2359
+ printer_->Print("\n"); // Print for newlines.
2360
+ }
2361
+
2362
+ MessageDifferencer::MapKeyComparator*
2363
+ MessageDifferencer::CreateMultipleFieldsMapKeyComparator(
2364
+ const std::vector<std::vector<const FieldDescriptor*> >& key_field_paths) {
2365
+ return new MultipleFieldsMapKeyComparator(this, key_field_paths);
2366
+ }
2367
+
2368
+ } // namespace util
2369
+ } // namespace protobuf
2370
+ } // namespace google
2371
+
2372
+ #include "google/protobuf/port_undef.inc"