package natives import ( "jinx/pkg/lang/modules/core" "jinx/pkg/lang/vm/executor" ) var Natives = makeNatives( core.Natives, ) func makeNatives(moduleNativesArrays ...[]any) []Native { natives := make([]Native, 0) for _, moduleNatives := range moduleNativesArrays { for _, moduleNativeI := range moduleNatives { moduleNative := moduleNativeI.(moduleNative) natives = append(natives, Native{ Name: moduleNative.Name(), ArgCount: moduleNative.ArgCount(), Fn: moduleNative.Fn(), }) } } return natives } type Native struct { Name string ArgCount int Fn executor.NativeFunc } type moduleNative interface { Name() string ArgCount() int Fn() executor.NativeFunc }