| 246 | } |
| 247 | |
| 248 | absl::StatusOr<cel::expr::Value> ToExprValue( |
| 249 | const Value& value, |
| 250 | const google::protobuf::DescriptorPool* absl_nonnull descriptor_pool, |
| 251 | google::protobuf::MessageFactory* absl_nonnull message_factory, |
| 252 | google::protobuf::Arena* absl_nonnull arena) { |
| 253 | cel::expr::Value result; |
| 254 | switch (value->kind()) { |
| 255 | case ValueKind::kBool: |
| 256 | result.set_bool_value(value.GetBool().NativeValue()); |
| 257 | break; |
| 258 | case ValueKind::kInt: |
| 259 | result.set_int64_value(value.GetInt().NativeValue()); |
| 260 | break; |
| 261 | case ValueKind::kUint: |
| 262 | result.set_uint64_value(value.GetUint().NativeValue()); |
| 263 | break; |
| 264 | case ValueKind::kDouble: |
| 265 | result.set_double_value(value.GetDouble().NativeValue()); |
| 266 | break; |
| 267 | case ValueKind::kString: |
| 268 | result.set_string_value(value.GetString().ToString()); |
| 269 | break; |
| 270 | case ValueKind::kBytes: |
| 271 | result.set_bytes_value(value.GetBytes().ToString()); |
| 272 | break; |
| 273 | case ValueKind::kType: |
| 274 | result.set_type_value(value.GetType().name()); |
| 275 | break; |
| 276 | case ValueKind::kNull: |
| 277 | result.set_null_value(google::protobuf::NullValue::NULL_VALUE); |
| 278 | break; |
| 279 | case ValueKind::kDuration: { |
| 280 | google::protobuf::Duration duration; |
| 281 | CEL_RETURN_IF_ERROR(internal::EncodeDuration( |
| 282 | value.GetDuration().NativeValue(), &duration)); |
| 283 | result.mutable_object_value()->PackFrom(duration); |
| 284 | break; |
| 285 | } |
| 286 | case ValueKind::kTimestamp: { |
| 287 | google::protobuf::Timestamp timestamp; |
| 288 | CEL_RETURN_IF_ERROR( |
| 289 | internal::EncodeTime(value.GetTimestamp().NativeValue(), ×tamp)); |
| 290 | result.mutable_object_value()->PackFrom(timestamp); |
| 291 | break; |
| 292 | } |
| 293 | case ValueKind::kMap: { |
| 294 | CEL_ASSIGN_OR_RETURN( |
| 295 | *result.mutable_map_value(), |
| 296 | MapValueToExpr(value.GetMap(), descriptor_pool, |
| 297 | message_factory, arena)); |
| 298 | break; |
| 299 | } |
| 300 | case ValueKind::kList: { |
| 301 | CEL_ASSIGN_OR_RETURN( |
| 302 | *result.mutable_list_value(), |
| 303 | ListValueToExpr(value.GetList(), descriptor_pool, |
| 304 | message_factory, arena)); |
| 305 | break; |
no test coverage detected