forge: forge code variant: anonymous code, usable as XT
This commit is contained in:
parent
b88ef658ee
commit
aa953a7b10
2 changed files with 24 additions and 8 deletions
|
@ -55,7 +55,7 @@ func reg(f FE, _ XT) {
|
|||
|
||||
func create(f FE, xt XT) {
|
||||
name := f.Pop().(string)
|
||||
does := forge.FCode("", f.Pop().(FPtr))
|
||||
does := forge.AnonCode(f.Pop().(FPtr))
|
||||
f.Push(forge.Register(f.Voc(),
|
||||
forge.GoFunc(name, func(f FE, xt XT) {
|
||||
f.Push(forge.Register(f.Voc(),
|
||||
|
|
|
@ -86,25 +86,41 @@ func (it *gofunc) Code() fptr {
|
|||
return nil
|
||||
}
|
||||
|
||||
// fcode: with forge code
|
||||
// acode (anonymous code), fcode: forge code
|
||||
|
||||
type fcode struct {
|
||||
name
|
||||
type acode struct {
|
||||
code fptr
|
||||
}
|
||||
|
||||
func FCode(n string, c fptr) XT {
|
||||
return &fcode{name(n), c}
|
||||
func AnonCode(c fptr) XT {
|
||||
return &acode{c}
|
||||
}
|
||||
|
||||
func (it *fcode) Fct() Callable {
|
||||
func (it *acode) Name() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (it *acode) Fct() Callable {
|
||||
return doFCode
|
||||
}
|
||||
|
||||
func (it *fcode) Code() fptr {
|
||||
func (it *acode) Code() fptr {
|
||||
return it.code
|
||||
}
|
||||
|
||||
type fcode struct {
|
||||
name
|
||||
acode
|
||||
}
|
||||
|
||||
func FCode(n string, c fptr) XT {
|
||||
return &fcode{name(n), acode{c}}
|
||||
}
|
||||
|
||||
func (it *fcode) Name() string {
|
||||
return string(it.name)
|
||||
}
|
||||
|
||||
// forgeEnv methods
|
||||
|
||||
func (f *forgeEnv) Code(items ...fitem) fptr {
|
||||
|
|
Loading…
Add table
Reference in a new issue