40 lines
891 B
Go
40 lines
891 B
Go
// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com).
|
|
// All rights reserved.
|
|
|
|
// expr-function.go
|
|
package expr
|
|
|
|
// ---- Functor interface
|
|
type Functor interface {
|
|
Typer
|
|
InvokeNamed(ctx ExprContext, name string, args map[string]any) (result any, err error)
|
|
SetFunc(info ExprFunc)
|
|
GetFunc() ExprFunc
|
|
GetParams() []ExprFuncParam
|
|
GetDefinitionContext() ExprContext
|
|
}
|
|
|
|
// ---- Function Param Info
|
|
type ExprFuncParam interface {
|
|
Name() string
|
|
Type() string
|
|
IsDefault() bool
|
|
IsOptional() bool
|
|
IsRepeat() bool
|
|
DefaultValue() any
|
|
}
|
|
|
|
// ---- Function Info
|
|
type ExprFunc interface {
|
|
Formatter
|
|
Name() string
|
|
MinArgs() int
|
|
MaxArgs() int
|
|
Functor() Functor
|
|
Params() []ExprFuncParam
|
|
ParamSpec(paramName string) ExprFuncParam
|
|
ReturnType() string
|
|
PrepareCall(name string, actualParams map[string]any) (err error)
|
|
AllocContext(parentCtx ExprContext) (ctx ExprContext)
|
|
}
|