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

Function ModernValue

common/legacy_value.cc:1030–1102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1028} // namespace common_internal
1029
1030absl::Status ModernValue(google::protobuf::Arena* arena,
1031 google::api::expr::runtime::CelValue legacy_value,
1032 Value& result) {
1033 switch (legacy_value.type()) {
1034 case CelValue::Type::kNullType:
1035 result = NullValue{};
1036 return absl::OkStatus();
1037 case CelValue::Type::kBool:
1038 result = BoolValue{legacy_value.BoolOrDie()};
1039 return absl::OkStatus();
1040 case CelValue::Type::kInt64:
1041 result = IntValue{legacy_value.Int64OrDie()};
1042 return absl::OkStatus();
1043 case CelValue::Type::kUint64:
1044 result = UintValue{legacy_value.Uint64OrDie()};
1045 return absl::OkStatus();
1046 case CelValue::Type::kDouble:
1047 result = DoubleValue{legacy_value.DoubleOrDie()};
1048 return absl::OkStatus();
1049 case CelValue::Type::kString:
1050 result = StringValue(Borrower::Arena(arena),
1051 legacy_value.StringOrDie().value());
1052 return absl::OkStatus();
1053 case CelValue::Type::kBytes:
1054 result =
1055 BytesValue(Borrower::Arena(arena), legacy_value.BytesOrDie().value());
1056 return absl::OkStatus();
1057 case CelValue::Type::kMessage: {
1058 auto message_wrapper = legacy_value.MessageWrapperOrDie();
1059 result = common_internal::LegacyStructValue(
1060 google::protobuf::DownCastMessage<google::protobuf::Message>(
1061 message_wrapper.message_ptr()),
1062 message_wrapper.legacy_type_info());
1063 return absl::OkStatus();
1064 }
1065 case CelValue::Type::kDuration:
1066 result = UnsafeDurationValue(legacy_value.DurationOrDie());
1067 return absl::OkStatus();
1068 case CelValue::Type::kTimestamp:
1069 result = UnsafeTimestampValue(legacy_value.TimestampOrDie());
1070 return absl::OkStatus();
1071 case CelValue::Type::kList:
1072 result =
1073 ListValue(common_internal::LegacyListValue(legacy_value.ListOrDie()));
1074 return absl::OkStatus();
1075 case CelValue::Type::kMap:
1076 result =
1077 MapValue(common_internal::LegacyMapValue(legacy_value.MapOrDie()));
1078 return absl::OkStatus();
1079 case CelValue::Type::kUnknownSet:
1080 result = UnknownValue{*legacy_value.UnknownSetOrDie()};
1081 return absl::OkStatus();
1082 case CelValue::Type::kCelType: {
1083 auto type_name = legacy_value.CelTypeOrDie().value();
1084 if (type_name.empty()) {
1085 return absl::InvalidArgumentError("empty type name in CelValue");
1086 }
1087 result = TypeValue(common_internal::LegacyRuntimeType(type_name));

Callers 12

NextMethod · 0.70
Next1Method · 0.70
Next2Method · 0.70
NextMethod · 0.70
Next1Method · 0.70
Next2Method · 0.70
GetMethod · 0.70
ForEachMethod · 0.70
FindMethod · 0.70
GetFieldByNameMethod · 0.70
ForEachFieldMethod · 0.70
QualifyMethod · 0.70

Calls 15

ArenaFunction · 0.85
UnsafeDurationValueFunction · 0.85
UnsafeTimestampValueFunction · 0.85
LegacyRuntimeTypeFunction · 0.85
typeMethod · 0.80
BoolOrDieMethod · 0.80
Int64OrDieMethod · 0.80
Uint64OrDieMethod · 0.80
DoubleOrDieMethod · 0.80
StringOrDieMethod · 0.80
BytesOrDieMethod · 0.80
message_ptrMethod · 0.80

Tested by

no test coverage detected