MCPcopy Create free account
hub / github.com/cel-expr/cel-go / SingletonBinaryBinding

Function SingletonBinaryBinding

common/decls/decls.go:509–525  ·  view source on GitHub ↗

SingletonBinaryBinding creates a singleton function definition to be used with all function overloads. Note, this approach works well if operand is expected to have a specific trait which it implements, e.g. traits.ContainerType. Otherwise, prefer per-overload function bindings.

(fn functions.BinaryOp, traits ...int)

Source from the content-addressed store, hash-verified

507// Note, this approach works well if operand is expected to have a specific trait which it implements,
508// e.g. traits.ContainerType. Otherwise, prefer per-overload function bindings.
509func SingletonBinaryBinding(fn functions.BinaryOp, traits ...int) FunctionOpt {
510 trait := 0
511 for _, t := range traits {
512 trait = trait | t
513 }
514 return func(f *FunctionDecl) (*FunctionDecl, error) {
515 if f.singleton != nil {
516 return nil, fmt.Errorf("function already has a singleton binding: %s", f.Name())
517 }
518 f.singleton = &functions.Overload{
519 Operator: f.Name(),
520 Binary: fn,
521 OperandTrait: trait,
522 }
523 return f, nil
524 }
525}
526
527// SingletonFunctionBinding creates a singleton function definition to be used with all function overloads.
528//

Callers 5

SingletonBinaryImplFunction · 0.92
SingletonBinaryBindingFunction · 0.92
initFunction · 0.92
TestFunctionNoOverloadsFunction · 0.70

Calls 1

NameMethod · 0.65

Tested by 2

TestFunctionNoOverloadsFunction · 0.56