Progress with Gauche
This commit is contained in:
parent
8ccfc69395
commit
872ce5d897
|
|
@ -195,14 +195,24 @@
|
||||||
(let ((c-function (dlsym shared-object c-name))
|
(let ((c-function (dlsym shared-object c-name))
|
||||||
(maybe-dlerror (dlerror)))
|
(maybe-dlerror (dlerror)))
|
||||||
(lambda arguments
|
(lambda arguments
|
||||||
|
(display "Calling: ")
|
||||||
|
(write c-name)
|
||||||
|
(newline)
|
||||||
(let ((return-pointer (internal-ffi-call (length argument-types)
|
(let ((return-pointer (internal-ffi-call (length argument-types)
|
||||||
(type->libffi-type-number return-type)
|
(type->libffi-type-number return-type)
|
||||||
(map type->libffi-type-number argument-types)
|
(map type->libffi-type-number argument-types)
|
||||||
c-function
|
c-function
|
||||||
(size-of-type return-type)
|
(size-of-type return-type)
|
||||||
arguments)))
|
arguments)))
|
||||||
(cond #;((equal? return-type 'pointer) return-pointer)
|
(cond ((equal? return-type 'pointer)
|
||||||
|
(display "SCM return value: ")
|
||||||
|
(write return-pointer)
|
||||||
|
(newline)
|
||||||
|
return-pointer)
|
||||||
((not (equal? return-type 'void))
|
((not (equal? return-type 'void))
|
||||||
|
(display "SCM return value: ")
|
||||||
|
(write (pointer-get return-pointer return-type 0))
|
||||||
|
(newline)
|
||||||
(pointer-get return-pointer return-type 0))))))))
|
(pointer-get return-pointer return-type 0))))))))
|
||||||
|
|
||||||
(define-syntax define-c-procedure
|
(define-syntax define-c-procedure
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue