From 04dda29132b0febf90c1608a468ac04b28e75893 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 6 Jan 2016 23:00:50 -0500 Subject: [PATCH] Experimenting with what an FFI could look like --- scheme/load.sld | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/scheme/load.sld b/scheme/load.sld index 2bea4e00..85d1f9a3 100644 --- a/scheme/load.sld +++ b/scheme/load.sld @@ -1,10 +1,26 @@ (define-library (scheme load) - (export load) + (export + prim-test ;; TODO: This is just temporary, of course + load) (import (scheme base) (scheme eval) (scheme file) (scheme read)) (begin + ;; Experimenting with what an FFI could look like + ;; TODO: also need a way to add #include's, and later on compiler options (may already have that, need to check) + ;; + ;; want the signature to be similar to this: + ;; static void __lambda_0(void *data, int argc, closure _,object k_7322, object arg1_737, object arg2_736) { + ;; lambda portion is computed, so we can't include that. + ;; compiler would need to insert the "static void (lambda)" part + (c-ffi:define prim-test " + (void *data, int argc, closure _, object k, object arg1, object arg2) { + return_closcall1(data, k, arg1); + } + ") + ) + ;; End FFI (define (load filename . env) (let ((exprs (call-with-input-file filename (lambda (port)