implement java native type support

This commit is contained in:
Alex Zenla
2025-07-24 23:16:50 -07:00
parent e86b800a7d
commit 60c7b2d4be
7 changed files with 60 additions and 29 deletions

View File

@ -1,7 +1,9 @@
package gay.pizza.pork.evaluator
import gay.pizza.pork.ast.gen.ArgumentSpec
import gay.pizza.pork.execution.NativeFunction
import gay.pizza.pork.execution.NativeProvider
import gay.pizza.pork.execution.NativeType
class AdaptedNativeProvider(val provider: NativeProvider) : ExpandedNativeProvider {
override fun provideNativeFunction(
@ -12,4 +14,12 @@ class AdaptedNativeProvider(val provider: NativeProvider) : ExpandedNativeProvid
val function = provider.provideNativeFunction(definitions)
return CallableFunction { args, _ -> function.invoke(args) }
}
override fun provideNativeFunction(definitions: List<String>): NativeFunction {
return provider.provideNativeFunction(definitions)
}
override fun provideNativeType(definitions: List<String>): NativeType {
return provider.provideNativeType(definitions)
}
}

View File

@ -1,7 +1,12 @@
package gay.pizza.pork.evaluator
import gay.pizza.pork.ast.gen.ArgumentSpec
import gay.pizza.pork.execution.NativeProvider
interface ExpandedNativeProvider {
fun provideNativeFunction(definitions: List<String>, arguments: List<ArgumentSpec>, inside: SlabContext): CallableFunction
interface ExpandedNativeProvider: NativeProvider {
fun provideNativeFunction(definitions: List<String>, arguments: List<ArgumentSpec>, inside: SlabContext): CallableFunction {
val function = provideNativeFunction(definitions)
return CallableFunction { arguments, _ -> function.invoke(arguments) }
}
}