| 451 | } |
| 452 | |
| 453 | absl::Status RegisterDurationFunctions(FunctionRegistry& registry) { |
| 454 | // duration breakdown accessor functions |
| 455 | using DurationAccessorFunction = |
| 456 | UnaryFunctionAdapter<int64_t, absl::Duration>; |
| 457 | CEL_RETURN_IF_ERROR(registry.Register( |
| 458 | DurationAccessorFunction::CreateDescriptor(builtin::kHours, true), |
| 459 | DurationAccessorFunction::WrapFunction( |
| 460 | [](absl::Duration d) -> int64_t { return absl::ToInt64Hours(d); }))); |
| 461 | |
| 462 | CEL_RETURN_IF_ERROR(registry.Register( |
| 463 | DurationAccessorFunction::CreateDescriptor(builtin::kMinutes, true), |
| 464 | DurationAccessorFunction::WrapFunction([](absl::Duration d) -> int64_t { |
| 465 | return absl::ToInt64Minutes(d); |
| 466 | }))); |
| 467 | |
| 468 | CEL_RETURN_IF_ERROR(registry.Register( |
| 469 | DurationAccessorFunction::CreateDescriptor(builtin::kSeconds, true), |
| 470 | DurationAccessorFunction::WrapFunction([](absl::Duration d) -> int64_t { |
| 471 | return absl::ToInt64Seconds(d); |
| 472 | }))); |
| 473 | |
| 474 | return registry.Register( |
| 475 | DurationAccessorFunction::CreateDescriptor(builtin::kMilliseconds, true), |
| 476 | DurationAccessorFunction::WrapFunction([](absl::Duration d) -> int64_t { |
| 477 | constexpr int64_t millis_per_second = 1000L; |
| 478 | return absl::ToInt64Milliseconds(d) % millis_per_second; |
| 479 | })); |
| 480 | } |
| 481 | |
| 482 | } // namespace |
| 483 |
no test coverage detected