mirror of
https://github.com/GayPizzaSpecifications/pork.git
synced 2025-08-03 05:10:55 +00:00
language: prelude and internal functions, and varargs support
This commit is contained in:
@ -1,11 +1,6 @@
|
||||
package gay.pizza.pork.ffi
|
||||
|
||||
import gay.pizza.pork.ast.CompilationUnit
|
||||
import gay.pizza.pork.ast.DefinitionModifiers
|
||||
import gay.pizza.pork.ast.FunctionDefinition
|
||||
import gay.pizza.pork.ast.Native
|
||||
import gay.pizza.pork.ast.StringLiteral
|
||||
import gay.pizza.pork.ast.Symbol
|
||||
import gay.pizza.pork.ast.*
|
||||
import java.lang.reflect.Method
|
||||
import java.lang.reflect.Modifier
|
||||
import java.lang.reflect.Parameter
|
||||
@ -149,7 +144,12 @@ class JavaAutogen(val javaClass: Class<*>) {
|
||||
FunctionDefinition(
|
||||
modifiers = DefinitionModifiers(true),
|
||||
symbol = Symbol("${prefix}_${name}"),
|
||||
arguments = parameterNames.map { Symbol(it) },
|
||||
arguments = parameterNames.map {
|
||||
ArgumentSpec(
|
||||
symbol = Symbol(it),
|
||||
multiple = false
|
||||
)
|
||||
},
|
||||
native = asNative(functionDefinition),
|
||||
block = null
|
||||
)
|
||||
|
@ -1,12 +1,12 @@
|
||||
package gay.pizza.pork.ffi
|
||||
|
||||
import gay.pizza.pork.evaluator.CallableFunction
|
||||
import gay.pizza.pork.evaluator.NativeFunctionProvider
|
||||
import gay.pizza.pork.evaluator.NativeProvider
|
||||
import gay.pizza.pork.evaluator.None
|
||||
import java.lang.invoke.MethodHandles
|
||||
import java.lang.invoke.MethodType
|
||||
|
||||
class JavaNativeProvider : NativeFunctionProvider {
|
||||
class JavaNativeProvider : NativeProvider {
|
||||
private val lookup = MethodHandles.lookup()
|
||||
|
||||
override fun provideNativeFunction(definition: String): CallableFunction {
|
||||
|
@ -2,9 +2,9 @@ package gay.pizza.pork.ffi
|
||||
|
||||
import com.sun.jna.Function
|
||||
import gay.pizza.pork.evaluator.CallableFunction
|
||||
import gay.pizza.pork.evaluator.NativeFunctionProvider
|
||||
import gay.pizza.pork.evaluator.NativeProvider
|
||||
|
||||
class JnaNativeProvider : NativeFunctionProvider {
|
||||
class JnaNativeProvider : NativeProvider {
|
||||
override fun provideNativeFunction(definition: String): CallableFunction {
|
||||
val functionDefinition = FfiFunctionDefinition.parse(definition)
|
||||
val function = Function.getFunction(functionDefinition.library, functionDefinition.function)
|
||||
|
Reference in New Issue
Block a user