| 78 | } // namespace |
| 79 | |
| 80 | absl::Status FunctionRegistry::Register( |
| 81 | const cel::FunctionDescriptor& descriptor, |
| 82 | std::unique_ptr<cel::Function> implementation) { |
| 83 | if (DescriptorRegistered(descriptor)) { |
| 84 | return absl::Status( |
| 85 | absl::StatusCode::kAlreadyExists, |
| 86 | "CelFunction with specified parameters already registered"); |
| 87 | } |
| 88 | if (!ValidateNonStrictOverload(descriptor)) { |
| 89 | return absl::Status(absl::StatusCode::kAlreadyExists, |
| 90 | "Only one overload is allowed for non-strict function"); |
| 91 | } |
| 92 | |
| 93 | auto& overloads = functions_[descriptor.name()]; |
| 94 | overloads.static_overloads.push_back( |
| 95 | StaticFunctionEntry(descriptor, std::move(implementation))); |
| 96 | return absl::OkStatus(); |
| 97 | } |
| 98 | |
| 99 | absl::Status FunctionRegistry::RegisterLazyFunction( |
| 100 | const cel::FunctionDescriptor& descriptor) { |