MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / Qualify

Method Qualify

common/legacy_value.cc:993–1026  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

991}
992
993absl::Status LegacyStructValue::Qualify(
994 absl::Span<const SelectQualifier> qualifiers, bool presence_test,
995 const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool,
996 google::protobuf::MessageFactory* absl_nonnull message_factory,
997 google::protobuf::Arena* absl_nonnull arena, Value* absl_nonnull result,
998 int* absl_nonnull count) const {
999 if (ABSL_PREDICT_FALSE(qualifiers.empty())) {
1000 return absl::InvalidArgumentError("invalid select qualifier path.");
1001 }
1002 auto message_wrapper = AsMessageWrapper(message_ptr_, legacy_type_info_);
1003 const auto* access_apis =
1004 message_wrapper.legacy_type_info()->GetAccessApis(message_wrapper);
1005 if (ABSL_PREDICT_FALSE(access_apis == nullptr)) {
1006 absl::string_view field_name = absl::visit(
1007 absl::Overload(
1008 [](const FieldSpecifier& field) -> absl::string_view {
1009 return field.name;
1010 },
1011 [](const AttributeQualifier& field) -> absl::string_view {
1012 return field.GetStringKey().value_or("<invalid field>");
1013 }),
1014 qualifiers.front());
1015 *result = NoSuchFieldError(field_name);
1016 *count = -1;
1017 return absl::OkStatus();
1018 }
1019 CEL_ASSIGN_OR_RETURN(
1020 auto legacy_result,
1021 access_apis->Qualify(qualifiers, message_wrapper, presence_test,
1022 MemoryManager::Pooling(arena)));
1023 CEL_RETURN_IF_ERROR(ModernValue(arena, legacy_result.value, *result));
1024 *count = legacy_result.qualifier_count;
1025 return absl::OkStatus();
1026}
1027
1028} // namespace common_internal
1029

Callers

nothing calls this directly

Calls 7

AsMessageWrapperFunction · 0.85
NoSuchFieldErrorFunction · 0.85
legacy_type_infoMethod · 0.80
GetStringKeyMethod · 0.80
ModernValueFunction · 0.70
emptyMethod · 0.45
GetAccessApisMethod · 0.45

Tested by

no test coverage detected