38 lines
850 B
Go
38 lines
850 B
Go
|
// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com).
|
||
|
// All rights reserved.
|
||
|
|
||
|
// context.go
|
||
|
package expr
|
||
|
|
||
|
// ---- Functor interface
|
||
|
type Functor interface {
|
||
|
Invoke(ctx ExprContext, name string, args []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
|
||
|
ReturnType() string
|
||
|
PrepareCall(parentCtx ExprContext, name string, varParams *[]any) (ctx ExprContext, err error)
|
||
|
AllocContext(parentCtx ExprContext) (ctx ExprContext)
|
||
|
}
|