| 1208 | } |
| 1209 | |
| 1210 | absl::StatusOr<google::api::expr::runtime::CelValue> ToLegacyValue( |
| 1211 | google::protobuf::Arena* arena, const Value& value, bool) { |
| 1212 | switch (value.kind()) { |
| 1213 | case ValueKind::kNull: |
| 1214 | return CelValue::CreateNull(); |
| 1215 | case ValueKind::kBool: |
| 1216 | return CelValue::CreateBool(Cast<BoolValue>(value).NativeValue()); |
| 1217 | case ValueKind::kInt: |
| 1218 | return CelValue::CreateInt64(Cast<IntValue>(value).NativeValue()); |
| 1219 | case ValueKind::kUint: |
| 1220 | return CelValue::CreateUint64(Cast<UintValue>(value).NativeValue()); |
| 1221 | case ValueKind::kDouble: |
| 1222 | return CelValue::CreateDouble(Cast<DoubleValue>(value).NativeValue()); |
| 1223 | case ValueKind::kString: |
| 1224 | return CelValue::CreateStringView(common_internal::LegacyStringValue( |
| 1225 | value.GetString(), /*stable=*/false, arena)); |
| 1226 | case ValueKind::kBytes: |
| 1227 | return CelValue::CreateBytesView(common_internal::LegacyBytesValue( |
| 1228 | value.GetBytes(), /*stable=*/false, arena)); |
| 1229 | case ValueKind::kStruct: |
| 1230 | return common_internal::LegacyTrivialStructValue(arena, value); |
| 1231 | case ValueKind::kDuration: |
| 1232 | return CelValue::CreateUncheckedDuration( |
| 1233 | Cast<DurationValue>(value).NativeValue()); |
| 1234 | case ValueKind::kTimestamp: |
| 1235 | return CelValue::CreateTimestamp( |
| 1236 | Cast<TimestampValue>(value).NativeValue()); |
| 1237 | case ValueKind::kList: |
| 1238 | return common_internal::LegacyTrivialListValue(arena, value); |
| 1239 | case ValueKind::kMap: |
| 1240 | return common_internal::LegacyTrivialMapValue(arena, value); |
| 1241 | case ValueKind::kUnknown: |
| 1242 | return CelValue::CreateUnknownSet(google::protobuf::Arena::Create<Unknown>( |
| 1243 | arena, Cast<UnknownValue>(value).NativeValue())); |
| 1244 | case ValueKind::kType: |
| 1245 | return CelValue::CreateCelType( |
| 1246 | CelValue::CelTypeHolder(google::protobuf::Arena::Create<std::string>( |
| 1247 | arena, Cast<TypeValue>(value).NativeValue().name()))); |
| 1248 | case ValueKind::kError: |
| 1249 | return CelValue::CreateError(google::protobuf::Arena::Create<absl::Status>( |
| 1250 | arena, Cast<ErrorValue>(value).NativeValue())); |
| 1251 | default: |
| 1252 | return absl::InvalidArgumentError( |
| 1253 | absl::StrCat("google::api::expr::runtime::CelValue does not support ", |
| 1254 | ValueKindToString(value.kind()))); |
| 1255 | } |
| 1256 | } |
| 1257 | |
| 1258 | Value LegacyValueToModernValueOrDie( |
| 1259 | google::protobuf::Arena* arena, const google::api::expr::runtime::CelValue& value, |
no test coverage detected