| 2850 | } |
| 2851 | |
| 2852 | inline absl::StatusOr<absl::optional<std::pair<Value, Value>>> |
| 2853 | ValueIterator::Next2(const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool, |
| 2854 | google::protobuf::MessageFactory* absl_nonnull message_factory, |
| 2855 | google::protobuf::Arena* absl_nonnull arena) { |
| 2856 | ABSL_DCHECK(descriptor_pool != nullptr); |
| 2857 | ABSL_DCHECK(message_factory != nullptr); |
| 2858 | ABSL_DCHECK(arena != nullptr); |
| 2859 | |
| 2860 | Value key; |
| 2861 | Value value; |
| 2862 | CEL_ASSIGN_OR_RETURN( |
| 2863 | bool ok, Next2(descriptor_pool, message_factory, arena, &key, &value)); |
| 2864 | if (!ok) { |
| 2865 | return absl::nullopt; |
| 2866 | } |
| 2867 | return std::pair{std::move(key), std::move(value)}; |
| 2868 | } |
| 2869 | |
| 2870 | absl_nonnull std::unique_ptr<ValueIterator> NewEmptyValueIterator(); |
| 2871 | |