mirror of
https://github.com/GayPizzaSpecifications/pork.git
synced 2025-08-03 21:21:33 +00:00
implement java native type support
This commit is contained in:
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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) }
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user