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.
- checksums.yaml +7 -0
- data/.yardopts +8 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +201 -0
- data/NOTICE.md +30 -0
- data/README.md +93 -0
- data/Rakefile +32 -0
- data/ext/protovalidate/Cargo.lock +342 -0
- data/ext/protovalidate/Cargo.toml +27 -0
- data/ext/protovalidate/build.rs +4 -0
- data/ext/protovalidate/extconf.rb +8 -0
- data/ext/protovalidate/src/lib.rs +161 -0
- data/ext/protovalidate/sys/Cargo.toml +11 -0
- data/ext/protovalidate/sys/build.rs +218 -0
- data/ext/protovalidate/sys/filelists/absl.txt +126 -0
- data/ext/protovalidate/sys/filelists/antlr4.txt +139 -0
- data/ext/protovalidate/sys/filelists/celcpp.txt +199 -0
- data/ext/protovalidate/sys/filelists/protobuf.txt +83 -0
- data/ext/protovalidate/sys/filelists/protovalidate.txt +14 -0
- data/ext/protovalidate/sys/filelists/re2.txt +25 -0
- data/ext/protovalidate/sys/gen/buf/validate/validate.pb.cc +23621 -0
- data/ext/protovalidate/sys/gen/buf/validate/validate.pb.h +27800 -0
- data/ext/protovalidate/sys/gen/cel/expr/checked.pb.cc +6286 -0
- data/ext/protovalidate/sys/gen/cel/expr/checked.pb.h +6412 -0
- data/ext/protovalidate/sys/gen/cel/expr/syntax.pb.cc +7423 -0
- data/ext/protovalidate/sys/gen/cel/expr/syntax.pb.h +7510 -0
- data/ext/protovalidate/sys/gen/cel/expr/value.pb.cc +2512 -0
- data/ext/protovalidate/sys/gen/cel/expr/value.pb.h +2589 -0
- data/ext/protovalidate/sys/gen/internal/empty_descriptor_set_embed.inc +1 -0
- data/ext/protovalidate/sys/gen/parser/internal/CelBaseVisitor.cpp +9 -0
- data/ext/protovalidate/sys/gen/parser/internal/CelBaseVisitor.h +167 -0
- data/ext/protovalidate/sys/gen/parser/internal/CelLexer.cpp +308 -0
- data/ext/protovalidate/sys/gen/parser/internal/CelLexer.h +57 -0
- data/ext/protovalidate/sys/gen/parser/internal/CelParser.cpp +2484 -0
- data/ext/protovalidate/sys/gen/parser/internal/CelParser.h +697 -0
- data/ext/protovalidate/sys/gen/parser/internal/CelVisitor.cpp +9 -0
- data/ext/protovalidate/sys/gen/parser/internal/CelVisitor.h +98 -0
- data/ext/protovalidate/sys/shim/pv_shim.cc +260 -0
- data/ext/protovalidate/sys/shim/pv_shim.h +84 -0
- data/ext/protovalidate/sys/src/lib.rs +176 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/LICENSE +203 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/algorithm/algorithm.h +96 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/algorithm/container.h +2011 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/attributes.h +1100 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/call_once.h +228 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/casts.cc +61 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/casts.h +313 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/config.h +898 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/const_init.h +76 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/dynamic_annotations.h +480 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/fast_type_id.h +73 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/atomic_hook_test_helper.h +34 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +72 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/cycleclock.h +144 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +170 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/endian.h +279 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/exception_safety_testing.h +1112 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/exception_testing.h +42 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +75 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h +97 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +667 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +133 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +196 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/nullability_traits.h +71 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/poison.h +59 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/pretty_function.h +33 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +279 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/raw_logging.h +217 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/scoped_set_env.h +45 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock.cc +225 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock.h +310 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +71 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +95 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +40 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +493 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/sysinfo.h +74 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +163 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/thread_identity.h +325 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/tracing.cc +39 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/tracing.h +81 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +68 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +89 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +134 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +118 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/log_severity.cc +56 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/log_severity.h +185 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/macros.h +259 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/no_destructor.h +191 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/nullability.h +318 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/optimization.h +311 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/options.h +212 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/policy_checks.h +115 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/port.h +25 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/prefetch.h +209 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/thread_annotations.h +333 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/throw_delegate.cc +205 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/base/throw_delegate.h +65 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/cleanup/cleanup.h +143 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/btree_map.h +941 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/btree_set.h +872 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/chunked_queue.h +757 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/fixed_array.h +548 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/flat_hash_map.h +714 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/flat_hash_set.h +604 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/inlined_vector.h +1025 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/btree.h +3157 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/btree_container.h +875 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/chunked_queue.h +173 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/common.h +302 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +151 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +275 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/container_memory.h +571 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +281 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_generator_testing.h +172 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_policy_testing.h +173 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +195 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtable_debug.h +102 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +316 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +294 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h +80 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +1094 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/layout.h +828 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +380 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +2110 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +4056 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +79 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/test_allocator.h +387 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/test_instance_tracker.h +274 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/internal/tracked.h +83 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/linked_hash_map.h +666 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/linked_hash_set.h +527 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/node_hash_map.h +710 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/container/node_hash_set.h +603 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/crc32c.cc +95 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/crc32c.h +192 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +359 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +69 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc.cc +435 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc.h +83 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +319 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +131 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +161 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +122 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +78 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +459 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +824 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +81 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +195 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/failure_signal_handler.h +121 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +98 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2958 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle.h +76 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +50 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +413 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +141 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +334 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +70 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stack_consumption.h +50 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +299 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +148 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +96 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +121 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +121 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +270 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +208 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +25 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +81 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +410 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +163 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +209 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/leak_check.cc +73 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/leak_check.h +150 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/stacktrace.cc +204 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/stacktrace.h +259 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize.cc +62 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +102 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1708 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +63 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +99 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/commandlineflag.h +220 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/declare.h +77 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/flag.h +307 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/flag.h +969 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/parse.h +70 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +64 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/registry.h +98 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/internal/usage.h +106 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/marshalling.h +335 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/parse.h +130 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/usage.h +43 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/any_invocable.h +335 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/bind_back.h +79 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/bind_front.h +200 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/function_ref.h +249 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +787 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/back_binder.h +95 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/front_binder.h +93 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/internal/function_ref.h +151 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/functional/overload.h +72 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/hash.h +466 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/hash_testing.h +382 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/city.cc +337 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/hash.cc +430 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/hash.h +1619 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/spy_hash_state.h +289 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/absl_check.h +117 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/absl_log.h +115 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +93 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/check.h +210 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/check_test_impl.inc +1035 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/die_if_null.cc +34 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/die_if_null.h +97 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/flags.h +43 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/globals.cc +178 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/globals.h +230 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/initialize.h +45 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/append_truncated.h +75 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/check_impl.h +151 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/check_op.cc +147 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/check_op.h +565 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/conditions.cc +85 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/conditions.h +247 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/config.h +45 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/container.h +312 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/flags.h +59 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/fnmatch.cc +73 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/fnmatch.h +35 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/globals.cc +145 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/globals.h +101 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_format.cc +205 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_format.h +78 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_impl.h +280 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_message.cc +788 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_message.h +469 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +296 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/log_sink_set.h +54 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/nullguard.cc +35 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/nullguard.h +88 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/nullstream.h +128 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/proto.cc +231 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/proto.h +298 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/strip.h +99 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/structured.h +160 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +115 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/structured_proto.h +108 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/test_actions.h +90 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/test_helpers.h +71 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/test_matchers.h +94 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +347 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/vlog_config.h +164 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/internal/voidify.h +50 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log.h +378 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_basic_test_impl.inc +654 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_entry.h +223 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_sink.cc +23 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_sink.h +71 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_sink_registry.h +64 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/log_streamer.h +208 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/scoped_mock_log.h +203 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/structured.h +75 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/log/vlog_is_on.h +72 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/memory/memory.h +328 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/meta/internal/constexpr_testing.h +73 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/meta/internal/requires.h +67 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/meta/type_traits.h +646 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/bits.h +262 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128.cc +344 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128.h +1224 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +303 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +347 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/internal/bits.h +394 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/hashtable.h +40 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/periodic_sampler.h +211 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/profile_builder.h +161 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +253 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +202 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/beta_distribution.h +429 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/bit_gen_ref.h +160 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/discrete_distribution.h +249 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/distributions.h +450 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/exponential_distribution.h +166 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/gaussian_distribution.h +276 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/chi_square.h +89 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +83 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/distribution_test_util.h +113 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/explicit_seed_seq.h +92 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +271 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +248 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/mock_helpers.h +134 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/mock_overload_set.h +122 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/mock_validators.h +98 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/nanobenchmark.h +172 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +160 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +287 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/platform.h +158 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_engine.h +265 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +166 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/seed_material.h +105 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/sequence_urbg.h +60 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/traits.h +170 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +95 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +253 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/mock_distributions.h +269 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/mocking_bit_gen.h +227 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/poisson_distribution.h +262 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/random.h +224 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/seed_sequences.h +112 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +276 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +204 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/random/zipf_distribution.h +273 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/status_internal.cc +296 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/status_internal.h +157 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/status_matchers.h +260 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +657 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status.cc +413 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status.h +1174 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_builder.h +978 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_macros.h +484 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_matchers.h +167 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_payload_printer.cc +36 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/status_payload_printer.h +53 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/statusor.cc +106 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/status/statusor.h +776 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/ascii.cc +296 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/ascii.h +288 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/charconv.cc +1442 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/charconv.h +123 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/charset.h +163 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord.cc +1601 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord.h +1773 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_analysis.cc +196 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_analysis.h +63 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_buffer.h +574 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cord_test_helpers.h +122 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/cordz_test_helpers.h +152 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/escaping.cc +1183 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/escaping.h +195 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +64 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/has_ostream_operator.h +42 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +357 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +433 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +70 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +942 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1237 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +944 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +187 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +267 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +69 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +212 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +64 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +47 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +195 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cord_rep_test_util.h +205 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +102 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +87 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +165 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +98 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +424 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +295 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_sample_token.h +97 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +88 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +123 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +99 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +35 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/escaping.cc +68 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/escaping.h +35 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/escaping_test_common.h +133 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/generic_printer.h +115 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/generic_printer_internal.h +444 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/memutil.cc +48 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/memutil.h +40 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/numbers_test_common.h +184 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +43 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +114 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/pow10_helper.h +40 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +114 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +615 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +653 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +275 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +237 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +98 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +357 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +53 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +456 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +2148 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +37 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +74 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +97 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +140 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +271 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +340 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +524 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/string_constant.h +67 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +69 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/stringify_stream.h +119 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/utf8.cc +148 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/internal/utf8.h +64 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/match.cc +133 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/match.h +129 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/numbers.cc +1636 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/numbers.h +363 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_cat.cc +247 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_cat.h +668 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_format.h +887 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_join.h +301 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_replace.cc +91 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_replace.h +222 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_split.cc +144 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/str_split.h +587 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/string_view.h +60 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/strip.h +99 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/substitute.cc +187 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/strings/substitute.h +769 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +73 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +107 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +173 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +56 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/futex.h +177 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +107 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.h +63 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +714 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +146 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +220 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +178 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +124 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +163 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +60 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +118 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.h +65 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +87 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +56 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/thread_pool.h +96 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +69 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +38 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.h +90 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +147 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.h +72 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/mutex.cc +2833 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/mutex.h +1352 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/notification.cc +85 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/synchronization/notification.h +133 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/civil_time.cc +200 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/civil_time.h +589 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/clock.cc +603 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/clock.h +81 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/clock_interface.h +93 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/duration.cc +918 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/format.cc +155 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +644 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +460 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h +33 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1069 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +47 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +80 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +115 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +97 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +1070 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +128 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +333 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +60 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +217 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +115 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/internal/test_util.h +33 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/simulated_clock.h +109 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/time.cc +507 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/time/time.h +1926 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/any.h +66 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/any_span.h +1067 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/compare.h +506 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/internal/any_span.h +477 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/internal/span.h +140 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/optional.h +68 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/source_location.cc +18 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/source_location.h +172 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/span.h +827 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/types/variant.h +139 -0
- data/ext/protovalidate/sys/third_party/abseil-cpp/absl/utility/utility.h +151 -0
- data/ext/protovalidate/sys/third_party/antlr4/LICENSE.txt +28 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +10 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorListener.h +167 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +10 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +121 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +23 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRFileStream.h +30 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +180 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ANTLRInputStream.h +79 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +61 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BailErrorStrategy.h +59 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BaseErrorListener.cpp +25 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BaseErrorListener.h +36 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +414 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/BufferedTokenStream.h +200 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CharStream.cpp +11 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CharStream.h +37 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonToken.cpp +193 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonToken.h +158 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +39 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenFactory.h +74 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenStream.cpp +78 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/CommonTokenStream.h +79 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +15 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ConsoleErrorListener.h +35 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +336 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +466 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +84 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +80 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Exceptions.cpp +64 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Exceptions.h +99 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FailedPredicateException.cpp +52 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FailedPredicateException.h +32 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FlatHashMap.h +57 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/FlatHashSet.h +57 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InputMismatchException.cpp +18 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InputMismatchException.h +24 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/IntStream.cpp +12 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/IntStream.h +218 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +19 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/InterpreterRuleContext.h +45 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Lexer.cpp +294 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Lexer.h +196 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerInterpreter.cpp +60 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerInterpreter.h +46 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +36 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/LexerNoViableAltException.h +31 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ListTokenSource.cpp +92 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ListTokenSource.h +88 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/NoViableAltException.cpp +46 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/NoViableAltException.h +42 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Parser.cpp +670 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Parser.h +461 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserInterpreter.cpp +294 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserInterpreter.h +173 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserRuleContext.cpp +138 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ParserRuleContext.h +147 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +53 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/ProxyErrorListener.h +38 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RecognitionException.cpp +65 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RecognitionException.h +98 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Recognizer.cpp +157 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Recognizer.h +160 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContext.cpp +144 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContext.h +141 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +27 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +32 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +54 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/RuntimeMetaData.h +155 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Token.cpp +9 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Token.h +92 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenFactory.h +30 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenSource.cpp +9 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenSource.h +85 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStream.cpp +11 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStream.h +137 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +428 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/TokenStreamRewriter.h +295 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +208 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedCharStream.h +117 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +270 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +115 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Version.h +42 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Vocabulary.cpp +64 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/Vocabulary.h +177 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/WritableToken.cpp +9 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/WritableToken.h +23 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/antlr4-common.h +101 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/antlr4-runtime.h +168 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATN.cpp +159 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATN.h +133 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +106 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfig.h +157 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +233 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +157 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +39 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +48 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +628 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +32 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +33 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNSimulator.h +71 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNState.cpp +56 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNState.h +139 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +33 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNStateType.h +36 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ATNType.h +20 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +29 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ActionTransition.h +35 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +16 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +68 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +129 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +51 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +27 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/AtomTransition.h +33 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +24 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BasicState.h +23 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockEndState.h +26 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/BlockStartState.h +30 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +14 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +47 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +14 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +70 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +25 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionInfo.h +227 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionState.cpp +12 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/DecisionState.h +34 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +31 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +42 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +15 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ErrorInfo.h +43 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/HashUtils.h +18 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +189 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +76 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +67 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +44 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +621 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +199 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerAction.cpp +15 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerAction.h +100 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +108 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +128 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerActionType.h +57 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +43 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +59 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +45 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +75 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +50 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +76 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +43 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerModeAction.h +57 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +36 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +53 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +36 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +53 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +43 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +57 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +36 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +51 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +43 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +51 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +16 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +42 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/LoopEndState.h +26 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +22 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/NotSetTransition.h +27 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +16 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +25 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +102 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParseInfo.h +102 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +1413 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +911 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +50 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +29 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +25 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +23 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +35 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +17 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +62 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +24 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredicateTransition.h +50 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +601 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContext.h +225 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +56 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +63 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +167 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +101 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +71 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionContextType.h +21 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +202 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/PredictionMode.h +436 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +179 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +60 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +26 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RangeTransition.h +31 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStartState.h +26 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleStopState.h +27 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +33 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/RuleTransition.h +42 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +418 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContext.h +237 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SemanticContextType.h +23 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SerializedATNView.h +101 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SetTransition.cpp +28 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SetTransition.h +38 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +79 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +43 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +24 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +37 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +19 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +25 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/TokensStartState.h +24 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/Transition.cpp +36 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/Transition.h +65 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/TransitionType.cpp +27 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/TransitionType.h +33 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +21 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/atn/WildcardTransition.h +27 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFA.cpp +115 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFA.h +96 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +60 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFASerializer.h +32 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFAState.cpp +59 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/DFAState.h +154 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +17 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +22 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/internal/Synchronization.cpp +100 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/internal/Synchronization.h +154 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +124 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +33 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Interval.cpp +61 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Interval.h +84 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +508 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/IntervalSet.h +190 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +120 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/MurmurHash.h +102 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Predicate.cpp +4 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/misc/Predicate.h +21 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Any.cpp +8 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Any.h +16 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Arrays.cpp +43 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Arrays.h +149 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/BitSet.h +76 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/CPPUtils.cpp +207 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/CPPUtils.h +65 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Casts.h +34 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Declarations.h +161 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/StringUtils.cpp +38 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/StringUtils.h +16 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Unicode.h +28 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Utf8.cpp +242 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/support/Utf8.h +54 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +129 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNode.h +24 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +54 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +43 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +66 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +53 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTree.cpp +12 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTree.h +111 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +9 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +39 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +50 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeType.h +22 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +9 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +57 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +48 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +55 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNode.h +40 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +54 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +32 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/Trees.cpp +241 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/Trees.h +78 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +9 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +44 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +69 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +132 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +64 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +105 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +370 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +185 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +77 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +117 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +39 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +86 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +28 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +51 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +36 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +80 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +154 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPath.h +86 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +31 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +40 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +180 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +53 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +13 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +22 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +20 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +27 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +30 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +26 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +20 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +25 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +33 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +26 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +23 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +23 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +24 -0
- data/ext/protovalidate/sys/third_party/antlr4/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +23 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/LICENSE +202 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/ast.h +20 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/attribute.cc +330 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/attribute.h +278 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/attribute_set.h +108 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/builtins.h +106 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/function.h +20 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/function_adapter.h +19 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/function_descriptor.h +20 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/function_result.h +70 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/function_result_set.cc +28 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/function_result_set.h +105 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/memory_manager_testing.h +54 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/message_wrapper.h +30 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/operators.h +91 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/unknown_set.cc +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/internal/unknown_set.h +131 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/kind.h +25 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/operators.h +507 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/base/type_provider.h +26 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/checker_options.h +110 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/builtins_arena.cc +28 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/builtins_arena.h +29 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/field_path.h +77 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/namespace_generator.h +120 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/proto_type_mask.h +111 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/proto_type_mask_registry.h +83 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/test_ast_helpers.h +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_check_env.h +249 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_checker_builder_impl.h +170 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_checker_impl.h +58 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/internal/type_inference_context.h +229 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/optional.h +30 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/standard_library.h +26 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_check_issue.cc +59 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_check_issue.h +69 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker.cc +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker.h +65 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker_builder.h +186 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker_builder_factory.h +59 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/type_checker_subset_factory.h +45 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/validation_result.cc +32 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/checker/validation_result.h +117 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/codelab/checked_expr_conversion_example.h +59 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise1.h +32 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise10.h +46 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise2.h +40 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/codelab/exercise4.h +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/codelab/network_functions.h +197 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/allocator.h +606 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/any.cc +38 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/any.h +90 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/arena.h +110 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/arena_string.h +365 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/arena_string_pool.h +86 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/arena_string_view.h +239 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/constant_proto.cc +123 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/constant_proto.h +37 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/expr_proto.cc +514 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/expr_proto.h +32 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/metadata.cc +262 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/metadata.h +920 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/navigable_ast_internal.h +311 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/navigable_ast_kinds.cc +80 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/navigable_ast_kinds.h +74 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/source_info_proto.cc +90 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast/source_info_proto.h +32 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast.cc +98 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast.h +157 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_proto.cc +547 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_proto.h +52 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_rewrite.cc +389 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_rewrite.h +146 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_traverse.cc +380 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_traverse.h +105 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_visitor.h +118 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/ast_visitor_base.h +88 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/casting.h +75 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/constant.cc +101 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/constant.h +491 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/container.cc +171 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/container.h +138 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/data.h +120 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/decl.cc +221 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/decl.h +446 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/decl_proto.h +50 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/decl_proto_v1alpha1.h +55 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/descriptor_pool_type_introspector.cc +244 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/descriptor_pool_type_introspector.h +106 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/expr.cc +320 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/expr.h +1720 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/expr_factory.h +402 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/expr_printer.h +57 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/format_type_name.h +30 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/function_descriptor.cc +98 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/function_descriptor.h +124 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/byte_string.cc +1074 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/byte_string.h +688 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/casting.h +237 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/metadata.h +41 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/reference_count.cc +118 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/reference_count.h +406 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/internal/value_conversion.h +115 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/json.h +35 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/kind.cc +80 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/kind.h +76 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/legacy_value.cc +1324 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/legacy_value.h +131 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/memory.cc +83 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/memory.h +1505 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/memory_testing.h +71 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/minimal_descriptor_database.h +32 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/minimal_descriptor_pool.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/native_type.h +26 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/navigable_ast.cc +202 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/navigable_ast.h +168 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/operators.cc +233 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/operators.h +87 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/optional_ref.h +163 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/reference.h +269 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/reference_count.h +26 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/signature.cc +640 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/signature.h +101 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/source.cc +679 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/source.h +261 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/standard_definitions.h +349 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type.cc +737 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type.h +1303 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type_introspector.cc +277 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type_introspector.h +157 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type_kind.h +113 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type_proto.h +39 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type_reflector.h +43 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type_spec_resolver.cc +324 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type_spec_resolver.h +46 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/type_testing.h +24 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/typeinfo.cc +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/typeinfo.h +221 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/any_type.h +74 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/basic_struct_type.cc +53 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/basic_struct_type.h +119 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bool_type.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bool_wrapper_type.h +79 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bytes_type.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/bytes_wrapper_type.h +79 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/double_type.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/double_wrapper_type.h +79 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/duration_type.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/dyn_type.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/enum_type.cc +43 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/enum_type.h +128 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/error_type.h +75 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type.cc +89 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type.h +91 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type_pool.cc +29 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/function_type_pool.h +102 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/int_type.h +72 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/int_wrapper_type.h +78 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/legacy_type_introspector.h +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type.cc +77 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type.h +115 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type_pool.cc +29 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/list_type_pool.h +80 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type.cc +122 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type.h +124 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type_pool.cc +30 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/map_type_pool.h +93 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/message_type.cc +95 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/message_type.h +209 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/null_type.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type.cc +109 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type.h +118 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type_pool.cc +33 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/opaque_type_pool.h +99 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/optional_type.cc +68 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/optional_type.h +114 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/string_type.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/string_wrapper_type.h +86 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/struct_type.cc +87 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/struct_type.h +158 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/timestamp_type.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_param_type.h +78 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_pool.cc +96 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_pool.h +99 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type.cc +74 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type.h +92 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type_pool.cc +26 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/type_type_pool.h +86 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/types.h +99 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/uint_type.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/uint_wrapper_type.h +79 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/types/unknown_type.h +74 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/unknown.h +27 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/value.cc +2791 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/value.h +2947 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/value_kind.h +104 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/value_testing.h +307 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bool_value.cc +97 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bool_value.h +111 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value.cc +194 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value.h +338 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value_input_stream.h +133 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/bytes_value_output_stream.h +176 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_list_value.cc +614 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_list_value.h +423 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_map_value.cc +823 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_map_value.h +469 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_struct_value.cc +385 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_struct_value.h +459 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/custom_value.h +84 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/double_value.cc +137 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/double_value.h +101 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/duration_value.cc +105 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/duration_value.h +147 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/enum_value.h +49 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/error_value.cc +194 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/error_value.h +276 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/int_value.cc +111 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/int_value.h +117 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_list_value.cc +76 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_list_value.h +167 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_map_value.cc +76 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_map_value.h +185 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_struct_value.cc +43 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/legacy_struct_value.h +183 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value.cc +304 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value.h +284 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value_builder.h +110 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/list_value_variant.h +214 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value.cc +378 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value.h +323 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value_builder.h +110 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/map_value_variant.h +212 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/message_value.cc +306 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/message_value.h +268 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/null_value.cc +78 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/null_value.h +96 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/opaque_value.cc +194 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/opaque_value.h +338 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/optional_value.cc +435 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/optional_value.h +207 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_list_value.cc +486 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_list_value.h +229 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_map_value.cc +439 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_map_value.h +250 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_value.cc +103 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_json_value.h +40 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_map_field_value.cc +583 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_map_field_value.h +242 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_message_value.cc +411 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_message_value.h +249 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_repeated_field_value.cc +365 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/parsed_repeated_field_value.h +220 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/string_value.cc +1518 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/string_value.h +489 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value.cc +390 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value.h +373 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value_builder.cc +1552 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value_builder.h +35 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/struct_value_variant.h +205 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/timestamp_value.cc +105 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/timestamp_value.h +146 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/type_value.cc +72 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/type_value.h +108 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/uint_value.cc +110 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/uint_value.h +119 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/unknown_value.cc +66 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/unknown_value.h +121 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_builder.cc +1432 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_builder.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_variant.cc +537 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/value_variant.h +831 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/common/values/values.h +351 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/compiler/compiler.h +195 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/compiler/compiler_factory.h +70 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/compiler/compiler_library_subset_factory.h +80 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/compiler/optional.h +28 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/compiler/standard_library.h +27 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/env/config.h +173 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/env/env.h +76 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/env/env_runtime.h +85 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/env/env_std_extensions.h +42 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/env/env_yaml.h +74 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/env/internal/ext_registry.h +74 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/env/internal/runtime_ext_registry.h +84 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/env/runtime_std_extensions.h +46 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/env/type_info.h +42 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/cel_expression_builder_flat_impl.cc +111 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/cel_expression_builder_flat_impl.h +108 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/check_ast_extensions.cc +58 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/check_ast_extensions.h +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/comprehension_vulnerability_check.cc +275 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/comprehension_vulnerability_check.h +51 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/constant_folding.cc +280 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/constant_folding.h +42 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder.cc +2667 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder.h +104 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder_extensions.cc +474 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/flat_expr_builder_extensions.h +481 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/instrumentation.h +60 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/qualified_reference_resolver.cc +359 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/qualified_reference_resolver.h +53 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/regex_precompilation_optimization.cc +274 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/regex_precompilation_optimization.h +29 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/resolver.cc +222 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/compiler/resolver.h +127 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_trail.cc +28 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_trail.h +65 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_utility.cc +260 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/attribute_utility.h +179 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/cel_expression_flat_impl.cc +147 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/cel_expression_flat_impl.h +175 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/compiler_constant_step.cc +37 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/compiler_constant_step.h +76 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/comprehension_slots.h +153 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/comprehension_step.cc +685 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/comprehension_step.h +119 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/const_value_step.h +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/container_access_step.cc +370 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/container_access_step.h +26 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_list_step.cc +283 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_list_step.h +40 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_map_step.cc +289 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_map_step.h +59 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_struct_step.cc +270 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/create_struct_step.h +44 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/direct_expression_step.cc +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/direct_expression_step.h +99 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/equality_steps.cc +293 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/equality_steps.h +45 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_core.cc +178 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_core.h +516 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_stack.cc +92 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/evaluator_stack.h +327 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/expression_step_base.h +12 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/function_step.cc +529 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/function_step.h +48 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ident_step.cc +174 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ident_step.h +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/iterator_stack.h +77 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/jump_step.cc +172 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/jump_step.h +74 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/lazy_init_step.cc +236 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/lazy_init_step.h +87 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/logic_step.cc +487 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/logic_step.h +49 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/optional_or_step.cc +305 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/optional_or_step.h +51 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/regex_match_step.cc +135 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/regex_match_step.h +37 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/select_step.cc +581 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/select_step.h +33 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/shadowable_value_step.cc +98 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/shadowable_value_step.h +26 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ternary_step.cc +194 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/ternary_step.h +26 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/eval/trace_step.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/adapter_activation_impl.cc +87 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/adapter_activation_impl.h +68 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/cel_value_equal.cc +242 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/cel_value_equal.h +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/errors.cc +64 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/errors.h +54 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/internal/interop.h +20 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/activation.cc +119 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/activation.h +170 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/activation_bind_helper.h +60 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_rewrite.h +175 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_traverse.h +110 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_visitor.h +185 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/ast_visitor_base.h +109 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/base_activation.h +75 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/builtin_func_registrar.cc +65 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/builtin_func_registrar.h +30 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_attribute.cc +90 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_attribute.h +64 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_builtins.h +19 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_expr_builder_factory.cc +146 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_expr_builder_factory.h +43 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_expression.h +144 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function.cc +76 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function.h +80 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_adapter.h +121 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_adapter_impl.h +407 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_registry.cc +122 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_function_registry.h +146 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_number.cc +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_number.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_options.cc +51 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_options.h +233 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_type_registry.cc +64 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_type_registry.h +145 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value.cc +412 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value.h +770 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value_internal.h +103 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/cel_value_producer.h +25 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/comparison_functions.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/container_function_registrar.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/container_backed_list_impl.h +44 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/container_backed_map_impl.cc +131 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/container_backed_map_impl.h +70 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_access.cc +85 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_access.h +70 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_backed_list_impl.h +33 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/field_backed_map_impl.h +35 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_list_impl.cc +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_list_impl.h +59 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_map_impl.cc +298 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/containers/internal_field_backed_map_impl.h +77 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/equality_function_registrar.h +44 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/extension_func_registrar.h +20 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/logical_function_registrar.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/message_wrapper.h +139 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/portable_cel_function_adapter.h +72 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/set_util.h +43 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/source_position.h +65 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/string_extension_func_registrar.cc +29 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/string_extension_func_registrar.h +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_descriptor_pool_builder.h +40 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrap_util.cc +1479 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrap_util.h +45 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrapper.cc +60 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/cel_proto_wrapper.h +53 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/field_access_impl.cc +746 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/field_access_impl.h +80 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_adapter.h +177 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_info_apis.h +108 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_provider.cc +232 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/legacy_type_provider.h +79 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/proto_message_type_adapter.cc +708 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/proto_message_type_adapter.h +137 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/protobuf_descriptor_type_provider.cc +70 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/protobuf_descriptor_type_provider.h +67 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/protobuf_value_factory.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/structs/trivial_legacy_type_info.h +54 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/transform_utility.h +39 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_attribute_set.h +20 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_function_result_set.cc +1 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_function_result_set.h +27 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/unknown_set.h +22 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/eval/public/value_export_util.h +28 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/bindings_ext.h +46 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/comprehensions_v2.h +39 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/comprehensions_v2_functions.h +35 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/comprehensions_v2_macros.h +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/encoders.h +45 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/formatting.cc +570 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/formatting.h +39 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/lists_functions.h +138 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/math_ext.h +39 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/math_ext_decls.h +33 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/math_ext_macros.h +38 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/proto_ext.h +42 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/ast_converters.h +56 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/bind_proto_to_activation.h +38 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/enum_adapter.h +30 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/map_reflection.cc +132 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/map_reflection.h +67 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/qualify.cc +457 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/internal/qualify.h +117 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/memory_manager.cc +37 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/memory_manager.h +56 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/runtime_adapter.h +51 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/value.h +98 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/protobuf/value_testing.h +78 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/regex_ext.h +131 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/regex_functions.h +52 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/select_optimization.cc +958 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/select_optimization.h +90 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/sets_functions.h +45 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/strings.cc +432 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/extensions/strings.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/align.h +95 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/benchmark.h +20 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/casts.h +50 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/empty_descriptors.cc +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/empty_descriptors.h +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/equals_text_proto.h +65 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/exceptions.h +35 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/json.cc +2041 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/json.h +141 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/lexis.cc +79 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/lexis.h +32 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/manual.h +91 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/message_equality.cc +1490 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/message_equality.h +54 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/message_type_name.h +56 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/minimal_descriptor_database.h +32 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/minimal_descriptor_pool.h +40 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/names.h +26 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/new.cc +142 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/new.h +61 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/noop_delete.h +53 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/number.h +299 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/overflow.cc +339 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/overflow.h +178 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/parse_text_proto.h +121 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_file_util.h +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_matchers.h +140 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_time_encoding.cc +103 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_time_encoding.h +49 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/proto_util.h +87 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/protobuf_runtime_version.h +32 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/re2_options.h +61 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/runfiles.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/status_builder.h +114 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/status_macros.h +152 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/string_pool.cc +79 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/string_pool.h +59 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/strings.cc +693 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/strings.h +90 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/testing.h +44 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/testing_descriptor_pool.h +35 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/testing_message_factory.h +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/time.cc +198 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/time.h +65 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/to_address.h +68 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/unicode.h +28 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/utf8.cc +526 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/utf8.h +82 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/well_known_types.cc +2181 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/internal/well_known_types.h +1593 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/ast_factory.cc +320 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/ast_factory.h +174 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/ast_factory_interface.h +130 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/lexer.cc +711 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/lexer.h +286 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/options.h +29 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser.cc +226 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser.h +110 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser_worker.cc +261 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/internal/pratt_parser_worker.h +1143 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro.cc +561 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro.h +229 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_expr_factory.cc +128 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_expr_factory.h +333 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_registry.cc +87 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/macro_registry.h +59 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/options.h +115 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser.cc +1995 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser.h +102 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser_interface.h +160 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/parser_subset_factory.h +41 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/source_factory.h +47 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/parser/standard_macros.h +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy.h +333 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_parse_context.h +65 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_parse_result.h +105 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_parser.h +40 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/cel_policy_validation_result.h +84 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/compiler.h +50 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/internal/issue_reporter.h +57 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/internal/optimizer_expr_factory.h +419 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/internal/yaml_string_element_scanner.h +40 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/test_util.h +33 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/policy/yaml_policy_parser.h +135 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/activation.cc +141 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/activation.h +184 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/activation_interface.h +109 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/bind_proto_to_activation.h +174 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/comprehension_vulnerability_check.h +35 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/constant_folding.h +69 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/embedder_context.h +147 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function.h +115 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_adapter.h +830 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_overload_reference.h +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_provider.h +46 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_registry.cc +263 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/function_registry.h +160 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/activation_attribute_matcher_access.cc +61 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/activation_attribute_matcher_access.h +60 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/attribute_matcher.h +48 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/convert_constant.cc +78 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/convert_constant.h +39 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/errors.cc +69 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/errors.h +71 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/function_adapter.h +232 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/issue_collector.h +64 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/legacy_runtime_type_provider.h +37 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_env.cc +73 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_env.h +134 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_env_testing.h +60 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_friend_access.h +45 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_impl.cc +159 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_impl.h +125 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_type_provider.cc +96 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/internal/runtime_type_provider.h +66 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/optional_types.h +152 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/reference_resolver.h +46 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/regex_precompilation.h +32 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/register_function_helper.h +99 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime.h +229 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_builder.h +101 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_builder_factory.h +65 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_issue.h +88 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/runtime_options.h +209 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/arithmetic_functions.cc +233 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/arithmetic_functions.h +35 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/comparison_functions.cc +272 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/comparison_functions.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_functions.cc +136 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_functions.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_membership_functions.cc +331 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/container_membership_functions.h +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/equality_functions.cc +612 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/equality_functions.h +60 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/logical_functions.cc +66 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/logical_functions.h +36 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/regex_functions.cc +56 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/regex_functions.h +38 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/string_functions.cc +140 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/string_functions.h +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/time_functions.cc +499 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/time_functions.h +56 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/type_conversion_functions.cc +470 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard/type_conversion_functions.h +34 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard_functions.h +33 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/standard_runtime_builder_factory.h +43 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/type_registry.cc +84 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/runtime/type_registry.h +155 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/tools/branch_coverage.h +68 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/tools/cel_field_extractor.h +70 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/tools/cel_unparser.h +60 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/tools/descriptor_pool_builder.h +93 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/tools/flatbuffers_backed_impl.h +58 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/tools/navigable_ast.h +169 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/tools/proto_to_predicate.h +48 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/validator/ast_depth_validator.h +27 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/validator/comprehension_nesting_validator.h +31 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/validator/homogeneous_literal_validator.h +38 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/validator/regex_validator.h +53 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/validator/timestamp_literal_validator.h +29 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/validator/validator.cc +85 -0
- data/ext/protovalidate/sys/third_party/cel-cpp/validator/validator.h +151 -0
- data/ext/protovalidate/sys/third_party/protobuf/LICENSE +32 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.cc +65 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.h +161 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.pb.cc +528 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any.pb.h +516 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/any_lite.cc +95 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/api.pb.cc +1959 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/api.pb.h +1985 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena.cc +1004 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena.h +1238 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_align.cc +21 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_align.h +199 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_allocation_policy.h +102 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_cleanup.h +108 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arena_test_util.h +91 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenastring.cc +290 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenastring.h +545 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenaz_sampler.cc +227 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/arenaz_sampler.h +238 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/annotation_test_util.h +105 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/code_generator.h +256 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/code_generator_lite.h +77 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/command_line_interface.h +517 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/command_line_interface_tester.h +162 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/importer.cc +594 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/importer.h +338 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/mock_code_generator.h +144 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/notices.h +242 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/package_info.h +40 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/parser.cc +2716 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/parser.h +642 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/plugin.h +73 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.h +2320 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/retention.h +70 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/scc.h +155 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/subprocess.h +91 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/versions.h +78 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/compiler/zip_writer.h +45 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/cpp_edition_defaults.h +12 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/cpp_features.pb.cc +539 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/cpp_features.pb.h +630 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.cc +10801 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.h +3417 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.pb.cc +18982 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor.pb.h +23170 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_database.cc +1102 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_database.h +423 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_legacy.h +32 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_lite.h +110 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_test_utils.h +129 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/descriptor_visitor.h +187 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/duration.pb.cc +481 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/duration.pb.h +367 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/dynamic_message.cc +1104 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/dynamic_message.h +217 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/empty.pb.cc +285 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/empty.pb.h +245 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/endian.h +192 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/explicitly_constructed.h +71 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set.cc +1925 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set.h +1886 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set_heavy.cc +459 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/extension_set_inl.h +274 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/feature_resolver.cc +637 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/feature_resolver.h +108 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_access_listener.h +166 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_mask.pb.cc +472 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_mask.pb.h +396 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/field_with_arena.h +110 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_enum_reflection.h +187 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_enum_util.cc +223 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_enum_util.h +185 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_bases.cc +88 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_bases.h +68 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_reflection.cc +4185 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_reflection.h +372 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_decl.h +615 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_full.cc +105 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_gen.cc +960 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_gen.h +193 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_impl.h +1229 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_tctable_lite.cc +3308 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_util.cc +434 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/generated_message_util.h +445 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/has_bits.h +138 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/implicit_weak_message.cc +139 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/implicit_weak_message.h +266 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/inlined_string_field.cc +144 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/inlined_string_field.h +379 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_feature_helper.cc +28 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_feature_helper.h +130 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_metadata_locator.h +291 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_visibility.h +55 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/internal_visibility_for_testing.h +27 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/coded_stream.cc +1045 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/coded_stream.h +1885 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/gzip_stream.cc +333 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/gzip_stream.h +189 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/io_win32.cc +450 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/io_win32.h +118 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/package_info.h +30 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/printer.cc +842 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/printer.h +1183 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/strtod.cc +260 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/strtod.h +57 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/test_zero_copy_stream.h +185 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/tokenizer.cc +1262 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/tokenizer.h +441 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_sink.cc +45 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_sink.h +59 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream.cc +128 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream.h +269 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc +354 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h +319 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc +699 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h +533 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/descriptor_traits.h +510 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/lexer.cc +512 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/lexer.h +341 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/message_path.cc +46 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/message_path.h +61 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/parser.cc +1437 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/parser.h +37 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/parser_traits.h +400 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/unparser.cc +915 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/unparser.h +38 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/unparser_traits.h +414 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/untyped_message.cc +577 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/untyped_message.h +246 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/writer.cc +307 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/writer.h +214 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/zero_copy_buffered_stream.cc +152 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/internal/zero_copy_buffered_stream.h +338 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/json.cc +137 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/json/json.h +200 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map.cc +297 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map.h +1787 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_entry.h +139 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_field.cc +597 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_field.h +925 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_field_lite.h +124 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_test.inc +4427 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_test_util.h +617 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/map_type_handler.h +374 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message.cc +745 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message.h +1936 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_lite.cc +807 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_lite.h +1861 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_unittest.inc +2302 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/message_unittest_legacy_apis.inc +98 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/metadata.h +13 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/metadata_lite.h +271 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/micro_string.cc +376 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/micro_string.h +649 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/os_macros_restore.inc +97 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/os_macros_undef.inc +166 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/package_info.h +43 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/parse_context.cc +850 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/parse_context.h +1883 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port.cc +131 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port.h +908 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port_def.inc +820 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/port_undef.inc +97 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/proto3_lite_unittest.inc +127 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/raw_ptr.cc +29 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/raw_ptr.h +64 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection.h +603 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_internal.h +313 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_mode.cc +36 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_mode.h +144 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_ops.cc +456 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_ops.h +67 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_tester.h +127 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_visit_field_info.h +1378 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/reflection_visit_fields.h +511 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field.cc +76 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field.h +1814 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_proxy.h +697 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_proxy_iterator.h +236 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_proxy_traits.h +100 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_field_reflection_unittest.inc +687 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_ptr_field.cc +251 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/repeated_ptr_field.h +2706 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/runtime_version.h +27 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/serial_arena.h +447 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/service.cc +22 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/service.h +271 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/source_context.pb.cc +463 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/source_context.pb.h +376 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/string_block.h +181 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/string_member_robber.h +17 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/struct.pb.cc +1663 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/struct.pb.h +1426 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/callback.h +584 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/common.cc +121 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/common.h +94 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/platform_macros.h +115 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/port.h +228 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/stubs/status_macros.h +72 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/symbol_checker.cc +219 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/symbol_checker.h +142 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_textproto.h +54 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_util.h +3897 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_util2.h +70 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/test_util_lite.h +86 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/text_format.cc +3324 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/text_format.h +925 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/thread_safe_arena.h +297 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/timestamp.pb.cc +481 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/timestamp.pb.h +367 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/type.pb.cc +3129 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/type.pb.h +3343 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/unknown_field_set.cc +351 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/unknown_field_set.h +464 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc +107 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/delimited_message_util.h +85 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_comparator.cc +237 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_comparator.h +256 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_mask_util.cc +754 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/field_mask_util.h +242 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/internal_timeval.h +28 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/json_util.h +34 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/message_differencer.cc +2372 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/message_differencer.h +1002 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/package_info.h +23 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/python/field_mask_util_clif_aux.h +32 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/time_util.cc +563 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/time_util.h +297 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/type_resolver.h +56 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/type_resolver_util.cc +436 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/util/type_resolver_util.h +45 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/varint_shuffle.h +165 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format.cc +1785 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format.h +374 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format_lite.cc +901 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format_lite.h +1720 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wire_format_unittest.h +1726 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wrappers.pb.cc +3203 -0
- data/ext/protovalidate/sys/third_party/protobuf/src/google/protobuf/wrappers.pb.h +2317 -0
- data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range.c +207 -0
- data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range.h +23 -0
- data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range_neon.inc +117 -0
- data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_range_sse.inc +272 -0
- data/ext/protovalidate/sys/third_party/protobuf/third_party/utf8_range/utf8_validity.h +30 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/LICENSE +201 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/cel_rules.h +116 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/cel_validation_rules.cc +166 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/cel_validation_rules.h +72 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/extra_func.cc +482 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/extra_func.h +31 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/field_rules.cc +388 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/field_rules.h +92 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv4.cc +69 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv4.h +58 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv6.cc +143 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/ipv6.h +51 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/parser_common.h +256 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/uri.cc +469 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/lib/uri.h +25 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_factory.cc +31 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_factory.h +43 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_rules.cc +114 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/message_rules.h +39 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/proto_field.h +155 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/rules.cc +437 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/rules.h +221 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/internal/validation_rules.h +153 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/validator.cc +190 -0
- data/ext/protovalidate/sys/third_party/protovalidate-cc/buf/validate/validator.h +156 -0
- data/ext/protovalidate/sys/third_party/re2/LICENSE +27 -0
- data/ext/protovalidate/sys/third_party/re2/re2/bitmap256.cc +43 -0
- data/ext/protovalidate/sys/third_party/re2/re2/bitmap256.h +88 -0
- data/ext/protovalidate/sys/third_party/re2/re2/bitstate.cc +389 -0
- data/ext/protovalidate/sys/third_party/re2/re2/compile.cc +1265 -0
- data/ext/protovalidate/sys/third_party/re2/re2/dfa.cc +2135 -0
- data/ext/protovalidate/sys/third_party/re2/re2/filtered_re2.cc +138 -0
- data/ext/protovalidate/sys/third_party/re2/re2/filtered_re2.h +115 -0
- data/ext/protovalidate/sys/third_party/re2/re2/mimics_pcre.cc +196 -0
- data/ext/protovalidate/sys/third_party/re2/re2/nfa.cc +714 -0
- data/ext/protovalidate/sys/third_party/re2/re2/onepass.cc +623 -0
- data/ext/protovalidate/sys/third_party/re2/re2/parse.cc +2529 -0
- data/ext/protovalidate/sys/third_party/re2/re2/perl_groups.cc +119 -0
- data/ext/protovalidate/sys/third_party/re2/re2/pod_array.h +55 -0
- data/ext/protovalidate/sys/third_party/re2/re2/prefilter.cc +711 -0
- data/ext/protovalidate/sys/third_party/re2/re2/prefilter.h +168 -0
- data/ext/protovalidate/sys/third_party/re2/re2/prefilter_tree.cc +376 -0
- data/ext/protovalidate/sys/third_party/re2/re2/prefilter_tree.h +153 -0
- data/ext/protovalidate/sys/third_party/re2/re2/prog.cc +1181 -0
- data/ext/protovalidate/sys/third_party/re2/re2/prog.h +493 -0
- data/ext/protovalidate/sys/third_party/re2/re2/re2.cc +1355 -0
- data/ext/protovalidate/sys/third_party/re2/re2/re2.h +1074 -0
- data/ext/protovalidate/sys/third_party/re2/re2/regexp.cc +1004 -0
- data/ext/protovalidate/sys/third_party/re2/re2/regexp.h +693 -0
- data/ext/protovalidate/sys/third_party/re2/re2/set.cc +185 -0
- data/ext/protovalidate/sys/third_party/re2/re2/set.h +91 -0
- data/ext/protovalidate/sys/third_party/re2/re2/simplify.cc +689 -0
- data/ext/protovalidate/sys/third_party/re2/re2/sparse_array.h +394 -0
- data/ext/protovalidate/sys/third_party/re2/re2/sparse_set.h +266 -0
- data/ext/protovalidate/sys/third_party/re2/re2/stringpiece.h +18 -0
- data/ext/protovalidate/sys/third_party/re2/re2/tostring.cc +351 -0
- data/ext/protovalidate/sys/third_party/re2/re2/unicode_casefold.cc +604 -0
- data/ext/protovalidate/sys/third_party/re2/re2/unicode_casefold.h +77 -0
- data/ext/protovalidate/sys/third_party/re2/re2/unicode_groups.cc +6517 -0
- data/ext/protovalidate/sys/third_party/re2/re2/unicode_groups.h +66 -0
- data/ext/protovalidate/sys/third_party/re2/re2/walker-inl.h +249 -0
- data/ext/protovalidate/sys/third_party/re2/util/malloc_counter.h +19 -0
- data/ext/protovalidate/sys/third_party/re2/util/pcre.h +671 -0
- data/ext/protovalidate/sys/third_party/re2/util/rune.cc +260 -0
- data/ext/protovalidate/sys/third_party/re2/util/strutil.cc +26 -0
- data/ext/protovalidate/sys/third_party/re2/util/strutil.h +16 -0
- data/ext/protovalidate/sys/third_party/re2/util/utf.h +44 -0
- data/ext/protovalidate/sys/versions.json +15 -0
- data/lib/buf/validate/validate_pb.rb +55 -0
- data/lib/protovalidate/errors.rb +32 -0
- data/lib/protovalidate/native.rb +30 -0
- data/lib/protovalidate/validator.rb +96 -0
- data/lib/protovalidate/version.rb +10 -0
- data/lib/protovalidate/violation.rb +115 -0
- data/lib/protovalidate.rb +48 -0
- data/sig/buf/validate/validate_pb.rbs +64 -0
- data/sig/protovalidate/native.rbs +14 -0
- data/sig/protovalidate.rbs +90 -0
- metadata +1900 -0
|
@@ -0,0 +1,3308 @@
|
|
|
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
|
+
#include <algorithm>
|
|
9
|
+
#include <cstddef>
|
|
10
|
+
#include <cstdint>
|
|
11
|
+
#include <cstring>
|
|
12
|
+
#include <limits>
|
|
13
|
+
#include <new> // IWYU pragma: keep for operator new
|
|
14
|
+
#include <numeric>
|
|
15
|
+
#include <string>
|
|
16
|
+
#include <type_traits>
|
|
17
|
+
|
|
18
|
+
#include "absl/base/attributes.h"
|
|
19
|
+
#include "absl/base/optimization.h"
|
|
20
|
+
#include "absl/functional/overload.h"
|
|
21
|
+
#include "absl/log/absl_check.h"
|
|
22
|
+
#include "absl/log/absl_log.h"
|
|
23
|
+
#include "absl/numeric/bits.h"
|
|
24
|
+
#include "absl/status/status.h"
|
|
25
|
+
#include "absl/strings/str_cat.h"
|
|
26
|
+
#include "absl/strings/str_format.h"
|
|
27
|
+
#include "absl/strings/string_view.h"
|
|
28
|
+
#include "absl/types/optional.h"
|
|
29
|
+
#include "google/protobuf/arenastring.h"
|
|
30
|
+
#include "google/protobuf/generated_enum_util.h"
|
|
31
|
+
#include "google/protobuf/generated_message_tctable_decl.h"
|
|
32
|
+
#include "google/protobuf/generated_message_tctable_impl.h"
|
|
33
|
+
#include "google/protobuf/has_bits.h"
|
|
34
|
+
#include "google/protobuf/inlined_string_field.h"
|
|
35
|
+
#include "google/protobuf/io/zero_copy_stream_impl_lite.h"
|
|
36
|
+
#include "google/protobuf/map.h"
|
|
37
|
+
#include "google/protobuf/message_lite.h"
|
|
38
|
+
#include "google/protobuf/micro_string.h"
|
|
39
|
+
#include "google/protobuf/parse_context.h"
|
|
40
|
+
#include "google/protobuf/port.h"
|
|
41
|
+
#include "google/protobuf/repeated_field.h"
|
|
42
|
+
#include "google/protobuf/repeated_ptr_field.h"
|
|
43
|
+
#include "google/protobuf/serial_arena.h"
|
|
44
|
+
#include "google/protobuf/varint_shuffle.h"
|
|
45
|
+
#include "google/protobuf/wire_format_lite.h"
|
|
46
|
+
#include "utf8_validity.h"
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
// clang-format off
|
|
50
|
+
#include "google/protobuf/port_def.inc"
|
|
51
|
+
// clang-format on
|
|
52
|
+
|
|
53
|
+
namespace google {
|
|
54
|
+
namespace protobuf {
|
|
55
|
+
namespace internal {
|
|
56
|
+
|
|
57
|
+
using FieldEntry = TcParseTableBase::FieldEntry;
|
|
58
|
+
|
|
59
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
60
|
+
// Template instantiations:
|
|
61
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
62
|
+
|
|
63
|
+
#ifndef NDEBUG
|
|
64
|
+
[[noreturn]] void AlignFail(std::integral_constant<size_t, 4>,
|
|
65
|
+
std::uintptr_t address) {
|
|
66
|
+
ABSL_LOG(FATAL) << "Unaligned (4) access at " << address;
|
|
67
|
+
}
|
|
68
|
+
[[noreturn]] void AlignFail(std::integral_constant<size_t, 8>,
|
|
69
|
+
std::uintptr_t address) {
|
|
70
|
+
ABSL_LOG(FATAL) << "Unaligned (8) access at " << address;
|
|
71
|
+
}
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
const char* TcParser::GenericFallbackLite(PROTOBUF_TC_PARAM_DECL) {
|
|
75
|
+
PROTOBUF_MUSTTAIL return GenericFallbackImpl<MessageLite, std::string>(
|
|
76
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
namespace {
|
|
80
|
+
|
|
81
|
+
bool ReadHas(const FieldEntry& entry, const MessageLite* msg) {
|
|
82
|
+
auto has_idx = static_cast<uint32_t>(entry.has_idx);
|
|
83
|
+
const auto& hasblock = TcParser::RefAt<const uint32_t>(msg, has_idx / 32 * 4);
|
|
84
|
+
return (hasblock & (uint32_t{1} << (has_idx % 32))) != 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
PROTOBUF_ALWAYS_INLINE void SetCachedHasBit(uint64_t& cached_hasbits,
|
|
88
|
+
uint8_t hasbit_idx) {
|
|
89
|
+
cached_hasbits |= uint64_t{1} << hasbit_idx;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
} // namespace
|
|
93
|
+
|
|
94
|
+
LazyEagerVerifyFnType TcParser::GetLazyEagerVerifyFn(
|
|
95
|
+
const google::protobuf::internal::TcParseTableBase* table, uint32_t field_number) {
|
|
96
|
+
auto* entry = TcParser::FindFieldEntry(table, field_number);
|
|
97
|
+
if (ABSL_PREDICT_FALSE(entry == nullptr)) return nullptr;
|
|
98
|
+
if (ABSL_PREDICT_FALSE(entry->aux_idx == entry->kNoAuxIdx)) return nullptr;
|
|
99
|
+
|
|
100
|
+
const auto* aux = table->field_aux(entry);
|
|
101
|
+
return aux[1].verify_func;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
absl::Status TcParser::VerifyHasBitConsistency(const MessageLite* msg,
|
|
105
|
+
const TcParseTableBase* table) {
|
|
106
|
+
namespace fl = internal::field_layout;
|
|
107
|
+
if (table->has_bits_offset == 0) {
|
|
108
|
+
// Nothing to check
|
|
109
|
+
return absl::OkStatus();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
for (const auto& entry : table->field_entries()) {
|
|
113
|
+
const auto make_error_status = [&] {
|
|
114
|
+
return absl::InternalError(
|
|
115
|
+
absl::StrFormat("Has bits mismatch for Type=%s Field=%d\n",
|
|
116
|
+
msg->GetTypeName(), FieldNumber(table, &entry)));
|
|
117
|
+
};
|
|
118
|
+
const auto cardinality = entry.type_card & fl::kFcMask;
|
|
119
|
+
if (cardinality == fl::kFcSingular || cardinality == fl::kFcOneof ||
|
|
120
|
+
entry.has_idx == kNoHasbit) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
const bool has_bit = ReadHas(entry, msg);
|
|
124
|
+
const void* base = msg;
|
|
125
|
+
const void* default_base = table->default_instance();
|
|
126
|
+
const bool is_split = (entry.type_card & field_layout::kSplitMask) ==
|
|
127
|
+
field_layout::kSplitTrue;
|
|
128
|
+
if (is_split) {
|
|
129
|
+
const size_t offset = table->field_aux(kSplitOffsetAuxIdx)->offset;
|
|
130
|
+
base = TcParser::RefAt<const void*>(base, offset);
|
|
131
|
+
default_base = TcParser::RefAt<const void*>(default_base, offset);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (cardinality == fl::kFcRepeated) {
|
|
135
|
+
if (!has_bit &&
|
|
136
|
+
!RepeatedFieldIsEmptySlow(msg, table, entry, base, is_split)) {
|
|
137
|
+
return make_error_status();
|
|
138
|
+
}
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
switch (entry.type_card & fl::kFkMask) {
|
|
143
|
+
case fl::kFkVarint:
|
|
144
|
+
case fl::kFkFixed:
|
|
145
|
+
// Numerics can have any value when the has bit is on.
|
|
146
|
+
if (has_bit) break;
|
|
147
|
+
switch (entry.type_card & fl::kRepMask) {
|
|
148
|
+
case fl::kRep8Bits:
|
|
149
|
+
if (RefAt<bool>(base, entry.offset) !=
|
|
150
|
+
RefAt<bool>(default_base, entry.offset)) {
|
|
151
|
+
return make_error_status();
|
|
152
|
+
}
|
|
153
|
+
break;
|
|
154
|
+
case fl::kRep32Bits:
|
|
155
|
+
if (RefAt<uint32_t>(base, entry.offset) !=
|
|
156
|
+
RefAt<uint32_t>(default_base, entry.offset)) {
|
|
157
|
+
return make_error_status();
|
|
158
|
+
}
|
|
159
|
+
break;
|
|
160
|
+
case fl::kRep64Bits:
|
|
161
|
+
if (RefAt<uint64_t>(base, entry.offset) !=
|
|
162
|
+
RefAt<uint64_t>(default_base, entry.offset)) {
|
|
163
|
+
return make_error_status();
|
|
164
|
+
}
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
|
|
169
|
+
case fl::kFkString:
|
|
170
|
+
switch (entry.type_card & fl::kRepMask) {
|
|
171
|
+
case field_layout::kRepAString:
|
|
172
|
+
// Must not point to the default if the has bit is on.
|
|
173
|
+
if (has_bit &&
|
|
174
|
+
RefAt<ArenaStringPtr>(base, entry.offset).IsDefault()) {
|
|
175
|
+
return make_error_status();
|
|
176
|
+
} else {
|
|
177
|
+
// We should technically check that the value matches the default
|
|
178
|
+
// value of the field, but the prototype does not actually contain
|
|
179
|
+
// this value. Non-empty defaults are loaded on access.
|
|
180
|
+
}
|
|
181
|
+
break;
|
|
182
|
+
case field_layout::kRepCord:
|
|
183
|
+
// If the has bit is off, it must match the default.
|
|
184
|
+
if (!has_bit && (RefAt<absl::Cord>(base, entry.offset) !=
|
|
185
|
+
RefAt<absl::Cord>(default_base, entry.offset))) {
|
|
186
|
+
return make_error_status();
|
|
187
|
+
}
|
|
188
|
+
break;
|
|
189
|
+
case field_layout::kRepIString:
|
|
190
|
+
// If the has bit is off, it must match the default.
|
|
191
|
+
if (!has_bit &&
|
|
192
|
+
(RefAt<InlinedStringField>(base, entry.offset).Get() !=
|
|
193
|
+
RefAt<InlinedStringField>(default_base, entry.offset).Get())) {
|
|
194
|
+
return make_error_status();
|
|
195
|
+
}
|
|
196
|
+
break;
|
|
197
|
+
case field_layout::kRepSString:
|
|
198
|
+
Unreachable();
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
case fl::kFkMessage:
|
|
202
|
+
switch (entry.type_card & fl::kRepMask) {
|
|
203
|
+
case fl::kRepMessage:
|
|
204
|
+
case fl::kRepGroup:
|
|
205
|
+
// Note: An off has_bit does not imply a null pointer. We might have
|
|
206
|
+
// a previous instance that we cached.
|
|
207
|
+
if (has_bit &&
|
|
208
|
+
RefAt<const MessageLite*>(base, entry.offset) == nullptr) {
|
|
209
|
+
return make_error_status();
|
|
210
|
+
}
|
|
211
|
+
break;
|
|
212
|
+
default:
|
|
213
|
+
Unreachable();
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
216
|
+
|
|
217
|
+
default:
|
|
218
|
+
// All other types are not `optional`.
|
|
219
|
+
Unreachable();
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return absl::OkStatus();
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
void TcParser::CheckHasBitConsistency(const MessageLite* msg,
|
|
227
|
+
const TcParseTableBase* table) {
|
|
228
|
+
ABSL_CHECK_OK(VerifyHasBitConsistency(msg, table));
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
bool TcParser::RepeatedFieldIsEmptySlow(const MessageLite* msg,
|
|
232
|
+
const TcParseTableBase* table,
|
|
233
|
+
const FieldEntry& entry,
|
|
234
|
+
const void* base, bool is_split) {
|
|
235
|
+
namespace fl = internal::field_layout;
|
|
236
|
+
|
|
237
|
+
switch (entry.type_card & fl::kFkMask) {
|
|
238
|
+
case fl::kFkVarint:
|
|
239
|
+
case fl::kFkPackedVarint:
|
|
240
|
+
case fl::kFkFixed:
|
|
241
|
+
case fl::kFkPackedFixed:
|
|
242
|
+
switch (entry.type_card & fl::kRepMask) {
|
|
243
|
+
case fl::kRep8Bits: {
|
|
244
|
+
const auto& repeated_field =
|
|
245
|
+
GetRepeatedFieldAt<RepeatedField<uint8_t>>(base, entry.offset,
|
|
246
|
+
msg, is_split);
|
|
247
|
+
return repeated_field.empty();
|
|
248
|
+
}
|
|
249
|
+
case fl::kRep32Bits: {
|
|
250
|
+
const auto& repeated_field =
|
|
251
|
+
GetRepeatedFieldAt<RepeatedField<uint32_t>>(base, entry.offset,
|
|
252
|
+
msg, is_split);
|
|
253
|
+
return repeated_field.empty();
|
|
254
|
+
}
|
|
255
|
+
case fl::kRep64Bits: {
|
|
256
|
+
const auto& repeated_field =
|
|
257
|
+
GetRepeatedFieldAt<RepeatedField<uint64_t>>(base, entry.offset,
|
|
258
|
+
msg, is_split);
|
|
259
|
+
return repeated_field.empty();
|
|
260
|
+
}
|
|
261
|
+
default:
|
|
262
|
+
Unreachable();
|
|
263
|
+
}
|
|
264
|
+
break;
|
|
265
|
+
case fl::kFkString: {
|
|
266
|
+
switch (entry.type_card & fl::kRepMask) {
|
|
267
|
+
case fl::kRepSPiece:
|
|
268
|
+
case fl::kRepSString:
|
|
269
|
+
// Fall through to the RepeatedPtrFieldBase case.
|
|
270
|
+
break;
|
|
271
|
+
case fl::kRepIString: {
|
|
272
|
+
// Inline strings cannot be repeated.
|
|
273
|
+
Unreachable();
|
|
274
|
+
}
|
|
275
|
+
case fl::kRepCord: {
|
|
276
|
+
const auto& repeated_field =
|
|
277
|
+
GetRepeatedFieldAt<RepeatedField<absl::Cord>>(base, entry.offset,
|
|
278
|
+
msg, is_split);
|
|
279
|
+
return repeated_field.empty();
|
|
280
|
+
}
|
|
281
|
+
default:
|
|
282
|
+
Unreachable();
|
|
283
|
+
}
|
|
284
|
+
ABSL_FALLTHROUGH_INTENDED;
|
|
285
|
+
}
|
|
286
|
+
case fl::kFkMessage: {
|
|
287
|
+
const auto& repeated_field = GetRepeatedFieldAt<RepeatedPtrFieldBase>(
|
|
288
|
+
base, entry.offset, msg, is_split);
|
|
289
|
+
return repeated_field.empty();
|
|
290
|
+
}
|
|
291
|
+
case fl::kFkMap: {
|
|
292
|
+
const auto* aux = table->field_aux(&entry);
|
|
293
|
+
const auto map_info = aux[0].map_info;
|
|
294
|
+
const UntypedMapBase& map_field =
|
|
295
|
+
map_info.use_lite
|
|
296
|
+
? RefAt<const UntypedMapBase>(base, entry.offset)
|
|
297
|
+
: RefAt<const MapFieldBaseForParse>(base, entry.offset).GetMap();
|
|
298
|
+
return map_field.empty();
|
|
299
|
+
}
|
|
300
|
+
default:
|
|
301
|
+
Unreachable();
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
306
|
+
// Core fast parsing implementation:
|
|
307
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
308
|
+
|
|
309
|
+
PROTOBUF_NOINLINE const char* TcParser::ParseLoopPreserveNone(
|
|
310
|
+
MessageLite* msg, const char* ptr, ParseContext* ctx,
|
|
311
|
+
const TcParseTableBase* table) {
|
|
312
|
+
return ParseLoop(msg, ptr, ctx, table);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// On the fast path, a (matching) 1-byte tag already has the decoded value.
|
|
316
|
+
static uint32_t FastDecodeTag(uint8_t coded_tag) { return coded_tag; }
|
|
317
|
+
|
|
318
|
+
// On the fast path, a (matching) 2-byte tag always needs to be decoded.
|
|
319
|
+
static uint32_t FastDecodeTag(uint16_t coded_tag) {
|
|
320
|
+
uint32_t result = coded_tag;
|
|
321
|
+
result += static_cast<int8_t>(coded_tag);
|
|
322
|
+
return result >> 1;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
326
|
+
// Core mini parsing implementation:
|
|
327
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
328
|
+
|
|
329
|
+
// Field lookup table layout:
|
|
330
|
+
//
|
|
331
|
+
// Because it consists of a series of variable-length segments, the lookuup
|
|
332
|
+
// table is organized within an array of uint16_t, and each element is either
|
|
333
|
+
// a uint16_t or a uint32_t stored little-endian as a pair of uint16_t.
|
|
334
|
+
//
|
|
335
|
+
// Its fundamental building block maps 16 contiguously ascending field numbers
|
|
336
|
+
// to their locations within the field entry table:
|
|
337
|
+
|
|
338
|
+
struct SkipEntry16 {
|
|
339
|
+
uint16_t skipmap;
|
|
340
|
+
uint16_t field_entry_offset;
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
// The skipmap is a bitfield of which of those field numbers do NOT have a
|
|
344
|
+
// field entry. The lowest bit of the skipmap corresponds to the lowest of
|
|
345
|
+
// the 16 field numbers, so if a proto had only fields 1, 2, 3, and 7, the
|
|
346
|
+
// skipmap would contain 0b11111111'10111000.
|
|
347
|
+
//
|
|
348
|
+
// The field lookup table begins with a single 32-bit skipmap that maps the
|
|
349
|
+
// field numbers 1 through 32. This is because the majority of proto
|
|
350
|
+
// messages only contain fields numbered 1 to 32.
|
|
351
|
+
//
|
|
352
|
+
// The rest of the lookup table is a repeated series of
|
|
353
|
+
// { 32-bit field #, #SkipEntry16s, {SkipEntry16...} }
|
|
354
|
+
// That is, the next thing is a pair of uint16_t that form the next
|
|
355
|
+
// lowest field number that the lookup table handles. If this number is -1,
|
|
356
|
+
// that is the end of the table. Then there is a uint16_t that is
|
|
357
|
+
// the number of contiguous SkipEntry16 entries that follow, and then of
|
|
358
|
+
// course the SkipEntry16s themselves.
|
|
359
|
+
|
|
360
|
+
// Originally developed and tested at https://godbolt.org/z/vbc7enYcf
|
|
361
|
+
|
|
362
|
+
// Returns the address of the field for `tag` in the table's field entries.
|
|
363
|
+
// Returns nullptr if the field was not found.
|
|
364
|
+
const TcParseTableBase::FieldEntry* TcParser::FindFieldEntry(
|
|
365
|
+
const TcParseTableBase* table, uint32_t field_num) {
|
|
366
|
+
const FieldEntry* const field_entries = table->field_entries_begin();
|
|
367
|
+
|
|
368
|
+
uint32_t fstart = 1;
|
|
369
|
+
uint32_t adj_fnum = field_num - fstart;
|
|
370
|
+
|
|
371
|
+
if (ABSL_PREDICT_TRUE(adj_fnum < 32)) {
|
|
372
|
+
uint32_t skipmap = table->skipmap32;
|
|
373
|
+
uint32_t skipbit = 1 << adj_fnum;
|
|
374
|
+
if (ABSL_PREDICT_FALSE(skipmap & skipbit)) return nullptr;
|
|
375
|
+
skipmap &= skipbit - 1;
|
|
376
|
+
adj_fnum -= absl::popcount(skipmap);
|
|
377
|
+
auto* entry = field_entries + adj_fnum;
|
|
378
|
+
PROTOBUF_ASSUME(entry != nullptr);
|
|
379
|
+
return entry;
|
|
380
|
+
}
|
|
381
|
+
const uint16_t* lookup_table = table->field_lookup_begin();
|
|
382
|
+
for (;;) {
|
|
383
|
+
#ifdef ABSL_IS_LITTLE_ENDIAN
|
|
384
|
+
memcpy(&fstart, lookup_table, sizeof(fstart));
|
|
385
|
+
#else
|
|
386
|
+
fstart = lookup_table[0] | (lookup_table[1] << 16);
|
|
387
|
+
#endif
|
|
388
|
+
lookup_table += sizeof(fstart) / sizeof(*lookup_table);
|
|
389
|
+
uint32_t num_skip_entries = *lookup_table++;
|
|
390
|
+
if (field_num < fstart) return nullptr;
|
|
391
|
+
adj_fnum = field_num - fstart;
|
|
392
|
+
uint32_t skip_num = adj_fnum / 16;
|
|
393
|
+
if (ABSL_PREDICT_TRUE(skip_num < num_skip_entries)) {
|
|
394
|
+
// for each group of 16 fields we have:
|
|
395
|
+
// a bitmap of 16 bits
|
|
396
|
+
// a 16-bit field-entry offset for the first of them.
|
|
397
|
+
auto* skip_data = lookup_table + (adj_fnum / 16) * (sizeof(SkipEntry16) /
|
|
398
|
+
sizeof(uint16_t));
|
|
399
|
+
SkipEntry16 se = {skip_data[0], skip_data[1]};
|
|
400
|
+
adj_fnum &= 15;
|
|
401
|
+
uint32_t skipmap = se.skipmap;
|
|
402
|
+
uint16_t skipbit = 1 << adj_fnum;
|
|
403
|
+
if (ABSL_PREDICT_FALSE(skipmap & skipbit)) return nullptr;
|
|
404
|
+
skipmap &= skipbit - 1;
|
|
405
|
+
adj_fnum += se.field_entry_offset;
|
|
406
|
+
adj_fnum -= absl::popcount(skipmap);
|
|
407
|
+
auto* entry = field_entries + adj_fnum;
|
|
408
|
+
PROTOBUF_ASSUME(entry != nullptr);
|
|
409
|
+
return entry;
|
|
410
|
+
}
|
|
411
|
+
lookup_table +=
|
|
412
|
+
num_skip_entries * (sizeof(SkipEntry16) / sizeof(*lookup_table));
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// Field names are stored in a format of:
|
|
417
|
+
//
|
|
418
|
+
// 1) A table of name sizes, one byte each, from 1 to 255 per name.
|
|
419
|
+
// `entries` is the size of this first table.
|
|
420
|
+
// 1a) padding bytes, so the table of name sizes is a multiple of
|
|
421
|
+
// eight bytes in length. They are zero.
|
|
422
|
+
//
|
|
423
|
+
// 2) All the names, concatenated, with neither separation nor termination.
|
|
424
|
+
//
|
|
425
|
+
// This is designed to be compact but not particularly fast to retrieve.
|
|
426
|
+
// In particular, it takes O(n) to retrieve the name of the n'th field,
|
|
427
|
+
// which is usually fine because most protos have fewer than 10 fields.
|
|
428
|
+
static absl::string_view FindName(const char* name_data, size_t entries,
|
|
429
|
+
size_t index) {
|
|
430
|
+
// The compiler unrolls these... if this isn't fast enough,
|
|
431
|
+
// there's an AVX version at https://godbolt.org/z/eojrjqzfr
|
|
432
|
+
// ARM-compatible version at https://godbolt.org/z/n5YT5Ee85
|
|
433
|
+
|
|
434
|
+
// The field name sizes are padded up to a multiple of 8, so we
|
|
435
|
+
// must pad them here.
|
|
436
|
+
size_t num_sizes = (entries + 7) & -8;
|
|
437
|
+
auto* uint8s = reinterpret_cast<const uint8_t*>(name_data);
|
|
438
|
+
size_t pos = std::accumulate(uint8s, uint8s + index, num_sizes);
|
|
439
|
+
size_t size = name_data[index];
|
|
440
|
+
auto* start = &name_data[pos];
|
|
441
|
+
return {start, size};
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
absl::string_view TcParser::MessageName(const TcParseTableBase* table) {
|
|
445
|
+
return FindName(table->name_data(), table->num_field_entries + 1, 0);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
absl::string_view TcParser::FieldName(const TcParseTableBase* table,
|
|
449
|
+
const FieldEntry* field_entry) {
|
|
450
|
+
const FieldEntry* const field_entries = table->field_entries_begin();
|
|
451
|
+
auto field_index = static_cast<size_t>(field_entry - field_entries);
|
|
452
|
+
return FindName(table->name_data(), table->num_field_entries + 1,
|
|
453
|
+
field_index + 1);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
int TcParser::FieldNumber(const TcParseTableBase* table,
|
|
457
|
+
const TcParseTableBase::FieldEntry* entry) {
|
|
458
|
+
// The data structure was not designed to be queried in this direction, so
|
|
459
|
+
// we have to do a linear search over the entries to see which one matches
|
|
460
|
+
// while keeping track of the field number.
|
|
461
|
+
// But it is fine because we are only using this for debug check messages.
|
|
462
|
+
size_t need_to_skip = entry - table->field_entries_begin();
|
|
463
|
+
const auto visit_bitmap = [&](uint32_t field_bitmap,
|
|
464
|
+
int base_field_number) -> absl::optional<int> {
|
|
465
|
+
for (; field_bitmap != 0; field_bitmap &= field_bitmap - 1) {
|
|
466
|
+
if (need_to_skip == 0) {
|
|
467
|
+
return absl::countr_zero(field_bitmap) + base_field_number;
|
|
468
|
+
}
|
|
469
|
+
--need_to_skip;
|
|
470
|
+
}
|
|
471
|
+
return absl::nullopt;
|
|
472
|
+
};
|
|
473
|
+
if (auto number = visit_bitmap(~table->skipmap32, 1)) {
|
|
474
|
+
return *number;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
for (const uint16_t* lookup_table = table->field_lookup_begin();
|
|
478
|
+
lookup_table[0] != 0xFFFF || lookup_table[1] != 0xFFFF;) {
|
|
479
|
+
uint32_t fstart = lookup_table[0] | (lookup_table[1] << 16);
|
|
480
|
+
lookup_table += 2;
|
|
481
|
+
const uint16_t num_skip_entries = *lookup_table++;
|
|
482
|
+
for (uint16_t i = 0; i < num_skip_entries; ++i) {
|
|
483
|
+
// for each group of 16 fields we have: a
|
|
484
|
+
// bitmap of 16 bits a 16-bit field-entry
|
|
485
|
+
// offset for the first of them.
|
|
486
|
+
if (auto number = visit_bitmap(static_cast<uint16_t>(~*lookup_table),
|
|
487
|
+
fstart + 16 * i)) {
|
|
488
|
+
return *number;
|
|
489
|
+
}
|
|
490
|
+
lookup_table += 2;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
Unreachable();
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
PROTOBUF_NOINLINE const char* TcParser::Error(PROTOBUF_TC_PARAM_NO_DATA_DECL) {
|
|
497
|
+
(void)ctx;
|
|
498
|
+
(void)ptr;
|
|
499
|
+
SyncHasbits(msg, hasbits, table);
|
|
500
|
+
return nullptr;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
template <bool export_called_function>
|
|
504
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::MiniParse(PROTOBUF_TC_PARAM_DECL) {
|
|
505
|
+
TestMiniParseResult* test_out;
|
|
506
|
+
if (export_called_function) {
|
|
507
|
+
test_out = reinterpret_cast<TestMiniParseResult*>(
|
|
508
|
+
static_cast<uintptr_t>(data.data));
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
uint32_t tag;
|
|
512
|
+
ptr = ReadTagInlined(ptr, &tag);
|
|
513
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
514
|
+
if (export_called_function) *test_out = {Error};
|
|
515
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
auto* entry = FindFieldEntry(table, tag >> 3);
|
|
519
|
+
if (entry == nullptr) {
|
|
520
|
+
if (export_called_function) *test_out = {table->fallback, tag};
|
|
521
|
+
data.data = tag;
|
|
522
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// The handler may need the tag and the entry to resolve fallback logic. Both
|
|
526
|
+
// of these are 32 bits, so pack them into (the 64-bit) `data`. Since we can't
|
|
527
|
+
// pack the entry pointer itself, just pack its offset from `table`.
|
|
528
|
+
uint64_t entry_offset = reinterpret_cast<const char*>(entry) -
|
|
529
|
+
reinterpret_cast<const char*>(table);
|
|
530
|
+
data.data = entry_offset << 32 | tag;
|
|
531
|
+
|
|
532
|
+
using field_layout::FieldKind;
|
|
533
|
+
auto field_type =
|
|
534
|
+
entry->type_card & (+field_layout::kSplitMask | FieldKind::kFkMask);
|
|
535
|
+
|
|
536
|
+
static constexpr TailCallParseFunc kMiniParseTable[] = {
|
|
537
|
+
&MpFallback, // FieldKind::kFkNone
|
|
538
|
+
&MpVarint<false>, // FieldKind::kFkVarint
|
|
539
|
+
&MpPackedVarint<false>, // FieldKind::kFkPackedVarint
|
|
540
|
+
&MpFixed<false>, // FieldKind::kFkFixed
|
|
541
|
+
&MpPackedFixed<false>, // FieldKind::kFkPackedFixed
|
|
542
|
+
&MpString<false>, // FieldKind::kFkString
|
|
543
|
+
&MpMessage<false>, // FieldKind::kFkMessage
|
|
544
|
+
&MpMap<false>, // FieldKind::kFkMap
|
|
545
|
+
&Error, // kSplitMask | FieldKind::kFkNone
|
|
546
|
+
&MpVarint<true>, // kSplitMask | FieldKind::kFkVarint
|
|
547
|
+
&MpPackedVarint<true>, // kSplitMask | FieldKind::kFkPackedVarint
|
|
548
|
+
&MpFixed<true>, // kSplitMask | FieldKind::kFkFixed
|
|
549
|
+
&MpPackedFixed<true>, // kSplitMask | FieldKind::kFkPackedFixed
|
|
550
|
+
&MpString<true>, // kSplitMask | FieldKind::kFkString
|
|
551
|
+
&MpMessage<true>, // kSplitMask | FieldKind::kFkMessage
|
|
552
|
+
&MpMap<true>, // kSplitMask | FieldKind::kFkMap
|
|
553
|
+
};
|
|
554
|
+
// Just to be sure we got the order right, above.
|
|
555
|
+
static_assert(0 == FieldKind::kFkNone, "Invalid table order");
|
|
556
|
+
static_assert(1 == FieldKind::kFkVarint, "Invalid table order");
|
|
557
|
+
static_assert(2 == FieldKind::kFkPackedVarint, "Invalid table order");
|
|
558
|
+
static_assert(3 == FieldKind::kFkFixed, "Invalid table order");
|
|
559
|
+
static_assert(4 == FieldKind::kFkPackedFixed, "Invalid table order");
|
|
560
|
+
static_assert(5 == FieldKind::kFkString, "Invalid table order");
|
|
561
|
+
static_assert(6 == FieldKind::kFkMessage, "Invalid table order");
|
|
562
|
+
static_assert(7 == FieldKind::kFkMap, "Invalid table order");
|
|
563
|
+
|
|
564
|
+
static_assert(8 == (+field_layout::kSplitMask | FieldKind::kFkNone),
|
|
565
|
+
"Invalid table order");
|
|
566
|
+
static_assert(9 == (+field_layout::kSplitMask | FieldKind::kFkVarint),
|
|
567
|
+
"Invalid table order");
|
|
568
|
+
static_assert(10 == (+field_layout::kSplitMask | FieldKind::kFkPackedVarint),
|
|
569
|
+
"Invalid table order");
|
|
570
|
+
static_assert(11 == (+field_layout::kSplitMask | FieldKind::kFkFixed),
|
|
571
|
+
"Invalid table order");
|
|
572
|
+
static_assert(12 == (+field_layout::kSplitMask | FieldKind::kFkPackedFixed),
|
|
573
|
+
"Invalid table order");
|
|
574
|
+
static_assert(13 == (+field_layout::kSplitMask | FieldKind::kFkString),
|
|
575
|
+
"Invalid table order");
|
|
576
|
+
static_assert(14 == (+field_layout::kSplitMask | FieldKind::kFkMessage),
|
|
577
|
+
"Invalid table order");
|
|
578
|
+
static_assert(15 == (+field_layout::kSplitMask | FieldKind::kFkMap),
|
|
579
|
+
"Invalid table order");
|
|
580
|
+
|
|
581
|
+
TailCallParseFunc parse_fn = kMiniParseTable[field_type];
|
|
582
|
+
if (export_called_function) *test_out = {parse_fn, tag, entry};
|
|
583
|
+
|
|
584
|
+
PROTOBUF_MUSTTAIL return parse_fn(PROTOBUF_TC_PARAM_PASS);
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
PROTOBUF_NOINLINE const char* TcParser::MiniParse(
|
|
588
|
+
PROTOBUF_TC_PARAM_NO_DATA_DECL) {
|
|
589
|
+
PROTOBUF_MUSTTAIL return MiniParse<false>(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
590
|
+
}
|
|
591
|
+
PROTOBUF_NOINLINE TcParser::TestMiniParseResult TcParser::TestMiniParse(
|
|
592
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
593
|
+
TestMiniParseResult result = {};
|
|
594
|
+
data.data = reinterpret_cast<uintptr_t>(&result);
|
|
595
|
+
result.ptr = MiniParse<true>(PROTOBUF_TC_PARAM_PASS);
|
|
596
|
+
return result;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
PROTOBUF_NOINLINE const char* TcParser::MpFallback(PROTOBUF_TC_PARAM_DECL) {
|
|
600
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
template <typename TagType>
|
|
604
|
+
const char* TcParser::FastEndGroupImpl(PROTOBUF_TC_PARAM_DECL) {
|
|
605
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
606
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
607
|
+
}
|
|
608
|
+
ctx->SetLastTag(data.decoded_tag());
|
|
609
|
+
ptr += sizeof(TagType);
|
|
610
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEndG1(PROTOBUF_TC_PARAM_DECL) {
|
|
614
|
+
PROTOBUF_MUSTTAIL return FastEndGroupImpl<uint8_t>(PROTOBUF_TC_PARAM_PASS);
|
|
615
|
+
}
|
|
616
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEndG2(PROTOBUF_TC_PARAM_DECL) {
|
|
617
|
+
PROTOBUF_MUSTTAIL return FastEndGroupImpl<uint16_t>(PROTOBUF_TC_PARAM_PASS);
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
621
|
+
// Message fields
|
|
622
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
623
|
+
|
|
624
|
+
PROTOBUF_ALWAYS_INLINE MessageLite* TcParser::NewMessage(
|
|
625
|
+
const ClassData* class_data, Arena* arena) {
|
|
626
|
+
return class_data->New(arena);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
MessageLite* TcParser::AddMessage(const ClassData* class_data,
|
|
630
|
+
RepeatedPtrFieldBase& field, Arena* arena) {
|
|
631
|
+
return field.AddFromClassData<GenericTypeHandler<MessageLite>>(arena,
|
|
632
|
+
class_data);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
template <bool kIsTable>
|
|
636
|
+
inline TcParser::TableAndClassData TcParser::GetTableAndClassDataFromAux(
|
|
637
|
+
TcParseTableBase::FieldAux aux) {
|
|
638
|
+
if constexpr (kIsTable) {
|
|
639
|
+
#ifndef PROTOBUF_MESSAGE_GLOBALS
|
|
640
|
+
const TcParseTableBase* inner_table = aux.table_ptr();
|
|
641
|
+
return {inner_table, inner_table->class_data};
|
|
642
|
+
#else
|
|
643
|
+
const auto* globals = aux.message_globals();
|
|
644
|
+
return {MessageGlobalsBase::ToParseTableBase(globals),
|
|
645
|
+
MessageGlobalsBase::GetClassData(globals)};
|
|
646
|
+
#endif
|
|
647
|
+
} else {
|
|
648
|
+
const MessageLite* prototype = aux.message_default();
|
|
649
|
+
const TcParseTableBase* inner_table = prototype->GetTcParseTable();
|
|
650
|
+
return {inner_table, inner_table->class_data};
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
inline TcParser::TableAndClassData TcParser::GetTableAndClassDataFromAux(
|
|
655
|
+
uint16_t type_card, TcParseTableBase::FieldAux aux) {
|
|
656
|
+
uint16_t tv = type_card & field_layout::kTvMask;
|
|
657
|
+
if (ABSL_PREDICT_TRUE(tv == field_layout::kTvTable)) {
|
|
658
|
+
return GetTableAndClassDataFromAux</*kIsTable=*/true>(aux);
|
|
659
|
+
} else {
|
|
660
|
+
ABSL_DCHECK(tv == field_layout::kTvDefault ||
|
|
661
|
+
tv == field_layout::kTvWeakPtr);
|
|
662
|
+
const MessageLite* prototype = tv == field_layout::kTvDefault
|
|
663
|
+
? aux.message_default()
|
|
664
|
+
: aux.message_default_weak();
|
|
665
|
+
const TcParseTableBase* inner_table = prototype->GetTcParseTable();
|
|
666
|
+
return {inner_table, inner_table->class_data};
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
template <typename TagType, bool group_coding, bool aux_is_table>
|
|
671
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::SingularParseMessageAuxImpl(
|
|
672
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
673
|
+
PROTOBUF_PREFETCH_WITH_OFFSET(ptr, 192);
|
|
674
|
+
PROTOBUF_PREFETCH_WITH_OFFSET(ptr, 256);
|
|
675
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
676
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
677
|
+
}
|
|
678
|
+
auto saved_tag = UnalignedLoad<TagType>(ptr);
|
|
679
|
+
ptr += sizeof(TagType);
|
|
680
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
681
|
+
SyncHasbits(msg, hasbits, table);
|
|
682
|
+
auto& field = RefAt<MessageLite*>(msg, data.offset());
|
|
683
|
+
const auto aux = *table->field_aux(data.aux_idx());
|
|
684
|
+
#ifndef PROTOBUF_MESSAGE_GLOBALS
|
|
685
|
+
const auto* inner_table =
|
|
686
|
+
aux_is_table ? aux.table_ptr() : aux.message_default()->GetTcParseTable();
|
|
687
|
+
if (field == nullptr) {
|
|
688
|
+
field = NewMessage(inner_table->class_data, msg->GetArena());
|
|
689
|
+
}
|
|
690
|
+
#else
|
|
691
|
+
const TcParseTableBase* inner_table;
|
|
692
|
+
if constexpr (aux_is_table) {
|
|
693
|
+
inner_table = MessageGlobalsBase::ToParseTableBase(aux.message_globals());
|
|
694
|
+
if (field == nullptr) {
|
|
695
|
+
field =
|
|
696
|
+
NewMessage(MessageGlobalsBase::GetClassData(aux.message_globals()),
|
|
697
|
+
msg->GetArena());
|
|
698
|
+
}
|
|
699
|
+
} else {
|
|
700
|
+
inner_table = aux.message_default()->GetTcParseTable();
|
|
701
|
+
if (field == nullptr) {
|
|
702
|
+
field = NewMessage(inner_table->class_data, msg->GetArena());
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
#endif // PROTOBUF_MESSAGE_GLOBALS
|
|
706
|
+
const auto inner_loop = [&](const char* ptr) {
|
|
707
|
+
return ParseLoop(field, ptr, ctx, inner_table);
|
|
708
|
+
};
|
|
709
|
+
return group_coding
|
|
710
|
+
? ctx->ParseGroupInlined(ptr, FastDecodeTag(saved_tag), inner_loop)
|
|
711
|
+
: ctx->ParseLengthDelimitedInlined(ptr, inner_loop);
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMdS1(PROTOBUF_TC_PARAM_DECL) {
|
|
715
|
+
PROTOBUF_MUSTTAIL return SingularParseMessageAuxImpl<uint8_t, false, false>(
|
|
716
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMdS2(PROTOBUF_TC_PARAM_DECL) {
|
|
720
|
+
PROTOBUF_MUSTTAIL return SingularParseMessageAuxImpl<uint16_t, false, false>(
|
|
721
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
PROTOBUF_NOINLINE const char* TcParser::FastGdS1(PROTOBUF_TC_PARAM_DECL) {
|
|
725
|
+
PROTOBUF_MUSTTAIL return SingularParseMessageAuxImpl<uint8_t, true, false>(
|
|
726
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
PROTOBUF_NOINLINE const char* TcParser::FastGdS2(PROTOBUF_TC_PARAM_DECL) {
|
|
730
|
+
PROTOBUF_MUSTTAIL return SingularParseMessageAuxImpl<uint16_t, true, false>(
|
|
731
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMtS1(PROTOBUF_TC_PARAM_DECL) {
|
|
735
|
+
PROTOBUF_MUSTTAIL return SingularParseMessageAuxImpl<uint8_t, false, true>(
|
|
736
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMtS2(PROTOBUF_TC_PARAM_DECL) {
|
|
740
|
+
PROTOBUF_MUSTTAIL return SingularParseMessageAuxImpl<uint16_t, false, true>(
|
|
741
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
PROTOBUF_NOINLINE const char* TcParser::FastGtS1(PROTOBUF_TC_PARAM_DECL) {
|
|
745
|
+
PROTOBUF_MUSTTAIL return SingularParseMessageAuxImpl<uint8_t, true, true>(
|
|
746
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
PROTOBUF_NOINLINE const char* TcParser::FastGtS2(PROTOBUF_TC_PARAM_DECL) {
|
|
750
|
+
PROTOBUF_MUSTTAIL return SingularParseMessageAuxImpl<uint16_t, true, true>(
|
|
751
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
template <typename TagType>
|
|
755
|
+
const char* TcParser::LazyMessage(PROTOBUF_TC_PARAM_DECL) {
|
|
756
|
+
ABSL_LOG(FATAL) << "Unimplemented";
|
|
757
|
+
return nullptr;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMlS1(PROTOBUF_TC_PARAM_DECL) {
|
|
761
|
+
PROTOBUF_MUSTTAIL return LazyMessage<uint8_t>(PROTOBUF_TC_PARAM_PASS);
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMlS2(PROTOBUF_TC_PARAM_DECL) {
|
|
765
|
+
PROTOBUF_MUSTTAIL return LazyMessage<uint16_t>(PROTOBUF_TC_PARAM_PASS);
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
template <typename TagType, bool group_coding, bool aux_is_table>
|
|
769
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::RepeatedParseMessageAuxImpl(
|
|
770
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
771
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
772
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
773
|
+
}
|
|
774
|
+
PROTOBUF_PREFETCH_WITH_OFFSET(ptr, 256);
|
|
775
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
776
|
+
Arena* arena = msg->GetArena();
|
|
777
|
+
const auto expected_tag = UnalignedLoad<TagType>(ptr);
|
|
778
|
+
const auto aux = *table->field_aux(data.aux_idx());
|
|
779
|
+
auto& field = RefAt<RepeatedPtrFieldBase>(msg, data.offset());
|
|
780
|
+
ABSL_DCHECK_EQ(field.GetArena(), arena);
|
|
781
|
+
// Captured structured bindings are a C++20 feature.
|
|
782
|
+
auto [inner_table_alias, class_data] =
|
|
783
|
+
GetTableAndClassDataFromAux<aux_is_table>(aux);
|
|
784
|
+
const TcParseTableBase* inner_table = inner_table_alias;
|
|
785
|
+
do {
|
|
786
|
+
ptr += sizeof(TagType);
|
|
787
|
+
MessageLite* submsg = AddMessage(class_data, field, arena);
|
|
788
|
+
const auto inner_loop = [&](const char* ptr) {
|
|
789
|
+
return ParseLoop(submsg, ptr, ctx, inner_table);
|
|
790
|
+
};
|
|
791
|
+
ptr = group_coding ? ctx->ParseGroupInlined(
|
|
792
|
+
ptr, FastDecodeTag(expected_tag), inner_loop)
|
|
793
|
+
: ctx->ParseLengthDelimitedInlined(ptr, inner_loop);
|
|
794
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
795
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
796
|
+
}
|
|
797
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) {
|
|
798
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
799
|
+
}
|
|
800
|
+
} while (UnalignedLoad<TagType>(ptr) == expected_tag);
|
|
801
|
+
|
|
802
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMdR1(PROTOBUF_TC_PARAM_DECL) {
|
|
806
|
+
PROTOBUF_MUSTTAIL return RepeatedParseMessageAuxImpl<uint8_t, false, false>(
|
|
807
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMdR2(PROTOBUF_TC_PARAM_DECL) {
|
|
811
|
+
PROTOBUF_MUSTTAIL return RepeatedParseMessageAuxImpl<uint16_t, false, false>(
|
|
812
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
PROTOBUF_NOINLINE const char* TcParser::FastGdR1(PROTOBUF_TC_PARAM_DECL) {
|
|
816
|
+
PROTOBUF_MUSTTAIL return RepeatedParseMessageAuxImpl<uint8_t, true, false>(
|
|
817
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
PROTOBUF_NOINLINE const char* TcParser::FastGdR2(PROTOBUF_TC_PARAM_DECL) {
|
|
821
|
+
PROTOBUF_MUSTTAIL return RepeatedParseMessageAuxImpl<uint16_t, true, false>(
|
|
822
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMtR1(PROTOBUF_TC_PARAM_DECL) {
|
|
826
|
+
PROTOBUF_MUSTTAIL return RepeatedParseMessageAuxImpl<uint8_t, false, true>(
|
|
827
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
PROTOBUF_NOINLINE const char* TcParser::FastMtR2(PROTOBUF_TC_PARAM_DECL) {
|
|
831
|
+
PROTOBUF_MUSTTAIL return RepeatedParseMessageAuxImpl<uint16_t, false, true>(
|
|
832
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
PROTOBUF_NOINLINE const char* TcParser::FastGtR1(PROTOBUF_TC_PARAM_DECL) {
|
|
836
|
+
PROTOBUF_MUSTTAIL return RepeatedParseMessageAuxImpl<uint8_t, true, true>(
|
|
837
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
PROTOBUF_NOINLINE const char* TcParser::FastGtR2(PROTOBUF_TC_PARAM_DECL) {
|
|
841
|
+
PROTOBUF_MUSTTAIL return RepeatedParseMessageAuxImpl<uint16_t, true, true>(
|
|
842
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
846
|
+
// Fixed fields
|
|
847
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
848
|
+
|
|
849
|
+
template <typename LayoutType, typename TagType>
|
|
850
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::SingularFixed(
|
|
851
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
852
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
853
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
854
|
+
}
|
|
855
|
+
ptr += sizeof(TagType); // Consume tag
|
|
856
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
857
|
+
RefAt<LayoutType>(msg, data.offset()) = UnalignedLoad<LayoutType>(ptr);
|
|
858
|
+
ptr += sizeof(LayoutType);
|
|
859
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF32S1(PROTOBUF_TC_PARAM_DECL) {
|
|
863
|
+
PROTOBUF_MUSTTAIL return SingularFixed<uint32_t, uint8_t>(
|
|
864
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
865
|
+
}
|
|
866
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF32S2(PROTOBUF_TC_PARAM_DECL) {
|
|
867
|
+
PROTOBUF_MUSTTAIL return SingularFixed<uint32_t, uint16_t>(
|
|
868
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
869
|
+
}
|
|
870
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF64S1(PROTOBUF_TC_PARAM_DECL) {
|
|
871
|
+
PROTOBUF_MUSTTAIL return SingularFixed<uint64_t, uint8_t>(
|
|
872
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
873
|
+
}
|
|
874
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF64S2(PROTOBUF_TC_PARAM_DECL) {
|
|
875
|
+
PROTOBUF_MUSTTAIL return SingularFixed<uint64_t, uint16_t>(
|
|
876
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
template <typename LayoutType, typename TagType>
|
|
880
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::RepeatedFixed(
|
|
881
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
882
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
883
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
884
|
+
}
|
|
885
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
886
|
+
auto& field = RefAt<RepeatedField<LayoutType>>(msg, data.offset());
|
|
887
|
+
Arena* arena = msg->GetArena();
|
|
888
|
+
const auto tag = UnalignedLoad<TagType>(ptr);
|
|
889
|
+
do {
|
|
890
|
+
field.AddWithArena(arena, UnalignedLoad<LayoutType>(ptr + sizeof(TagType)));
|
|
891
|
+
ptr += sizeof(TagType) + sizeof(LayoutType);
|
|
892
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) {
|
|
893
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
894
|
+
}
|
|
895
|
+
} while (UnalignedLoad<TagType>(ptr) == tag);
|
|
896
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF32R1(PROTOBUF_TC_PARAM_DECL) {
|
|
900
|
+
PROTOBUF_MUSTTAIL return RepeatedFixed<uint32_t, uint8_t>(
|
|
901
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
902
|
+
}
|
|
903
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF32R2(PROTOBUF_TC_PARAM_DECL) {
|
|
904
|
+
PROTOBUF_MUSTTAIL return RepeatedFixed<uint32_t, uint16_t>(
|
|
905
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
906
|
+
}
|
|
907
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF64R1(PROTOBUF_TC_PARAM_DECL) {
|
|
908
|
+
PROTOBUF_MUSTTAIL return RepeatedFixed<uint64_t, uint8_t>(
|
|
909
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
910
|
+
}
|
|
911
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF64R2(PROTOBUF_TC_PARAM_DECL) {
|
|
912
|
+
PROTOBUF_MUSTTAIL return RepeatedFixed<uint64_t, uint16_t>(
|
|
913
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
template <typename LayoutType, typename TagType>
|
|
917
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::PackedFixed(
|
|
918
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
919
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
920
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
921
|
+
}
|
|
922
|
+
ptr += sizeof(TagType);
|
|
923
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
924
|
+
// Since ctx->ReadPackedFixed does not use TailCall<> or Return<>, sync any
|
|
925
|
+
// pending hasbits now:
|
|
926
|
+
SyncHasbits(msg, hasbits, table);
|
|
927
|
+
auto& field = RefAt<RepeatedField<LayoutType>>(msg, data.offset());
|
|
928
|
+
int size = ReadSize(&ptr);
|
|
929
|
+
// TODO: add a tailcalling variant of ReadPackedFixed.
|
|
930
|
+
return ctx->ReadPackedFixed(ptr, msg->GetArena(), size,
|
|
931
|
+
static_cast<RepeatedField<LayoutType>*>(&field));
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF32P1(PROTOBUF_TC_PARAM_DECL) {
|
|
935
|
+
PROTOBUF_MUSTTAIL return PackedFixed<uint32_t, uint8_t>(
|
|
936
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
937
|
+
}
|
|
938
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF32P2(PROTOBUF_TC_PARAM_DECL) {
|
|
939
|
+
PROTOBUF_MUSTTAIL return PackedFixed<uint32_t, uint16_t>(
|
|
940
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
941
|
+
}
|
|
942
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF64P1(PROTOBUF_TC_PARAM_DECL) {
|
|
943
|
+
PROTOBUF_MUSTTAIL return PackedFixed<uint64_t, uint8_t>(
|
|
944
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
945
|
+
}
|
|
946
|
+
PROTOBUF_NOINLINE const char* TcParser::FastF64P2(PROTOBUF_TC_PARAM_DECL) {
|
|
947
|
+
PROTOBUF_MUSTTAIL return PackedFixed<uint64_t, uint16_t>(
|
|
948
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
952
|
+
// Varint fields
|
|
953
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
954
|
+
|
|
955
|
+
namespace {
|
|
956
|
+
|
|
957
|
+
template <typename Type>
|
|
958
|
+
PROTOBUF_ALWAYS_INLINE const char* ParseVarint(const char* p, Type* value) {
|
|
959
|
+
static_assert(sizeof(Type) == 4 || sizeof(Type) == 8,
|
|
960
|
+
"Only [u]int32_t and [u]int64_t please");
|
|
961
|
+
#ifdef __aarch64__
|
|
962
|
+
// The VarintParse parser has a faster implementation on ARM.
|
|
963
|
+
std::conditional_t<sizeof(Type) == 4, uint32_t, uint64_t> tmp;
|
|
964
|
+
p = VarintParse(p, &tmp);
|
|
965
|
+
if (p != nullptr) {
|
|
966
|
+
*value = tmp;
|
|
967
|
+
}
|
|
968
|
+
return p;
|
|
969
|
+
#endif
|
|
970
|
+
int64_t res;
|
|
971
|
+
p = ShiftMixParseVarint<Type>(p, res);
|
|
972
|
+
*value = res;
|
|
973
|
+
return p;
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
// This overload is specifically for handling bool, because bools have very
|
|
977
|
+
// different requirements and performance opportunities than ints.
|
|
978
|
+
PROTOBUF_ALWAYS_INLINE const char* ParseVarint(const char* p, bool* value) {
|
|
979
|
+
unsigned char byte = static_cast<unsigned char>(*p++);
|
|
980
|
+
if (ABSL_PREDICT_TRUE(byte == 0 || byte == 1)) {
|
|
981
|
+
// This is the code path almost always taken,
|
|
982
|
+
// so we take care to make it very efficient.
|
|
983
|
+
if (sizeof(byte) == sizeof(*value)) {
|
|
984
|
+
memcpy(value, &byte, 1);
|
|
985
|
+
} else {
|
|
986
|
+
// The C++ standard does not specify that a `bool` takes only one byte
|
|
987
|
+
*value = byte;
|
|
988
|
+
}
|
|
989
|
+
return p;
|
|
990
|
+
}
|
|
991
|
+
// This part, we just care about code size.
|
|
992
|
+
// Although it's almost never used, we have to support it because we guarantee
|
|
993
|
+
// compatibility for users who change a field from an int32 or int64 to a bool
|
|
994
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
995
|
+
byte = (byte - 0x80) | *p++;
|
|
996
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
997
|
+
byte = (byte - 0x80) | *p++;
|
|
998
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
999
|
+
byte = (byte - 0x80) | *p++;
|
|
1000
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
1001
|
+
byte = (byte - 0x80) | *p++;
|
|
1002
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
1003
|
+
byte = (byte - 0x80) | *p++;
|
|
1004
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
1005
|
+
byte = (byte - 0x80) | *p++;
|
|
1006
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
1007
|
+
byte = (byte - 0x80) | *p++;
|
|
1008
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
1009
|
+
byte = (byte - 0x80) | *p++;
|
|
1010
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
1011
|
+
// We only care about the continuation bit and the first bit
|
|
1012
|
+
// of the 10th byte.
|
|
1013
|
+
byte = (byte - 0x80) | (*p++ & 0x81);
|
|
1014
|
+
if (ABSL_PREDICT_FALSE(byte & 0x80)) {
|
|
1015
|
+
return nullptr;
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
*value = byte;
|
|
1027
|
+
return p;
|
|
1028
|
+
}
|
|
1029
|
+
|
|
1030
|
+
template <typename FieldType, bool zigzag = false>
|
|
1031
|
+
inline FieldType ZigZagDecodeHelper(FieldType value) {
|
|
1032
|
+
return static_cast<FieldType>(value);
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
template <>
|
|
1036
|
+
inline int32_t ZigZagDecodeHelper<int32_t, true>(int32_t value) {
|
|
1037
|
+
return WireFormatLite::ZigZagDecode32(value);
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
template <>
|
|
1041
|
+
inline int64_t ZigZagDecodeHelper<int64_t, true>(int64_t value) {
|
|
1042
|
+
return WireFormatLite::ZigZagDecode64(value);
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
// Prefetch the enum data, if necessary.
|
|
1046
|
+
// We can issue the prefetch before we start parsing the ints.
|
|
1047
|
+
PROTOBUF_ALWAYS_INLINE void PrefetchEnumData(uint16_t xform_val,
|
|
1048
|
+
TcParseTableBase::FieldAux aux) {
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
// When `xform_val` is a constant, we want to inline `ValidateEnum` because it
|
|
1052
|
+
// is either dropped when not a kTvEnum, or useful when it is.
|
|
1053
|
+
//
|
|
1054
|
+
// When it is not a constant, we do not inline `ValidateEnum` because it bloats
|
|
1055
|
+
// the code around it and pessimizes the non-enum and kTvRange cases which are
|
|
1056
|
+
// way more common than the kTvEnum cases. It is also called from places that
|
|
1057
|
+
// already have out-of-line functions (like MpVarint) so an extra out-of-line
|
|
1058
|
+
// call to `ValidateEnum` does not affect much.
|
|
1059
|
+
PROTOBUF_ALWAYS_INLINE bool EnumIsValidAux(int32_t val, uint16_t xform_val,
|
|
1060
|
+
TcParseTableBase::FieldAux aux) {
|
|
1061
|
+
if (xform_val == field_layout::kTvRange) {
|
|
1062
|
+
return aux.enum_range.first <= val && val <= aux.enum_range.last;
|
|
1063
|
+
}
|
|
1064
|
+
if (PROTOBUF_BUILTIN_CONSTANT_P(xform_val)) {
|
|
1065
|
+
return internal::ValidateEnumInlined(val, aux.enum_data);
|
|
1066
|
+
} else {
|
|
1067
|
+
return internal::ValidateEnum(val, aux.enum_data);
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
} // namespace
|
|
1072
|
+
|
|
1073
|
+
template <typename FieldType, typename TagType, bool zigzag>
|
|
1074
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::SingularVarint(
|
|
1075
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1076
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1077
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1078
|
+
}
|
|
1079
|
+
ptr += sizeof(TagType); // Consume tag
|
|
1080
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1081
|
+
|
|
1082
|
+
// clang isn't smart enough to be able to only conditionally save
|
|
1083
|
+
// registers to the stack, so we turn the integer-greater-than-128
|
|
1084
|
+
// case into a separate routine.
|
|
1085
|
+
if (ABSL_PREDICT_FALSE(static_cast<int8_t>(*ptr) < 0)) {
|
|
1086
|
+
PROTOBUF_MUSTTAIL return SingularVarBigint<FieldType, TagType, zigzag>(
|
|
1087
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
RefAt<FieldType>(msg, data.offset()) =
|
|
1091
|
+
ZigZagDecodeHelper<FieldType, zigzag>(static_cast<uint8_t>(*ptr++));
|
|
1092
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
template <typename FieldType, typename TagType, bool zigzag>
|
|
1096
|
+
PROTOBUF_NOINLINE const char* TcParser::SingularVarBigint(
|
|
1097
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1098
|
+
uint64_t tmp;
|
|
1099
|
+
PROTOBUF_ASSUME(static_cast<int8_t>(*ptr) < 0);
|
|
1100
|
+
ptr = ParseVarint(ptr, &tmp);
|
|
1101
|
+
|
|
1102
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
1103
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1104
|
+
}
|
|
1105
|
+
RefAt<FieldType>(msg, data.offset()) =
|
|
1106
|
+
ZigZagDecodeHelper<FieldType, zigzag>(tmp);
|
|
1107
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
template <typename FieldType>
|
|
1111
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::FastVarintS1(
|
|
1112
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1113
|
+
using TagType = uint8_t;
|
|
1114
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1115
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1116
|
+
}
|
|
1117
|
+
int64_t res;
|
|
1118
|
+
ptr = ShiftMixParseVarint<FieldType>(ptr + sizeof(TagType), res);
|
|
1119
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
1120
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1121
|
+
}
|
|
1122
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1123
|
+
RefAt<FieldType>(msg, data.offset()) = res;
|
|
1124
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV8S1(PROTOBUF_TC_PARAM_DECL) {
|
|
1128
|
+
using TagType = uint8_t;
|
|
1129
|
+
|
|
1130
|
+
// Special case for a varint bool field with a tag of 1 byte:
|
|
1131
|
+
// The coded_tag() field will actually contain the value too and we can check
|
|
1132
|
+
// both at the same time.
|
|
1133
|
+
auto coded_tag = data.coded_tag<uint16_t>();
|
|
1134
|
+
if (ABSL_PREDICT_TRUE(coded_tag == 0x0000 || coded_tag == 0x0100)) {
|
|
1135
|
+
auto& field = RefAt<bool>(msg, data.offset());
|
|
1136
|
+
// Note: we use `data.data` because Clang generates suboptimal code when
|
|
1137
|
+
// using coded_tag.
|
|
1138
|
+
// In x86_64 this uses the CH register to read the second byte out of
|
|
1139
|
+
// `data`.
|
|
1140
|
+
uint8_t value = data.data >> 8;
|
|
1141
|
+
// The assume allows using a mov instead of test+setne.
|
|
1142
|
+
PROTOBUF_ASSUME(value <= 1);
|
|
1143
|
+
field = static_cast<bool>(value);
|
|
1144
|
+
|
|
1145
|
+
ptr += sizeof(TagType) + 1; // Consume the tag and the value.
|
|
1146
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1147
|
+
|
|
1148
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
// If it didn't match above either the tag is wrong, or the value is encoded
|
|
1152
|
+
// non-canonically.
|
|
1153
|
+
// Jump to MiniParse as wrong tag is the most probable reason.
|
|
1154
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV8S2(PROTOBUF_TC_PARAM_DECL) {
|
|
1158
|
+
PROTOBUF_MUSTTAIL return SingularVarint<bool, uint16_t>(
|
|
1159
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1160
|
+
}
|
|
1161
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV32S1(PROTOBUF_TC_PARAM_DECL) {
|
|
1162
|
+
PROTOBUF_MUSTTAIL return FastVarintS1<uint32_t>(PROTOBUF_TC_PARAM_PASS);
|
|
1163
|
+
}
|
|
1164
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV32S2(PROTOBUF_TC_PARAM_DECL) {
|
|
1165
|
+
PROTOBUF_MUSTTAIL return SingularVarint<uint32_t, uint16_t>(
|
|
1166
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1167
|
+
}
|
|
1168
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV64S1(PROTOBUF_TC_PARAM_DECL) {
|
|
1169
|
+
PROTOBUF_MUSTTAIL return FastVarintS1<uint64_t>(PROTOBUF_TC_PARAM_PASS);
|
|
1170
|
+
}
|
|
1171
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV64S2(PROTOBUF_TC_PARAM_DECL) {
|
|
1172
|
+
PROTOBUF_MUSTTAIL return SingularVarint<uint64_t, uint16_t>(
|
|
1173
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ32S1(PROTOBUF_TC_PARAM_DECL) {
|
|
1177
|
+
PROTOBUF_MUSTTAIL return SingularVarint<int32_t, uint8_t, true>(
|
|
1178
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1179
|
+
}
|
|
1180
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ32S2(PROTOBUF_TC_PARAM_DECL) {
|
|
1181
|
+
PROTOBUF_MUSTTAIL return SingularVarint<int32_t, uint16_t, true>(
|
|
1182
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1183
|
+
}
|
|
1184
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ64S1(PROTOBUF_TC_PARAM_DECL) {
|
|
1185
|
+
PROTOBUF_MUSTTAIL return SingularVarint<int64_t, uint8_t, true>(
|
|
1186
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1187
|
+
}
|
|
1188
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ64S2(PROTOBUF_TC_PARAM_DECL) {
|
|
1189
|
+
PROTOBUF_MUSTTAIL return SingularVarint<int64_t, uint16_t, true>(
|
|
1190
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
template <typename FieldType, typename TagType, bool zigzag>
|
|
1194
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::RepeatedVarint(
|
|
1195
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1196
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1197
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1198
|
+
}
|
|
1199
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1200
|
+
auto& field = RefAt<RepeatedField<FieldType>>(msg, data.offset());
|
|
1201
|
+
const auto expected_tag = UnalignedLoad<TagType>(ptr);
|
|
1202
|
+
// Count the number of varint (same as number of bytes with 0 in top bit)
|
|
1203
|
+
// and preallocte space in repeated field.
|
|
1204
|
+
int len = 0;
|
|
1205
|
+
auto ptr2 = ptr;
|
|
1206
|
+
do {
|
|
1207
|
+
ptr2 += sizeof(TagType);
|
|
1208
|
+
// Defend against overflowing available data due to malformed input of
|
|
1209
|
+
// infinite number of bytes with top bit set. Longest legal varint is 10
|
|
1210
|
+
// bytes, which is also < 16 bytes of slop.
|
|
1211
|
+
int limit = 10;
|
|
1212
|
+
while ((*ptr2 & 0x80) && limit--) ptr2++;
|
|
1213
|
+
len++;
|
|
1214
|
+
ptr2++;
|
|
1215
|
+
} while (ctx->DataAvailable(ptr2) &&
|
|
1216
|
+
UnalignedLoad<TagType>(ptr2) == expected_tag);
|
|
1217
|
+
int added = 0;
|
|
1218
|
+
field.Reserve(field.size() + len);
|
|
1219
|
+
// Allows us to skip SOO checks.
|
|
1220
|
+
FieldType* x = field.AddNAlreadyReserved(len);
|
|
1221
|
+
do {
|
|
1222
|
+
ABSL_DCHECK(ctx->DataAvailable(ptr));
|
|
1223
|
+
ABSL_DCHECK_EQ(UnalignedLoad<TagType>(ptr), expected_tag);
|
|
1224
|
+
ptr += sizeof(TagType);
|
|
1225
|
+
FieldType tmp;
|
|
1226
|
+
ptr = ParseVarint(ptr, &tmp);
|
|
1227
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
1228
|
+
field.Truncate(x - field.data());
|
|
1229
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1230
|
+
}
|
|
1231
|
+
added++;
|
|
1232
|
+
*x = ZigZagDecodeHelper<FieldType, zigzag>(tmp);
|
|
1233
|
+
x++;
|
|
1234
|
+
} while (added < len);
|
|
1235
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV8R1(PROTOBUF_TC_PARAM_DECL) {
|
|
1239
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<bool, uint8_t>(
|
|
1240
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1241
|
+
}
|
|
1242
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV8R2(PROTOBUF_TC_PARAM_DECL) {
|
|
1243
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<bool, uint16_t>(
|
|
1244
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1245
|
+
}
|
|
1246
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV32R1(PROTOBUF_TC_PARAM_DECL) {
|
|
1247
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<uint32_t, uint8_t>(
|
|
1248
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1249
|
+
}
|
|
1250
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV32R2(PROTOBUF_TC_PARAM_DECL) {
|
|
1251
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<uint32_t, uint16_t>(
|
|
1252
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1253
|
+
}
|
|
1254
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV64R1(PROTOBUF_TC_PARAM_DECL) {
|
|
1255
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<uint64_t, uint8_t>(
|
|
1256
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1257
|
+
}
|
|
1258
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV64R2(PROTOBUF_TC_PARAM_DECL) {
|
|
1259
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<uint64_t, uint16_t>(
|
|
1260
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ32R1(PROTOBUF_TC_PARAM_DECL) {
|
|
1264
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<int32_t, uint8_t, true>(
|
|
1265
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1266
|
+
}
|
|
1267
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ32R2(PROTOBUF_TC_PARAM_DECL) {
|
|
1268
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<int32_t, uint16_t, true>(
|
|
1269
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1270
|
+
}
|
|
1271
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ64R1(PROTOBUF_TC_PARAM_DECL) {
|
|
1272
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<int64_t, uint8_t, true>(
|
|
1273
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1274
|
+
}
|
|
1275
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ64R2(PROTOBUF_TC_PARAM_DECL) {
|
|
1276
|
+
PROTOBUF_MUSTTAIL return RepeatedVarint<int64_t, uint16_t, true>(
|
|
1277
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
template <typename FieldType, typename TagType, bool zigzag>
|
|
1281
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::PackedVarint(
|
|
1282
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1283
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1284
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1285
|
+
}
|
|
1286
|
+
ptr += sizeof(TagType);
|
|
1287
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1288
|
+
// Since ctx->ReadPackedVarint does not use TailCall or Return, sync any
|
|
1289
|
+
// pending hasbits now:
|
|
1290
|
+
SyncHasbits(msg, hasbits, table);
|
|
1291
|
+
auto& field = RefAt<RepeatedField<FieldType>>(msg, data.offset());
|
|
1292
|
+
return ctx->ReadPackedVarintWithField(
|
|
1293
|
+
ptr, msg->GetArena(),
|
|
1294
|
+
[](uint64_t varint) {
|
|
1295
|
+
FieldType val;
|
|
1296
|
+
if (zigzag) {
|
|
1297
|
+
if (sizeof(FieldType) == 8) {
|
|
1298
|
+
val = WireFormatLite::ZigZagDecode64(varint);
|
|
1299
|
+
} else {
|
|
1300
|
+
val = WireFormatLite::ZigZagDecode32(varint);
|
|
1301
|
+
}
|
|
1302
|
+
} else {
|
|
1303
|
+
val = varint;
|
|
1304
|
+
}
|
|
1305
|
+
return val;
|
|
1306
|
+
},
|
|
1307
|
+
field);
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV8P1(PROTOBUF_TC_PARAM_DECL) {
|
|
1311
|
+
PROTOBUF_MUSTTAIL return PackedVarint<bool, uint8_t>(PROTOBUF_TC_PARAM_PASS);
|
|
1312
|
+
}
|
|
1313
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV8P2(PROTOBUF_TC_PARAM_DECL) {
|
|
1314
|
+
PROTOBUF_MUSTTAIL return PackedVarint<bool, uint16_t>(PROTOBUF_TC_PARAM_PASS);
|
|
1315
|
+
}
|
|
1316
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV32P1(PROTOBUF_TC_PARAM_DECL) {
|
|
1317
|
+
PROTOBUF_MUSTTAIL return PackedVarint<uint32_t, uint8_t>(
|
|
1318
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1319
|
+
}
|
|
1320
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV32P2(PROTOBUF_TC_PARAM_DECL) {
|
|
1321
|
+
PROTOBUF_MUSTTAIL return PackedVarint<uint32_t, uint16_t>(
|
|
1322
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1323
|
+
}
|
|
1324
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV64P1(PROTOBUF_TC_PARAM_DECL) {
|
|
1325
|
+
PROTOBUF_MUSTTAIL return PackedVarint<uint64_t, uint8_t>(
|
|
1326
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1327
|
+
}
|
|
1328
|
+
PROTOBUF_NOINLINE const char* TcParser::FastV64P2(PROTOBUF_TC_PARAM_DECL) {
|
|
1329
|
+
PROTOBUF_MUSTTAIL return PackedVarint<uint64_t, uint16_t>(
|
|
1330
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ32P1(PROTOBUF_TC_PARAM_DECL) {
|
|
1334
|
+
PROTOBUF_MUSTTAIL return PackedVarint<int32_t, uint8_t, true>(
|
|
1335
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1336
|
+
}
|
|
1337
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ32P2(PROTOBUF_TC_PARAM_DECL) {
|
|
1338
|
+
PROTOBUF_MUSTTAIL return PackedVarint<int32_t, uint16_t, true>(
|
|
1339
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1340
|
+
}
|
|
1341
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ64P1(PROTOBUF_TC_PARAM_DECL) {
|
|
1342
|
+
PROTOBUF_MUSTTAIL return PackedVarint<int64_t, uint8_t, true>(
|
|
1343
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1344
|
+
}
|
|
1345
|
+
PROTOBUF_NOINLINE const char* TcParser::FastZ64P2(PROTOBUF_TC_PARAM_DECL) {
|
|
1346
|
+
PROTOBUF_MUSTTAIL return PackedVarint<int64_t, uint16_t, true>(
|
|
1347
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1351
|
+
// Enum fields
|
|
1352
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1353
|
+
|
|
1354
|
+
PROTOBUF_NOINLINE const char* TcParser::FastUnknownEnumFallback(
|
|
1355
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1356
|
+
// Skip MiniParse/fallback and insert the element directly into the unknown
|
|
1357
|
+
// field set. We also normalize the value into an int32 as we do for known
|
|
1358
|
+
// enum values.
|
|
1359
|
+
uint32_t tag;
|
|
1360
|
+
ptr = ReadTag(ptr, &tag);
|
|
1361
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
1362
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1363
|
+
}
|
|
1364
|
+
uint64_t tmp;
|
|
1365
|
+
ptr = ParseVarint(ptr, &tmp);
|
|
1366
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
1367
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1368
|
+
}
|
|
1369
|
+
AddUnknownEnum(msg, table, tag, static_cast<int32_t>(tmp));
|
|
1370
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
PROTOBUF_NOINLINE const char* TcParser::MpUnknownEnumFallback(
|
|
1374
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1375
|
+
// Like FastUnknownEnumFallback, but with the Mp ABI.
|
|
1376
|
+
uint32_t tag = data.tag();
|
|
1377
|
+
uint64_t tmp;
|
|
1378
|
+
ptr = ParseVarint(ptr, &tmp);
|
|
1379
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
1380
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1381
|
+
}
|
|
1382
|
+
AddUnknownEnum(msg, table, tag, static_cast<int32_t>(tmp));
|
|
1383
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
template <typename TagType, uint16_t xform_val>
|
|
1387
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::SingularEnum(
|
|
1388
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1389
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1390
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1391
|
+
}
|
|
1392
|
+
const TcParseTableBase::FieldAux aux = *table->field_aux(data.aux_idx());
|
|
1393
|
+
PrefetchEnumData(xform_val, aux);
|
|
1394
|
+
const char* ptr2 = ptr; // Save for unknown enum case
|
|
1395
|
+
ptr += sizeof(TagType); // Consume tag
|
|
1396
|
+
uint64_t tmp;
|
|
1397
|
+
ptr = ParseVarint(ptr, &tmp);
|
|
1398
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
1399
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1400
|
+
}
|
|
1401
|
+
if (ABSL_PREDICT_FALSE(
|
|
1402
|
+
!EnumIsValidAux(static_cast<int32_t>(tmp), xform_val, aux))) {
|
|
1403
|
+
ptr = ptr2;
|
|
1404
|
+
PROTOBUF_MUSTTAIL return FastUnknownEnumFallback(PROTOBUF_TC_PARAM_PASS);
|
|
1405
|
+
}
|
|
1406
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1407
|
+
RefAt<int32_t>(msg, data.offset()) = tmp;
|
|
1408
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
PROTOBUF_NOINLINE const char* TcParser::FastErS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1412
|
+
PROTOBUF_MUSTTAIL return SingularEnum<uint8_t, field_layout::kTvRange>(
|
|
1413
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1414
|
+
}
|
|
1415
|
+
PROTOBUF_NOINLINE const char* TcParser::FastErS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1416
|
+
PROTOBUF_MUSTTAIL return SingularEnum<uint16_t, field_layout::kTvRange>(
|
|
1417
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1418
|
+
}
|
|
1419
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEvS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1420
|
+
PROTOBUF_MUSTTAIL return SingularEnum<uint8_t, field_layout::kTvEnum>(
|
|
1421
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1422
|
+
}
|
|
1423
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEvS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1424
|
+
PROTOBUF_MUSTTAIL return SingularEnum<uint16_t, field_layout::kTvEnum>(
|
|
1425
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1426
|
+
}
|
|
1427
|
+
|
|
1428
|
+
template <typename TagType, uint16_t xform_val>
|
|
1429
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::RepeatedEnum(
|
|
1430
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1431
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1432
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1433
|
+
}
|
|
1434
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1435
|
+
auto& field = RefAt<RepeatedField<int32_t>>(msg, data.offset());
|
|
1436
|
+
Arena* arena = msg->GetArena();
|
|
1437
|
+
const auto expected_tag = UnalignedLoad<TagType>(ptr);
|
|
1438
|
+
const TcParseTableBase::FieldAux aux = *table->field_aux(data.aux_idx());
|
|
1439
|
+
PrefetchEnumData(xform_val, aux);
|
|
1440
|
+
do {
|
|
1441
|
+
const char* ptr2 = ptr; // save for unknown enum case
|
|
1442
|
+
ptr += sizeof(TagType);
|
|
1443
|
+
uint64_t tmp;
|
|
1444
|
+
ptr = ParseVarint(ptr, &tmp);
|
|
1445
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
1446
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1447
|
+
}
|
|
1448
|
+
if (ABSL_PREDICT_FALSE(
|
|
1449
|
+
!EnumIsValidAux(static_cast<int32_t>(tmp), xform_val, aux))) {
|
|
1450
|
+
// We can avoid duplicate work in MiniParse by directly calling
|
|
1451
|
+
// table->fallback.
|
|
1452
|
+
ptr = ptr2;
|
|
1453
|
+
PROTOBUF_MUSTTAIL return FastUnknownEnumFallback(PROTOBUF_TC_PARAM_PASS);
|
|
1454
|
+
}
|
|
1455
|
+
field.AddWithArena(arena, static_cast<int32_t>(tmp));
|
|
1456
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) {
|
|
1457
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1458
|
+
}
|
|
1459
|
+
} while (UnalignedLoad<TagType>(ptr) == expected_tag);
|
|
1460
|
+
|
|
1461
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1462
|
+
}
|
|
1463
|
+
|
|
1464
|
+
const TcParser::UnknownFieldOps& TcParser::GetUnknownFieldOps(
|
|
1465
|
+
const TcParseTableBase* table) {
|
|
1466
|
+
// Call the fallback function in a special mode to only act as a
|
|
1467
|
+
// way to return the ops.
|
|
1468
|
+
// Hiding the unknown fields vtable behind the fallback function avoids adding
|
|
1469
|
+
// more pointers in TcParseTableBase, and the extra runtime jumps are not
|
|
1470
|
+
// relevant because unknown fields are rare.
|
|
1471
|
+
const char* ptr = table->fallback(nullptr, nullptr, nullptr, {}, nullptr, 0);
|
|
1472
|
+
return *reinterpret_cast<const UnknownFieldOps*>(ptr);
|
|
1473
|
+
}
|
|
1474
|
+
|
|
1475
|
+
PROTOBUF_NOINLINE void TcParser::AddUnknownEnum(MessageLite* msg,
|
|
1476
|
+
const TcParseTableBase* table,
|
|
1477
|
+
uint32_t tag,
|
|
1478
|
+
int32_t enum_value) {
|
|
1479
|
+
GetUnknownFieldOps(table).write_varint(msg, tag >> 3, enum_value);
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
template <typename TagType, uint16_t xform_val>
|
|
1483
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::PackedEnum(
|
|
1484
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1485
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1486
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1487
|
+
}
|
|
1488
|
+
const auto saved_tag = UnalignedLoad<TagType>(ptr);
|
|
1489
|
+
ptr += sizeof(TagType);
|
|
1490
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1491
|
+
// Since ctx->ReadPackedVarint does not use TailCall or Return, sync any
|
|
1492
|
+
// pending hasbits now:
|
|
1493
|
+
SyncHasbits(msg, hasbits, table);
|
|
1494
|
+
auto* field = &RefAt<RepeatedField<int32_t>>(msg, data.offset());
|
|
1495
|
+
Arena* arena = msg->GetArena();
|
|
1496
|
+
const TcParseTableBase::FieldAux aux = *table->field_aux(data.aux_idx());
|
|
1497
|
+
PrefetchEnumData(xform_val, aux);
|
|
1498
|
+
return ctx->ReadPackedVarint(ptr, [=](int32_t value) {
|
|
1499
|
+
if (!EnumIsValidAux(value, xform_val, aux)) {
|
|
1500
|
+
AddUnknownEnum(msg, table, FastDecodeTag(saved_tag), value);
|
|
1501
|
+
} else {
|
|
1502
|
+
field->AddWithArena(arena, value);
|
|
1503
|
+
}
|
|
1504
|
+
});
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
PROTOBUF_NOINLINE const char* TcParser::FastErR1(PROTOBUF_TC_PARAM_DECL) {
|
|
1508
|
+
PROTOBUF_MUSTTAIL return RepeatedEnum<uint8_t, field_layout::kTvRange>(
|
|
1509
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1510
|
+
}
|
|
1511
|
+
PROTOBUF_NOINLINE const char* TcParser::FastErR2(PROTOBUF_TC_PARAM_DECL) {
|
|
1512
|
+
PROTOBUF_MUSTTAIL return RepeatedEnum<uint16_t, field_layout::kTvRange>(
|
|
1513
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1514
|
+
}
|
|
1515
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEvR1(PROTOBUF_TC_PARAM_DECL) {
|
|
1516
|
+
PROTOBUF_MUSTTAIL return RepeatedEnum<uint8_t, field_layout::kTvEnum>(
|
|
1517
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1518
|
+
}
|
|
1519
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEvR2(PROTOBUF_TC_PARAM_DECL) {
|
|
1520
|
+
PROTOBUF_MUSTTAIL return RepeatedEnum<uint16_t, field_layout::kTvEnum>(
|
|
1521
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
PROTOBUF_NOINLINE const char* TcParser::FastErP1(PROTOBUF_TC_PARAM_DECL) {
|
|
1525
|
+
PROTOBUF_MUSTTAIL return PackedEnum<uint8_t, field_layout::kTvRange>(
|
|
1526
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1527
|
+
}
|
|
1528
|
+
PROTOBUF_NOINLINE const char* TcParser::FastErP2(PROTOBUF_TC_PARAM_DECL) {
|
|
1529
|
+
PROTOBUF_MUSTTAIL return PackedEnum<uint16_t, field_layout::kTvRange>(
|
|
1530
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1531
|
+
}
|
|
1532
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEvP1(PROTOBUF_TC_PARAM_DECL) {
|
|
1533
|
+
PROTOBUF_MUSTTAIL return PackedEnum<uint8_t, field_layout::kTvEnum>(
|
|
1534
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1535
|
+
}
|
|
1536
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEvP2(PROTOBUF_TC_PARAM_DECL) {
|
|
1537
|
+
PROTOBUF_MUSTTAIL return PackedEnum<uint16_t, field_layout::kTvEnum>(
|
|
1538
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
template <typename TagType, uint8_t min>
|
|
1542
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::SingularEnumSmallRange(
|
|
1543
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1544
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1545
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1546
|
+
}
|
|
1547
|
+
|
|
1548
|
+
uint8_t v = ptr[sizeof(TagType)];
|
|
1549
|
+
if (ABSL_PREDICT_FALSE(min > v || v > data.aux_idx())) {
|
|
1550
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
RefAt<int32_t>(msg, data.offset()) = v;
|
|
1554
|
+
ptr += sizeof(TagType) + 1;
|
|
1555
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1556
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1559
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr0S1(PROTOBUF_TC_PARAM_DECL) {
|
|
1560
|
+
PROTOBUF_MUSTTAIL return SingularEnumSmallRange<uint8_t, 0>(
|
|
1561
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr0S2(PROTOBUF_TC_PARAM_DECL) {
|
|
1565
|
+
PROTOBUF_MUSTTAIL return SingularEnumSmallRange<uint16_t, 0>(
|
|
1566
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1567
|
+
}
|
|
1568
|
+
|
|
1569
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr1S1(PROTOBUF_TC_PARAM_DECL) {
|
|
1570
|
+
PROTOBUF_MUSTTAIL return SingularEnumSmallRange<uint8_t, 1>(
|
|
1571
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1574
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr1S2(PROTOBUF_TC_PARAM_DECL) {
|
|
1575
|
+
PROTOBUF_MUSTTAIL return SingularEnumSmallRange<uint16_t, 1>(
|
|
1576
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
template <typename TagType, uint8_t min>
|
|
1580
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::RepeatedEnumSmallRange(
|
|
1581
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1582
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1583
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1584
|
+
}
|
|
1585
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1586
|
+
auto& field = RefAt<RepeatedField<int32_t>>(msg, data.offset());
|
|
1587
|
+
Arena* arena = msg->GetArena();
|
|
1588
|
+
auto expected_tag = UnalignedLoad<TagType>(ptr);
|
|
1589
|
+
const uint8_t max = data.aux_idx();
|
|
1590
|
+
do {
|
|
1591
|
+
uint8_t v = ptr[sizeof(TagType)];
|
|
1592
|
+
if (ABSL_PREDICT_FALSE(min > v || v > max)) {
|
|
1593
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1594
|
+
}
|
|
1595
|
+
field.AddWithArena(arena, static_cast<int32_t>(v));
|
|
1596
|
+
ptr += sizeof(TagType) + 1;
|
|
1597
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) {
|
|
1598
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1599
|
+
}
|
|
1600
|
+
} while (UnalignedLoad<TagType>(ptr) == expected_tag);
|
|
1601
|
+
|
|
1602
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr0R1(PROTOBUF_TC_PARAM_DECL) {
|
|
1606
|
+
PROTOBUF_MUSTTAIL return RepeatedEnumSmallRange<uint8_t, 0>(
|
|
1607
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1608
|
+
}
|
|
1609
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr0R2(PROTOBUF_TC_PARAM_DECL) {
|
|
1610
|
+
PROTOBUF_MUSTTAIL return RepeatedEnumSmallRange<uint16_t, 0>(
|
|
1611
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1612
|
+
}
|
|
1613
|
+
|
|
1614
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr1R1(PROTOBUF_TC_PARAM_DECL) {
|
|
1615
|
+
PROTOBUF_MUSTTAIL return RepeatedEnumSmallRange<uint8_t, 1>(
|
|
1616
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1617
|
+
}
|
|
1618
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr1R2(PROTOBUF_TC_PARAM_DECL) {
|
|
1619
|
+
PROTOBUF_MUSTTAIL return RepeatedEnumSmallRange<uint16_t, 1>(
|
|
1620
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1621
|
+
}
|
|
1622
|
+
|
|
1623
|
+
template <typename TagType, uint8_t min>
|
|
1624
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::PackedEnumSmallRange(
|
|
1625
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1626
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1627
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1631
|
+
|
|
1632
|
+
// Since ctx->ReadPackedVarint does not use TailCall or Return, sync any
|
|
1633
|
+
// pending hasbits now:
|
|
1634
|
+
SyncHasbits(msg, hasbits, table);
|
|
1635
|
+
|
|
1636
|
+
const auto saved_tag = UnalignedLoad<TagType>(ptr);
|
|
1637
|
+
ptr += sizeof(TagType);
|
|
1638
|
+
auto* field = &RefAt<RepeatedField<int32_t>>(msg, data.offset());
|
|
1639
|
+
const uint8_t max = data.aux_idx();
|
|
1640
|
+
Arena* arena = msg->GetArena();
|
|
1641
|
+
|
|
1642
|
+
return ctx->ReadPackedVarint(
|
|
1643
|
+
ptr,
|
|
1644
|
+
[=](int32_t v) {
|
|
1645
|
+
if (ABSL_PREDICT_FALSE(min > v || v > max)) {
|
|
1646
|
+
AddUnknownEnum(msg, table, FastDecodeTag(saved_tag), v);
|
|
1647
|
+
} else {
|
|
1648
|
+
field->AddWithArena(arena, v);
|
|
1649
|
+
}
|
|
1650
|
+
},
|
|
1651
|
+
/*size_callback=*/
|
|
1652
|
+
[=](int32_t size_bytes) {
|
|
1653
|
+
// For enums that fit in one varint byte, optimistically assume that all
|
|
1654
|
+
// the values are one byte long (i.e. no large unknown values). If so,
|
|
1655
|
+
// we know exactly how many values we're going to get.
|
|
1656
|
+
//
|
|
1657
|
+
// But! size_bytes might be much larger than the total size of the
|
|
1658
|
+
// serialized proto (e.g. input corruption, or parsing msg1 as msg2).
|
|
1659
|
+
// We don't want a small serialized proto to lead to giant memory
|
|
1660
|
+
// allocations.
|
|
1661
|
+
//
|
|
1662
|
+
// Ideally we'd restrict size_bytes to the total size of the input, but
|
|
1663
|
+
// we don't know that value. The best we can do is to restrict it to
|
|
1664
|
+
// the remaining bytes in the chunk, plus a "benefit of the doubt"
|
|
1665
|
+
// factor if we're very close to the end of the chunk.
|
|
1666
|
+
//
|
|
1667
|
+
// Do these calculations in int64 because it's possible we overflow
|
|
1668
|
+
// int32 (imgaine that field->size() and size_bytes are both large).
|
|
1669
|
+
int64_t new_size =
|
|
1670
|
+
int64_t{field->size()} +
|
|
1671
|
+
std::min(size_bytes, std::max(1024, ctx->MaximumReadSize(ptr)));
|
|
1672
|
+
field->ReserveWithArena(
|
|
1673
|
+
arena,
|
|
1674
|
+
static_cast<int32_t>(std::min(
|
|
1675
|
+
new_size, int64_t{std::numeric_limits<int32_t>::max()})));
|
|
1676
|
+
});
|
|
1677
|
+
}
|
|
1678
|
+
|
|
1679
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr0P1(PROTOBUF_TC_PARAM_DECL) {
|
|
1680
|
+
PROTOBUF_MUSTTAIL return PackedEnumSmallRange<uint8_t, 0>(
|
|
1681
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1682
|
+
}
|
|
1683
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr0P2(PROTOBUF_TC_PARAM_DECL) {
|
|
1684
|
+
PROTOBUF_MUSTTAIL return PackedEnumSmallRange<uint16_t, 0>(
|
|
1685
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1688
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr1P1(PROTOBUF_TC_PARAM_DECL) {
|
|
1689
|
+
PROTOBUF_MUSTTAIL return PackedEnumSmallRange<uint8_t, 1>(
|
|
1690
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1691
|
+
}
|
|
1692
|
+
PROTOBUF_NOINLINE const char* TcParser::FastEr1P2(PROTOBUF_TC_PARAM_DECL) {
|
|
1693
|
+
PROTOBUF_MUSTTAIL return PackedEnumSmallRange<uint16_t, 1>(
|
|
1694
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1695
|
+
}
|
|
1696
|
+
|
|
1697
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1698
|
+
// String/bytes fields
|
|
1699
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1700
|
+
|
|
1701
|
+
// Defined in wire_format_lite.cc
|
|
1702
|
+
void PrintUTF8ErrorLog(absl::string_view message_name,
|
|
1703
|
+
absl::string_view field_name, const char* operation_str,
|
|
1704
|
+
bool emit_stacktrace);
|
|
1705
|
+
|
|
1706
|
+
void TcParser::ReportFastUtf8Error(uint32_t decoded_tag,
|
|
1707
|
+
const TcParseTableBase* table) {
|
|
1708
|
+
uint32_t field_num = decoded_tag >> 3;
|
|
1709
|
+
const auto* entry = FindFieldEntry(table, field_num);
|
|
1710
|
+
PrintUTF8ErrorLog(MessageName(table), FieldName(table, entry), "parsing",
|
|
1711
|
+
false);
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
namespace {
|
|
1715
|
+
|
|
1716
|
+
// Here are overloads of ReadStringIntoArena, ReadStringNoArena and IsValidUTF8
|
|
1717
|
+
// for every string class for which we provide fast-table parser support.
|
|
1718
|
+
|
|
1719
|
+
PROTOBUF_ALWAYS_INLINE const char* ReadStringIntoArena(const char* ptr,
|
|
1720
|
+
ParseContext* ctx,
|
|
1721
|
+
ArenaStringPtr& field,
|
|
1722
|
+
Arena* arena) {
|
|
1723
|
+
return ctx->ReadArenaString(ptr, &field, arena);
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1726
|
+
PROTOBUF_NOINLINE
|
|
1727
|
+
const char* ReadStringNoArena(const char* ptr, ParseContext* ctx,
|
|
1728
|
+
ArenaStringPtr& field) {
|
|
1729
|
+
int size = ReadSize(&ptr);
|
|
1730
|
+
if (!ptr) return nullptr;
|
|
1731
|
+
return ctx->ReadString(ptr, size, field.MutableNoCopy(nullptr));
|
|
1732
|
+
}
|
|
1733
|
+
|
|
1734
|
+
PROTOBUF_ALWAYS_INLINE bool IsValidUTF8(ArenaStringPtr& field) {
|
|
1735
|
+
return utf8_range::IsStructurallyValid(field.Get());
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
|
|
1739
|
+
PROTOBUF_ALWAYS_INLINE const char* ReadStringIntoArena(const char* ptr,
|
|
1740
|
+
ParseContext* ctx,
|
|
1741
|
+
MicroString& field,
|
|
1742
|
+
Arena* arena) {
|
|
1743
|
+
return ctx->ReadMicroString(ptr, field, arena);
|
|
1744
|
+
}
|
|
1745
|
+
|
|
1746
|
+
PROTOBUF_ALWAYS_INLINE const char* ReadStringNoArena(const char* ptr,
|
|
1747
|
+
ParseContext* ctx,
|
|
1748
|
+
MicroString& field) {
|
|
1749
|
+
return ctx->ReadMicroString(ptr, field, nullptr);
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
PROTOBUF_ALWAYS_INLINE bool IsValidUTF8(const MicroString& field) {
|
|
1753
|
+
return utf8_range::IsStructurallyValid(field.Get());
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
void EnsureArenaStringIsNotDefault(const MessageLite* msg,
|
|
1757
|
+
ArenaStringPtr* field) {
|
|
1758
|
+
// If we failed here we might have left the string in its IsDefault state, but
|
|
1759
|
+
// already set the has bit which breaks the message invariants. We must make
|
|
1760
|
+
// it consistent again. We do that by guaranteeing the string always exists.
|
|
1761
|
+
if (field->IsDefault()) {
|
|
1762
|
+
field->Set("", msg->GetArena());
|
|
1763
|
+
}
|
|
1764
|
+
}
|
|
1765
|
+
// The rest do nothing.
|
|
1766
|
+
[[maybe_unused]] void EnsureArenaStringIsNotDefault(const MessageLite* msg,
|
|
1767
|
+
void*) {}
|
|
1768
|
+
|
|
1769
|
+
} // namespace
|
|
1770
|
+
|
|
1771
|
+
template <typename TagType, typename FieldType, TcParser::Utf8Type utf8>
|
|
1772
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::SingularString(
|
|
1773
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1774
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1775
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1776
|
+
}
|
|
1777
|
+
auto saved_tag = UnalignedLoad<TagType>(ptr);
|
|
1778
|
+
ptr += sizeof(TagType);
|
|
1779
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1780
|
+
auto& field = RefAt<FieldType>(msg, data.offset());
|
|
1781
|
+
auto arena = msg->GetArena();
|
|
1782
|
+
if (arena) {
|
|
1783
|
+
ptr = ReadStringIntoArena(ptr, ctx, field, arena);
|
|
1784
|
+
} else {
|
|
1785
|
+
ptr = ReadStringNoArena(ptr, ctx, field);
|
|
1786
|
+
}
|
|
1787
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
1788
|
+
EnsureArenaStringIsNotDefault(msg, &field);
|
|
1789
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1790
|
+
}
|
|
1791
|
+
switch (utf8) {
|
|
1792
|
+
case kNoUtf8:
|
|
1793
|
+
break;
|
|
1794
|
+
case kUtf8:
|
|
1795
|
+
if (ABSL_PREDICT_TRUE(IsValidUTF8(field))) {
|
|
1796
|
+
break;
|
|
1797
|
+
}
|
|
1798
|
+
ReportFastUtf8Error(FastDecodeTag(saved_tag), table);
|
|
1799
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1802
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
PROTOBUF_NOINLINE const char* TcParser::FastBS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1806
|
+
PROTOBUF_MUSTTAIL return SingularString<uint8_t, ArenaStringPtr, kNoUtf8>(
|
|
1807
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1808
|
+
}
|
|
1809
|
+
PROTOBUF_NOINLINE const char* TcParser::FastBS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1810
|
+
PROTOBUF_MUSTTAIL return SingularString<uint16_t, ArenaStringPtr, kNoUtf8>(
|
|
1811
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1812
|
+
}
|
|
1813
|
+
PROTOBUF_NOINLINE const char* TcParser::FastUS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1814
|
+
PROTOBUF_MUSTTAIL return SingularString<uint8_t, ArenaStringPtr, kUtf8>(
|
|
1815
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1816
|
+
}
|
|
1817
|
+
PROTOBUF_NOINLINE const char* TcParser::FastUS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1818
|
+
PROTOBUF_MUSTTAIL return SingularString<uint16_t, ArenaStringPtr, kUtf8>(
|
|
1819
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
// Inlined string variants:
|
|
1823
|
+
|
|
1824
|
+
const char* TcParser::FastBiS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1825
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1826
|
+
}
|
|
1827
|
+
const char* TcParser::FastBiS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1828
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1829
|
+
}
|
|
1830
|
+
const char* TcParser::FastUiS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1831
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1832
|
+
}
|
|
1833
|
+
const char* TcParser::FastUiS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1834
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
// Corded string variants:
|
|
1838
|
+
const char* TcParser::FastBcS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1839
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1840
|
+
}
|
|
1841
|
+
const char* TcParser::FastBcS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1842
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1843
|
+
}
|
|
1844
|
+
const char* TcParser::FastUcS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1845
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1846
|
+
}
|
|
1847
|
+
const char* TcParser::FastUcS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1848
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1849
|
+
}
|
|
1850
|
+
|
|
1851
|
+
// MicroString variants:
|
|
1852
|
+
PROTOBUF_NOINLINE const char* TcParser::FastBmS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1853
|
+
PROTOBUF_MUSTTAIL return SingularString<uint8_t, MicroString, kNoUtf8>(
|
|
1854
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1855
|
+
}
|
|
1856
|
+
PROTOBUF_NOINLINE const char* TcParser::FastBmS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1857
|
+
PROTOBUF_MUSTTAIL return SingularString<uint16_t, MicroString, kNoUtf8>(
|
|
1858
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1859
|
+
}
|
|
1860
|
+
PROTOBUF_NOINLINE const char* TcParser::FastUmS1(PROTOBUF_TC_PARAM_DECL) {
|
|
1861
|
+
PROTOBUF_MUSTTAIL return SingularString<uint8_t, MicroString, kUtf8>(
|
|
1862
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1863
|
+
}
|
|
1864
|
+
PROTOBUF_NOINLINE const char* TcParser::FastUmS2(PROTOBUF_TC_PARAM_DECL) {
|
|
1865
|
+
PROTOBUF_MUSTTAIL return SingularString<uint16_t, MicroString, kUtf8>(
|
|
1866
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
template <typename TagType, typename FieldType, TcParser::Utf8Type utf8>
|
|
1870
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::RepeatedString(
|
|
1871
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
1872
|
+
if (ABSL_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
|
|
1873
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1874
|
+
}
|
|
1875
|
+
SetCachedHasBit(hasbits, data.hasbit_idx());
|
|
1876
|
+
const auto expected_tag = UnalignedLoad<TagType>(ptr);
|
|
1877
|
+
auto& field = RefAt<FieldType>(msg, data.offset());
|
|
1878
|
+
ABSL_DCHECK_EQ(field.GetArena(), msg->GetArena());
|
|
1879
|
+
|
|
1880
|
+
const auto validate_last_string = [expected_tag, table, &field] {
|
|
1881
|
+
switch (utf8) {
|
|
1882
|
+
case kNoUtf8:
|
|
1883
|
+
return true;
|
|
1884
|
+
case kUtf8:
|
|
1885
|
+
if (ABSL_PREDICT_TRUE(
|
|
1886
|
+
utf8_range::IsStructurallyValid(field[field.size() - 1]))) {
|
|
1887
|
+
return true;
|
|
1888
|
+
}
|
|
1889
|
+
ReportFastUtf8Error(FastDecodeTag(expected_tag), table);
|
|
1890
|
+
return false;
|
|
1891
|
+
}
|
|
1892
|
+
};
|
|
1893
|
+
|
|
1894
|
+
auto* arena = field.GetArena();
|
|
1895
|
+
SerialArena* serial_arena;
|
|
1896
|
+
if (ABSL_PREDICT_TRUE(arena != nullptr &&
|
|
1897
|
+
arena->impl_.GetSerialArenaFast(&serial_arena) &&
|
|
1898
|
+
field.PrepareForParse())) {
|
|
1899
|
+
do {
|
|
1900
|
+
ptr += sizeof(TagType);
|
|
1901
|
+
ptr = ParseRepeatedStringOnce(ptr, arena, serial_arena, ctx, field);
|
|
1902
|
+
|
|
1903
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr || !validate_last_string())) {
|
|
1904
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1905
|
+
}
|
|
1906
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) goto parse_loop;
|
|
1907
|
+
} while (UnalignedLoad<TagType>(ptr) == expected_tag);
|
|
1908
|
+
} else {
|
|
1909
|
+
do {
|
|
1910
|
+
ptr += sizeof(TagType);
|
|
1911
|
+
std::string* str = field.AddWithArena(arena);
|
|
1912
|
+
ptr = InlineGreedyStringParser(str, ptr, ctx);
|
|
1913
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr || !validate_last_string())) {
|
|
1914
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1915
|
+
}
|
|
1916
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) goto parse_loop;
|
|
1917
|
+
} while (UnalignedLoad<TagType>(ptr) == expected_tag);
|
|
1918
|
+
}
|
|
1919
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1920
|
+
parse_loop:
|
|
1921
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1922
|
+
}
|
|
1923
|
+
|
|
1924
|
+
PROTOBUF_NOINLINE const char* TcParser::FastBR1(PROTOBUF_TC_PARAM_DECL) {
|
|
1925
|
+
PROTOBUF_MUSTTAIL return RepeatedString<
|
|
1926
|
+
uint8_t, RepeatedPtrField<std::string>, kNoUtf8>(PROTOBUF_TC_PARAM_PASS);
|
|
1927
|
+
}
|
|
1928
|
+
PROTOBUF_NOINLINE const char* TcParser::FastBR2(PROTOBUF_TC_PARAM_DECL) {
|
|
1929
|
+
PROTOBUF_MUSTTAIL return RepeatedString<
|
|
1930
|
+
uint16_t, RepeatedPtrField<std::string>, kNoUtf8>(PROTOBUF_TC_PARAM_PASS);
|
|
1931
|
+
}
|
|
1932
|
+
PROTOBUF_NOINLINE const char* TcParser::FastUR1(PROTOBUF_TC_PARAM_DECL) {
|
|
1933
|
+
PROTOBUF_MUSTTAIL return RepeatedString<uint8_t,
|
|
1934
|
+
RepeatedPtrField<std::string>, kUtf8>(
|
|
1935
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1936
|
+
}
|
|
1937
|
+
PROTOBUF_NOINLINE const char* TcParser::FastUR2(PROTOBUF_TC_PARAM_DECL) {
|
|
1938
|
+
PROTOBUF_MUSTTAIL return RepeatedString<uint16_t,
|
|
1939
|
+
RepeatedPtrField<std::string>, kUtf8>(
|
|
1940
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
1941
|
+
}
|
|
1942
|
+
|
|
1943
|
+
PROTOBUF_NOINLINE const char* TcParser::FastBcR1(PROTOBUF_TC_PARAM_DECL) {
|
|
1944
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1945
|
+
}
|
|
1946
|
+
PROTOBUF_NOINLINE const char* TcParser::FastBcR2(PROTOBUF_TC_PARAM_DECL) {
|
|
1947
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1948
|
+
}
|
|
1949
|
+
PROTOBUF_NOINLINE const char* TcParser::FastUcR1(PROTOBUF_TC_PARAM_DECL) {
|
|
1950
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1951
|
+
}
|
|
1952
|
+
PROTOBUF_NOINLINE const char* TcParser::FastUcR2(PROTOBUF_TC_PARAM_DECL) {
|
|
1953
|
+
PROTOBUF_MUSTTAIL return MiniParse(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
1954
|
+
}
|
|
1955
|
+
|
|
1956
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1957
|
+
// Mini parsing
|
|
1958
|
+
//////////////////////////////////////////////////////////////////////////////
|
|
1959
|
+
|
|
1960
|
+
namespace {
|
|
1961
|
+
inline void SetHas(const FieldEntry& entry, MessageLite* msg) {
|
|
1962
|
+
auto has_idx = static_cast<uint32_t>(entry.has_idx);
|
|
1963
|
+
auto& hasblock = TcParser::RefAt<uint32_t>(msg, has_idx / 32 * 4);
|
|
1964
|
+
hasblock |= uint32_t{1} << (has_idx % 32);
|
|
1965
|
+
}
|
|
1966
|
+
|
|
1967
|
+
inline void SetHasForRepeated(const FieldEntry& entry, MessageLite* msg) {
|
|
1968
|
+
// Not all repeated fields are assigned a has bit.
|
|
1969
|
+
if (entry.has_idx == kNoHasbit) return;
|
|
1970
|
+
SetHas(entry, msg);
|
|
1971
|
+
}
|
|
1972
|
+
} // namespace
|
|
1973
|
+
|
|
1974
|
+
void TcParser::InitOneof(const TcParseTableBase* table,
|
|
1975
|
+
const ClassData* class_data,
|
|
1976
|
+
const TcParseTableBase::FieldEntry& entry,
|
|
1977
|
+
MessageLite* msg) {
|
|
1978
|
+
uint16_t kind = entry.type_card & field_layout::kFkMask;
|
|
1979
|
+
uint16_t rep = entry.type_card & field_layout::kRepMask;
|
|
1980
|
+
if (kind == field_layout::kFkString) {
|
|
1981
|
+
switch (rep) {
|
|
1982
|
+
case field_layout::kRepAString: {
|
|
1983
|
+
RefAt<ArenaStringPtr>(msg, entry.offset).InitDefault();
|
|
1984
|
+
break;
|
|
1985
|
+
}
|
|
1986
|
+
case field_layout::kRepMString: {
|
|
1987
|
+
RefAt<MicroString>(msg, entry.offset).InitDefault();
|
|
1988
|
+
break;
|
|
1989
|
+
}
|
|
1990
|
+
case field_layout::kRepCord: {
|
|
1991
|
+
absl::Cord* field = Arena::Create<absl::Cord>(msg->GetArena());
|
|
1992
|
+
RefAt<absl::Cord*>(msg, entry.offset) = field;
|
|
1993
|
+
break;
|
|
1994
|
+
}
|
|
1995
|
+
case field_layout::kRepSString:
|
|
1996
|
+
case field_layout::kRepIString:
|
|
1997
|
+
default:
|
|
1998
|
+
internal::Unreachable();
|
|
1999
|
+
return;
|
|
2000
|
+
}
|
|
2001
|
+
} else if (kind == field_layout::kFkMessage) {
|
|
2002
|
+
switch (rep) {
|
|
2003
|
+
case field_layout::kRepMessage:
|
|
2004
|
+
case field_layout::kRepGroup: {
|
|
2005
|
+
auto& field = RefAt<MessageLite*>(msg, entry.offset);
|
|
2006
|
+
field = NewMessage(class_data, msg->GetArena());
|
|
2007
|
+
break;
|
|
2008
|
+
}
|
|
2009
|
+
default:
|
|
2010
|
+
internal::Unreachable();
|
|
2011
|
+
return;
|
|
2012
|
+
}
|
|
2013
|
+
}
|
|
2014
|
+
}
|
|
2015
|
+
|
|
2016
|
+
// Destroys any existing oneof union member (if necessary). Initializes the
|
|
2017
|
+
// oneof field if the caller is responsible for initializing the object, or does
|
|
2018
|
+
// not perform initialization if the field already has the desired case.
|
|
2019
|
+
void TcParser::ChangeOneof(const TcParseTableBase* table,
|
|
2020
|
+
const ClassData* class_data,
|
|
2021
|
+
const TcParseTableBase::FieldEntry& entry,
|
|
2022
|
+
uint32_t field_num, ParseContext* ctx,
|
|
2023
|
+
MessageLite* msg) {
|
|
2024
|
+
// The _oneof_case_ value offset is stored in the has-bit index.
|
|
2025
|
+
uint32_t* oneof_case = &TcParser::RefAt<uint32_t>(msg, entry.has_idx);
|
|
2026
|
+
uint32_t current_case = *oneof_case;
|
|
2027
|
+
*oneof_case = field_num;
|
|
2028
|
+
|
|
2029
|
+
// If the member is already active, then it should be merged. We're done.
|
|
2030
|
+
if (current_case == field_num) return;
|
|
2031
|
+
|
|
2032
|
+
if (current_case == 0) {
|
|
2033
|
+
// If the member is empty, we don't have anything to clear.
|
|
2034
|
+
// We must create a new member object.
|
|
2035
|
+
InitOneof(table, class_data, entry, msg);
|
|
2036
|
+
return;
|
|
2037
|
+
}
|
|
2038
|
+
|
|
2039
|
+
// Look up the value that is already stored, and dispose of it if necessary.
|
|
2040
|
+
const FieldEntry* current_entry = FindFieldEntry(table, current_case);
|
|
2041
|
+
uint16_t current_kind = current_entry->type_card & field_layout::kFkMask;
|
|
2042
|
+
uint16_t current_rep = current_entry->type_card & field_layout::kRepMask;
|
|
2043
|
+
if (current_kind == field_layout::kFkString) {
|
|
2044
|
+
switch (current_rep) {
|
|
2045
|
+
case field_layout::kRepAString: {
|
|
2046
|
+
auto& field = RefAt<ArenaStringPtr>(msg, current_entry->offset);
|
|
2047
|
+
field.Destroy();
|
|
2048
|
+
break;
|
|
2049
|
+
}
|
|
2050
|
+
case field_layout::kRepMString: {
|
|
2051
|
+
if (msg->GetArena() == nullptr) {
|
|
2052
|
+
RefAt<MicroString>(msg, current_entry->offset).Destroy();
|
|
2053
|
+
}
|
|
2054
|
+
break;
|
|
2055
|
+
}
|
|
2056
|
+
case field_layout::kRepCord: {
|
|
2057
|
+
if (msg->GetArena() == nullptr) {
|
|
2058
|
+
delete RefAt<absl::Cord*>(msg, current_entry->offset);
|
|
2059
|
+
}
|
|
2060
|
+
break;
|
|
2061
|
+
}
|
|
2062
|
+
case field_layout::kRepSString:
|
|
2063
|
+
case field_layout::kRepIString:
|
|
2064
|
+
default:
|
|
2065
|
+
internal::Unreachable();
|
|
2066
|
+
return;
|
|
2067
|
+
}
|
|
2068
|
+
} else if (current_kind == field_layout::kFkMessage) {
|
|
2069
|
+
switch (current_rep) {
|
|
2070
|
+
case field_layout::kRepMessage:
|
|
2071
|
+
case field_layout::kRepGroup: {
|
|
2072
|
+
auto& field = RefAt<MessageLite*>(msg, current_entry->offset);
|
|
2073
|
+
if (!msg->GetArena()) {
|
|
2074
|
+
delete field;
|
|
2075
|
+
}
|
|
2076
|
+
break;
|
|
2077
|
+
}
|
|
2078
|
+
default:
|
|
2079
|
+
internal::Unreachable();
|
|
2080
|
+
return;
|
|
2081
|
+
}
|
|
2082
|
+
}
|
|
2083
|
+
InitOneof(table, class_data, entry, msg);
|
|
2084
|
+
}
|
|
2085
|
+
|
|
2086
|
+
namespace {
|
|
2087
|
+
uint32_t GetSplitOffset(const TcParseTableBase* table) {
|
|
2088
|
+
return table->field_aux(kSplitOffsetAuxIdx)->offset;
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2091
|
+
uint32_t GetSizeofSplit(const TcParseTableBase* table) {
|
|
2092
|
+
return table->field_aux(kSplitSizeAuxIdx)->offset;
|
|
2093
|
+
}
|
|
2094
|
+
} // namespace
|
|
2095
|
+
|
|
2096
|
+
void* TcParser::MaybeGetSplitBase(MessageLite* msg, const bool is_split,
|
|
2097
|
+
const TcParseTableBase* table) {
|
|
2098
|
+
void* out = msg;
|
|
2099
|
+
if (is_split) {
|
|
2100
|
+
const uint32_t split_offset = GetSplitOffset(table);
|
|
2101
|
+
void* default_split =
|
|
2102
|
+
TcParser::RefAt<void*>(table->default_instance(), split_offset);
|
|
2103
|
+
void*& split = TcParser::RefAt<void*>(msg, split_offset);
|
|
2104
|
+
if (split == default_split) {
|
|
2105
|
+
// Allocate split instance when needed.
|
|
2106
|
+
uint32_t size = GetSizeofSplit(table);
|
|
2107
|
+
Arena* arena = msg->GetArena();
|
|
2108
|
+
split =
|
|
2109
|
+
(arena == nullptr) ? Allocate(size) : arena->AllocateAligned(size);
|
|
2110
|
+
memcpy(split, default_split, size);
|
|
2111
|
+
}
|
|
2112
|
+
out = split;
|
|
2113
|
+
}
|
|
2114
|
+
return out;
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2117
|
+
template <bool is_split>
|
|
2118
|
+
PROTOBUF_NOINLINE const char* TcParser::MpFixed(PROTOBUF_TC_PARAM_DECL) {
|
|
2119
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2120
|
+
const uint16_t type_card = entry.type_card;
|
|
2121
|
+
const uint16_t card = type_card & field_layout::kFcMask;
|
|
2122
|
+
|
|
2123
|
+
// Check for repeated parsing (wiretype fallback is handled there):
|
|
2124
|
+
if (card == field_layout::kFcRepeated) {
|
|
2125
|
+
PROTOBUF_MUSTTAIL return MpRepeatedFixed<is_split>(PROTOBUF_TC_PARAM_PASS);
|
|
2126
|
+
}
|
|
2127
|
+
// Check for mismatched wiretype:
|
|
2128
|
+
const uint16_t rep = type_card & field_layout::kRepMask;
|
|
2129
|
+
const uint32_t decoded_wiretype = data.tag() & 7;
|
|
2130
|
+
if (rep == field_layout::kRep64Bits) {
|
|
2131
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_FIXED64) {
|
|
2132
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2133
|
+
}
|
|
2134
|
+
} else {
|
|
2135
|
+
ABSL_DCHECK_EQ(rep, static_cast<uint16_t>(field_layout::kRep32Bits));
|
|
2136
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_FIXED32) {
|
|
2137
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2138
|
+
}
|
|
2139
|
+
}
|
|
2140
|
+
// Set the field present:
|
|
2141
|
+
if (card == field_layout::kFcOptional) {
|
|
2142
|
+
SetHas(entry, msg);
|
|
2143
|
+
} else if (card == field_layout::kFcOneof) {
|
|
2144
|
+
ChangeOneof(table, /*class_data=*/nullptr, entry, data.tag() >> 3, ctx,
|
|
2145
|
+
msg);
|
|
2146
|
+
}
|
|
2147
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2148
|
+
// Copy the value:
|
|
2149
|
+
if (rep == field_layout::kRep64Bits) {
|
|
2150
|
+
RefAt<uint64_t>(base, entry.offset) = UnalignedLoad<uint64_t>(ptr);
|
|
2151
|
+
ptr += sizeof(uint64_t);
|
|
2152
|
+
} else {
|
|
2153
|
+
RefAt<uint32_t>(base, entry.offset) = UnalignedLoad<uint32_t>(ptr);
|
|
2154
|
+
ptr += sizeof(uint32_t);
|
|
2155
|
+
}
|
|
2156
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2157
|
+
}
|
|
2158
|
+
|
|
2159
|
+
template <bool is_split>
|
|
2160
|
+
PROTOBUF_NOINLINE const char* TcParser::MpRepeatedFixed(
|
|
2161
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
2162
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2163
|
+
const uint32_t decoded_tag = data.tag();
|
|
2164
|
+
const uint32_t decoded_wiretype = decoded_tag & 7;
|
|
2165
|
+
|
|
2166
|
+
// Check for packed repeated fallback:
|
|
2167
|
+
if (decoded_wiretype == WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
|
|
2168
|
+
PROTOBUF_MUSTTAIL return MpPackedFixed<is_split>(PROTOBUF_TC_PARAM_PASS);
|
|
2169
|
+
}
|
|
2170
|
+
|
|
2171
|
+
SetHasForRepeated(entry, msg);
|
|
2172
|
+
|
|
2173
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2174
|
+
const uint16_t type_card = entry.type_card;
|
|
2175
|
+
const uint16_t rep = type_card & field_layout::kRepMask;
|
|
2176
|
+
Arena* arena = msg->GetArena();
|
|
2177
|
+
if (rep == field_layout::kRep64Bits) {
|
|
2178
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_FIXED64) {
|
|
2179
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2180
|
+
}
|
|
2181
|
+
auto& field = MaybeCreateRepeatedFieldRefAt<uint64_t, is_split>(
|
|
2182
|
+
base, entry.offset, msg);
|
|
2183
|
+
constexpr auto size = sizeof(uint64_t);
|
|
2184
|
+
const char* ptr2 = ptr;
|
|
2185
|
+
uint32_t next_tag;
|
|
2186
|
+
do {
|
|
2187
|
+
ptr = ptr2;
|
|
2188
|
+
*field.AddWithArena(arena) = UnalignedLoad<uint64_t>(ptr);
|
|
2189
|
+
ptr += size;
|
|
2190
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) goto parse_loop;
|
|
2191
|
+
ptr2 = ReadTag(ptr, &next_tag);
|
|
2192
|
+
if (ABSL_PREDICT_FALSE(ptr2 == nullptr)) goto error;
|
|
2193
|
+
} while (next_tag == decoded_tag);
|
|
2194
|
+
} else {
|
|
2195
|
+
ABSL_DCHECK_EQ(rep, static_cast<uint16_t>(field_layout::kRep32Bits));
|
|
2196
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_FIXED32) {
|
|
2197
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2198
|
+
}
|
|
2199
|
+
auto& field = MaybeCreateRepeatedFieldRefAt<uint32_t, is_split>(
|
|
2200
|
+
base, entry.offset, msg);
|
|
2201
|
+
constexpr auto size = sizeof(uint32_t);
|
|
2202
|
+
const char* ptr2 = ptr;
|
|
2203
|
+
uint32_t next_tag;
|
|
2204
|
+
do {
|
|
2205
|
+
ptr = ptr2;
|
|
2206
|
+
*field.AddWithArena(arena) = UnalignedLoad<uint32_t>(ptr);
|
|
2207
|
+
ptr += size;
|
|
2208
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) goto parse_loop;
|
|
2209
|
+
ptr2 = ReadTag(ptr, &next_tag);
|
|
2210
|
+
if (ABSL_PREDICT_FALSE(ptr2 == nullptr)) goto error;
|
|
2211
|
+
} while (next_tag == decoded_tag);
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2214
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2215
|
+
parse_loop:
|
|
2216
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2217
|
+
error:
|
|
2218
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
template <bool is_split>
|
|
2222
|
+
PROTOBUF_NOINLINE const char* TcParser::MpPackedFixed(PROTOBUF_TC_PARAM_DECL) {
|
|
2223
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2224
|
+
const uint16_t type_card = entry.type_card;
|
|
2225
|
+
const uint32_t decoded_wiretype = data.tag() & 7;
|
|
2226
|
+
|
|
2227
|
+
// Check for non-packed repeated fallback:
|
|
2228
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
|
|
2229
|
+
PROTOBUF_MUSTTAIL return MpRepeatedFixed<is_split>(PROTOBUF_TC_PARAM_PASS);
|
|
2230
|
+
}
|
|
2231
|
+
|
|
2232
|
+
SetHasForRepeated(entry, msg);
|
|
2233
|
+
|
|
2234
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2235
|
+
int size = ReadSize(&ptr);
|
|
2236
|
+
uint16_t rep = type_card & field_layout::kRepMask;
|
|
2237
|
+
Arena* arena = msg->GetArena();
|
|
2238
|
+
if (rep == field_layout::kRep64Bits) {
|
|
2239
|
+
auto& field = MaybeCreateRepeatedFieldRefAt<uint64_t, is_split>(
|
|
2240
|
+
base, entry.offset, msg);
|
|
2241
|
+
ptr = ctx->ReadPackedFixed(ptr, arena, size, &field);
|
|
2242
|
+
} else {
|
|
2243
|
+
ABSL_DCHECK_EQ(rep, static_cast<uint16_t>(field_layout::kRep32Bits));
|
|
2244
|
+
auto& field = MaybeCreateRepeatedFieldRefAt<uint32_t, is_split>(
|
|
2245
|
+
base, entry.offset, msg);
|
|
2246
|
+
ptr = ctx->ReadPackedFixed(ptr, arena, size, &field);
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
2250
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2251
|
+
}
|
|
2252
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2253
|
+
}
|
|
2254
|
+
|
|
2255
|
+
template <bool is_split>
|
|
2256
|
+
PROTOBUF_NOINLINE const char* TcParser::MpVarint(PROTOBUF_TC_PARAM_DECL) {
|
|
2257
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2258
|
+
const uint16_t type_card = entry.type_card;
|
|
2259
|
+
const uint16_t card = type_card & field_layout::kFcMask;
|
|
2260
|
+
|
|
2261
|
+
// Check for repeated parsing:
|
|
2262
|
+
if (card == field_layout::kFcRepeated) {
|
|
2263
|
+
PROTOBUF_MUSTTAIL return MpRepeatedVarint<is_split>(PROTOBUF_TC_PARAM_PASS);
|
|
2264
|
+
}
|
|
2265
|
+
// Check for wire type mismatch:
|
|
2266
|
+
if ((data.tag() & 7) != WireFormatLite::WIRETYPE_VARINT) {
|
|
2267
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2268
|
+
}
|
|
2269
|
+
const uint16_t xform_val = type_card & field_layout::kTvMask;
|
|
2270
|
+
const bool is_zigzag = xform_val == field_layout::kTvZigZag;
|
|
2271
|
+
const bool is_validated_enum = xform_val & field_layout::kTvEnum;
|
|
2272
|
+
|
|
2273
|
+
// Parse the value:
|
|
2274
|
+
const char* ptr2 = ptr; // save for unknown enum case
|
|
2275
|
+
uint64_t tmp;
|
|
2276
|
+
ptr = ParseVarint(ptr, &tmp);
|
|
2277
|
+
if (ptr == nullptr) {
|
|
2278
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2279
|
+
}
|
|
2280
|
+
|
|
2281
|
+
// Transform and/or validate the value
|
|
2282
|
+
uint16_t rep = type_card & field_layout::kRepMask;
|
|
2283
|
+
if (rep == field_layout::kRep64Bits) {
|
|
2284
|
+
if (is_zigzag) {
|
|
2285
|
+
tmp = WireFormatLite::ZigZagDecode64(tmp);
|
|
2286
|
+
}
|
|
2287
|
+
} else if (rep == field_layout::kRep32Bits) {
|
|
2288
|
+
if (is_validated_enum) {
|
|
2289
|
+
if (!EnumIsValidAux(tmp, xform_val, *table->field_aux(&entry))) {
|
|
2290
|
+
ptr = ptr2;
|
|
2291
|
+
PROTOBUF_MUSTTAIL return MpUnknownEnumFallback(PROTOBUF_TC_PARAM_PASS);
|
|
2292
|
+
}
|
|
2293
|
+
} else if (is_zigzag) {
|
|
2294
|
+
tmp = WireFormatLite::ZigZagDecode32(static_cast<uint32_t>(tmp));
|
|
2295
|
+
}
|
|
2296
|
+
}
|
|
2297
|
+
|
|
2298
|
+
// Mark the field as present:
|
|
2299
|
+
const bool is_oneof = card == field_layout::kFcOneof;
|
|
2300
|
+
if (card == field_layout::kFcOptional) {
|
|
2301
|
+
SetHas(entry, msg);
|
|
2302
|
+
} else if (is_oneof) {
|
|
2303
|
+
ChangeOneof(table, /*class_data=*/nullptr, entry, data.tag() >> 3, ctx,
|
|
2304
|
+
msg);
|
|
2305
|
+
}
|
|
2306
|
+
|
|
2307
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2308
|
+
if (rep == field_layout::kRep64Bits) {
|
|
2309
|
+
RefAt<uint64_t>(base, entry.offset) = tmp;
|
|
2310
|
+
} else if (rep == field_layout::kRep32Bits) {
|
|
2311
|
+
RefAt<uint32_t>(base, entry.offset) = static_cast<uint32_t>(tmp);
|
|
2312
|
+
} else {
|
|
2313
|
+
ABSL_DCHECK_EQ(rep, static_cast<uint16_t>(field_layout::kRep8Bits));
|
|
2314
|
+
RefAt<bool>(base, entry.offset) = static_cast<bool>(tmp);
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2317
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2318
|
+
}
|
|
2319
|
+
|
|
2320
|
+
template <bool is_split, typename FieldType, uint16_t xform_val_in>
|
|
2321
|
+
const char* TcParser::MpRepeatedVarintT(PROTOBUF_TC_PARAM_DECL) {
|
|
2322
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2323
|
+
const uint32_t decoded_tag = data.tag();
|
|
2324
|
+
// For is_split we ignore the incoming xform_val and read it from entry to
|
|
2325
|
+
// reduce duplication for the uncommon paths.
|
|
2326
|
+
const uint16_t xform_val =
|
|
2327
|
+
is_split ? (entry.type_card & field_layout::kTvMask) : xform_val_in;
|
|
2328
|
+
const bool is_zigzag = xform_val == field_layout::kTvZigZag;
|
|
2329
|
+
const bool is_validated_enum = xform_val & field_layout::kTvEnum;
|
|
2330
|
+
|
|
2331
|
+
const char* ptr2 = ptr;
|
|
2332
|
+
uint32_t next_tag;
|
|
2333
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2334
|
+
auto& field = MaybeCreateRepeatedFieldRefAt<FieldType, is_split>(
|
|
2335
|
+
base, entry.offset, msg);
|
|
2336
|
+
Arena* arena = msg->GetArena();
|
|
2337
|
+
|
|
2338
|
+
TcParseTableBase::FieldAux aux;
|
|
2339
|
+
if (is_validated_enum) {
|
|
2340
|
+
aux = *table->field_aux(&entry);
|
|
2341
|
+
PrefetchEnumData(xform_val, aux);
|
|
2342
|
+
}
|
|
2343
|
+
|
|
2344
|
+
do {
|
|
2345
|
+
uint64_t tmp;
|
|
2346
|
+
ptr = ParseVarint(ptr2, &tmp);
|
|
2347
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) goto error;
|
|
2348
|
+
if (is_validated_enum) {
|
|
2349
|
+
if (!EnumIsValidAux(static_cast<int32_t>(tmp), xform_val, aux)) {
|
|
2350
|
+
ptr = ptr2;
|
|
2351
|
+
PROTOBUF_MUSTTAIL return MpUnknownEnumFallback(PROTOBUF_TC_PARAM_PASS);
|
|
2352
|
+
}
|
|
2353
|
+
} else if (is_zigzag) {
|
|
2354
|
+
tmp = sizeof(FieldType) == 8 ? WireFormatLite::ZigZagDecode64(tmp)
|
|
2355
|
+
: WireFormatLite::ZigZagDecode32(tmp);
|
|
2356
|
+
}
|
|
2357
|
+
field.AddWithArena(arena, static_cast<FieldType>(tmp));
|
|
2358
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) goto parse_loop;
|
|
2359
|
+
ptr2 = ReadTag(ptr, &next_tag);
|
|
2360
|
+
if (ABSL_PREDICT_FALSE(ptr2 == nullptr)) goto error;
|
|
2361
|
+
} while (next_tag == decoded_tag);
|
|
2362
|
+
|
|
2363
|
+
parse_loop:
|
|
2364
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2365
|
+
error:
|
|
2366
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2367
|
+
}
|
|
2368
|
+
|
|
2369
|
+
template <bool is_split>
|
|
2370
|
+
PROTOBUF_NOINLINE const char* TcParser::MpRepeatedVarint(
|
|
2371
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
2372
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2373
|
+
const auto type_card = entry.type_card;
|
|
2374
|
+
const uint32_t decoded_tag = data.tag();
|
|
2375
|
+
const auto decoded_wiretype = decoded_tag & 7;
|
|
2376
|
+
|
|
2377
|
+
// Check for packed repeated fallback:
|
|
2378
|
+
if (decoded_wiretype == WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
|
|
2379
|
+
PROTOBUF_MUSTTAIL return MpPackedVarint<is_split>(PROTOBUF_TC_PARAM_PASS);
|
|
2380
|
+
}
|
|
2381
|
+
// Check for wire type mismatch:
|
|
2382
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_VARINT) {
|
|
2383
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2384
|
+
}
|
|
2385
|
+
|
|
2386
|
+
SetHasForRepeated(entry, msg);
|
|
2387
|
+
|
|
2388
|
+
// For split we avoid the duplicate code and have the impl reload the value.
|
|
2389
|
+
// Less code bloat for uncommon paths.
|
|
2390
|
+
const uint16_t xform_val = (type_card & field_layout::kTvMask);
|
|
2391
|
+
const uint16_t rep = type_card & field_layout::kRepMask;
|
|
2392
|
+
switch (rep >> field_layout::kRepShift) {
|
|
2393
|
+
case field_layout::kRep64Bits >> field_layout::kRepShift:
|
|
2394
|
+
if (xform_val == 0) {
|
|
2395
|
+
PROTOBUF_MUSTTAIL return MpRepeatedVarintT<is_split, uint64_t, 0>(
|
|
2396
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2397
|
+
} else {
|
|
2398
|
+
ABSL_DCHECK_EQ(xform_val, +field_layout::kTvZigZag);
|
|
2399
|
+
PROTOBUF_MUSTTAIL return MpRepeatedVarintT<
|
|
2400
|
+
is_split, uint64_t, (is_split ? 0 : field_layout::kTvZigZag)>(
|
|
2401
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2402
|
+
}
|
|
2403
|
+
case field_layout::kRep32Bits >> field_layout::kRepShift:
|
|
2404
|
+
switch (xform_val >> field_layout::kTvShift) {
|
|
2405
|
+
case 0:
|
|
2406
|
+
PROTOBUF_MUSTTAIL return MpRepeatedVarintT<is_split, uint32_t, 0>(
|
|
2407
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2408
|
+
case field_layout::kTvZigZag >> field_layout::kTvShift:
|
|
2409
|
+
PROTOBUF_MUSTTAIL return MpRepeatedVarintT<
|
|
2410
|
+
is_split, uint32_t, (is_split ? 0 : field_layout::kTvZigZag)>(
|
|
2411
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2412
|
+
case field_layout::kTvEnum >> field_layout::kTvShift:
|
|
2413
|
+
PROTOBUF_MUSTTAIL return MpRepeatedVarintT<
|
|
2414
|
+
is_split, uint32_t, (is_split ? 0 : field_layout::kTvEnum)>(
|
|
2415
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2416
|
+
case field_layout::kTvRange >> field_layout::kTvShift:
|
|
2417
|
+
PROTOBUF_MUSTTAIL return MpRepeatedVarintT<
|
|
2418
|
+
is_split, uint32_t, (is_split ? 0 : field_layout::kTvRange)>(
|
|
2419
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2420
|
+
default:
|
|
2421
|
+
Unreachable();
|
|
2422
|
+
}
|
|
2423
|
+
case field_layout::kRep8Bits >> field_layout::kRepShift:
|
|
2424
|
+
PROTOBUF_MUSTTAIL return MpRepeatedVarintT<is_split, bool, 0>(
|
|
2425
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2426
|
+
|
|
2427
|
+
default:
|
|
2428
|
+
Unreachable();
|
|
2429
|
+
return nullptr; // To silence -Werror=return-type in some toolchains
|
|
2430
|
+
}
|
|
2431
|
+
}
|
|
2432
|
+
|
|
2433
|
+
template <bool is_split, typename FieldType, uint16_t xform_val_in>
|
|
2434
|
+
const char* TcParser::MpPackedVarintT(PROTOBUF_TC_PARAM_DECL) {
|
|
2435
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2436
|
+
// For is_split we ignore the incoming xform_val and read it from entry to
|
|
2437
|
+
// reduce duplication for the uncommon paths.
|
|
2438
|
+
const uint16_t xform_val =
|
|
2439
|
+
is_split ? (entry.type_card & field_layout::kTvMask) : xform_val_in;
|
|
2440
|
+
const bool is_zigzag = xform_val == field_layout::kTvZigZag;
|
|
2441
|
+
const bool is_validated_enum = xform_val & field_layout::kTvEnum;
|
|
2442
|
+
|
|
2443
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2444
|
+
auto* field = &MaybeCreateRepeatedFieldRefAt<FieldType, is_split>(
|
|
2445
|
+
base, entry.offset, msg);
|
|
2446
|
+
Arena* arena = msg->GetArena();
|
|
2447
|
+
|
|
2448
|
+
if (is_validated_enum) {
|
|
2449
|
+
const TcParseTableBase::FieldAux aux = *table->field_aux(entry.aux_idx);
|
|
2450
|
+
PrefetchEnumData(xform_val, aux);
|
|
2451
|
+
return ctx->ReadPackedVarint(ptr, [=](int32_t value) {
|
|
2452
|
+
if (!EnumIsValidAux(value, xform_val, aux)) {
|
|
2453
|
+
AddUnknownEnum(msg, table, data.tag(), value);
|
|
2454
|
+
} else {
|
|
2455
|
+
field->AddWithArena(arena, value);
|
|
2456
|
+
}
|
|
2457
|
+
});
|
|
2458
|
+
} else {
|
|
2459
|
+
return ctx->ReadPackedVarint(ptr, [=](uint64_t value) {
|
|
2460
|
+
field->AddWithArena(
|
|
2461
|
+
arena, is_zigzag ? (sizeof(FieldType) == 8
|
|
2462
|
+
? WireFormatLite::ZigZagDecode64(value)
|
|
2463
|
+
: WireFormatLite::ZigZagDecode32(
|
|
2464
|
+
static_cast<uint32_t>(value)))
|
|
2465
|
+
: value);
|
|
2466
|
+
});
|
|
2467
|
+
}
|
|
2468
|
+
}
|
|
2469
|
+
|
|
2470
|
+
template <bool is_split>
|
|
2471
|
+
PROTOBUF_NOINLINE const char* TcParser::MpPackedVarint(PROTOBUF_TC_PARAM_DECL) {
|
|
2472
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2473
|
+
const auto type_card = entry.type_card;
|
|
2474
|
+
const auto decoded_wiretype = data.tag() & 7;
|
|
2475
|
+
|
|
2476
|
+
// Check for non-packed repeated fallback:
|
|
2477
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
|
|
2478
|
+
PROTOBUF_MUSTTAIL return MpRepeatedVarint<is_split>(PROTOBUF_TC_PARAM_PASS);
|
|
2479
|
+
}
|
|
2480
|
+
SetHasForRepeated(entry, msg);
|
|
2481
|
+
|
|
2482
|
+
// For split we avoid the duplicate code and have the impl reload the value.
|
|
2483
|
+
// Less code bloat for uncommon paths.
|
|
2484
|
+
const uint16_t xform_val = (type_card & field_layout::kTvMask);
|
|
2485
|
+
|
|
2486
|
+
// Since ctx->ReadPackedFixed does not use TailCall<> or Return<>, sync any
|
|
2487
|
+
// pending hasbits now:
|
|
2488
|
+
SyncHasbits(msg, hasbits, table);
|
|
2489
|
+
|
|
2490
|
+
const uint16_t rep = type_card & field_layout::kRepMask;
|
|
2491
|
+
|
|
2492
|
+
switch (rep >> field_layout::kRepShift) {
|
|
2493
|
+
case field_layout::kRep64Bits >> field_layout::kRepShift:
|
|
2494
|
+
if (xform_val == 0) {
|
|
2495
|
+
PROTOBUF_MUSTTAIL return MpPackedVarintT<is_split, uint64_t, 0>(
|
|
2496
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2497
|
+
} else {
|
|
2498
|
+
ABSL_DCHECK_EQ(xform_val, +field_layout::kTvZigZag);
|
|
2499
|
+
PROTOBUF_MUSTTAIL return MpPackedVarintT<
|
|
2500
|
+
is_split, uint64_t, (is_split ? 0 : field_layout::kTvZigZag)>(
|
|
2501
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2502
|
+
}
|
|
2503
|
+
case field_layout::kRep32Bits >> field_layout::kRepShift:
|
|
2504
|
+
switch (xform_val >> field_layout::kTvShift) {
|
|
2505
|
+
case 0:
|
|
2506
|
+
PROTOBUF_MUSTTAIL return MpPackedVarintT<is_split, uint32_t, 0>(
|
|
2507
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2508
|
+
case field_layout::kTvZigZag >> field_layout::kTvShift:
|
|
2509
|
+
PROTOBUF_MUSTTAIL return MpPackedVarintT<
|
|
2510
|
+
is_split, uint32_t, (is_split ? 0 : field_layout::kTvZigZag)>(
|
|
2511
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2512
|
+
case field_layout::kTvEnum >> field_layout::kTvShift:
|
|
2513
|
+
PROTOBUF_MUSTTAIL return MpPackedVarintT<
|
|
2514
|
+
is_split, uint32_t, (is_split ? 0 : field_layout::kTvEnum)>(
|
|
2515
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2516
|
+
case field_layout::kTvRange >> field_layout::kTvShift:
|
|
2517
|
+
PROTOBUF_MUSTTAIL return MpPackedVarintT<
|
|
2518
|
+
is_split, uint32_t, (is_split ? 0 : field_layout::kTvRange)>(
|
|
2519
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2520
|
+
default:
|
|
2521
|
+
Unreachable();
|
|
2522
|
+
}
|
|
2523
|
+
case field_layout::kRep8Bits >> field_layout::kRepShift:
|
|
2524
|
+
PROTOBUF_MUSTTAIL return MpPackedVarintT<is_split, bool, 0>(
|
|
2525
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2526
|
+
|
|
2527
|
+
default:
|
|
2528
|
+
Unreachable();
|
|
2529
|
+
return nullptr; // To silence -Werror=return-type in some toolchains
|
|
2530
|
+
}
|
|
2531
|
+
}
|
|
2532
|
+
|
|
2533
|
+
bool TcParser::MpVerifyUtf8(absl::string_view wire_bytes,
|
|
2534
|
+
const TcParseTableBase* table,
|
|
2535
|
+
const FieldEntry& entry, uint16_t xform_val) {
|
|
2536
|
+
if (xform_val == field_layout::kTvUtf8) {
|
|
2537
|
+
if (!utf8_range::IsStructurallyValid(wire_bytes)) {
|
|
2538
|
+
PrintUTF8ErrorLog(MessageName(table), FieldName(table, &entry), "parsing",
|
|
2539
|
+
false);
|
|
2540
|
+
return false;
|
|
2541
|
+
}
|
|
2542
|
+
return true;
|
|
2543
|
+
}
|
|
2544
|
+
return true;
|
|
2545
|
+
}
|
|
2546
|
+
bool TcParser::MpVerifyUtf8(const absl::Cord& wire_bytes,
|
|
2547
|
+
const TcParseTableBase* table,
|
|
2548
|
+
const FieldEntry& entry, uint16_t xform_val) {
|
|
2549
|
+
switch (xform_val) {
|
|
2550
|
+
default:
|
|
2551
|
+
ABSL_DCHECK_EQ(xform_val, 0);
|
|
2552
|
+
return true;
|
|
2553
|
+
}
|
|
2554
|
+
}
|
|
2555
|
+
|
|
2556
|
+
template <bool is_split>
|
|
2557
|
+
PROTOBUF_NOINLINE const char* TcParser::MpString(PROTOBUF_TC_PARAM_DECL) {
|
|
2558
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2559
|
+
const uint16_t type_card = entry.type_card;
|
|
2560
|
+
const uint16_t card = type_card & field_layout::kFcMask;
|
|
2561
|
+
const uint32_t decoded_wiretype = data.tag() & 7;
|
|
2562
|
+
|
|
2563
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
|
|
2564
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2565
|
+
}
|
|
2566
|
+
if (card == field_layout::kFcRepeated) {
|
|
2567
|
+
PROTOBUF_MUSTTAIL return MpRepeatedString<is_split>(PROTOBUF_TC_PARAM_PASS);
|
|
2568
|
+
}
|
|
2569
|
+
const uint16_t xform_val = type_card & field_layout::kTvMask;
|
|
2570
|
+
const uint16_t rep = type_card & field_layout::kRepMask;
|
|
2571
|
+
|
|
2572
|
+
// Mark the field as present:
|
|
2573
|
+
const bool is_oneof = card == field_layout::kFcOneof;
|
|
2574
|
+
if (card == field_layout::kFcOptional) {
|
|
2575
|
+
SetHas(entry, msg);
|
|
2576
|
+
} else if (is_oneof) {
|
|
2577
|
+
ChangeOneof(table, /*class_data=*/nullptr, entry, data.tag() >> 3, ctx,
|
|
2578
|
+
msg);
|
|
2579
|
+
}
|
|
2580
|
+
|
|
2581
|
+
bool is_valid = false;
|
|
2582
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2583
|
+
switch (rep) {
|
|
2584
|
+
case field_layout::kRepAString: {
|
|
2585
|
+
auto& field = RefAt<ArenaStringPtr>(base, entry.offset);
|
|
2586
|
+
Arena* arena = msg->GetArena();
|
|
2587
|
+
if (arena) {
|
|
2588
|
+
ptr = ctx->ReadArenaString(ptr, &field, arena);
|
|
2589
|
+
} else {
|
|
2590
|
+
std::string* str = field.MutableNoCopy(nullptr);
|
|
2591
|
+
ptr = InlineGreedyStringParser(str, ptr, ctx);
|
|
2592
|
+
}
|
|
2593
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
2594
|
+
EnsureArenaStringIsNotDefault(msg, &field);
|
|
2595
|
+
break;
|
|
2596
|
+
}
|
|
2597
|
+
is_valid = MpVerifyUtf8(field.Get(), table, entry, xform_val);
|
|
2598
|
+
break;
|
|
2599
|
+
}
|
|
2600
|
+
|
|
2601
|
+
case field_layout::kRepMString: {
|
|
2602
|
+
auto& field = RefAt<MicroString>(base, entry.offset);
|
|
2603
|
+
ptr = ctx->ReadMicroString(ptr, field, msg->GetArena());
|
|
2604
|
+
is_valid = MpVerifyUtf8(field.Get(), table, entry, xform_val);
|
|
2605
|
+
break;
|
|
2606
|
+
}
|
|
2607
|
+
|
|
2608
|
+
|
|
2609
|
+
case field_layout::kRepCord: {
|
|
2610
|
+
absl::Cord* field;
|
|
2611
|
+
if (is_oneof) {
|
|
2612
|
+
field = RefAt<absl::Cord*>(msg, entry.offset);
|
|
2613
|
+
} else {
|
|
2614
|
+
field = &RefAt<absl::Cord>(base, entry.offset);
|
|
2615
|
+
}
|
|
2616
|
+
ptr = InlineCordParser(field, ptr, ctx);
|
|
2617
|
+
if (!ptr) break;
|
|
2618
|
+
is_valid = MpVerifyUtf8(*field, table, entry, xform_val);
|
|
2619
|
+
break;
|
|
2620
|
+
}
|
|
2621
|
+
|
|
2622
|
+
default:
|
|
2623
|
+
Unreachable();
|
|
2624
|
+
}
|
|
2625
|
+
|
|
2626
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr || !is_valid)) {
|
|
2627
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2628
|
+
}
|
|
2629
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2630
|
+
}
|
|
2631
|
+
|
|
2632
|
+
PROTOBUF_ALWAYS_INLINE const char* TcParser::ParseRepeatedStringOnce(
|
|
2633
|
+
const char* ptr, Arena* arena, SerialArena* serial_arena, ParseContext* ctx,
|
|
2634
|
+
RepeatedPtrField<std::string>& field) {
|
|
2635
|
+
int size = ReadSize(&ptr);
|
|
2636
|
+
if (ABSL_PREDICT_FALSE(!ptr)) return {};
|
|
2637
|
+
auto* str = new (serial_arena->AllocateFromStringBlock()) std::string();
|
|
2638
|
+
ptr = ctx->ReadString(ptr, size, str);
|
|
2639
|
+
field.AddAllocatedForParse(str, arena);
|
|
2640
|
+
if (ABSL_PREDICT_FALSE(!ptr)) return {};
|
|
2641
|
+
PROTOBUF_ASSUME(ptr != nullptr);
|
|
2642
|
+
return ptr;
|
|
2643
|
+
}
|
|
2644
|
+
|
|
2645
|
+
template <bool is_split>
|
|
2646
|
+
PROTOBUF_NOINLINE const char* TcParser::MpRepeatedString(
|
|
2647
|
+
PROTOBUF_TC_PARAM_DECL) {
|
|
2648
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2649
|
+
const uint16_t type_card = entry.type_card;
|
|
2650
|
+
const uint32_t decoded_tag = data.tag();
|
|
2651
|
+
const uint32_t decoded_wiretype = decoded_tag & 7;
|
|
2652
|
+
|
|
2653
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
|
|
2654
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2655
|
+
}
|
|
2656
|
+
|
|
2657
|
+
SetHasForRepeated(entry, msg);
|
|
2658
|
+
|
|
2659
|
+
const uint16_t rep = type_card & field_layout::kRepMask;
|
|
2660
|
+
const uint16_t xform_val = type_card & field_layout::kTvMask;
|
|
2661
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2662
|
+
auto* arena = msg->GetArena();
|
|
2663
|
+
switch (rep) {
|
|
2664
|
+
case field_layout::kRepSString: {
|
|
2665
|
+
auto& field = MaybeCreateRepeatedPtrFieldRefAt<std::string, is_split>(
|
|
2666
|
+
base, entry.offset, msg);
|
|
2667
|
+
const char* ptr2 = ptr;
|
|
2668
|
+
uint32_t next_tag;
|
|
2669
|
+
|
|
2670
|
+
SerialArena* serial_arena;
|
|
2671
|
+
if (ABSL_PREDICT_TRUE(arena != nullptr &&
|
|
2672
|
+
arena->impl_.GetSerialArenaFast(&serial_arena) &&
|
|
2673
|
+
field.PrepareForParse())) {
|
|
2674
|
+
do {
|
|
2675
|
+
ptr = ptr2;
|
|
2676
|
+
ptr = ParseRepeatedStringOnce(ptr, arena, serial_arena, ctx, field);
|
|
2677
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr ||
|
|
2678
|
+
!MpVerifyUtf8(field[field.size() - 1], table,
|
|
2679
|
+
entry, xform_val))) {
|
|
2680
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2681
|
+
}
|
|
2682
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) goto parse_loop;
|
|
2683
|
+
ptr2 = ReadTag(ptr, &next_tag);
|
|
2684
|
+
} while (next_tag == decoded_tag);
|
|
2685
|
+
} else {
|
|
2686
|
+
do {
|
|
2687
|
+
ptr = ptr2;
|
|
2688
|
+
std::string* str = field.AddWithArena(arena);
|
|
2689
|
+
ptr = InlineGreedyStringParser(str, ptr, ctx);
|
|
2690
|
+
if (ABSL_PREDICT_FALSE(
|
|
2691
|
+
ptr == nullptr ||
|
|
2692
|
+
!MpVerifyUtf8(*str, table, entry, xform_val))) {
|
|
2693
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2694
|
+
}
|
|
2695
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) goto parse_loop;
|
|
2696
|
+
ptr2 = ReadTag(ptr, &next_tag);
|
|
2697
|
+
} while (next_tag == decoded_tag);
|
|
2698
|
+
}
|
|
2699
|
+
|
|
2700
|
+
break;
|
|
2701
|
+
}
|
|
2702
|
+
|
|
2703
|
+
#ifndef NDEBUG
|
|
2704
|
+
default:
|
|
2705
|
+
ABSL_LOG(FATAL) << "Unsupported repeated string rep: " << rep;
|
|
2706
|
+
break;
|
|
2707
|
+
#endif
|
|
2708
|
+
}
|
|
2709
|
+
|
|
2710
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2711
|
+
parse_loop:
|
|
2712
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2713
|
+
}
|
|
2714
|
+
|
|
2715
|
+
|
|
2716
|
+
template <bool is_split>
|
|
2717
|
+
PROTOBUF_NOINLINE const char* TcParser::MpMessage(PROTOBUF_TC_PARAM_DECL) {
|
|
2718
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2719
|
+
const uint16_t type_card = entry.type_card;
|
|
2720
|
+
const uint16_t card = type_card & field_layout::kFcMask;
|
|
2721
|
+
|
|
2722
|
+
// Check for repeated parsing:
|
|
2723
|
+
if (card == field_layout::kFcRepeated) {
|
|
2724
|
+
const uint16_t rep = type_card & field_layout::kRepMask;
|
|
2725
|
+
switch (rep) {
|
|
2726
|
+
case field_layout::kRepMessage:
|
|
2727
|
+
PROTOBUF_MUSTTAIL return MpRepeatedMessageOrGroup<is_split, false>(
|
|
2728
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2729
|
+
case field_layout::kRepGroup:
|
|
2730
|
+
PROTOBUF_MUSTTAIL return MpRepeatedMessageOrGroup<is_split, true>(
|
|
2731
|
+
PROTOBUF_TC_PARAM_PASS);
|
|
2732
|
+
default:
|
|
2733
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2734
|
+
}
|
|
2735
|
+
}
|
|
2736
|
+
|
|
2737
|
+
const uint32_t decoded_tag = data.tag();
|
|
2738
|
+
const uint32_t decoded_wiretype = decoded_tag & 7;
|
|
2739
|
+
const uint16_t rep = type_card & field_layout::kRepMask;
|
|
2740
|
+
const bool is_group = rep == field_layout::kRepGroup;
|
|
2741
|
+
|
|
2742
|
+
// Validate wiretype:
|
|
2743
|
+
switch (rep) {
|
|
2744
|
+
case field_layout::kRepMessage:
|
|
2745
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
|
|
2746
|
+
goto fallback;
|
|
2747
|
+
}
|
|
2748
|
+
break;
|
|
2749
|
+
case field_layout::kRepGroup:
|
|
2750
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_START_GROUP) {
|
|
2751
|
+
goto fallback;
|
|
2752
|
+
}
|
|
2753
|
+
break;
|
|
2754
|
+
default: {
|
|
2755
|
+
fallback:
|
|
2756
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2757
|
+
}
|
|
2758
|
+
}
|
|
2759
|
+
|
|
2760
|
+
const auto aux = *table->field_aux(&entry);
|
|
2761
|
+
// Captured structured bindings are a C++20 feature.
|
|
2762
|
+
auto [inner_table_alias, class_data] =
|
|
2763
|
+
GetTableAndClassDataFromAux(type_card, aux);
|
|
2764
|
+
const TcParseTableBase* inner_table = inner_table_alias;
|
|
2765
|
+
|
|
2766
|
+
const bool is_oneof = card == field_layout::kFcOneof;
|
|
2767
|
+
if (card == field_layout::kFcOptional) {
|
|
2768
|
+
SetHas(entry, msg);
|
|
2769
|
+
} else if (is_oneof) {
|
|
2770
|
+
ChangeOneof(table, class_data, entry, data.tag() >> 3, ctx, msg);
|
|
2771
|
+
}
|
|
2772
|
+
|
|
2773
|
+
SyncHasbits(msg, hasbits, table);
|
|
2774
|
+
|
|
2775
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2776
|
+
MessageLite*& field = RefAt<MessageLite*>(base, entry.offset);
|
|
2777
|
+
if (field == nullptr) {
|
|
2778
|
+
field = NewMessage(class_data, msg->GetArena());
|
|
2779
|
+
}
|
|
2780
|
+
const auto inner_loop = [&](const char* ptr) {
|
|
2781
|
+
return ParseLoopPreserveNone(field, ptr, ctx, inner_table);
|
|
2782
|
+
};
|
|
2783
|
+
return is_group ? ctx->ParseGroupInlined(ptr, decoded_tag, inner_loop)
|
|
2784
|
+
: ctx->ParseLengthDelimitedInlined(ptr, inner_loop);
|
|
2785
|
+
}
|
|
2786
|
+
|
|
2787
|
+
template <bool is_split, bool is_group>
|
|
2788
|
+
const char* TcParser::MpRepeatedMessageOrGroup(PROTOBUF_TC_PARAM_DECL) {
|
|
2789
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
2790
|
+
const uint16_t type_card = entry.type_card;
|
|
2791
|
+
ABSL_DCHECK_EQ(type_card & field_layout::kFcMask,
|
|
2792
|
+
static_cast<uint16_t>(field_layout::kFcRepeated));
|
|
2793
|
+
const uint32_t decoded_tag = data.tag();
|
|
2794
|
+
const uint32_t decoded_wiretype = decoded_tag & 7;
|
|
2795
|
+
|
|
2796
|
+
// Validate wiretype:
|
|
2797
|
+
if (!is_group) {
|
|
2798
|
+
ABSL_DCHECK_EQ(type_card & field_layout::kRepMask,
|
|
2799
|
+
static_cast<uint16_t>(field_layout::kRepMessage));
|
|
2800
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
|
|
2801
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2802
|
+
}
|
|
2803
|
+
} else {
|
|
2804
|
+
ABSL_DCHECK_EQ(type_card & field_layout::kRepMask,
|
|
2805
|
+
static_cast<uint16_t>(field_layout::kRepGroup));
|
|
2806
|
+
if (decoded_wiretype != WireFormatLite::WIRETYPE_START_GROUP) {
|
|
2807
|
+
PROTOBUF_MUSTTAIL return table->fallback(PROTOBUF_TC_PARAM_PASS);
|
|
2808
|
+
}
|
|
2809
|
+
}
|
|
2810
|
+
|
|
2811
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
2812
|
+
RepeatedPtrFieldBase& field =
|
|
2813
|
+
MaybeCreateRepeatedRefAt<RepeatedPtrFieldBase, is_split>(
|
|
2814
|
+
base, entry.offset, msg);
|
|
2815
|
+
ABSL_DCHECK_EQ(field.GetArena(), msg->GetArena());
|
|
2816
|
+
const auto aux = *table->field_aux(&entry);
|
|
2817
|
+
// Captured structured bindings are a C++20 feature.
|
|
2818
|
+
auto [inner_table_alias, class_data] =
|
|
2819
|
+
GetTableAndClassDataFromAux(type_card, aux);
|
|
2820
|
+
const TcParseTableBase* inner_table = inner_table_alias;
|
|
2821
|
+
SetHasForRepeated(entry, msg);
|
|
2822
|
+
|
|
2823
|
+
const char* ptr2 = ptr;
|
|
2824
|
+
uint32_t next_tag;
|
|
2825
|
+
Arena* arena = msg->GetArena();
|
|
2826
|
+
do {
|
|
2827
|
+
MessageLite* value = AddMessage(class_data, field, arena);
|
|
2828
|
+
const auto inner_loop = [&](const char* ptr) {
|
|
2829
|
+
return ParseLoopPreserveNone(value, ptr, ctx, inner_table);
|
|
2830
|
+
};
|
|
2831
|
+
ptr = is_group ? ctx->ParseGroupInlined(ptr2, decoded_tag, inner_loop)
|
|
2832
|
+
: ctx->ParseLengthDelimitedInlined(ptr2, inner_loop);
|
|
2833
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) goto error;
|
|
2834
|
+
if (ABSL_PREDICT_FALSE(!ctx->DataAvailable(ptr))) goto parse_loop;
|
|
2835
|
+
ptr2 = ReadTag(ptr, &next_tag);
|
|
2836
|
+
if (ABSL_PREDICT_FALSE(ptr2 == nullptr)) goto error;
|
|
2837
|
+
} while (next_tag == decoded_tag);
|
|
2838
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2839
|
+
parse_loop:
|
|
2840
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2841
|
+
error:
|
|
2842
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
2843
|
+
}
|
|
2844
|
+
|
|
2845
|
+
static void SerializeMapKey(UntypedMapBase& map, NodeBase* node,
|
|
2846
|
+
MapTypeCard type_card,
|
|
2847
|
+
io::CodedOutputStream& coded_output) {
|
|
2848
|
+
switch (type_card.wiretype()) {
|
|
2849
|
+
case WireFormatLite::WIRETYPE_VARINT:
|
|
2850
|
+
map.VisitKey(node, //
|
|
2851
|
+
absl::Overload{
|
|
2852
|
+
[&](const bool* v) {
|
|
2853
|
+
WireFormatLite::WriteBool(1, *v, &coded_output);
|
|
2854
|
+
},
|
|
2855
|
+
[&](const uint32_t* v) {
|
|
2856
|
+
if (type_card.is_zigzag()) {
|
|
2857
|
+
WireFormatLite::WriteSInt32(1, *v, &coded_output);
|
|
2858
|
+
} else if (type_card.is_signed()) {
|
|
2859
|
+
WireFormatLite::WriteInt32(1, *v, &coded_output);
|
|
2860
|
+
} else {
|
|
2861
|
+
WireFormatLite::WriteUInt32(1, *v, &coded_output);
|
|
2862
|
+
}
|
|
2863
|
+
},
|
|
2864
|
+
[&](const uint64_t* v) {
|
|
2865
|
+
if (type_card.is_zigzag()) {
|
|
2866
|
+
WireFormatLite::WriteSInt64(1, *v, &coded_output);
|
|
2867
|
+
} else if (type_card.is_signed()) {
|
|
2868
|
+
WireFormatLite::WriteInt64(1, *v, &coded_output);
|
|
2869
|
+
} else {
|
|
2870
|
+
WireFormatLite::WriteUInt64(1, *v, &coded_output);
|
|
2871
|
+
}
|
|
2872
|
+
},
|
|
2873
|
+
[](const void*) { Unreachable(); },
|
|
2874
|
+
});
|
|
2875
|
+
break;
|
|
2876
|
+
case WireFormatLite::WIRETYPE_FIXED32:
|
|
2877
|
+
WireFormatLite::WriteFixed32(1, *map.GetKey<uint32_t>(node),
|
|
2878
|
+
&coded_output);
|
|
2879
|
+
break;
|
|
2880
|
+
case WireFormatLite::WIRETYPE_FIXED64:
|
|
2881
|
+
WireFormatLite::WriteFixed64(1, *map.GetKey<uint64_t>(node),
|
|
2882
|
+
&coded_output);
|
|
2883
|
+
break;
|
|
2884
|
+
case WireFormatLite::WIRETYPE_LENGTH_DELIMITED:
|
|
2885
|
+
// We should never have a message here. They can only be values maps.
|
|
2886
|
+
WireFormatLite::WriteString(1, *map.GetKey<std::string>(node),
|
|
2887
|
+
&coded_output);
|
|
2888
|
+
break;
|
|
2889
|
+
default:
|
|
2890
|
+
Unreachable();
|
|
2891
|
+
}
|
|
2892
|
+
}
|
|
2893
|
+
|
|
2894
|
+
void TcParser::WriteMapEntryAsUnknown(MessageLite* msg,
|
|
2895
|
+
const TcParseTableBase* table,
|
|
2896
|
+
UntypedMapBase& map, Arena* arena,
|
|
2897
|
+
uint32_t tag, NodeBase* node,
|
|
2898
|
+
MapAuxInfo map_info) {
|
|
2899
|
+
ABSL_DCHECK_EQ(arena, map.arena());
|
|
2900
|
+
|
|
2901
|
+
std::string serialized;
|
|
2902
|
+
{
|
|
2903
|
+
io::StringOutputStream string_output(&serialized);
|
|
2904
|
+
io::CodedOutputStream coded_output(&string_output);
|
|
2905
|
+
SerializeMapKey(map, node, map_info.key_type_card, coded_output);
|
|
2906
|
+
// The mapped_type is always an enum here.
|
|
2907
|
+
ABSL_DCHECK(map_info.value_is_validated_enum);
|
|
2908
|
+
WireFormatLite::WriteInt32(2, *map.GetValue<int32_t>(node), &coded_output);
|
|
2909
|
+
}
|
|
2910
|
+
GetUnknownFieldOps(table).write_length_delimited(msg, tag >> 3, serialized);
|
|
2911
|
+
|
|
2912
|
+
if (arena == nullptr) {
|
|
2913
|
+
map.DeleteNode(node);
|
|
2914
|
+
}
|
|
2915
|
+
}
|
|
2916
|
+
|
|
2917
|
+
template <typename T>
|
|
2918
|
+
const char* ReadFixed(void* obj, const char* ptr) {
|
|
2919
|
+
auto v = UnalignedLoad<T>(ptr);
|
|
2920
|
+
ptr += sizeof(v);
|
|
2921
|
+
memcpy(obj, &v, sizeof(v));
|
|
2922
|
+
return ptr;
|
|
2923
|
+
}
|
|
2924
|
+
|
|
2925
|
+
const char* TcParser::ParseOneMapEntry(
|
|
2926
|
+
NodeBase* node, const char* ptr, ParseContext* ctx,
|
|
2927
|
+
const TcParseTableBase::FieldAux* aux, const TcParseTableBase* table,
|
|
2928
|
+
const TcParseTableBase::FieldEntry& entry, UntypedMapBase& map) {
|
|
2929
|
+
using WFL = WireFormatLite;
|
|
2930
|
+
|
|
2931
|
+
const auto map_info = aux[0].map_info;
|
|
2932
|
+
const uint8_t key_tag = map_info.key_type_card.tag();
|
|
2933
|
+
const uint8_t value_tag = map_info.value_type_card.tag();
|
|
2934
|
+
|
|
2935
|
+
while (!ctx->Done(&ptr)) {
|
|
2936
|
+
uint32_t inner_tag = ptr[0];
|
|
2937
|
+
|
|
2938
|
+
if (ABSL_PREDICT_FALSE(inner_tag != key_tag && inner_tag != value_tag)) {
|
|
2939
|
+
// Do a full parse and check again in case the tag has non-canonical
|
|
2940
|
+
// encoding.
|
|
2941
|
+
ptr = ReadTag(ptr, &inner_tag);
|
|
2942
|
+
if (ABSL_PREDICT_FALSE(inner_tag != key_tag && inner_tag != value_tag)) {
|
|
2943
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) return nullptr;
|
|
2944
|
+
|
|
2945
|
+
if (inner_tag == 0 || (inner_tag & 7) == WFL::WIRETYPE_END_GROUP) {
|
|
2946
|
+
ctx->SetLastTag(inner_tag);
|
|
2947
|
+
break;
|
|
2948
|
+
}
|
|
2949
|
+
|
|
2950
|
+
ptr = UnknownFieldParse(inner_tag, nullptr, ptr, ctx);
|
|
2951
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) return nullptr;
|
|
2952
|
+
continue;
|
|
2953
|
+
}
|
|
2954
|
+
} else {
|
|
2955
|
+
++ptr;
|
|
2956
|
+
}
|
|
2957
|
+
|
|
2958
|
+
MapTypeCard type_card;
|
|
2959
|
+
UntypedMapBase::TypeKind type_kind;
|
|
2960
|
+
void* obj;
|
|
2961
|
+
if (inner_tag == key_tag) {
|
|
2962
|
+
type_card = map_info.key_type_card;
|
|
2963
|
+
type_kind = map.type_info().key_type_kind();
|
|
2964
|
+
obj = node->GetVoidKey();
|
|
2965
|
+
} else {
|
|
2966
|
+
type_card = map_info.value_type_card;
|
|
2967
|
+
type_kind = map.type_info().value_type_kind();
|
|
2968
|
+
obj = map.GetVoidValue(node);
|
|
2969
|
+
}
|
|
2970
|
+
|
|
2971
|
+
switch (inner_tag & 7) {
|
|
2972
|
+
case WFL::WIRETYPE_VARINT:
|
|
2973
|
+
uint64_t tmp;
|
|
2974
|
+
ptr = ParseVarint(ptr, &tmp);
|
|
2975
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) return nullptr;
|
|
2976
|
+
switch (type_kind) {
|
|
2977
|
+
case UntypedMapBase::TypeKind::kBool:
|
|
2978
|
+
*reinterpret_cast<bool*>(obj) = static_cast<bool>(tmp);
|
|
2979
|
+
continue;
|
|
2980
|
+
case UntypedMapBase::TypeKind::kU32: {
|
|
2981
|
+
uint32_t v = static_cast<uint32_t>(tmp);
|
|
2982
|
+
if (type_card.is_zigzag()) v = WFL::ZigZagDecode32(v);
|
|
2983
|
+
memcpy(obj, &v, sizeof(v));
|
|
2984
|
+
continue;
|
|
2985
|
+
}
|
|
2986
|
+
case UntypedMapBase::TypeKind::kU64:
|
|
2987
|
+
if (type_card.is_zigzag()) tmp = WFL::ZigZagDecode64(tmp);
|
|
2988
|
+
memcpy(obj, &tmp, sizeof(tmp));
|
|
2989
|
+
continue;
|
|
2990
|
+
default:
|
|
2991
|
+
Unreachable();
|
|
2992
|
+
}
|
|
2993
|
+
case WFL::WIRETYPE_FIXED32:
|
|
2994
|
+
ptr = ReadFixed<uint32_t>(obj, ptr);
|
|
2995
|
+
continue;
|
|
2996
|
+
case WFL::WIRETYPE_FIXED64:
|
|
2997
|
+
ptr = ReadFixed<uint64_t>(obj, ptr);
|
|
2998
|
+
continue;
|
|
2999
|
+
case WFL::WIRETYPE_LENGTH_DELIMITED:
|
|
3000
|
+
if (type_kind == UntypedMapBase::TypeKind::kString) {
|
|
3001
|
+
const int size = ReadSize(&ptr);
|
|
3002
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) return nullptr;
|
|
3003
|
+
std::string* str = reinterpret_cast<std::string*>(obj);
|
|
3004
|
+
ptr = ctx->ReadString(ptr, size, str);
|
|
3005
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) return nullptr;
|
|
3006
|
+
bool do_utf8_check = map_info.fail_on_utf8_failure;
|
|
3007
|
+
if (type_card.is_utf8() && do_utf8_check &&
|
|
3008
|
+
!utf8_range::IsStructurallyValid(*str)) {
|
|
3009
|
+
PrintUTF8ErrorLog(MessageName(table), FieldName(table, &entry),
|
|
3010
|
+
"parsing", false);
|
|
3011
|
+
if (map_info.fail_on_utf8_failure) {
|
|
3012
|
+
return nullptr;
|
|
3013
|
+
}
|
|
3014
|
+
}
|
|
3015
|
+
continue;
|
|
3016
|
+
} else {
|
|
3017
|
+
ABSL_DCHECK_EQ(static_cast<int>(type_kind),
|
|
3018
|
+
static_cast<int>(UntypedMapBase::TypeKind::kMessage));
|
|
3019
|
+
ABSL_DCHECK_EQ(inner_tag, value_tag);
|
|
3020
|
+
ptr = ctx->ParseLengthDelimitedInlined(ptr, [&](const char* ptr) {
|
|
3021
|
+
return ParseLoop(reinterpret_cast<MessageLite*>(obj), ptr, ctx,
|
|
3022
|
+
aux[1].table_ptr());
|
|
3023
|
+
});
|
|
3024
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) return nullptr;
|
|
3025
|
+
continue;
|
|
3026
|
+
}
|
|
3027
|
+
default:
|
|
3028
|
+
Unreachable();
|
|
3029
|
+
}
|
|
3030
|
+
}
|
|
3031
|
+
return ptr;
|
|
3032
|
+
}
|
|
3033
|
+
|
|
3034
|
+
template <bool is_split>
|
|
3035
|
+
PROTOBUF_NOINLINE const char* TcParser::MpMap(PROTOBUF_TC_PARAM_DECL) {
|
|
3036
|
+
const auto& entry = RefAt<FieldEntry>(table, data.entry_offset());
|
|
3037
|
+
// `aux[0]` points into a MapAuxInfo.
|
|
3038
|
+
// If we have a message mapped_type aux[1] points into a `create_in_arena`.
|
|
3039
|
+
// If we have a validated enum mapped_type aux[1] point into a
|
|
3040
|
+
// `enum_data`.
|
|
3041
|
+
const auto* aux = table->field_aux(&entry);
|
|
3042
|
+
const auto map_info = aux[0].map_info;
|
|
3043
|
+
|
|
3044
|
+
if (ABSL_PREDICT_FALSE(!map_info.is_supported ||
|
|
3045
|
+
(data.tag() & 7) !=
|
|
3046
|
+
WireFormatLite::WIRETYPE_LENGTH_DELIMITED)) {
|
|
3047
|
+
PROTOBUF_MUSTTAIL return MpFallback(PROTOBUF_TC_PARAM_PASS);
|
|
3048
|
+
}
|
|
3049
|
+
|
|
3050
|
+
// When using LITE, the offset points directly into the Map<> object.
|
|
3051
|
+
// Otherwise, it points into a MapField and we must synchronize with
|
|
3052
|
+
// reflection. It is done by calling the MutableMap() virtual function on the
|
|
3053
|
+
// field's base class.
|
|
3054
|
+
void* const base = MaybeGetSplitBase(msg, is_split, table);
|
|
3055
|
+
UntypedMapBase& map =
|
|
3056
|
+
map_info.use_lite
|
|
3057
|
+
? RefAt<UntypedMapBase>(base, entry.offset)
|
|
3058
|
+
: *RefAt<MapFieldBaseForParse>(base, entry.offset).MutableMap();
|
|
3059
|
+
|
|
3060
|
+
SetHasForRepeated(entry, msg);
|
|
3061
|
+
|
|
3062
|
+
const uint32_t saved_tag = data.tag();
|
|
3063
|
+
|
|
3064
|
+
Arena* arena = map.arena();
|
|
3065
|
+
NodeBase* nodes_to_insert = nullptr;
|
|
3066
|
+
// We need to insert in the right order, so we append to the tail of the list.
|
|
3067
|
+
NodeBase** tail = &nodes_to_insert;
|
|
3068
|
+
size_t node_count = 0;
|
|
3069
|
+
|
|
3070
|
+
while (true) {
|
|
3071
|
+
NodeBase* node = map.AllocNode(arena);
|
|
3072
|
+
|
|
3073
|
+
char* const node_end =
|
|
3074
|
+
reinterpret_cast<char*>(node) + map.type_info().node_size;
|
|
3075
|
+
void* const node_key = node->GetVoidKey();
|
|
3076
|
+
|
|
3077
|
+
// Due to node alignment we can guarantee that we have at least 8 writable
|
|
3078
|
+
// bytes from the key position to the end of the node.
|
|
3079
|
+
// We can initialize the first and last 8 bytes, which takes care of all the
|
|
3080
|
+
// scalar value types. This makes the VisitXXX calls below faster because
|
|
3081
|
+
// the switch is much smaller.
|
|
3082
|
+
// Assert this in debug mode, just in case.
|
|
3083
|
+
ABSL_DCHECK_GE(node_end - static_cast<char*>(node_key),
|
|
3084
|
+
static_cast<ptrdiff_t>(sizeof(uint64_t)));
|
|
3085
|
+
memset(node_key, 0, sizeof(uint64_t));
|
|
3086
|
+
memset(node_end - sizeof(uint64_t), 0, sizeof(uint64_t));
|
|
3087
|
+
|
|
3088
|
+
map.VisitKey( //
|
|
3089
|
+
node, absl::Overload{
|
|
3090
|
+
[&](std::string* str) {
|
|
3091
|
+
Arena::CreateInArenaStorage(str, arena);
|
|
3092
|
+
},
|
|
3093
|
+
// Already initialized above. Do nothing here.
|
|
3094
|
+
[](void*) {},
|
|
3095
|
+
});
|
|
3096
|
+
|
|
3097
|
+
map.VisitValue( //
|
|
3098
|
+
node,
|
|
3099
|
+
absl::Overload{
|
|
3100
|
+
[&](std::string* str) { Arena::CreateInArenaStorage(str, arena); },
|
|
3101
|
+
[&](MessageLite* msg) {
|
|
3102
|
+
#ifndef PROTOBUF_MESSAGE_GLOBALS
|
|
3103
|
+
aux[1].table_ptr()->class_data->PlacementNew(msg, arena);
|
|
3104
|
+
#else
|
|
3105
|
+
MessageGlobalsBase::GetClassData(aux[1].message_globals())
|
|
3106
|
+
->PlacementNew(msg, arena);
|
|
3107
|
+
#endif
|
|
3108
|
+
},
|
|
3109
|
+
// Already initialized above. Do nothing here.
|
|
3110
|
+
[](void*) {},
|
|
3111
|
+
});
|
|
3112
|
+
|
|
3113
|
+
ptr = ctx->ParseLengthDelimitedInlined(ptr, [&](const char* ptr) {
|
|
3114
|
+
return ParseOneMapEntry(node, ptr, ctx, aux, table, entry, map);
|
|
3115
|
+
});
|
|
3116
|
+
|
|
3117
|
+
if (ABSL_PREDICT_FALSE(ptr == nullptr)) {
|
|
3118
|
+
if (arena == nullptr) {
|
|
3119
|
+
// Parsing failed. Delete the node that we didn't insert.
|
|
3120
|
+
map.DeleteNode(node);
|
|
3121
|
+
}
|
|
3122
|
+
map.InsertOrReplaceNodes(arena, nodes_to_insert, node_count);
|
|
3123
|
+
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
3124
|
+
}
|
|
3125
|
+
|
|
3126
|
+
if (ABSL_PREDICT_FALSE(
|
|
3127
|
+
map_info.value_is_validated_enum &&
|
|
3128
|
+
!internal::ValidateEnumInlined(*map.GetValue<int32_t>(node),
|
|
3129
|
+
aux[1].enum_data))) {
|
|
3130
|
+
WriteMapEntryAsUnknown(msg, table, map, arena, saved_tag, node, map_info);
|
|
3131
|
+
} else {
|
|
3132
|
+
// Commit the node to the list.
|
|
3133
|
+
node->next = nullptr;
|
|
3134
|
+
*tail = node;
|
|
3135
|
+
tail = &node->next;
|
|
3136
|
+
++node_count;
|
|
3137
|
+
}
|
|
3138
|
+
|
|
3139
|
+
// We use Done instead of DataAvailable to allow collecting as many objects
|
|
3140
|
+
// in `nodes_to_insert` as we can, even if the input is sharded.
|
|
3141
|
+
if (ABSL_PREDICT_FALSE(ctx->Done(&ptr))) {
|
|
3142
|
+
map.InsertOrReplaceNodes(arena, nodes_to_insert, node_count);
|
|
3143
|
+
PROTOBUF_MUSTTAIL return ToParseLoop(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
3144
|
+
}
|
|
3145
|
+
|
|
3146
|
+
uint32_t next_tag;
|
|
3147
|
+
const char* ptr2 = ReadTagInlined(ptr, &next_tag);
|
|
3148
|
+
if (next_tag != saved_tag) break;
|
|
3149
|
+
ptr = ptr2;
|
|
3150
|
+
}
|
|
3151
|
+
|
|
3152
|
+
map.InsertOrReplaceNodes(arena, nodes_to_insert, node_count);
|
|
3153
|
+
PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
3154
|
+
}
|
|
3155
|
+
|
|
3156
|
+
const char* TcParser::MessageSetWireFormatParseLoopLite(
|
|
3157
|
+
PROTOBUF_TC_PARAM_NO_DATA_DECL) {
|
|
3158
|
+
PROTOBUF_MUSTTAIL return MessageSetWireFormatParseLoopImpl<MessageLite>(
|
|
3159
|
+
PROTOBUF_TC_PARAM_NO_DATA_PASS);
|
|
3160
|
+
}
|
|
3161
|
+
|
|
3162
|
+
std::string TypeCardToString(uint16_t type_card) {
|
|
3163
|
+
// In here we convert the runtime value of entry.type_card back into a
|
|
3164
|
+
// sequence of literal enum labels. We use the mnenonic labels for nicer
|
|
3165
|
+
// codegen.
|
|
3166
|
+
namespace fl = internal::field_layout;
|
|
3167
|
+
const int rep_index = (type_card & fl::kRepMask) >> fl::kRepShift;
|
|
3168
|
+
const int tv_index = (type_card & fl::kTvMask) >> fl::kTvShift;
|
|
3169
|
+
|
|
3170
|
+
static constexpr const char* kFieldCardNames[] = {"Singular", "Optional",
|
|
3171
|
+
"Repeated", "Oneof"};
|
|
3172
|
+
static_assert((fl::kFcSingular >> fl::kFcShift) == 0, "");
|
|
3173
|
+
static_assert((fl::kFcOptional >> fl::kFcShift) == 1, "");
|
|
3174
|
+
static_assert((fl::kFcRepeated >> fl::kFcShift) == 2, "");
|
|
3175
|
+
static_assert((fl::kFcOneof >> fl::kFcShift) == 3, "");
|
|
3176
|
+
|
|
3177
|
+
std::string out;
|
|
3178
|
+
|
|
3179
|
+
absl::StrAppend(&out, "::_fl::kFc",
|
|
3180
|
+
kFieldCardNames[(type_card & fl::kFcMask) >> fl::kFcShift]);
|
|
3181
|
+
|
|
3182
|
+
#define PROTOBUF_INTERNAL_TYPE_CARD_CASE(x) \
|
|
3183
|
+
case fl::k##x: \
|
|
3184
|
+
absl::StrAppend(&out, " | ::_fl::k" #x); \
|
|
3185
|
+
break
|
|
3186
|
+
|
|
3187
|
+
switch (type_card & fl::kFkMask) {
|
|
3188
|
+
case fl::kFkString: {
|
|
3189
|
+
switch (type_card & ~fl::kFcMask & ~fl::kRepMask & ~fl::kSplitMask) {
|
|
3190
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Bytes);
|
|
3191
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Utf8String);
|
|
3192
|
+
default:
|
|
3193
|
+
ABSL_LOG(FATAL) << "Unknown type_card: 0x" << type_card;
|
|
3194
|
+
}
|
|
3195
|
+
|
|
3196
|
+
static constexpr const char* kRepNames[] = {
|
|
3197
|
+
"AString", "IString", "Cord", "SPiece", "SString", "MString"};
|
|
3198
|
+
static_assert((fl::kRepAString >> fl::kRepShift) == 0, "");
|
|
3199
|
+
static_assert((fl::kRepIString >> fl::kRepShift) == 1, "");
|
|
3200
|
+
static_assert((fl::kRepCord >> fl::kRepShift) == 2, "");
|
|
3201
|
+
static_assert((fl::kRepSPiece >> fl::kRepShift) == 3, "");
|
|
3202
|
+
static_assert((fl::kRepSString >> fl::kRepShift) == 4, "");
|
|
3203
|
+
static_assert((fl::kRepMString >> fl::kRepShift) == 5, "");
|
|
3204
|
+
|
|
3205
|
+
absl::StrAppend(&out, " | ::_fl::kRep", kRepNames[rep_index]);
|
|
3206
|
+
break;
|
|
3207
|
+
}
|
|
3208
|
+
|
|
3209
|
+
case fl::kFkMessage: {
|
|
3210
|
+
absl::StrAppend(&out, " | ::_fl::kMessage");
|
|
3211
|
+
|
|
3212
|
+
static constexpr const char* kRepNames[] = {nullptr, "Group", "Lazy"};
|
|
3213
|
+
static_assert((fl::kRepGroup >> fl::kRepShift) == 1, "");
|
|
3214
|
+
static_assert((fl::kRepLazy >> fl::kRepShift) == 2, "");
|
|
3215
|
+
|
|
3216
|
+
if (auto* rep = kRepNames[rep_index]) {
|
|
3217
|
+
absl::StrAppend(&out, " | ::_fl::kRep", rep);
|
|
3218
|
+
}
|
|
3219
|
+
|
|
3220
|
+
static constexpr const char* kXFormNames[2][4] = {
|
|
3221
|
+
{nullptr, "Default", "Table", "WeakPtr"}, {nullptr, "Eager", "Lazy"}};
|
|
3222
|
+
|
|
3223
|
+
static_assert((fl::kTvDefault >> fl::kTvShift) == 1, "");
|
|
3224
|
+
static_assert((fl::kTvTable >> fl::kTvShift) == 2, "");
|
|
3225
|
+
static_assert((fl::kTvWeakPtr >> fl::kTvShift) == 3, "");
|
|
3226
|
+
static_assert((fl::kTvEager >> fl::kTvShift) == 1, "");
|
|
3227
|
+
static_assert((fl::kTvLazy >> fl::kTvShift) == 2, "");
|
|
3228
|
+
|
|
3229
|
+
if (auto* xform = kXFormNames[rep_index == 2][tv_index]) {
|
|
3230
|
+
absl::StrAppend(&out, " | ::_fl::kTv", xform);
|
|
3231
|
+
}
|
|
3232
|
+
break;
|
|
3233
|
+
}
|
|
3234
|
+
|
|
3235
|
+
case fl::kFkMap:
|
|
3236
|
+
absl::StrAppend(&out, " | ::_fl::kMap");
|
|
3237
|
+
break;
|
|
3238
|
+
|
|
3239
|
+
case fl::kFkNone:
|
|
3240
|
+
break;
|
|
3241
|
+
|
|
3242
|
+
case fl::kFkVarint:
|
|
3243
|
+
case fl::kFkPackedVarint:
|
|
3244
|
+
case fl::kFkFixed:
|
|
3245
|
+
case fl::kFkPackedFixed: {
|
|
3246
|
+
switch (type_card & ~fl::kFcMask & ~fl::kSplitMask) {
|
|
3247
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Bool);
|
|
3248
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Fixed32);
|
|
3249
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(UInt32);
|
|
3250
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(SFixed32);
|
|
3251
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Int32);
|
|
3252
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(SInt32);
|
|
3253
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Float);
|
|
3254
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Enum);
|
|
3255
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(EnumRange);
|
|
3256
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(OpenEnum);
|
|
3257
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Fixed64);
|
|
3258
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(UInt64);
|
|
3259
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(SFixed64);
|
|
3260
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Int64);
|
|
3261
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(SInt64);
|
|
3262
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(Double);
|
|
3263
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedBool);
|
|
3264
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedFixed32);
|
|
3265
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedUInt32);
|
|
3266
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedSFixed32);
|
|
3267
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedInt32);
|
|
3268
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedSInt32);
|
|
3269
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedFloat);
|
|
3270
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedEnum);
|
|
3271
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedEnumRange);
|
|
3272
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedOpenEnum);
|
|
3273
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedFixed64);
|
|
3274
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedUInt64);
|
|
3275
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedSFixed64);
|
|
3276
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedInt64);
|
|
3277
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedSInt64);
|
|
3278
|
+
PROTOBUF_INTERNAL_TYPE_CARD_CASE(PackedDouble);
|
|
3279
|
+
default:
|
|
3280
|
+
ABSL_LOG(FATAL) << "Unknown type_card: 0x" << type_card;
|
|
3281
|
+
}
|
|
3282
|
+
}
|
|
3283
|
+
}
|
|
3284
|
+
|
|
3285
|
+
if (type_card & fl::kSplitMask) {
|
|
3286
|
+
absl::StrAppend(&out, " | ::_fl::kSplitTrue");
|
|
3287
|
+
}
|
|
3288
|
+
|
|
3289
|
+
#undef PROTOBUF_INTERNAL_TYPE_CARD_CASE
|
|
3290
|
+
|
|
3291
|
+
return out;
|
|
3292
|
+
}
|
|
3293
|
+
|
|
3294
|
+
const char* TcParser::DiscardEverythingFallback(PROTOBUF_TC_PARAM_DECL) {
|
|
3295
|
+
SyncHasbits(msg, hasbits, table);
|
|
3296
|
+
uint32_t tag = data.tag();
|
|
3297
|
+
if ((tag & 7) == WireFormatLite::WIRETYPE_END_GROUP || tag == 0) {
|
|
3298
|
+
ctx->SetLastTag(tag);
|
|
3299
|
+
return ptr;
|
|
3300
|
+
}
|
|
3301
|
+
return UnknownFieldParse(tag, nullptr, ptr, ctx);
|
|
3302
|
+
}
|
|
3303
|
+
|
|
3304
|
+
} // namespace internal
|
|
3305
|
+
} // namespace protobuf
|
|
3306
|
+
} // namespace google
|
|
3307
|
+
|
|
3308
|
+
#include "google/protobuf/port_undef.inc"
|