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,2716 @@
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: kenton@google.com (Kenton Varda)
9
+ // Based on original Protocol Buffers design by
10
+ // Sanjay Ghemawat, Jeff Dean, and others.
11
+ //
12
+ // Recursive descent FTW.
13
+
14
+ #include "google/protobuf/compiler/parser.h"
15
+
16
+ #include <cassert>
17
+ #include <climits>
18
+ #include <cstddef>
19
+ #include <cstdint>
20
+ #include <limits>
21
+ #include <string>
22
+ #include <tuple>
23
+ #include <utility>
24
+ #include <vector>
25
+
26
+ #include "absl/base/attributes.h"
27
+ #include "absl/cleanup/cleanup.h"
28
+ #include "absl/container/flat_hash_map.h"
29
+ #include "absl/container/flat_hash_set.h"
30
+ #include "absl/log/absl_check.h"
31
+ #include "absl/log/absl_log.h"
32
+ #include "absl/strings/ascii.h"
33
+ #include "absl/strings/escaping.h"
34
+ #include "absl/strings/str_cat.h"
35
+ #include "absl/strings/str_format.h"
36
+ #include "absl/strings/string_view.h"
37
+ #include "absl/types/optional.h"
38
+ #include "google/protobuf/descriptor.h"
39
+ #include "google/protobuf/descriptor.pb.h"
40
+ #include "google/protobuf/io/strtod.h"
41
+ #include "google/protobuf/io/tokenizer.h"
42
+ #include "google/protobuf/message_lite.h"
43
+
44
+ // Must be included last.
45
+ #include "google/protobuf/port_def.inc"
46
+
47
+ namespace google {
48
+ namespace protobuf {
49
+ namespace compiler {
50
+ namespace {
51
+
52
+ using TypeNameMap =
53
+ absl::flat_hash_map<absl::string_view, FieldDescriptorProto::Type>;
54
+
55
+ absl::optional<absl::string_view> NumericTypeMaybeReplacedWith(
56
+ absl::string_view type_name) {
57
+ static const auto* const kReplacements =
58
+ new absl::flat_hash_map<absl::string_view, absl::string_view>{
59
+ {"fixed32", "uint32"}, {"fixed64", "uint64"}, {"sfixed32", "int32"},
60
+ {"sfixed64", "int64"}, {"sint32", "zigzag32"}, {"sint64", "zigzag64"},
61
+ };
62
+ auto it = kReplacements->find(type_name);
63
+ return it == kReplacements->end() ? absl::nullopt
64
+ : absl::make_optional(it->second);
65
+ }
66
+
67
+ const TypeNameMap& GetTypeNameTable() {
68
+ static auto* table = new auto([]() {
69
+ TypeNameMap result;
70
+
71
+ result["double"] = FieldDescriptorProto::TYPE_DOUBLE;
72
+ result["float"] = FieldDescriptorProto::TYPE_FLOAT;
73
+ result["uint64"] = FieldDescriptorProto::TYPE_UINT64;
74
+ result["fixed64"] = FieldDescriptorProto::TYPE_FIXED64;
75
+ result["fixed32"] = FieldDescriptorProto::TYPE_FIXED32;
76
+ result["bool"] = FieldDescriptorProto::TYPE_BOOL;
77
+ result["string"] = FieldDescriptorProto::TYPE_STRING;
78
+ result["group"] = FieldDescriptorProto::TYPE_GROUP;
79
+
80
+ result["bytes"] = FieldDescriptorProto::TYPE_BYTES;
81
+ result["uint32"] = FieldDescriptorProto::TYPE_UINT32;
82
+ result["sfixed32"] = FieldDescriptorProto::TYPE_SFIXED32;
83
+ result["sfixed64"] = FieldDescriptorProto::TYPE_SFIXED64;
84
+ result["int32"] = FieldDescriptorProto::TYPE_INT32;
85
+ result["int64"] = FieldDescriptorProto::TYPE_INT64;
86
+ result["sint32"] = FieldDescriptorProto::TYPE_SINT32;
87
+ result["sint64"] = FieldDescriptorProto::TYPE_SINT64;
88
+
89
+ return result;
90
+ }());
91
+ return *table;
92
+ }
93
+
94
+ const TypeNameMap& GetTypeNameTableWithFixedWireForIntTypes() {
95
+ static auto* table = new auto([]() {
96
+ TypeNameMap result;
97
+
98
+ result["double"] = FieldDescriptorProto::TYPE_DOUBLE;
99
+ result["float"] = FieldDescriptorProto::TYPE_FLOAT;
100
+ result["uint64"] = FieldDescriptorProto::TYPE_FIXED64;
101
+ result["bool"] = FieldDescriptorProto::TYPE_BOOL;
102
+ result["string"] = FieldDescriptorProto::TYPE_STRING;
103
+ result["group"] = FieldDescriptorProto::TYPE_GROUP;
104
+
105
+ result["bytes"] = FieldDescriptorProto::TYPE_BYTES;
106
+ result["uint32"] = FieldDescriptorProto::TYPE_FIXED32;
107
+ result["int32"] = FieldDescriptorProto::TYPE_SFIXED32;
108
+ result["int64"] = FieldDescriptorProto::TYPE_SFIXED64;
109
+
110
+ // New types added to preserve legacy behavior.
111
+ result["varint32"] = FieldDescriptorProto::TYPE_INT32;
112
+ result["varint64"] = FieldDescriptorProto::TYPE_INT64;
113
+ result["uvarint32"] = FieldDescriptorProto::TYPE_UINT32;
114
+ result["uvarint64"] = FieldDescriptorProto::TYPE_UINT64;
115
+ result["zigzag32"] = FieldDescriptorProto::TYPE_SINT32;
116
+ result["zigzag64"] = FieldDescriptorProto::TYPE_SINT64;
117
+
118
+ return result;
119
+ }());
120
+ return *table;
121
+ }
122
+
123
+ // Camel-case the field name and append "Entry" for generated map entry name.
124
+ // e.g. map<KeyType, ValueType> foo_map => FooMapEntry
125
+ std::string MapEntryName(absl::string_view field_name) {
126
+ std::string result;
127
+ static const char kSuffix[] = "Entry";
128
+ result.reserve(field_name.size() + sizeof(kSuffix));
129
+ bool cap_next = true;
130
+ for (const char field_name_char : field_name) {
131
+ if (field_name_char == '_') {
132
+ cap_next = true;
133
+ } else if (cap_next) {
134
+ // Note: Do not use ctype.h due to locales.
135
+ if ('a' <= field_name_char && field_name_char <= 'z') {
136
+ result.push_back(field_name_char - 'a' + 'A');
137
+ } else {
138
+ result.push_back(field_name_char);
139
+ }
140
+ cap_next = false;
141
+ } else {
142
+ result.push_back(field_name_char);
143
+ }
144
+ }
145
+ result.append(kSuffix);
146
+ return result;
147
+ }
148
+
149
+ } // anonymous namespace
150
+
151
+ // Makes code slightly more readable. The meaning of "DO(foo)" is
152
+ // "Execute foo and fail if it fails.", where failure is indicated by
153
+ // returning false.
154
+ #define DO(STATEMENT) \
155
+ if (STATEMENT) { \
156
+ } else \
157
+ return false
158
+
159
+ // ===================================================================
160
+
161
+ Parser::Parser()
162
+ : input_(nullptr),
163
+ error_collector_(nullptr),
164
+ source_location_table_(nullptr),
165
+ had_errors_(false),
166
+ require_syntax_identifier_(false),
167
+ stop_after_syntax_identifier_(false) {
168
+ }
169
+
170
+ Parser::~Parser() = default;
171
+ // ===================================================================
172
+
173
+ inline bool Parser::LookingAt(absl::string_view text) {
174
+ return input_->current().text == text;
175
+ }
176
+
177
+ inline bool Parser::LookingAtType(io::Tokenizer::TokenType token_type) {
178
+ return input_->current().type == token_type;
179
+ }
180
+
181
+ inline bool Parser::AtEnd() { return LookingAtType(io::Tokenizer::TYPE_END); }
182
+
183
+ bool Parser::TryConsume(absl::string_view text) {
184
+ if (LookingAt(text)) {
185
+ input_->Next();
186
+ return true;
187
+ } else {
188
+ return false;
189
+ }
190
+ }
191
+
192
+ bool Parser::Consume(absl::string_view text, ErrorMaker error) {
193
+ if (TryConsume(text)) {
194
+ return true;
195
+ } else {
196
+ RecordError(error);
197
+ return false;
198
+ }
199
+ }
200
+
201
+ bool Parser::Consume(absl::string_view text) {
202
+ return Consume(text,
203
+ [&] { return absl::StrCat("Expected \"", text, "\"."); });
204
+ }
205
+
206
+ bool Parser::ConsumeIdentifier(std::string* output, ErrorMaker error) {
207
+ if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) {
208
+ *output = input_->current().text;
209
+ input_->Next();
210
+ return true;
211
+ } else {
212
+ RecordError(error);
213
+ return false;
214
+ }
215
+ }
216
+
217
+ bool Parser::ConsumeInteger(int* output, ErrorMaker error) {
218
+ if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) {
219
+ uint64_t value = 0;
220
+ if (!io::Tokenizer::ParseInteger(input_->current().text,
221
+ std::numeric_limits<int32_t>::max(),
222
+ &value)) {
223
+ RecordError("Integer out of range.");
224
+ // We still return true because we did, in fact, parse an integer.
225
+ }
226
+ *output = value;
227
+ input_->Next();
228
+ return true;
229
+ } else {
230
+ RecordError(error);
231
+ return false;
232
+ }
233
+ }
234
+
235
+ bool Parser::ConsumeSignedInteger(int* output, ErrorMaker error) {
236
+ bool is_negative = false;
237
+ uint64_t max_value = std::numeric_limits<int32_t>::max();
238
+ if (TryConsume("-")) {
239
+ is_negative = true;
240
+ max_value += 1;
241
+ }
242
+ uint64_t value = 0;
243
+ DO(ConsumeInteger64(max_value, &value, error));
244
+ if (is_negative) value *= -1;
245
+ *output = value;
246
+ return true;
247
+ }
248
+
249
+ bool Parser::ConsumeInteger64(uint64_t max_value, uint64_t* output,
250
+ ErrorMaker error) {
251
+ if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) {
252
+ if (!io::Tokenizer::ParseInteger(input_->current().text, max_value,
253
+ output)) {
254
+ RecordError("Integer out of range.");
255
+ // We still return true because we did, in fact, parse an integer.
256
+ *output = 0;
257
+ }
258
+ input_->Next();
259
+ return true;
260
+ } else {
261
+ RecordError(error);
262
+ return false;
263
+ }
264
+ }
265
+
266
+ bool Parser::TryConsumeInteger64(uint64_t max_value, uint64_t* output) {
267
+ if (LookingAtType(io::Tokenizer::TYPE_INTEGER) &&
268
+ io::Tokenizer::ParseInteger(input_->current().text, max_value, output)) {
269
+ input_->Next();
270
+ return true;
271
+ }
272
+ return false;
273
+ }
274
+
275
+ bool Parser::ConsumeNumber(double* output, ErrorMaker error) {
276
+ if (LookingAtType(io::Tokenizer::TYPE_FLOAT)) {
277
+ *output = io::Tokenizer::ParseFloat(input_->current().text);
278
+ input_->Next();
279
+ return true;
280
+ } else if (LookingAtType(io::Tokenizer::TYPE_INTEGER)) {
281
+ // Also accept integers.
282
+ uint64_t value = 0;
283
+ if (io::Tokenizer::ParseInteger(input_->current().text,
284
+ std::numeric_limits<uint64_t>::max(),
285
+ &value)) {
286
+ *output = value;
287
+ } else if (input_->current().text[0] == '0') {
288
+ // octal or hexadecimal; don't bother parsing as float
289
+ RecordError("Integer out of range.");
290
+ // We still return true because we did, in fact, parse a number.
291
+ } else if (!io::Tokenizer::TryParseFloat(input_->current().text, output)) {
292
+ // out of int range, and not valid float? 🤷
293
+ RecordError("Integer out of range.");
294
+ // We still return true because we did, in fact, parse a number.
295
+ }
296
+ input_->Next();
297
+ return true;
298
+ } else if (LookingAt("inf")) {
299
+ *output = std::numeric_limits<double>::infinity();
300
+ input_->Next();
301
+ return true;
302
+ } else if (LookingAt("nan")) {
303
+ *output = std::numeric_limits<double>::quiet_NaN();
304
+ input_->Next();
305
+ return true;
306
+ } else {
307
+ RecordError(error);
308
+ return false;
309
+ }
310
+ }
311
+
312
+ bool Parser::ConsumeString(std::string* output, ErrorMaker error) {
313
+ if (LookingAtType(io::Tokenizer::TYPE_STRING)) {
314
+ io::Tokenizer::ParseString(input_->current().text, output);
315
+ input_->Next();
316
+ // Allow C++ like concatenation of adjacent string tokens.
317
+ while (LookingAtType(io::Tokenizer::TYPE_STRING)) {
318
+ io::Tokenizer::ParseStringAppend(input_->current().text, output);
319
+ input_->Next();
320
+ }
321
+ return true;
322
+ } else {
323
+ RecordError(error);
324
+ return false;
325
+ }
326
+ }
327
+
328
+ bool Parser::TryConsumeEndOfDeclaration(absl::string_view text,
329
+ const LocationRecorder* location) {
330
+ if (LookingAt(text)) {
331
+ std::string leading, trailing;
332
+ std::vector<std::string> detached;
333
+ input_->NextWithComments(&trailing, &detached, &leading);
334
+
335
+ // Save the leading comments for next time, and recall the leading comments
336
+ // from last time.
337
+ leading.swap(upcoming_doc_comments_);
338
+
339
+ if (location != nullptr) {
340
+ upcoming_detached_comments_.swap(detached);
341
+ location->AttachComments(&leading, &trailing, &detached);
342
+ } else if (text == "}") {
343
+ // If the current location is null and we are finishing the current scope,
344
+ // drop pending upcoming detached comments.
345
+ upcoming_detached_comments_.swap(detached);
346
+ } else {
347
+ // Otherwise, append the new detached comments to the existing upcoming
348
+ // detached comments.
349
+ upcoming_detached_comments_.insert(upcoming_detached_comments_.end(),
350
+ detached.begin(), detached.end());
351
+ }
352
+
353
+ return true;
354
+ } else {
355
+ return false;
356
+ }
357
+ }
358
+
359
+ bool Parser::ConsumeEndOfDeclaration(absl::string_view text,
360
+ const LocationRecorder* location) {
361
+ if (TryConsumeEndOfDeclaration(text, location)) {
362
+ return true;
363
+ } else {
364
+ RecordError([&] { return absl::StrCat("Expected \"", text, "\"."); });
365
+ return false;
366
+ }
367
+ }
368
+
369
+ // -------------------------------------------------------------------
370
+
371
+ void Parser::RecordError(int line, int column, ErrorMaker error) {
372
+ if (error_collector_ != nullptr) {
373
+ error_collector_->RecordError(line, column, error.get());
374
+ }
375
+ had_errors_ = true;
376
+ }
377
+
378
+ void Parser::RecordError(ErrorMaker error) {
379
+ RecordError(input_->current().line, input_->current().column, error);
380
+ }
381
+
382
+ void Parser::RecordWarning(int line, int column, ErrorMaker error) {
383
+ if (error_collector_ != nullptr) {
384
+ error_collector_->RecordWarning(line, column, error.get());
385
+ }
386
+ }
387
+
388
+ // Invokes error_collector_->RecordWarning() with the line and column number
389
+ // of the current token.
390
+ void Parser::RecordWarning(ErrorMaker error) {
391
+ RecordWarning(input_->current().line, input_->current().column, error);
392
+ }
393
+
394
+ // -------------------------------------------------------------------
395
+
396
+ Parser::LocationRecorder::LocationRecorder(Parser* parser)
397
+ : parser_(parser),
398
+ source_code_info_(parser->source_code_info_),
399
+ location_(parser_->source_code_info_->add_location()) {
400
+ location_->add_span(parser_->input_->current().line);
401
+ location_->add_span(parser_->input_->current().column);
402
+ }
403
+
404
+ Parser::LocationRecorder::LocationRecorder(const LocationRecorder& parent) {
405
+ Init(parent, parent.source_code_info_);
406
+ }
407
+
408
+ Parser::LocationRecorder::LocationRecorder(const LocationRecorder& parent,
409
+ int path1,
410
+ SourceCodeInfo* source_code_info) {
411
+ Init(parent, source_code_info);
412
+ AddPath(path1);
413
+ }
414
+
415
+ Parser::LocationRecorder::LocationRecorder(const LocationRecorder& parent,
416
+ int path1) {
417
+ Init(parent, parent.source_code_info_);
418
+ AddPath(path1);
419
+ }
420
+
421
+ Parser::LocationRecorder::LocationRecorder(const LocationRecorder& parent,
422
+ int path1, int path2) {
423
+ Init(parent, parent.source_code_info_);
424
+ AddPath(path1);
425
+ AddPath(path2);
426
+ }
427
+
428
+ void Parser::LocationRecorder::Init(const LocationRecorder& parent,
429
+ SourceCodeInfo* source_code_info) {
430
+ parser_ = parent.parser_;
431
+ source_code_info_ = source_code_info;
432
+
433
+ location_ = source_code_info_->add_location();
434
+ location_->mutable_path()->CopyFrom(parent.location_->path());
435
+
436
+ location_->add_span(parser_->input_->current().line);
437
+ location_->add_span(parser_->input_->current().column);
438
+ }
439
+
440
+ Parser::LocationRecorder::~LocationRecorder() {
441
+ if (location_->span_size() <= 2) {
442
+ EndAt(parser_->input_->previous());
443
+ }
444
+ }
445
+
446
+ void Parser::LocationRecorder::AddPath(int path_component) {
447
+ location_->add_path(path_component);
448
+ }
449
+
450
+ void Parser::LocationRecorder::StartAt(const io::Tokenizer::Token& token) {
451
+ location_->set_span(0, token.line);
452
+ location_->set_span(1, token.column);
453
+ }
454
+
455
+ void Parser::LocationRecorder::StartAt(const LocationRecorder& other) {
456
+ location_->set_span(0, other.location_->span(0));
457
+ location_->set_span(1, other.location_->span(1));
458
+ }
459
+
460
+ void Parser::LocationRecorder::EndAt(const io::Tokenizer::Token& token) {
461
+ if (token.line != location_->span(0)) {
462
+ location_->add_span(token.line);
463
+ }
464
+ location_->add_span(token.end_column);
465
+ }
466
+
467
+ void Parser::LocationRecorder::RecordLegacyLocation(
468
+ const Message* descriptor,
469
+ DescriptorPool::ErrorCollector::ErrorLocation location) {
470
+ if (parser_->source_location_table_ != nullptr) {
471
+ parser_->source_location_table_->Add(
472
+ descriptor, location, location_->span(0), location_->span(1));
473
+ }
474
+ }
475
+
476
+ void Parser::LocationRecorder::RecordLegacyImportLocation(
477
+ const Message* descriptor, const std::string& name) {
478
+ if (parser_->source_location_table_ != nullptr) {
479
+ parser_->source_location_table_->AddImport(
480
+ descriptor, name, location_->span(0), location_->span(1));
481
+ }
482
+ }
483
+
484
+ int Parser::LocationRecorder::CurrentPathSize() const {
485
+ return location_->path_size();
486
+ }
487
+
488
+ void Parser::LocationRecorder::AttachComments(
489
+ std::string* leading, std::string* trailing,
490
+ std::vector<std::string>* detached_comments) const {
491
+ ABSL_CHECK(!location_->has_leading_comments());
492
+ ABSL_CHECK(!location_->has_trailing_comments());
493
+
494
+ if (!leading->empty()) {
495
+ location_->mutable_leading_comments()->swap(*leading);
496
+ }
497
+ if (!trailing->empty()) {
498
+ location_->mutable_trailing_comments()->swap(*trailing);
499
+ }
500
+ for (size_t i = 0; i < detached_comments->size(); ++i) {
501
+ location_->add_leading_detached_comments()->swap((*detached_comments)[i]);
502
+ }
503
+ detached_comments->clear();
504
+ }
505
+
506
+ // -------------------------------------------------------------------
507
+
508
+ void Parser::SkipStatement() {
509
+ while (true) {
510
+ if (AtEnd()) {
511
+ return;
512
+ } else if (LookingAtType(io::Tokenizer::TYPE_SYMBOL)) {
513
+ if (TryConsumeEndOfDeclaration(";", nullptr)) {
514
+ return;
515
+ } else if (TryConsume("{")) {
516
+ SkipRestOfBlock();
517
+ return;
518
+ } else if (LookingAt("}")) {
519
+ return;
520
+ }
521
+ }
522
+ input_->Next();
523
+ }
524
+ }
525
+
526
+ void Parser::SkipRestOfBlock() {
527
+ size_t block_count = 1;
528
+ while (true) {
529
+ if (AtEnd()) {
530
+ return;
531
+ } else if (LookingAtType(io::Tokenizer::TYPE_SYMBOL)) {
532
+ if (TryConsumeEndOfDeclaration("}", nullptr)) {
533
+ if (--block_count == 0) break;
534
+ } else if (TryConsume("{")) {
535
+ ++block_count;
536
+ }
537
+ }
538
+ input_->Next();
539
+ }
540
+ }
541
+
542
+ // ===================================================================
543
+
544
+ bool Parser::ValidateMessage(const DescriptorProto* proto) {
545
+ for (int i = 0; i < proto->options().uninterpreted_option_size(); i++) {
546
+ const UninterpretedOption& option =
547
+ proto->options().uninterpreted_option(i);
548
+ if (option.name_size() > 0 && !option.name(0).is_extension() &&
549
+ option.name(0).name_part() == "map_entry") {
550
+ int line = -1, col = 0; // indicates line and column not known
551
+ if (source_location_table_ != nullptr) {
552
+ source_location_table_->Find(
553
+ &option, DescriptorPool::ErrorCollector::OPTION_NAME, &line, &col);
554
+ }
555
+ RecordError(line, col,
556
+ "map_entry should not be set explicitly. "
557
+ "Use map<KeyType, ValueType> instead.");
558
+ return false;
559
+ }
560
+ }
561
+ return true;
562
+ }
563
+
564
+ bool Parser::ValidateEnum(const EnumDescriptorProto* proto) {
565
+ bool has_allow_alias = false;
566
+ bool allow_alias = false;
567
+
568
+ for (int i = 0; i < proto->options().uninterpreted_option_size(); i++) {
569
+ const UninterpretedOption option = proto->options().uninterpreted_option(i);
570
+ if (option.name_size() > 1) {
571
+ continue;
572
+ }
573
+ if (!option.name(0).is_extension() &&
574
+ option.name(0).name_part() == "allow_alias") {
575
+ has_allow_alias = true;
576
+ if (option.identifier_value() == "true") {
577
+ allow_alias = true;
578
+ }
579
+ break;
580
+ }
581
+ }
582
+
583
+ if (has_allow_alias && !allow_alias) {
584
+ // This needlessly clutters declarations with nops.
585
+ RecordError([=] {
586
+ return absl::StrCat(
587
+ "\"", proto->name(),
588
+ "\" declares 'option allow_alias = false;' which has no effect. "
589
+ "Please remove the declaration.");
590
+ });
591
+ return false;
592
+ }
593
+
594
+ absl::flat_hash_set<int> used_values;
595
+ bool has_duplicates = false;
596
+ for (int i = 0; i < proto->value_size(); ++i) {
597
+ const EnumValueDescriptorProto& enum_value = proto->value(i);
598
+ if (used_values.find(enum_value.number()) != used_values.end()) {
599
+ has_duplicates = true;
600
+ break;
601
+ } else {
602
+ used_values.insert(enum_value.number());
603
+ }
604
+ }
605
+ if (allow_alias && !has_duplicates) {
606
+ // Generate an error if an enum declares support for duplicate enum values
607
+ // and does not use it protect future authors.
608
+ RecordError([=] {
609
+ return absl::StrCat(
610
+ "\"", proto->name(),
611
+ "\" declares support for enum aliases but no enum values share field "
612
+ "numbers. Please remove the unnecessary 'option allow_alias = true;' "
613
+ "declaration.");
614
+ });
615
+ return false;
616
+ }
617
+
618
+ return true;
619
+ }
620
+
621
+ bool Parser::Parse(io::Tokenizer* input, FileDescriptorProto* file) {
622
+ input_ = input;
623
+ had_errors_ = false;
624
+ syntax_identifier_.clear();
625
+
626
+ // Note that |file| could be NULL at this point if
627
+ // stop_after_syntax_identifier_ is true. So, we conservatively allocate
628
+ // SourceCodeInfo on the stack, then swap it into the FileDescriptorProto
629
+ // later on.
630
+ SourceCodeInfo source_code_info;
631
+ source_code_info_ = &source_code_info;
632
+
633
+ if (LookingAtType(io::Tokenizer::TYPE_START)) {
634
+ // Advance to first token.
635
+ input_->NextWithComments(nullptr, &upcoming_detached_comments_,
636
+ &upcoming_doc_comments_);
637
+ }
638
+
639
+ {
640
+ LocationRecorder root_location(this);
641
+ root_location.RecordLegacyLocation(file,
642
+ DescriptorPool::ErrorCollector::OTHER);
643
+
644
+ if (require_syntax_identifier_ || LookingAt("syntax") ||
645
+ LookingAt("edition")) {
646
+ if (!ParseSyntaxIdentifier(file, root_location)) {
647
+ // Don't attempt to parse the file if we didn't recognize the syntax
648
+ // identifier.
649
+ return false;
650
+ }
651
+ // Store the syntax into the file.
652
+ if (file != nullptr) {
653
+ file->set_syntax(syntax_identifier_);
654
+ if (syntax_identifier_ == "editions") {
655
+ file->set_edition(edition_);
656
+ }
657
+ }
658
+ } else if (!stop_after_syntax_identifier_) {
659
+ ABSL_LOG(WARNING) << "No edition or syntax specified for the proto file: "
660
+ << file->name() << ". Please use 'edition = \"YYYY\";' "
661
+ << " to specify a valid edition "
662
+ << "version. (Defaulted to \"syntax = \"proto2\";\".)";
663
+ syntax_identifier_ = "proto2";
664
+ }
665
+
666
+ if (stop_after_syntax_identifier_) return !had_errors_;
667
+
668
+ // Repeatedly parse statements until we reach the end of the file.
669
+ while (!AtEnd()) {
670
+ if (!ParseTopLevelStatement(file, root_location)) {
671
+ // This statement failed to parse. Skip it, but keep looping to parse
672
+ // other statements.
673
+ SkipStatement();
674
+
675
+ if (LookingAt("}")) {
676
+ RecordError("Unmatched \"}\".");
677
+ input_->NextWithComments(nullptr, &upcoming_detached_comments_,
678
+ &upcoming_doc_comments_);
679
+ }
680
+ }
681
+ }
682
+ }
683
+
684
+ input_ = nullptr;
685
+ source_code_info_ = nullptr;
686
+ assert(file != nullptr);
687
+ source_code_info.Swap(file->mutable_source_code_info());
688
+ return !had_errors_;
689
+ }
690
+
691
+ bool Parser::ParseSyntaxIdentifier(const FileDescriptorProto* file,
692
+ const LocationRecorder& parent) {
693
+ LocationRecorder syntax_location(parent,
694
+ FileDescriptorProto::kSyntaxFieldNumber);
695
+ syntax_location.RecordLegacyLocation(
696
+ file, DescriptorPool::ErrorCollector::EDITIONS);
697
+ bool has_edition = false;
698
+ if (TryConsume("edition")) {
699
+ has_edition = true;
700
+ } else {
701
+ DO(Consume("syntax",
702
+ "File must begin with an edition or syntax statement, e.g."
703
+ " 'edition = \"2023\";'."));
704
+ }
705
+
706
+ DO(Consume("="));
707
+ io::Tokenizer::Token syntax_token = input_->current();
708
+ std::string syntax;
709
+ DO(ConsumeString(&syntax, "Expected syntax identifier."));
710
+ DO(ConsumeEndOfDeclaration(";", &syntax_location));
711
+
712
+ if (has_edition) {
713
+ if (!Edition_Parse(absl::StrCat("EDITION_", syntax), &edition_) ||
714
+ edition_ == Edition::EDITION_PROTO2 ||
715
+ edition_ == Edition::EDITION_PROTO3 ||
716
+ edition_ == Edition::EDITION_UNKNOWN) {
717
+ RecordError(syntax_token.line, syntax_token.column, [&] {
718
+ return absl::StrCat("Unknown edition \"", syntax, "\".");
719
+ });
720
+ return false;
721
+ }
722
+ syntax_identifier_ = "editions";
723
+ return true;
724
+ }
725
+
726
+ syntax_identifier_ = syntax;
727
+ if (syntax != "proto2" && syntax != "proto3" &&
728
+ !stop_after_syntax_identifier_) {
729
+ RecordError(syntax_token.line, syntax_token.column, [&] {
730
+ return absl::StrCat("Unrecognized syntax identifier \"", syntax,
731
+ "\". This parser "
732
+ "only recognizes \"proto2\" and \"proto3\".");
733
+ });
734
+ return false;
735
+ }
736
+
737
+ return true;
738
+ }
739
+
740
+ bool Parser::ParseTopLevelStatement(FileDescriptorProto* file,
741
+ const LocationRecorder& root_location) {
742
+ if (TryConsumeEndOfDeclaration(";", nullptr)) {
743
+ // empty statement; ignore
744
+ return true;
745
+ }
746
+
747
+ SymbolVisibility visibility = SymbolVisibility::VISIBILITY_UNSET;
748
+ if (LookingAt("export") || LookingAt("local")) {
749
+ DO(ParseVisibility(file, &visibility));
750
+ }
751
+
752
+ if (LookingAt("message")) {
753
+ LocationRecorder location(root_location,
754
+ FileDescriptorProto::kMessageTypeFieldNumber,
755
+ file->message_type_size());
756
+ // Maximum depth allowed by the DescriptorPool.
757
+ recursion_depth_ = internal::cpp::MaxMessageDeclarationNestingDepth();
758
+ return ParseMessageDefinition(file->add_message_type(), visibility,
759
+ location, file);
760
+ } else if (LookingAt("enum")) {
761
+ LocationRecorder location(root_location,
762
+ FileDescriptorProto::kEnumTypeFieldNumber,
763
+ file->enum_type_size());
764
+ return ParseEnumDefinition(file->add_enum_type(), visibility, location,
765
+ file);
766
+ } else if (LookingAt("service")) {
767
+ LocationRecorder location(root_location,
768
+ FileDescriptorProto::kServiceFieldNumber,
769
+ file->service_size());
770
+ return ParseServiceDefinition(file->add_service(), location, file);
771
+ } else if (LookingAt("extend")) {
772
+ LocationRecorder location(root_location,
773
+ FileDescriptorProto::kExtensionFieldNumber);
774
+ return ParseExtend(
775
+ file->mutable_extension(), file->mutable_message_type(), root_location,
776
+ FileDescriptorProto::kMessageTypeFieldNumber, location, file);
777
+ } else if (LookingAt("import")) {
778
+ return ParseImport(file->mutable_dependency(),
779
+ file->mutable_option_dependency(),
780
+ file->mutable_public_dependency(),
781
+ file->mutable_weak_dependency(), root_location, file);
782
+ } else if (LookingAt("package")) {
783
+ return ParsePackage(file, root_location, file);
784
+ } else if (LookingAt("option")) {
785
+ LocationRecorder location(root_location,
786
+ FileDescriptorProto::kOptionsFieldNumber);
787
+ return ParseOption(file->mutable_options(), location, file,
788
+ OPTION_STATEMENT);
789
+ } else {
790
+ RecordError("Expected top-level statement (e.g. \"message\").");
791
+ return false;
792
+ }
793
+ }
794
+
795
+ // -------------------------------------------------------------------
796
+ // Messages
797
+
798
+ PROTOBUF_NOINLINE static void GenerateSyntheticOneofs(
799
+ DescriptorProto* message) {
800
+ // Add synthetic one-field oneofs for optional fields, except messages which
801
+ // already have presence in proto3.
802
+ //
803
+ // We have to make sure the oneof names don't conflict with any other
804
+ // field or oneof.
805
+ absl::flat_hash_set<std::string> names;
806
+ for (const auto& field : message->field()) {
807
+ names.insert(field.name());
808
+ }
809
+ for (const auto& oneof : message->oneof_decl()) {
810
+ names.insert(oneof.name());
811
+ }
812
+
813
+ for (auto& field : *message->mutable_field()) {
814
+ if (field.proto3_optional()) {
815
+ std::string oneof_name = field.name();
816
+
817
+ // Prepend 'XXXXX_' until we are no longer conflicting.
818
+ // Avoid prepending a double-underscore because such names are
819
+ // reserved in C++.
820
+ if (oneof_name.empty() || oneof_name[0] != '_') {
821
+ oneof_name.insert(0, "_");
822
+ }
823
+ while (names.count(oneof_name) > 0) {
824
+ oneof_name.insert(0, "X");
825
+ }
826
+
827
+ names.insert(oneof_name);
828
+ field.set_oneof_index(message->oneof_decl_size());
829
+ OneofDescriptorProto* oneof = message->add_oneof_decl();
830
+ oneof->set_name(std::move(oneof_name));
831
+ }
832
+ }
833
+ }
834
+
835
+ bool Parser::ParseMessageDefinition(
836
+ DescriptorProto* message, const SymbolVisibility& visibility,
837
+ const LocationRecorder& message_location,
838
+ const FileDescriptorProto* containing_file) {
839
+ const auto undo_depth = absl::MakeCleanup([&] { ++recursion_depth_; });
840
+ if (--recursion_depth_ <= 0) {
841
+ RecordError("Reached maximum recursion limit for nested messages.");
842
+ return false;
843
+ }
844
+
845
+ DO(Consume("message"));
846
+ {
847
+ LocationRecorder location(message_location,
848
+ DescriptorProto::kNameFieldNumber);
849
+ location.RecordLegacyLocation(message,
850
+ DescriptorPool::ErrorCollector::NAME);
851
+ DO(ConsumeIdentifier(message->mutable_name(), "Expected message name."));
852
+ }
853
+ DO(ParseMessageBlock(message, message_location, containing_file));
854
+
855
+ if (syntax_identifier_ == "proto3") {
856
+ GenerateSyntheticOneofs(message);
857
+ }
858
+
859
+ if (visibility != SymbolVisibility::VISIBILITY_UNSET) {
860
+ message->set_visibility(visibility);
861
+ }
862
+
863
+ return true;
864
+ }
865
+
866
+ namespace {
867
+
868
+ const int kMaxRangeSentinel = -1;
869
+
870
+ bool IsMessageSetWireFormatMessage(const DescriptorProto& message) {
871
+ const MessageOptions& options = message.options();
872
+ for (int i = 0; i < options.uninterpreted_option_size(); ++i) {
873
+ const UninterpretedOption& uninterpreted = options.uninterpreted_option(i);
874
+ if (uninterpreted.name_size() == 1 &&
875
+ !uninterpreted.name(0).is_extension() &&
876
+ uninterpreted.name(0).name_part() == "message_set_wire_format" &&
877
+ uninterpreted.identifier_value() == "true") {
878
+ return true;
879
+ }
880
+ }
881
+ return false;
882
+ }
883
+
884
+ // Modifies any extension ranges that specified 'max' as the end of the
885
+ // extension range, and sets them to the type-specific maximum. The actual max
886
+ // tag number can only be determined after all options have been parsed.
887
+ void AdjustExtensionRangesWithMaxEndNumber(DescriptorProto* message) {
888
+ const bool is_message_set = IsMessageSetWireFormatMessage(*message);
889
+ const int max_extension_number = is_message_set
890
+ ? std::numeric_limits<int32_t>::max()
891
+ : FieldDescriptor::kMaxNumber + 1;
892
+ for (int i = 0; i < message->extension_range_size(); ++i) {
893
+ if (message->extension_range(i).end() == kMaxRangeSentinel) {
894
+ message->mutable_extension_range(i)->set_end(max_extension_number);
895
+ }
896
+ }
897
+ }
898
+
899
+ // Modifies any reserved ranges that specified 'max' as the end of the
900
+ // reserved range, and sets them to the type-specific maximum. The actual max
901
+ // tag number can only be determined after all options have been parsed.
902
+ void AdjustReservedRangesWithMaxEndNumber(DescriptorProto* message) {
903
+ const bool is_message_set = IsMessageSetWireFormatMessage(*message);
904
+ const int max_field_number = is_message_set
905
+ ? std::numeric_limits<int32_t>::max()
906
+ : FieldDescriptor::kMaxNumber + 1;
907
+ for (int i = 0; i < message->reserved_range_size(); ++i) {
908
+ if (message->reserved_range(i).end() == kMaxRangeSentinel) {
909
+ message->mutable_reserved_range(i)->set_end(max_field_number);
910
+ }
911
+ }
912
+ }
913
+
914
+ } // namespace
915
+
916
+ bool Parser::ParseMessageBlock(DescriptorProto* message,
917
+ const LocationRecorder& message_location,
918
+ const FileDescriptorProto* containing_file) {
919
+ DO(ConsumeEndOfDeclaration("{", &message_location));
920
+
921
+ while (!TryConsumeEndOfDeclaration("}", nullptr)) {
922
+ if (AtEnd()) {
923
+ RecordError("Reached end of input in message definition (missing '}').");
924
+ return false;
925
+ }
926
+
927
+ if (!ParseMessageStatement(message, message_location, containing_file)) {
928
+ // This statement failed to parse. Skip it, but keep looping to parse
929
+ // other statements.
930
+ SkipStatement();
931
+ }
932
+ }
933
+
934
+ if (message->extension_range_size() > 0) {
935
+ AdjustExtensionRangesWithMaxEndNumber(message);
936
+ }
937
+ if (message->reserved_range_size() > 0) {
938
+ AdjustReservedRangesWithMaxEndNumber(message);
939
+ }
940
+
941
+ DO(ValidateMessage(message));
942
+
943
+ return true;
944
+ }
945
+
946
+ bool Parser::ParseMessageStatement(DescriptorProto* message,
947
+ const LocationRecorder& message_location,
948
+ const FileDescriptorProto* containing_file) {
949
+ if (TryConsumeEndOfDeclaration(";", nullptr)) {
950
+ // empty statement; ignore
951
+ return true;
952
+ }
953
+
954
+ SymbolVisibility visibility = SymbolVisibility::VISIBILITY_UNSET;
955
+ if (LookingAt("export") || LookingAt("local")) {
956
+ DO(ParseVisibility(containing_file, &visibility));
957
+ }
958
+
959
+ if (LookingAt("message")) {
960
+ LocationRecorder location(message_location,
961
+ DescriptorProto::kNestedTypeFieldNumber,
962
+ message->nested_type_size());
963
+ return ParseMessageDefinition(message->add_nested_type(), visibility,
964
+ location, containing_file);
965
+ } else if (LookingAt("enum")) {
966
+ LocationRecorder location(message_location,
967
+ DescriptorProto::kEnumTypeFieldNumber,
968
+ message->enum_type_size());
969
+ return ParseEnumDefinition(message->add_enum_type(), visibility, location,
970
+ containing_file);
971
+ } else if (LookingAt("extensions")) {
972
+ LocationRecorder location(message_location,
973
+ DescriptorProto::kExtensionRangeFieldNumber);
974
+ return ParseExtensions(message, location, containing_file);
975
+ } else if (LookingAt("reserved")) {
976
+ return ParseReserved(message, message_location);
977
+ } else if (LookingAt("extend")) {
978
+ LocationRecorder location(message_location,
979
+ DescriptorProto::kExtensionFieldNumber);
980
+ return ParseExtend(message->mutable_extension(),
981
+ message->mutable_nested_type(), message_location,
982
+ DescriptorProto::kNestedTypeFieldNumber, location,
983
+ containing_file);
984
+ } else if (LookingAt("option")) {
985
+ LocationRecorder location(message_location,
986
+ DescriptorProto::kOptionsFieldNumber);
987
+ return ParseOption(message->mutable_options(), location, containing_file,
988
+ OPTION_STATEMENT);
989
+ } else if (LookingAt("oneof")) {
990
+ int oneof_index = message->oneof_decl_size();
991
+ LocationRecorder oneof_location(
992
+ message_location, DescriptorProto::kOneofDeclFieldNumber, oneof_index);
993
+
994
+ return ParseOneof(message->add_oneof_decl(), message, oneof_index,
995
+ oneof_location, message_location, containing_file);
996
+ } else {
997
+ LocationRecorder location(message_location,
998
+ DescriptorProto::kFieldFieldNumber,
999
+ message->field_size());
1000
+ return ParseMessageField(
1001
+ message->add_field(), message->mutable_nested_type(), message_location,
1002
+ DescriptorProto::kNestedTypeFieldNumber, location, containing_file);
1003
+ }
1004
+ }
1005
+
1006
+ bool Parser::ParseMessageField(FieldDescriptorProto* field,
1007
+ RepeatedPtrField<DescriptorProto>* messages,
1008
+ const LocationRecorder& parent_location,
1009
+ int location_field_number_for_nested_type,
1010
+ const LocationRecorder& field_location,
1011
+ const FileDescriptorProto* containing_file) {
1012
+ {
1013
+ FieldDescriptorProto::Label label;
1014
+ if (ParseLabel(&label, field_location)) {
1015
+ field->set_label(label);
1016
+ if (label == FieldDescriptorProto::LABEL_OPTIONAL &&
1017
+ syntax_identifier_ == "proto3") {
1018
+ field->set_proto3_optional(true);
1019
+ }
1020
+ }
1021
+ }
1022
+
1023
+ return ParseMessageFieldNoLabel(field, messages, parent_location,
1024
+ location_field_number_for_nested_type,
1025
+ field_location, containing_file);
1026
+ }
1027
+
1028
+ bool Parser::ParseMessageFieldNoLabel(
1029
+ FieldDescriptorProto* field, RepeatedPtrField<DescriptorProto>* messages,
1030
+ const LocationRecorder& parent_location,
1031
+ int location_field_number_for_nested_type,
1032
+ const LocationRecorder& field_location,
1033
+ const FileDescriptorProto* containing_file) {
1034
+ MapField map_field;
1035
+ // Parse type.
1036
+ {
1037
+ LocationRecorder location(field_location); // add path later
1038
+ location.RecordLegacyLocation(field, DescriptorPool::ErrorCollector::TYPE);
1039
+
1040
+ bool type_parsed = false;
1041
+ FieldDescriptorProto::Type type = FieldDescriptorProto::TYPE_INT32;
1042
+ std::string type_name;
1043
+
1044
+ // Special case map field. We only treat the field as a map field if the
1045
+ // field type name starts with the word "map" with a following "<".
1046
+ if (TryConsume("map")) {
1047
+ if (LookingAt("<")) {
1048
+ map_field.is_map_field = true;
1049
+ DO(ParseMapType(&map_field, field, location));
1050
+ } else {
1051
+ // False positive
1052
+ type_parsed = true;
1053
+ type_name = "map";
1054
+ }
1055
+ }
1056
+ if (!map_field.is_map_field) {
1057
+ // Handle the case where no explicit label is given for a non-map field.
1058
+ if (!field->has_label() && DefaultToOptionalFields()) {
1059
+ field->set_label(FieldDescriptorProto::LABEL_OPTIONAL);
1060
+ }
1061
+ if (!field->has_label()) {
1062
+ RecordError("Expected \"required\", \"optional\", or \"repeated\".");
1063
+ // We can actually reasonably recover here by just assuming the user
1064
+ // forgot the label altogether.
1065
+ field->set_label(FieldDescriptorProto::LABEL_OPTIONAL);
1066
+ }
1067
+
1068
+ // Handle the case where the actual type is a message or enum named
1069
+ // "map", which we already consumed in the code above.
1070
+ if (!type_parsed) {
1071
+ DO(ParseType(&type, &type_name));
1072
+ }
1073
+ if (type_name.empty()) {
1074
+ location.AddPath(FieldDescriptorProto::kTypeFieldNumber);
1075
+ field->set_type(type);
1076
+ } else {
1077
+ location.AddPath(FieldDescriptorProto::kTypeNameFieldNumber);
1078
+ field->set_type_name(type_name);
1079
+ }
1080
+ }
1081
+ }
1082
+
1083
+ // Parse name and '='.
1084
+ io::Tokenizer::Token name_token = input_->current();
1085
+ {
1086
+ LocationRecorder location(field_location,
1087
+ FieldDescriptorProto::kNameFieldNumber);
1088
+ location.RecordLegacyLocation(field, DescriptorPool::ErrorCollector::NAME);
1089
+ DO(ConsumeIdentifier(field->mutable_name(), "Expected field name."));
1090
+ }
1091
+ DO(Consume("=", "Missing field number."));
1092
+
1093
+ // Parse field number.
1094
+ {
1095
+ LocationRecorder location(field_location,
1096
+ FieldDescriptorProto::kNumberFieldNumber);
1097
+ location.RecordLegacyLocation(field,
1098
+ DescriptorPool::ErrorCollector::NUMBER);
1099
+ int number;
1100
+ DO(ConsumeInteger(&number, "Expected field number."));
1101
+ field->set_number(number);
1102
+ }
1103
+
1104
+ // Parse options.
1105
+ DO(ParseFieldOptions(field, field_location, containing_file));
1106
+
1107
+ // Deal with groups.
1108
+ if (field->has_type() && field->type() == FieldDescriptorProto::TYPE_GROUP) {
1109
+ // Awkward: Since a group declares both a message type and a field, we
1110
+ // have to create overlapping locations.
1111
+ LocationRecorder group_location(parent_location);
1112
+ group_location.StartAt(field_location);
1113
+ group_location.AddPath(location_field_number_for_nested_type);
1114
+ group_location.AddPath(messages->size());
1115
+
1116
+ DescriptorProto* group = messages->Add();
1117
+ group->set_name(field->name());
1118
+
1119
+ // Record name location to match the field name's location.
1120
+ {
1121
+ LocationRecorder location(group_location,
1122
+ DescriptorProto::kNameFieldNumber);
1123
+ location.StartAt(name_token);
1124
+ location.EndAt(name_token);
1125
+ location.RecordLegacyLocation(group,
1126
+ DescriptorPool::ErrorCollector::NAME);
1127
+ }
1128
+
1129
+ // The field's type_name also comes from the name. Confusing!
1130
+ {
1131
+ LocationRecorder location(field_location,
1132
+ FieldDescriptorProto::kTypeNameFieldNumber);
1133
+ location.StartAt(name_token);
1134
+ location.EndAt(name_token);
1135
+ }
1136
+
1137
+ // As a hack for backwards-compatibility, we force the group name to start
1138
+ // with a capital letter and lower-case the field name. New code should
1139
+ // not use groups; it should use nested messages.
1140
+ if (group->name()[0] < 'A' || 'Z' < group->name()[0]) {
1141
+ RecordError(name_token.line, name_token.column,
1142
+ "Group names must start with a capital letter.");
1143
+ }
1144
+ absl::AsciiStrToLower(field->mutable_name());
1145
+
1146
+ field->set_type_name(group->name());
1147
+ if (LookingAt("{")) {
1148
+ DO(ParseMessageBlock(group, group_location, containing_file));
1149
+ } else {
1150
+ RecordError("Missing group body.");
1151
+ return false;
1152
+ }
1153
+ } else {
1154
+ DO(ConsumeEndOfDeclaration(";", &field_location));
1155
+ }
1156
+
1157
+ // Create a map entry type if this is a map field.
1158
+ if (map_field.is_map_field) {
1159
+ GenerateMapEntry(map_field, field, messages);
1160
+ }
1161
+
1162
+ return true;
1163
+ }
1164
+
1165
+ bool Parser::ParseMapType(MapField* map_field, FieldDescriptorProto* field,
1166
+ LocationRecorder& type_name_location) {
1167
+ if (field->has_oneof_index()) {
1168
+ RecordError("Map fields are not allowed in oneofs.");
1169
+ return false;
1170
+ }
1171
+ if (field->has_label()) {
1172
+ RecordError(
1173
+ "Field labels (required/optional/repeated) are not allowed on "
1174
+ "map fields.");
1175
+ return false;
1176
+ }
1177
+ if (field->has_extendee()) {
1178
+ RecordError("Map fields are not allowed to be extensions.");
1179
+ return false;
1180
+ }
1181
+ field->set_label(FieldDescriptorProto::LABEL_REPEATED);
1182
+ DO(Consume("<"));
1183
+ DO(ParseType(&map_field->key_type, &map_field->key_type_name));
1184
+ DO(Consume(","));
1185
+ DO(ParseType(&map_field->value_type, &map_field->value_type_name));
1186
+ DO(Consume(">"));
1187
+ // Defer setting of the type name of the map field until the
1188
+ // field name is parsed. Add the source location though.
1189
+ type_name_location.AddPath(FieldDescriptorProto::kTypeNameFieldNumber);
1190
+ return true;
1191
+ }
1192
+
1193
+ void Parser::GenerateMapEntry(const MapField& map_field,
1194
+ FieldDescriptorProto* field,
1195
+ RepeatedPtrField<DescriptorProto>* messages) {
1196
+ DescriptorProto* entry = messages->Add();
1197
+ std::string entry_name = MapEntryName(field->name());
1198
+ field->set_type_name(entry_name);
1199
+ entry->set_name(entry_name);
1200
+ entry->mutable_options()->set_map_entry(true);
1201
+ FieldDescriptorProto* key_field = entry->add_field();
1202
+ key_field->set_name("key");
1203
+ key_field->set_label(FieldDescriptorProto::LABEL_OPTIONAL);
1204
+ key_field->set_number(1);
1205
+ if (map_field.key_type_name.empty()) {
1206
+ key_field->set_type(map_field.key_type);
1207
+ } else {
1208
+ key_field->set_type_name(map_field.key_type_name);
1209
+ }
1210
+ FieldDescriptorProto* value_field = entry->add_field();
1211
+ value_field->set_name("value");
1212
+ value_field->set_label(FieldDescriptorProto::LABEL_OPTIONAL);
1213
+ value_field->set_number(2);
1214
+ if (map_field.value_type_name.empty()) {
1215
+ value_field->set_type(map_field.value_type);
1216
+ } else {
1217
+ value_field->set_type_name(map_field.value_type_name);
1218
+ }
1219
+ // Propagate all features to the generated key and value fields. This helps
1220
+ // simplify the implementation of code generators and also reflection-based
1221
+ // parsing code. Instead of having to implement complex inheritance rules
1222
+ // special-casing maps, we can just copy them at generation time.
1223
+ //
1224
+ // The following definition:
1225
+ // message Foo {
1226
+ // map<string, string> value = 1 [features.some_feature = VALUE];
1227
+ // }
1228
+ // will be interpreted as:
1229
+ // message Foo {
1230
+ // message ValueEntry {
1231
+ // option map_entry = true;
1232
+ // string key = 1 [features.some_feature = VALUE];
1233
+ // string value = 2 [features.some_feature = VALUE];
1234
+ // }
1235
+ // repeated ValueEntry value = 1 [features.some_feature = VALUE];
1236
+ // }
1237
+ for (int i = 0; i < field->options().uninterpreted_option_size(); ++i) {
1238
+ const UninterpretedOption& option =
1239
+ field->options().uninterpreted_option(i);
1240
+ // Legacy handling for the `enforce_utf8` option, which bears a striking
1241
+ // similarity to features in many respects.
1242
+ // TODO Delete this once proto2/proto3 have been turned down.
1243
+ if (option.name_size() == 1 &&
1244
+ option.name(0).name_part() == "enforce_utf8" &&
1245
+ !option.name(0).is_extension()) {
1246
+ if (key_field->type() == FieldDescriptorProto::TYPE_STRING) {
1247
+ *key_field->mutable_options()->add_uninterpreted_option() = option;
1248
+ }
1249
+ if (value_field->type() == FieldDescriptorProto::TYPE_STRING) {
1250
+ *value_field->mutable_options()->add_uninterpreted_option() = option;
1251
+ }
1252
+ }
1253
+ if (option.name(0).name_part() == "features" &&
1254
+ !option.name(0).is_extension()) {
1255
+ *key_field->mutable_options()->add_uninterpreted_option() = option;
1256
+ *value_field->mutable_options()->add_uninterpreted_option() = option;
1257
+ }
1258
+ }
1259
+ }
1260
+
1261
+ bool Parser::ParseFieldOptions(FieldDescriptorProto* field,
1262
+ const LocationRecorder& field_location,
1263
+ const FileDescriptorProto* containing_file) {
1264
+ if (!LookingAt("[")) return true;
1265
+
1266
+ LocationRecorder location(field_location,
1267
+ FieldDescriptorProto::kOptionsFieldNumber);
1268
+
1269
+ DO(Consume("["));
1270
+
1271
+ // Parse field options.
1272
+ do {
1273
+ if (LookingAt("default")) {
1274
+ // We intentionally pass field_location rather than location here, since
1275
+ // the default value is not actually an option.
1276
+ DO(ParseDefaultAssignment(field, field_location, containing_file));
1277
+ } else if (LookingAt("json_name")) {
1278
+ // Like default value, this "json_name" is not an actual option.
1279
+ DO(ParseJsonName(field, field_location, containing_file));
1280
+ } else {
1281
+ DO(ParseOption(field->mutable_options(), location, containing_file,
1282
+ OPTION_ASSIGNMENT));
1283
+ }
1284
+ } while (TryConsume(","));
1285
+
1286
+ DO(Consume("]"));
1287
+ return true;
1288
+ }
1289
+
1290
+ bool Parser::ParseDefaultAssignment(
1291
+ FieldDescriptorProto* field, const LocationRecorder& field_location,
1292
+ const FileDescriptorProto* containing_file) {
1293
+ if (field->has_default_value()) {
1294
+ RecordError("Already set option \"default\".");
1295
+ field->clear_default_value();
1296
+ }
1297
+
1298
+ DO(Consume("default"));
1299
+ DO(Consume("="));
1300
+
1301
+ LocationRecorder location(field_location,
1302
+ FieldDescriptorProto::kDefaultValueFieldNumber);
1303
+ location.RecordLegacyLocation(field,
1304
+ DescriptorPool::ErrorCollector::DEFAULT_VALUE);
1305
+ std::string* default_value = field->mutable_default_value();
1306
+
1307
+ if (!field->has_type()) {
1308
+ // The field has a type name, but we don't know if it is a message or an
1309
+ // enum yet. (If it were a primitive type, |field| would have a type set
1310
+ // already.) In this case, simply take the current string as the default
1311
+ // value; we will catch the error later if it is not a valid enum value.
1312
+ // (N.B. that we do not check whether the current token is an identifier:
1313
+ // doing so throws strange errors when the user mistypes a primitive
1314
+ // typename and we assume it's an enum. E.g.: "optional int foo = 1 [default
1315
+ // = 42]". In such a case the fundamental error is really that "int" is not
1316
+ // a type, not that "42" is not an identifier. See b/12533582.)
1317
+ *default_value = input_->current().text;
1318
+ input_->Next();
1319
+ return true;
1320
+ }
1321
+
1322
+ switch (field->type()) {
1323
+ case FieldDescriptorProto::TYPE_INT32:
1324
+ case FieldDescriptorProto::TYPE_INT64:
1325
+ case FieldDescriptorProto::TYPE_SINT32:
1326
+ case FieldDescriptorProto::TYPE_SINT64:
1327
+ case FieldDescriptorProto::TYPE_SFIXED32:
1328
+ case FieldDescriptorProto::TYPE_SFIXED64: {
1329
+ uint64_t max_value = std::numeric_limits<int64_t>::max();
1330
+ if (field->type() == FieldDescriptorProto::TYPE_INT32 ||
1331
+ field->type() == FieldDescriptorProto::TYPE_SINT32 ||
1332
+ field->type() == FieldDescriptorProto::TYPE_SFIXED32) {
1333
+ max_value = std::numeric_limits<int32_t>::max();
1334
+ }
1335
+
1336
+ // These types can be negative.
1337
+ if (TryConsume("-")) {
1338
+ default_value->append("-");
1339
+ // Two's complement always has one more negative value than positive.
1340
+ ++max_value;
1341
+ }
1342
+ // Parse the integer to verify that it is not out-of-range.
1343
+ uint64_t value;
1344
+ DO(ConsumeInteger64(max_value, &value,
1345
+ "Expected integer for field default value."));
1346
+ // And stringify it again.
1347
+ absl::StrAppend(default_value, value);
1348
+ break;
1349
+ }
1350
+
1351
+ case FieldDescriptorProto::TYPE_UINT32:
1352
+ case FieldDescriptorProto::TYPE_UINT64:
1353
+ case FieldDescriptorProto::TYPE_FIXED32:
1354
+ case FieldDescriptorProto::TYPE_FIXED64: {
1355
+ uint64_t max_value = std::numeric_limits<uint64_t>::max();
1356
+ if (field->type() == FieldDescriptorProto::TYPE_UINT32 ||
1357
+ field->type() == FieldDescriptorProto::TYPE_FIXED32) {
1358
+ max_value = std::numeric_limits<uint32_t>::max();
1359
+ }
1360
+
1361
+ // Numeric, not negative.
1362
+ if (TryConsume("-")) {
1363
+ RecordError("Unsigned field can't have negative default value.");
1364
+ }
1365
+ // Parse the integer to verify that it is not out-of-range.
1366
+ uint64_t value;
1367
+ DO(ConsumeInteger64(max_value, &value,
1368
+ "Expected integer for field default value."));
1369
+ // And stringify it again.
1370
+ absl::StrAppend(default_value, value);
1371
+ break;
1372
+ }
1373
+
1374
+ case FieldDescriptorProto::TYPE_FLOAT:
1375
+ case FieldDescriptorProto::TYPE_DOUBLE: {
1376
+ // These types can be negative.
1377
+ if (TryConsume("-")) {
1378
+ default_value->append("-");
1379
+ }
1380
+ // Parse the integer because we have to convert hex integers to decimal
1381
+ // floats.
1382
+ double value = 0.0;
1383
+ DO(ConsumeNumber(&value, "Expected number."));
1384
+ // And stringify it again.
1385
+ default_value->append(io::SimpleDtoa(value));
1386
+ break;
1387
+ }
1388
+ case FieldDescriptorProto::TYPE_BOOL:
1389
+ if (TryConsume("true")) {
1390
+ default_value->assign("true");
1391
+ } else if (TryConsume("false")) {
1392
+ default_value->assign("false");
1393
+ } else {
1394
+ RecordError("Expected \"true\" or \"false\".");
1395
+ return false;
1396
+ }
1397
+ break;
1398
+
1399
+ case FieldDescriptorProto::TYPE_STRING:
1400
+ // Note: When file option java_string_check_utf8 is true, if a
1401
+ // non-string representation (eg byte[]) is later supported, it must
1402
+ // be checked for UTF-8-ness.
1403
+ DO(ConsumeString(default_value,
1404
+ "Expected string for field default "
1405
+ "value."));
1406
+ break;
1407
+
1408
+ case FieldDescriptorProto::TYPE_BYTES:
1409
+ DO(ConsumeString(default_value, "Expected string."));
1410
+ *default_value = absl::CEscape(*default_value);
1411
+ break;
1412
+
1413
+ case FieldDescriptorProto::TYPE_ENUM:
1414
+ DO(ConsumeIdentifier(default_value,
1415
+ "Expected enum identifier for field "
1416
+ "default value."));
1417
+ break;
1418
+
1419
+ case FieldDescriptorProto::TYPE_MESSAGE:
1420
+ case FieldDescriptorProto::TYPE_GROUP:
1421
+ RecordError("Messages can't have default values.");
1422
+ return false;
1423
+ }
1424
+
1425
+ return true;
1426
+ }
1427
+
1428
+ bool Parser::ParseJsonName(FieldDescriptorProto* field,
1429
+ const LocationRecorder& field_location,
1430
+ const FileDescriptorProto* containing_file) {
1431
+ if (field->has_json_name()) {
1432
+ RecordError("Already set option \"json_name\".");
1433
+ field->clear_json_name();
1434
+ }
1435
+
1436
+ LocationRecorder location(field_location,
1437
+ FieldDescriptorProto::kJsonNameFieldNumber);
1438
+ location.RecordLegacyLocation(field,
1439
+ DescriptorPool::ErrorCollector::OPTION_NAME);
1440
+
1441
+ DO(Consume("json_name"));
1442
+ DO(Consume("="));
1443
+
1444
+ LocationRecorder value_location(location);
1445
+ value_location.RecordLegacyLocation(
1446
+ field, DescriptorPool::ErrorCollector::OPTION_VALUE);
1447
+
1448
+ DO(ConsumeString(field->mutable_json_name(),
1449
+ "Expected string for JSON name."));
1450
+ return true;
1451
+ }
1452
+
1453
+ bool Parser::ParseOptionNamePart(UninterpretedOption* uninterpreted_option,
1454
+ const LocationRecorder& part_location,
1455
+ const FileDescriptorProto* containing_file) {
1456
+ UninterpretedOption::NamePart* name = uninterpreted_option->add_name();
1457
+ std::string identifier; // We parse identifiers into this string.
1458
+ if (LookingAt("(")) { // This is an extension.
1459
+ DO(Consume("("));
1460
+
1461
+ {
1462
+ LocationRecorder location(
1463
+ part_location, UninterpretedOption::NamePart::kNamePartFieldNumber);
1464
+ // An extension name consists of dot-separated identifiers, and may begin
1465
+ // with a dot.
1466
+ if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) {
1467
+ DO(ConsumeIdentifier(&identifier, "Expected identifier."));
1468
+ name->mutable_name_part()->append(identifier);
1469
+ }
1470
+ while (LookingAt(".")) {
1471
+ DO(Consume("."));
1472
+ name->mutable_name_part()->append(".");
1473
+ DO(ConsumeIdentifier(&identifier, "Expected identifier."));
1474
+ name->mutable_name_part()->append(identifier);
1475
+ }
1476
+ }
1477
+
1478
+ DO(Consume(")"));
1479
+ name->set_is_extension(true);
1480
+ } else { // This is a regular field.
1481
+ LocationRecorder location(
1482
+ part_location, UninterpretedOption::NamePart::kNamePartFieldNumber);
1483
+ DO(ConsumeIdentifier(&identifier, "Expected identifier."));
1484
+ name->mutable_name_part()->append(identifier);
1485
+ name->set_is_extension(false);
1486
+ }
1487
+ return true;
1488
+ }
1489
+
1490
+ bool Parser::ParseUninterpretedBlock(std::string* value) {
1491
+ // Note that enclosing braces are not added to *value.
1492
+ // We do NOT use ConsumeEndOfStatement for this brace because it's delimiting
1493
+ // an expression, not a block of statements.
1494
+ DO(Consume("{"));
1495
+ int brace_depth = 1;
1496
+ while (!AtEnd()) {
1497
+ if (LookingAt("{")) {
1498
+ brace_depth++;
1499
+ } else if (LookingAt("}")) {
1500
+ brace_depth--;
1501
+ if (brace_depth == 0) {
1502
+ input_->Next();
1503
+ return true;
1504
+ }
1505
+ }
1506
+ // TODO: Interpret line/column numbers to preserve formatting
1507
+ if (!value->empty()) value->push_back(' ');
1508
+ value->append(input_->current().text);
1509
+ input_->Next();
1510
+ }
1511
+ RecordError("Unexpected end of stream while parsing aggregate value.");
1512
+ return false;
1513
+ }
1514
+
1515
+ // We don't interpret the option here. Instead we store it in an
1516
+ // UninterpretedOption, to be interpreted later.
1517
+ bool Parser::ParseOption(Message* options,
1518
+ const LocationRecorder& options_location,
1519
+ const FileDescriptorProto* containing_file,
1520
+ OptionStyle style) {
1521
+ // Create an entry in the uninterpreted_option field.
1522
+ const FieldDescriptor* uninterpreted_option_field =
1523
+ options->GetDescriptor()->FindFieldByName("uninterpreted_option");
1524
+ ABSL_CHECK(uninterpreted_option_field != nullptr)
1525
+ << "No field named \"uninterpreted_option\" in the Options proto.";
1526
+
1527
+ const Reflection* reflection = options->GetReflection();
1528
+
1529
+ LocationRecorder location(
1530
+ options_location, uninterpreted_option_field->number(),
1531
+ reflection->FieldSize(*options, uninterpreted_option_field));
1532
+
1533
+ if (style == OPTION_STATEMENT) {
1534
+ DO(Consume("option"));
1535
+ }
1536
+
1537
+ UninterpretedOption* uninterpreted_option =
1538
+ DownCastMessage<UninterpretedOption>(options->GetReflection()->AddMessage(
1539
+ options, uninterpreted_option_field));
1540
+
1541
+ // Parse dot-separated name.
1542
+ {
1543
+ LocationRecorder name_location(location,
1544
+ UninterpretedOption::kNameFieldNumber);
1545
+ name_location.RecordLegacyLocation(
1546
+ uninterpreted_option, DescriptorPool::ErrorCollector::OPTION_NAME);
1547
+
1548
+ {
1549
+ LocationRecorder part_location(name_location,
1550
+ uninterpreted_option->name_size());
1551
+ DO(ParseOptionNamePart(uninterpreted_option, part_location,
1552
+ containing_file));
1553
+ }
1554
+
1555
+ while (LookingAt(".")) {
1556
+ DO(Consume("."));
1557
+ LocationRecorder part_location(name_location,
1558
+ uninterpreted_option->name_size());
1559
+ DO(ParseOptionNamePart(uninterpreted_option, part_location,
1560
+ containing_file));
1561
+ }
1562
+ }
1563
+
1564
+ DO(Consume("="));
1565
+
1566
+ {
1567
+ LocationRecorder value_location(location);
1568
+ value_location.RecordLegacyLocation(
1569
+ uninterpreted_option, DescriptorPool::ErrorCollector::OPTION_VALUE);
1570
+
1571
+ // All values are a single token, except for negative numbers, which consist
1572
+ // of a single '-' symbol, followed by a positive number.
1573
+ bool is_negative = TryConsume("-");
1574
+
1575
+ switch (input_->current().type) {
1576
+ case io::Tokenizer::TYPE_START:
1577
+ ABSL_LOG(FATAL)
1578
+ << "Trying to read value before any tokens have been read.";
1579
+ return false;
1580
+
1581
+ case io::Tokenizer::TYPE_END:
1582
+ RecordError("Unexpected end of stream while parsing option value.");
1583
+ return false;
1584
+
1585
+ case io::Tokenizer::TYPE_WHITESPACE:
1586
+ case io::Tokenizer::TYPE_NEWLINE:
1587
+ ABSL_CHECK(!input_->report_whitespace() && !input_->report_newlines())
1588
+ << "Whitespace tokens were not requested.";
1589
+ ABSL_LOG(FATAL) << "Tokenizer reported whitespace.";
1590
+ return false;
1591
+
1592
+ case io::Tokenizer::TYPE_IDENTIFIER: {
1593
+ value_location.AddPath(
1594
+ UninterpretedOption::kIdentifierValueFieldNumber);
1595
+ std::string value;
1596
+ DO(ConsumeIdentifier(&value, "Expected identifier."));
1597
+ if (is_negative) {
1598
+ if (value == "inf") {
1599
+ uninterpreted_option->set_double_value(
1600
+ -std::numeric_limits<double>::infinity());
1601
+ } else if (value == "nan") {
1602
+ uninterpreted_option->set_double_value(
1603
+ std::numeric_limits<double>::quiet_NaN());
1604
+ } else {
1605
+ RecordError("Identifier after '-' symbol must be inf or nan.");
1606
+ return false;
1607
+ }
1608
+ break;
1609
+ }
1610
+ uninterpreted_option->set_identifier_value(value);
1611
+ break;
1612
+ }
1613
+
1614
+ case io::Tokenizer::TYPE_INTEGER: {
1615
+ uint64_t value;
1616
+ uint64_t max_value =
1617
+ is_negative
1618
+ ? static_cast<uint64_t>(std::numeric_limits<int64_t>::max()) + 1
1619
+ : std::numeric_limits<uint64_t>::max();
1620
+ if (TryConsumeInteger64(max_value, &value)) {
1621
+ if (is_negative) {
1622
+ value_location.AddPath(
1623
+ UninterpretedOption::kNegativeIntValueFieldNumber);
1624
+ uninterpreted_option->set_negative_int_value(
1625
+ static_cast<int64_t>(0 - value));
1626
+ } else {
1627
+ value_location.AddPath(
1628
+ UninterpretedOption::kPositiveIntValueFieldNumber);
1629
+ uninterpreted_option->set_positive_int_value(value);
1630
+ }
1631
+ break;
1632
+ }
1633
+ // value too large for an integer; fall through below to treat as
1634
+ // floating point
1635
+ ABSL_FALLTHROUGH_INTENDED;
1636
+ }
1637
+
1638
+ case io::Tokenizer::TYPE_FLOAT: {
1639
+ value_location.AddPath(UninterpretedOption::kDoubleValueFieldNumber);
1640
+ double value = 0.0;
1641
+ DO(ConsumeNumber(&value, "Expected number."));
1642
+ uninterpreted_option->set_double_value(is_negative ? -value : value);
1643
+ break;
1644
+ }
1645
+
1646
+ case io::Tokenizer::TYPE_STRING: {
1647
+ value_location.AddPath(UninterpretedOption::kStringValueFieldNumber);
1648
+ if (is_negative) {
1649
+ RecordError("Invalid '-' symbol before string.");
1650
+ return false;
1651
+ }
1652
+ std::string value;
1653
+ DO(ConsumeString(&value, "Expected string."));
1654
+ uninterpreted_option->set_string_value(value);
1655
+ break;
1656
+ }
1657
+
1658
+ case io::Tokenizer::TYPE_SYMBOL:
1659
+ if (LookingAt("{")) {
1660
+ value_location.AddPath(
1661
+ UninterpretedOption::kAggregateValueFieldNumber);
1662
+ DO(ParseUninterpretedBlock(
1663
+ uninterpreted_option->mutable_aggregate_value()));
1664
+ } else {
1665
+ RecordError("Expected option value.");
1666
+ return false;
1667
+ }
1668
+ break;
1669
+
1670
+ case io::Tokenizer::TYPE_URL_CHARS:
1671
+ ABSL_LOG(FATAL) << "Unexpected token type (URL chars).";
1672
+ return false;
1673
+ }
1674
+ }
1675
+
1676
+ if (style == OPTION_STATEMENT) {
1677
+ DO(ConsumeEndOfDeclaration(";", &location));
1678
+ }
1679
+
1680
+ return true;
1681
+ }
1682
+
1683
+ bool Parser::ParseExtensions(DescriptorProto* message,
1684
+ const LocationRecorder& extensions_location,
1685
+ const FileDescriptorProto* containing_file) {
1686
+ // Parse the declaration.
1687
+ DO(Consume("extensions"));
1688
+
1689
+ int old_range_size = message->extension_range_size();
1690
+
1691
+ do {
1692
+ // Note that kExtensionRangeFieldNumber was already pushed by the parent.
1693
+ LocationRecorder location(extensions_location,
1694
+ message->extension_range_size());
1695
+
1696
+ DescriptorProto::ExtensionRange* range = message->add_extension_range();
1697
+ location.RecordLegacyLocation(range,
1698
+ DescriptorPool::ErrorCollector::NUMBER);
1699
+
1700
+ int start, end;
1701
+ io::Tokenizer::Token start_token;
1702
+
1703
+ {
1704
+ LocationRecorder start_location(
1705
+ location, DescriptorProto::ExtensionRange::kStartFieldNumber);
1706
+ start_token = input_->current();
1707
+ DO(ConsumeInteger(&start, "Expected field number range."));
1708
+
1709
+ if (start == std::numeric_limits<int>::max()) {
1710
+ RecordError("Field number out of bounds.");
1711
+ return false;
1712
+ }
1713
+ }
1714
+
1715
+ if (TryConsume("to")) {
1716
+ LocationRecorder end_location(
1717
+ location, DescriptorProto::ExtensionRange::kEndFieldNumber);
1718
+ if (TryConsume("max")) {
1719
+ // Set to the sentinel value - 1 since we increment the value below.
1720
+ // The actual value of the end of the range should be set with
1721
+ // AdjustExtensionRangesWithMaxEndNumber.
1722
+ end = kMaxRangeSentinel - 1;
1723
+ } else {
1724
+ DO(ConsumeInteger(&end, "Expected integer."));
1725
+
1726
+ if (end == std::numeric_limits<int>::max()) {
1727
+ RecordError("Field number out of bounds.");
1728
+ return false;
1729
+ }
1730
+ }
1731
+ } else {
1732
+ LocationRecorder end_location(
1733
+ location, DescriptorProto::ExtensionRange::kEndFieldNumber);
1734
+ end_location.StartAt(start_token);
1735
+ end_location.EndAt(start_token);
1736
+ end = start;
1737
+ }
1738
+
1739
+ // Users like to specify inclusive ranges, but in code we like the end
1740
+ // number to be exclusive.
1741
+ ++end;
1742
+
1743
+ range->set_start(start);
1744
+ range->set_end(end);
1745
+ } while (TryConsume(","));
1746
+
1747
+ if (LookingAt("[")) {
1748
+ int range_number_index = extensions_location.CurrentPathSize();
1749
+ SourceCodeInfo info;
1750
+
1751
+ // Parse extension range options in the first range.
1752
+ ExtensionRangeOptions* options =
1753
+ message->mutable_extension_range(old_range_size)->mutable_options();
1754
+
1755
+ {
1756
+ LocationRecorder index_location(
1757
+ extensions_location, 0 /* we fill this in w/ actual index below */,
1758
+ &info);
1759
+ LocationRecorder location(
1760
+ index_location, DescriptorProto::ExtensionRange::kOptionsFieldNumber);
1761
+ DO(Consume("["));
1762
+
1763
+ do {
1764
+ DO(ParseOption(options, location, containing_file, OPTION_ASSIGNMENT));
1765
+ } while (TryConsume(","));
1766
+
1767
+ DO(Consume("]"));
1768
+ }
1769
+
1770
+ // Then copy the extension range options to all of the other ranges we've
1771
+ // parsed.
1772
+ for (int i = old_range_size + 1; i < message->extension_range_size(); i++) {
1773
+ *message->mutable_extension_range(i)->mutable_options() = *options;
1774
+ }
1775
+ // and copy source locations to the other ranges, too
1776
+ for (int i = old_range_size; i < message->extension_range_size(); i++) {
1777
+ for (int j = 0; j < info.location_size(); j++) {
1778
+ if (info.location(j).path_size() == range_number_index + 1) {
1779
+ // this location's path is up to the extension range index, but
1780
+ // doesn't include options; so it's redundant with location above
1781
+ continue;
1782
+ }
1783
+ SourceCodeInfo_Location* dest = source_code_info_->add_location();
1784
+ *dest = info.location(j);
1785
+ dest->set_path(range_number_index, i);
1786
+ }
1787
+ }
1788
+ }
1789
+
1790
+ DO(ConsumeEndOfDeclaration(";", &extensions_location));
1791
+ return true;
1792
+ }
1793
+
1794
+ // This is similar to extension range parsing, except that it accepts field
1795
+ // name literals.
1796
+ bool Parser::ParseReserved(DescriptorProto* message,
1797
+ const LocationRecorder& message_location) {
1798
+ io::Tokenizer::Token start_token = input_->current();
1799
+ // Parse the declaration.
1800
+ DO(Consume("reserved"));
1801
+ if (LookingAtType(io::Tokenizer::TYPE_STRING)) {
1802
+ if (syntax_identifier_ == "editions") {
1803
+ RecordError(
1804
+ "Reserved names must be identifiers in editions, not string "
1805
+ "literals.");
1806
+ return false;
1807
+ }
1808
+ LocationRecorder location(message_location,
1809
+ DescriptorProto::kReservedNameFieldNumber);
1810
+ location.StartAt(start_token);
1811
+ return ParseReservedNames(message, location);
1812
+ } else if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) {
1813
+ if (syntax_identifier_ != "editions") {
1814
+ RecordError(
1815
+ "Reserved names must be string literals. (Only editions supports "
1816
+ "identifiers.)");
1817
+ return false;
1818
+ }
1819
+ LocationRecorder location(message_location,
1820
+ DescriptorProto::kReservedNameFieldNumber);
1821
+ location.StartAt(start_token);
1822
+ return ParseReservedIdentifiers(message, location);
1823
+ } else {
1824
+ LocationRecorder location(message_location,
1825
+ DescriptorProto::kReservedRangeFieldNumber);
1826
+ location.StartAt(start_token);
1827
+ return ParseReservedNumbers(message, location);
1828
+ }
1829
+ }
1830
+
1831
+ bool Parser::ParseReservedName(std::string* name, ErrorMaker error_message) {
1832
+ // Capture the position of the token, in case we have to report an
1833
+ // error after it is consumed.
1834
+ int line = input_->current().line;
1835
+ int col = input_->current().column;
1836
+ DO(ConsumeString(name, error_message));
1837
+ if (!io::Tokenizer::IsIdentifier(*name)) {
1838
+ // Before Edition 2023, it was possible to reserve any string literal. This
1839
+ // doesn't really make sense if the string literal wasn't a valid
1840
+ // identifier, so warn about it here.
1841
+ // Note that this warning is also load-bearing for tests that intend to
1842
+ // verify warnings work as expected today.
1843
+ RecordWarning(line, col, [=] {
1844
+ return absl::StrFormat("Reserved name \"%s\" is not a valid identifier.",
1845
+ *name);
1846
+ });
1847
+ }
1848
+ return true;
1849
+ }
1850
+
1851
+ bool Parser::ParseReservedNames(DescriptorProto* message,
1852
+ const LocationRecorder& parent_location) {
1853
+ do {
1854
+ LocationRecorder location(parent_location, message->reserved_name_size());
1855
+ DO(ParseReservedName(message->add_reserved_name(),
1856
+ "Expected field name string literal."));
1857
+ } while (TryConsume(","));
1858
+ DO(ConsumeEndOfDeclaration(";", &parent_location));
1859
+ return true;
1860
+ }
1861
+
1862
+ bool Parser::ParseReservedIdentifier(std::string* name,
1863
+ ErrorMaker error_message) {
1864
+ DO(ConsumeIdentifier(name, error_message));
1865
+ return true;
1866
+ }
1867
+
1868
+ bool Parser::ParseReservedIdentifiers(DescriptorProto* message,
1869
+ const LocationRecorder& parent_location) {
1870
+ do {
1871
+ LocationRecorder location(parent_location, message->reserved_name_size());
1872
+ DO(ParseReservedIdentifier(message->add_reserved_name(),
1873
+ "Expected field name identifier."));
1874
+ } while (TryConsume(","));
1875
+ DO(ConsumeEndOfDeclaration(";", &parent_location));
1876
+ return true;
1877
+ }
1878
+
1879
+ bool Parser::ParseReservedNumbers(DescriptorProto* message,
1880
+ const LocationRecorder& parent_location) {
1881
+ bool first = true;
1882
+ do {
1883
+ LocationRecorder location(parent_location, message->reserved_range_size());
1884
+
1885
+ DescriptorProto::ReservedRange* range = message->add_reserved_range();
1886
+ location.RecordLegacyLocation(range,
1887
+ DescriptorPool::ErrorCollector::NUMBER);
1888
+ int start, end;
1889
+ io::Tokenizer::Token start_token;
1890
+ {
1891
+ LocationRecorder start_location(
1892
+ location, DescriptorProto::ReservedRange::kStartFieldNumber);
1893
+ start_token = input_->current();
1894
+ DO(ConsumeInteger(&start, (first ? "Expected field name or number range."
1895
+ : "Expected field number range.")));
1896
+ }
1897
+
1898
+ if (TryConsume("to")) {
1899
+ LocationRecorder end_location(
1900
+ location, DescriptorProto::ReservedRange::kEndFieldNumber);
1901
+ if (TryConsume("max")) {
1902
+ // Set to the sentinel value - 1 since we increment the value below.
1903
+ // The actual value of the end of the range should be set with
1904
+ // AdjustExtensionRangesWithMaxEndNumber.
1905
+ end = kMaxRangeSentinel - 1;
1906
+ } else {
1907
+ DO(ConsumeInteger(&end, "Expected integer."));
1908
+ }
1909
+ } else {
1910
+ LocationRecorder end_location(
1911
+ location, DescriptorProto::ReservedRange::kEndFieldNumber);
1912
+ end_location.StartAt(start_token);
1913
+ end_location.EndAt(start_token);
1914
+ end = start;
1915
+ }
1916
+
1917
+ // Users like to specify inclusive ranges, but in code we like the end
1918
+ // number to be exclusive.
1919
+ ++end;
1920
+
1921
+ range->set_start(start);
1922
+ range->set_end(end);
1923
+ first = false;
1924
+ } while (TryConsume(","));
1925
+
1926
+ DO(ConsumeEndOfDeclaration(";", &parent_location));
1927
+ return true;
1928
+ }
1929
+
1930
+ bool Parser::ParseReserved(EnumDescriptorProto* proto,
1931
+ const LocationRecorder& enum_location) {
1932
+ io::Tokenizer::Token start_token = input_->current();
1933
+ // Parse the declaration.
1934
+ DO(Consume("reserved"));
1935
+ if (LookingAtType(io::Tokenizer::TYPE_STRING)) {
1936
+ if (syntax_identifier_ == "editions") {
1937
+ RecordError(
1938
+ "Reserved names must be identifiers in editions, not string "
1939
+ "literals.");
1940
+ return false;
1941
+ }
1942
+ LocationRecorder location(enum_location,
1943
+ EnumDescriptorProto::kReservedNameFieldNumber);
1944
+ location.StartAt(start_token);
1945
+ return ParseReservedNames(proto, location);
1946
+ } else if (LookingAtType(io::Tokenizer::TYPE_IDENTIFIER)) {
1947
+ if (syntax_identifier_ != "editions") {
1948
+ RecordError(
1949
+ "Reserved names must be string literals. (Only editions supports "
1950
+ "identifiers.)");
1951
+ return false;
1952
+ }
1953
+ LocationRecorder location(enum_location,
1954
+ EnumDescriptorProto::kReservedNameFieldNumber);
1955
+ location.StartAt(start_token);
1956
+ return ParseReservedIdentifiers(proto, location);
1957
+ } else {
1958
+ LocationRecorder location(enum_location,
1959
+ EnumDescriptorProto::kReservedRangeFieldNumber);
1960
+ location.StartAt(start_token);
1961
+ return ParseReservedNumbers(proto, location);
1962
+ }
1963
+ }
1964
+
1965
+ bool Parser::ParseReservedNames(EnumDescriptorProto* proto,
1966
+ const LocationRecorder& parent_location) {
1967
+ do {
1968
+ LocationRecorder location(parent_location, proto->reserved_name_size());
1969
+ DO(ParseReservedName(proto->add_reserved_name(),
1970
+ "Expected enum value string literal."));
1971
+ } while (TryConsume(","));
1972
+ DO(ConsumeEndOfDeclaration(";", &parent_location));
1973
+ return true;
1974
+ }
1975
+
1976
+ bool Parser::ParseReservedIdentifiers(EnumDescriptorProto* proto,
1977
+ const LocationRecorder& parent_location) {
1978
+ do {
1979
+ LocationRecorder location(parent_location, proto->reserved_name_size());
1980
+ DO(ParseReservedIdentifier(proto->add_reserved_name(),
1981
+ "Expected enum value identifier."));
1982
+ } while (TryConsume(","));
1983
+ DO(ConsumeEndOfDeclaration(";", &parent_location));
1984
+ return true;
1985
+ }
1986
+
1987
+ bool Parser::ParseReservedNumbers(EnumDescriptorProto* proto,
1988
+ const LocationRecorder& parent_location) {
1989
+ bool first = true;
1990
+ do {
1991
+ LocationRecorder location(parent_location, proto->reserved_range_size());
1992
+
1993
+ EnumDescriptorProto::EnumReservedRange* range = proto->add_reserved_range();
1994
+ location.RecordLegacyLocation(range,
1995
+ DescriptorPool::ErrorCollector::NUMBER);
1996
+ int start, end;
1997
+ io::Tokenizer::Token start_token;
1998
+ {
1999
+ LocationRecorder start_location(
2000
+ location, EnumDescriptorProto::EnumReservedRange::kStartFieldNumber);
2001
+ start_token = input_->current();
2002
+ DO(ConsumeSignedInteger(&start,
2003
+ (first ? "Expected enum value or number range."
2004
+ : "Expected enum number range.")));
2005
+ }
2006
+
2007
+ if (TryConsume("to")) {
2008
+ LocationRecorder end_location(
2009
+ location, EnumDescriptorProto::EnumReservedRange::kEndFieldNumber);
2010
+ if (TryConsume("max")) {
2011
+ // This is in the enum descriptor path, which doesn't have the message
2012
+ // set duality to fix up, so it doesn't integrate with the sentinel.
2013
+ end = INT_MAX;
2014
+ } else {
2015
+ DO(ConsumeSignedInteger(&end, "Expected integer."));
2016
+ }
2017
+ } else {
2018
+ LocationRecorder end_location(
2019
+ location, EnumDescriptorProto::EnumReservedRange::kEndFieldNumber);
2020
+ end_location.StartAt(start_token);
2021
+ end_location.EndAt(start_token);
2022
+ end = start;
2023
+ }
2024
+
2025
+ range->set_start(start);
2026
+ range->set_end(end);
2027
+ first = false;
2028
+ } while (TryConsume(","));
2029
+
2030
+ DO(ConsumeEndOfDeclaration(";", &parent_location));
2031
+ return true;
2032
+ }
2033
+
2034
+ bool Parser::ParseExtend(RepeatedPtrField<FieldDescriptorProto>* extensions,
2035
+ RepeatedPtrField<DescriptorProto>* messages,
2036
+ const LocationRecorder& parent_location,
2037
+ int location_field_number_for_nested_type,
2038
+ const LocationRecorder& extend_location,
2039
+ const FileDescriptorProto* containing_file) {
2040
+ DO(Consume("extend"));
2041
+
2042
+ // Parse the extendee type.
2043
+ io::Tokenizer::Token extendee_start = input_->current();
2044
+ std::string extendee;
2045
+ DO(ParseUserDefinedType(&extendee));
2046
+ io::Tokenizer::Token extendee_end = input_->previous();
2047
+
2048
+ // Parse the block.
2049
+ DO(ConsumeEndOfDeclaration("{", &extend_location));
2050
+
2051
+ bool is_first = true;
2052
+
2053
+ do {
2054
+ if (AtEnd()) {
2055
+ RecordError("Reached end of input in extend definition (missing '}').");
2056
+ return false;
2057
+ }
2058
+
2059
+ // Note that kExtensionFieldNumber was already pushed by the parent.
2060
+ LocationRecorder location(extend_location, extensions->size());
2061
+
2062
+ FieldDescriptorProto* field = extensions->Add();
2063
+
2064
+ {
2065
+ LocationRecorder extendee_location(
2066
+ location, FieldDescriptorProto::kExtendeeFieldNumber);
2067
+ extendee_location.StartAt(extendee_start);
2068
+ extendee_location.EndAt(extendee_end);
2069
+
2070
+ if (is_first) {
2071
+ extendee_location.RecordLegacyLocation(
2072
+ field, DescriptorPool::ErrorCollector::EXTENDEE);
2073
+ is_first = false;
2074
+ }
2075
+ }
2076
+
2077
+ field->set_extendee(extendee);
2078
+
2079
+ if (!ParseMessageField(field, messages, parent_location,
2080
+ location_field_number_for_nested_type, location,
2081
+ containing_file)) {
2082
+ // This statement failed to parse. Skip it, but keep looping to parse
2083
+ // other statements.
2084
+ SkipStatement();
2085
+ }
2086
+ } while (!TryConsumeEndOfDeclaration("}", nullptr));
2087
+
2088
+ return true;
2089
+ }
2090
+
2091
+ bool Parser::ParseOneof(OneofDescriptorProto* oneof_decl,
2092
+ DescriptorProto* containing_type, int oneof_index,
2093
+ const LocationRecorder& oneof_location,
2094
+ const LocationRecorder& containing_type_location,
2095
+ const FileDescriptorProto* containing_file) {
2096
+ DO(Consume("oneof"));
2097
+
2098
+ {
2099
+ LocationRecorder name_location(oneof_location,
2100
+ OneofDescriptorProto::kNameFieldNumber);
2101
+ DO(ConsumeIdentifier(oneof_decl->mutable_name(), "Expected oneof name."));
2102
+ }
2103
+
2104
+ DO(ConsumeEndOfDeclaration("{", &oneof_location));
2105
+
2106
+ do {
2107
+ if (AtEnd()) {
2108
+ RecordError("Reached end of input in oneof definition (missing '}').");
2109
+ return false;
2110
+ }
2111
+
2112
+ if (LookingAt("option")) {
2113
+ LocationRecorder option_location(
2114
+ oneof_location, OneofDescriptorProto::kOptionsFieldNumber);
2115
+ if (!ParseOption(oneof_decl->mutable_options(), option_location,
2116
+ containing_file, OPTION_STATEMENT)) {
2117
+ return false;
2118
+ }
2119
+ continue;
2120
+ }
2121
+
2122
+ // Print a nice error if the user accidentally tries to place a label
2123
+ // on an individual member of a oneof.
2124
+ if (LookingAt("required") || LookingAt("optional") ||
2125
+ LookingAt("repeated")) {
2126
+ RecordError(
2127
+ "Fields in oneofs must not have labels (required / optional "
2128
+ "/ repeated).");
2129
+ // We can continue parsing here because we understand what the user
2130
+ // meant. The error report will still make parsing fail overall.
2131
+ input_->Next();
2132
+ }
2133
+
2134
+ LocationRecorder field_location(containing_type_location,
2135
+ DescriptorProto::kFieldFieldNumber,
2136
+ containing_type->field_size());
2137
+
2138
+ FieldDescriptorProto* field = containing_type->add_field();
2139
+ field->set_label(FieldDescriptorProto::LABEL_OPTIONAL);
2140
+ field->set_oneof_index(oneof_index);
2141
+
2142
+ if (!ParseMessageFieldNoLabel(field, containing_type->mutable_nested_type(),
2143
+ containing_type_location,
2144
+ DescriptorProto::kNestedTypeFieldNumber,
2145
+ field_location, containing_file)) {
2146
+ // This statement failed to parse. Skip it, but keep looping to parse
2147
+ // other statements.
2148
+ SkipStatement();
2149
+ }
2150
+ } while (!TryConsumeEndOfDeclaration("}", nullptr));
2151
+
2152
+ return true;
2153
+ }
2154
+
2155
+ // -------------------------------------------------------------------
2156
+ // Enums
2157
+
2158
+ bool Parser::ParseEnumDefinition(EnumDescriptorProto* enum_type,
2159
+ const SymbolVisibility& visibility,
2160
+ const LocationRecorder& enum_location,
2161
+ const FileDescriptorProto* containing_file) {
2162
+ DO(Consume("enum"));
2163
+
2164
+ {
2165
+ LocationRecorder location(enum_location,
2166
+ EnumDescriptorProto::kNameFieldNumber);
2167
+ location.RecordLegacyLocation(enum_type,
2168
+ DescriptorPool::ErrorCollector::NAME);
2169
+ DO(ConsumeIdentifier(enum_type->mutable_name(), "Expected enum name."));
2170
+ }
2171
+
2172
+ DO(ParseEnumBlock(enum_type, enum_location, containing_file));
2173
+
2174
+ DO(ValidateEnum(enum_type));
2175
+
2176
+ if (visibility != SymbolVisibility::VISIBILITY_UNSET) {
2177
+ enum_type->set_visibility(visibility);
2178
+ }
2179
+
2180
+ return true;
2181
+ }
2182
+
2183
+ bool Parser::ParseEnumBlock(EnumDescriptorProto* enum_type,
2184
+ const LocationRecorder& enum_location,
2185
+ const FileDescriptorProto* containing_file) {
2186
+ DO(ConsumeEndOfDeclaration("{", &enum_location));
2187
+
2188
+ while (!TryConsumeEndOfDeclaration("}", nullptr)) {
2189
+ if (AtEnd()) {
2190
+ RecordError("Reached end of input in enum definition (missing '}').");
2191
+ return false;
2192
+ }
2193
+
2194
+ if (!ParseEnumStatement(enum_type, enum_location, containing_file)) {
2195
+ // This statement failed to parse. Skip it, but keep looping to parse
2196
+ // other statements.
2197
+ SkipStatement();
2198
+ }
2199
+ }
2200
+
2201
+ return true;
2202
+ }
2203
+
2204
+ bool Parser::ParseEnumStatement(EnumDescriptorProto* enum_type,
2205
+ const LocationRecorder& enum_location,
2206
+ const FileDescriptorProto* containing_file) {
2207
+ if (TryConsumeEndOfDeclaration(";", nullptr)) {
2208
+ // empty statement; ignore
2209
+ return true;
2210
+ } else if (LookingAt("option")) {
2211
+ LocationRecorder location(enum_location,
2212
+ EnumDescriptorProto::kOptionsFieldNumber);
2213
+ return ParseOption(enum_type->mutable_options(), location, containing_file,
2214
+ OPTION_STATEMENT);
2215
+ } else if (LookingAt("reserved")) {
2216
+ return ParseReserved(enum_type, enum_location);
2217
+ } else {
2218
+ LocationRecorder location(enum_location,
2219
+ EnumDescriptorProto::kValueFieldNumber,
2220
+ enum_type->value_size());
2221
+ return ParseEnumConstant(enum_type->add_value(), location, containing_file);
2222
+ }
2223
+ }
2224
+
2225
+ bool Parser::ParseEnumConstant(EnumValueDescriptorProto* enum_value,
2226
+ const LocationRecorder& enum_value_location,
2227
+ const FileDescriptorProto* containing_file) {
2228
+ // Parse name.
2229
+ {
2230
+ LocationRecorder location(enum_value_location,
2231
+ EnumValueDescriptorProto::kNameFieldNumber);
2232
+ location.RecordLegacyLocation(enum_value,
2233
+ DescriptorPool::ErrorCollector::NAME);
2234
+ DO(ConsumeIdentifier(enum_value->mutable_name(),
2235
+ "Expected enum constant name."));
2236
+ }
2237
+
2238
+ DO(Consume("=", "Missing numeric value for enum constant."));
2239
+
2240
+ // Parse value.
2241
+ {
2242
+ LocationRecorder location(enum_value_location,
2243
+ EnumValueDescriptorProto::kNumberFieldNumber);
2244
+ location.RecordLegacyLocation(enum_value,
2245
+ DescriptorPool::ErrorCollector::NUMBER);
2246
+
2247
+ int number;
2248
+ DO(ConsumeSignedInteger(&number, "Expected integer."));
2249
+ enum_value->set_number(number);
2250
+ }
2251
+
2252
+ DO(ParseEnumConstantOptions(enum_value, enum_value_location,
2253
+ containing_file));
2254
+
2255
+ DO(ConsumeEndOfDeclaration(";", &enum_value_location));
2256
+
2257
+ return true;
2258
+ }
2259
+
2260
+ bool Parser::ParseEnumConstantOptions(
2261
+ EnumValueDescriptorProto* value,
2262
+ const LocationRecorder& enum_value_location,
2263
+ const FileDescriptorProto* containing_file) {
2264
+ if (!LookingAt("[")) return true;
2265
+
2266
+ LocationRecorder location(enum_value_location,
2267
+ EnumValueDescriptorProto::kOptionsFieldNumber);
2268
+
2269
+ DO(Consume("["));
2270
+
2271
+ do {
2272
+ DO(ParseOption(value->mutable_options(), location, containing_file,
2273
+ OPTION_ASSIGNMENT));
2274
+ } while (TryConsume(","));
2275
+
2276
+ DO(Consume("]"));
2277
+ return true;
2278
+ }
2279
+
2280
+ // -------------------------------------------------------------------
2281
+ // Services
2282
+
2283
+ bool Parser::ParseServiceDefinition(
2284
+ ServiceDescriptorProto* service, const LocationRecorder& service_location,
2285
+ const FileDescriptorProto* containing_file) {
2286
+ DO(Consume("service"));
2287
+
2288
+ {
2289
+ LocationRecorder location(service_location,
2290
+ ServiceDescriptorProto::kNameFieldNumber);
2291
+ location.RecordLegacyLocation(service,
2292
+ DescriptorPool::ErrorCollector::NAME);
2293
+ DO(ConsumeIdentifier(service->mutable_name(), "Expected service name."));
2294
+ }
2295
+
2296
+ DO(ParseServiceBlock(service, service_location, containing_file));
2297
+ return true;
2298
+ }
2299
+
2300
+ bool Parser::ParseServiceBlock(ServiceDescriptorProto* service,
2301
+ const LocationRecorder& service_location,
2302
+ const FileDescriptorProto* containing_file) {
2303
+ DO(ConsumeEndOfDeclaration("{", &service_location));
2304
+
2305
+ while (!TryConsumeEndOfDeclaration("}", nullptr)) {
2306
+ if (AtEnd()) {
2307
+ RecordError("Reached end of input in service definition (missing '}').");
2308
+ return false;
2309
+ }
2310
+
2311
+ if (!ParseServiceStatement(service, service_location, containing_file)) {
2312
+ // This statement failed to parse. Skip it, but keep looping to parse
2313
+ // other statements.
2314
+ SkipStatement();
2315
+ }
2316
+ }
2317
+
2318
+ return true;
2319
+ }
2320
+
2321
+ bool Parser::ParseServiceStatement(ServiceDescriptorProto* service,
2322
+ const LocationRecorder& service_location,
2323
+ const FileDescriptorProto* containing_file) {
2324
+ if (TryConsumeEndOfDeclaration(";", nullptr)) {
2325
+ // empty statement; ignore
2326
+ return true;
2327
+ } else if (LookingAt("option")) {
2328
+ LocationRecorder location(service_location,
2329
+ ServiceDescriptorProto::kOptionsFieldNumber);
2330
+ return ParseOption(service->mutable_options(), location, containing_file,
2331
+ OPTION_STATEMENT);
2332
+ } else {
2333
+ LocationRecorder location(service_location,
2334
+ ServiceDescriptorProto::kMethodFieldNumber,
2335
+ service->method_size());
2336
+ return ParseServiceMethod(service->add_method(), location, containing_file);
2337
+ }
2338
+ }
2339
+
2340
+ bool Parser::ParseServiceMethod(MethodDescriptorProto* method,
2341
+ const LocationRecorder& method_location,
2342
+ const FileDescriptorProto* containing_file) {
2343
+ DO(Consume("rpc"));
2344
+
2345
+ {
2346
+ LocationRecorder location(method_location,
2347
+ MethodDescriptorProto::kNameFieldNumber);
2348
+ location.RecordLegacyLocation(method, DescriptorPool::ErrorCollector::NAME);
2349
+ DO(ConsumeIdentifier(method->mutable_name(), "Expected method name."));
2350
+ }
2351
+
2352
+ // Parse input type.
2353
+ DO(Consume("("));
2354
+ {
2355
+ if (LookingAt("stream")) {
2356
+ LocationRecorder location(
2357
+ method_location, MethodDescriptorProto::kClientStreamingFieldNumber);
2358
+ location.RecordLegacyLocation(method,
2359
+ DescriptorPool::ErrorCollector::OTHER);
2360
+ method->set_client_streaming(true);
2361
+ DO(Consume("stream"));
2362
+ }
2363
+ LocationRecorder location(method_location,
2364
+ MethodDescriptorProto::kInputTypeFieldNumber);
2365
+ location.RecordLegacyLocation(method,
2366
+ DescriptorPool::ErrorCollector::INPUT_TYPE);
2367
+ DO(ParseUserDefinedType(method->mutable_input_type()));
2368
+ }
2369
+ DO(Consume(")"));
2370
+
2371
+ // Parse output type.
2372
+ DO(Consume("returns"));
2373
+ DO(Consume("("));
2374
+ {
2375
+ if (LookingAt("stream")) {
2376
+ LocationRecorder location(
2377
+ method_location, MethodDescriptorProto::kServerStreamingFieldNumber);
2378
+ location.RecordLegacyLocation(method,
2379
+ DescriptorPool::ErrorCollector::OTHER);
2380
+ DO(Consume("stream"));
2381
+ method->set_server_streaming(true);
2382
+ }
2383
+ LocationRecorder location(method_location,
2384
+ MethodDescriptorProto::kOutputTypeFieldNumber);
2385
+ location.RecordLegacyLocation(method,
2386
+ DescriptorPool::ErrorCollector::OUTPUT_TYPE);
2387
+ DO(ParseUserDefinedType(method->mutable_output_type()));
2388
+ }
2389
+ DO(Consume(")"));
2390
+
2391
+ if (LookingAt("{")) {
2392
+ // Options!
2393
+ DO(ParseMethodOptions(method_location, containing_file,
2394
+ MethodDescriptorProto::kOptionsFieldNumber,
2395
+ method->mutable_options()));
2396
+ } else {
2397
+ DO(ConsumeEndOfDeclaration(";", &method_location));
2398
+ }
2399
+
2400
+ return true;
2401
+ }
2402
+
2403
+ bool Parser::ParseMethodOptions(const LocationRecorder& parent_location,
2404
+ const FileDescriptorProto* containing_file,
2405
+ const int optionsFieldNumber,
2406
+ Message* mutable_options) {
2407
+ // Options!
2408
+ ConsumeEndOfDeclaration("{", &parent_location);
2409
+ while (!TryConsumeEndOfDeclaration("}", nullptr)) {
2410
+ if (AtEnd()) {
2411
+ RecordError("Reached end of input in method options (missing '}').");
2412
+ return false;
2413
+ }
2414
+
2415
+ if (TryConsumeEndOfDeclaration(";", nullptr)) {
2416
+ // empty statement; ignore
2417
+ } else {
2418
+ LocationRecorder location(parent_location, optionsFieldNumber);
2419
+ if (!ParseOption(mutable_options, location, containing_file,
2420
+ OPTION_STATEMENT)) {
2421
+ // This statement failed to parse. Skip it, but keep looping to
2422
+ // parse other statements.
2423
+ SkipStatement();
2424
+ }
2425
+ }
2426
+ }
2427
+
2428
+ return true;
2429
+ }
2430
+
2431
+ // -------------------------------------------------------------------
2432
+
2433
+ bool Parser::ParseLabel(FieldDescriptorProto::Label* label,
2434
+ const LocationRecorder& field_location) {
2435
+ if (!LookingAt("optional") && !LookingAt("repeated") &&
2436
+ !LookingAt("required")) {
2437
+ return false;
2438
+ }
2439
+ if (LookingAt("optional") && syntax_identifier_ == "editions") {
2440
+ RecordError(
2441
+ "Label \"optional\" is not supported in editions. By default, all "
2442
+ "singular fields have presence unless features.field_presence is set.");
2443
+ }
2444
+ if (LookingAt("required") && syntax_identifier_ == "editions") {
2445
+ RecordError(
2446
+ "Label \"required\" is not supported in editions, use "
2447
+ "features.field_presence = LEGACY_REQUIRED.");
2448
+ }
2449
+
2450
+ LocationRecorder location(field_location,
2451
+ FieldDescriptorProto::kLabelFieldNumber);
2452
+ if (TryConsume("optional")) {
2453
+ *label = FieldDescriptorProto::LABEL_OPTIONAL;
2454
+ } else if (TryConsume("repeated")) {
2455
+ *label = FieldDescriptorProto::LABEL_REPEATED;
2456
+ } else {
2457
+ Consume("required");
2458
+ *label = FieldDescriptorProto::LABEL_REQUIRED;
2459
+ }
2460
+ return true;
2461
+ }
2462
+
2463
+ bool Parser::ShouldUseFixedWireForIntTypes() const {
2464
+ return syntax_identifier_ == "editions" &&
2465
+ edition_ == Edition::EDITION_UNSTABLE;
2466
+ }
2467
+
2468
+ bool Parser::ParseType(FieldDescriptorProto::Type* type,
2469
+ std::string* type_name) {
2470
+ const auto& type_names_table =
2471
+ ShouldUseFixedWireForIntTypes()
2472
+ ? GetTypeNameTableWithFixedWireForIntTypes()
2473
+ : GetTypeNameTable();
2474
+ auto iter = type_names_table.find(input_->current().text);
2475
+ if (iter != type_names_table.end()) {
2476
+ if (syntax_identifier_ == "editions" &&
2477
+ iter->second == FieldDescriptorProto::TYPE_GROUP) {
2478
+ RecordError(
2479
+ "Group syntax is no longer supported in editions. To get group "
2480
+ "behavior you can specify features.message_encoding = DELIMITED on a "
2481
+ "message field.");
2482
+ }
2483
+ *type = iter->second;
2484
+ input_->Next();
2485
+ } else if (ShouldUseFixedWireForIntTypes() &&
2486
+ NumericTypeMaybeReplacedWith(input_->current().text)) {
2487
+ RecordError([&] {
2488
+ return absl::StrFormat(
2489
+ "Type '%s' is obsolete in unstable editions, use '%s' instead.",
2490
+ input_->current().text,
2491
+ *NumericTypeMaybeReplacedWith(input_->current().text));
2492
+ });
2493
+ input_->Next();
2494
+ } else {
2495
+ DO(ParseUserDefinedType(type_name));
2496
+ }
2497
+ return true;
2498
+ }
2499
+
2500
+ bool Parser::ParseUserDefinedType(std::string* type_name) {
2501
+ type_name->clear();
2502
+
2503
+ const auto& type_names_table = GetTypeNameTable();
2504
+ auto iter = type_names_table.find(input_->current().text);
2505
+ if (iter != type_names_table.end()) {
2506
+ // Note: The only place enum types are allowed is for field types, but
2507
+ // if we are parsing a field type then we would not get here because
2508
+ // primitives are allowed there as well. So this error message doesn't
2509
+ // need to account for enums.
2510
+ RecordError("Expected message type.");
2511
+
2512
+ // Pretend to accept this type so that we can go on parsing.
2513
+ *type_name = input_->current().text;
2514
+ input_->Next();
2515
+ return true;
2516
+ }
2517
+
2518
+ // A leading "." means the name is fully-qualified.
2519
+ if (TryConsume(".")) type_name->append(".");
2520
+
2521
+ // Consume the first part of the name.
2522
+ std::string identifier;
2523
+ DO(ConsumeIdentifier(&identifier, "Expected type name."));
2524
+ type_name->append(identifier);
2525
+
2526
+ // Consume more parts.
2527
+ while (TryConsume(".")) {
2528
+ type_name->append(".");
2529
+ DO(ConsumeIdentifier(&identifier, "Expected identifier."));
2530
+ type_name->append(identifier);
2531
+ }
2532
+
2533
+ return true;
2534
+ }
2535
+
2536
+ // ===================================================================
2537
+
2538
+ bool Parser::ParsePackage(FileDescriptorProto* file,
2539
+ const LocationRecorder& root_location,
2540
+ const FileDescriptorProto* containing_file) {
2541
+ if (file->has_package()) {
2542
+ RecordError("Multiple package definitions.");
2543
+ // Don't append the new package to the old one. Just replace it. Not
2544
+ // that it really matters since this is an error anyway.
2545
+ file->clear_package();
2546
+ }
2547
+
2548
+ LocationRecorder location(root_location,
2549
+ FileDescriptorProto::kPackageFieldNumber);
2550
+ location.RecordLegacyLocation(file, DescriptorPool::ErrorCollector::NAME);
2551
+
2552
+ DO(Consume("package"));
2553
+
2554
+ while (true) {
2555
+ std::string identifier;
2556
+ DO(ConsumeIdentifier(&identifier, "Expected identifier."));
2557
+ file->mutable_package()->append(identifier);
2558
+ if (!TryConsume(".")) break;
2559
+ file->mutable_package()->append(".");
2560
+ }
2561
+
2562
+ DO(ConsumeEndOfDeclaration(";", &location));
2563
+
2564
+ return true;
2565
+ }
2566
+
2567
+ bool Parser::ParseImport(RepeatedPtrField<std::string>* dependency,
2568
+ RepeatedPtrField<std::string>* option_dependency,
2569
+ RepeatedField<int32_t>* public_dependency,
2570
+ RepeatedField<int32_t>* weak_dependency,
2571
+ const LocationRecorder& root_location,
2572
+ const FileDescriptorProto* containing_file) {
2573
+ io::Tokenizer::Token import_start = input_->current();
2574
+ DO(Consume("import"));
2575
+ std::string import_file;
2576
+ if (LookingAt("option")) {
2577
+ if (edition_ < Edition::EDITION_2024) {
2578
+ RecordError("option import is not supported before edition 2024.");
2579
+ }
2580
+ LocationRecorder option_import_location(
2581
+ root_location, FileDescriptorProto::kOptionDependencyFieldNumber,
2582
+ option_dependency->size());
2583
+ option_import_location.StartAt(import_start);
2584
+ DO(Consume("option"));
2585
+ DO(ConsumeString(&import_file,
2586
+ "Expected a string naming the file to import."));
2587
+ *option_dependency->Add() = import_file;
2588
+
2589
+ option_import_location.RecordLegacyImportLocation(containing_file,
2590
+ import_file);
2591
+ DO(ConsumeEndOfDeclaration(";", &option_import_location));
2592
+ return true;
2593
+ }
2594
+
2595
+ LocationRecorder import_location(root_location,
2596
+ FileDescriptorProto::kDependencyFieldNumber,
2597
+ dependency->size());
2598
+ import_location.StartAt(import_start);
2599
+ if (!option_dependency->empty()) {
2600
+ RecordError(
2601
+ "imports should precede any option imports to ensure proto files "
2602
+ "can roundtrip.");
2603
+ }
2604
+ if (LookingAt("public")) {
2605
+ LocationRecorder public_location(
2606
+ root_location, FileDescriptorProto::kPublicDependencyFieldNumber,
2607
+ public_dependency->size());
2608
+ DO(Consume("public"));
2609
+ *public_dependency->Add() = dependency->size();
2610
+ } else if (LookingAt("weak")) {
2611
+ if (edition_ >= Edition::EDITION_2024) {
2612
+ RecordError(
2613
+ "weak import is not supported in edition 2024 and above. Consider "
2614
+ "using option import instead.");
2615
+ }
2616
+ LocationRecorder weak_location(
2617
+ root_location, FileDescriptorProto::kWeakDependencyFieldNumber,
2618
+ weak_dependency->size());
2619
+ weak_location.RecordLegacyImportLocation(containing_file, "weak");
2620
+ DO(Consume("weak"));
2621
+ *weak_dependency->Add() = dependency->size();
2622
+ }
2623
+ DO(ConsumeString(&import_file,
2624
+ "Expected a string naming the file to import."));
2625
+ *dependency->Add() = import_file;
2626
+
2627
+ import_location.RecordLegacyImportLocation(containing_file, import_file);
2628
+ DO(ConsumeEndOfDeclaration(";", &import_location));
2629
+ return true;
2630
+ }
2631
+
2632
+ bool Parser::ParseVisibility(const FileDescriptorProto* containing_file,
2633
+ SymbolVisibility* out) {
2634
+ if (containing_file == nullptr || out == nullptr) {
2635
+ return false;
2636
+ }
2637
+
2638
+ // Bail out of visibility checks if < 2024
2639
+ if (containing_file->edition() <= Edition::EDITION_2023) {
2640
+ return true;
2641
+ }
2642
+
2643
+ if (TryConsume("export")) {
2644
+ *out = SymbolVisibility::VISIBILITY_EXPORT;
2645
+ } else if (TryConsume("local")) {
2646
+ *out = SymbolVisibility::VISIBILITY_LOCAL;
2647
+ }
2648
+
2649
+ // If we set a visibility make sure it's OK.
2650
+ if (*out != SymbolVisibility::VISIBILITY_UNSET) {
2651
+ if (!LookingAt("message") && !LookingAt("enum")) {
2652
+ RecordError(
2653
+ "'local' and 'export' visibility modifiers are valid only on "
2654
+ "'message' "
2655
+ "and 'enum'");
2656
+ return false;
2657
+ }
2658
+ }
2659
+
2660
+ return true;
2661
+ }
2662
+
2663
+ // ===================================================================
2664
+
2665
+ SourceLocationTable::SourceLocationTable() = default;
2666
+ SourceLocationTable::~SourceLocationTable() = default;
2667
+
2668
+ bool SourceLocationTable::Find(
2669
+ const Message* descriptor,
2670
+ DescriptorPool::ErrorCollector::ErrorLocation location, int* line,
2671
+ int* column) const {
2672
+ auto it = location_map_.find({descriptor, location});
2673
+ if (it == location_map_.end()) {
2674
+ *line = -1;
2675
+ *column = 0;
2676
+ return false;
2677
+ }
2678
+ std::tie(*line, *column) = it->second;
2679
+ return true;
2680
+ }
2681
+
2682
+ bool SourceLocationTable::FindImport(const Message* descriptor,
2683
+ absl::string_view name, int* line,
2684
+ int* column) const {
2685
+ auto it = import_location_map_.find({descriptor, std::string(name)});
2686
+ if (it == import_location_map_.end()) {
2687
+ *line = -1;
2688
+ *column = 0;
2689
+ return false;
2690
+ }
2691
+ std::tie(*line, *column) = it->second;
2692
+ return true;
2693
+ }
2694
+
2695
+ void SourceLocationTable::Add(
2696
+ const Message* descriptor,
2697
+ DescriptorPool::ErrorCollector::ErrorLocation location, int line,
2698
+ int column) {
2699
+ location_map_[std::make_pair(descriptor, location)] =
2700
+ std::make_pair(line, column);
2701
+ }
2702
+
2703
+ void SourceLocationTable::AddImport(const Message* descriptor,
2704
+ const std::string& name, int line,
2705
+ int column) {
2706
+ import_location_map_[std::make_pair(descriptor, name)] =
2707
+ std::make_pair(line, column);
2708
+ }
2709
+
2710
+ void SourceLocationTable::Clear() { location_map_.clear(); }
2711
+
2712
+ } // namespace compiler
2713
+ } // namespace protobuf
2714
+ } // namespace google
2715
+
2716
+ #include "google/protobuf/port_undef.inc"