Bug fixes
This commit is contained in:
parent
7cba9b5d7e
commit
466dc7d674
|
|
@ -78,7 +78,6 @@
|
||||||
pffi-pointer-deref
|
pffi-pointer-deref
|
||||||
pffi-os-name)
|
pffi-os-name)
|
||||||
(begin
|
(begin
|
||||||
(include "r7rs-pffi/main.scm")
|
|
||||||
(cond-expand
|
(cond-expand
|
||||||
(chicken (include "r7rs-pffi/chicken.scm"))
|
(chicken (include "r7rs-pffi/chicken.scm"))
|
||||||
(cyclone (include "r7rs-pffi/cyclone.scm"))
|
(cyclone (include "r7rs-pffi/cyclone.scm"))
|
||||||
|
|
@ -88,4 +87,6 @@
|
||||||
(racket (include "r7rs-pffi/racket.scm"))
|
(racket (include "r7rs-pffi/racket.scm"))
|
||||||
(sagittarius (include "r7rs-pffi/sagittarius.scm"))
|
(sagittarius (include "r7rs-pffi/sagittarius.scm"))
|
||||||
(stklos (include "r7rs-pffi/stklos.scm"))
|
(stklos (include "r7rs-pffi/stklos.scm"))
|
||||||
(else #t))))
|
(else #t))
|
||||||
|
(include "r7rs-pffi/main.scm")
|
||||||
|
))
|
||||||
|
|
|
||||||
|
|
@ -83,14 +83,19 @@
|
||||||
(looper (+ count 1) (append result (list count)))))))
|
(looper (+ count 1) (append result (list count)))))))
|
||||||
(looper from (list)))))
|
(looper from (list)))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(define-syntax pffi-define-callback
|
(define-syntax pffi-define-callback
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
((_ scheme-name return-type argument-types procedure)
|
((_ scheme-name return-type argument-types procedure)
|
||||||
(define scheme-name
|
(define scheme-name
|
||||||
(let* ((helper-object
|
(let* ((callback-procedure
|
||||||
(object ()
|
(lambda (arg1 . args)
|
||||||
((test1234 a b)
|
(try-catch
|
||||||
1)))
|
(begin
|
||||||
|
(apply procedure (append (list arg1) args)))
|
||||||
|
(ex <java.lang.Throwable>
|
||||||
|
#f))))
|
||||||
(function-descriptor
|
(function-descriptor
|
||||||
(let ((function-descriptor
|
(let ((function-descriptor
|
||||||
(if (equal? return-type 'void)
|
(if (equal? return-type 'void)
|
||||||
|
|
@ -99,40 +104,17 @@
|
||||||
(apply (class-methods java.lang.foreign.FunctionDescriptor 'of)
|
(apply (class-methods java.lang.foreign.FunctionDescriptor 'of)
|
||||||
(pffi-type->native-type return-type)
|
(pffi-type->native-type return-type)
|
||||||
(map pffi-type->native-type argument-types)))))
|
(map pffi-type->native-type argument-types)))))
|
||||||
(write (invoke (class-methods (invoke helper-object 'getClass) 'test1234) 'getName))
|
(write function-descriptor)
|
||||||
|
(newline)
|
||||||
|
(write (invoke function-descriptor 'getClass))
|
||||||
(newline)
|
(newline)
|
||||||
(write function-descriptor)
|
(write function-descriptor)
|
||||||
(newline)
|
(newline)
|
||||||
(write (invoke function-descriptor 'toMethodType))
|
|
||||||
(newline)
|
|
||||||
function-descriptor))
|
function-descriptor))
|
||||||
(method-type
|
;(method-type (invoke function-descriptor 'toMethodType))
|
||||||
(let (
|
(method-type (field callback-procedure 'applyMethodType))
|
||||||
(method-type (invoke function-descriptor 'toMethodType))
|
|
||||||
;(method-type (field procedure 'applyMethodType))
|
|
||||||
)
|
|
||||||
(write method-type)
|
|
||||||
(newline)
|
|
||||||
method-type))
|
|
||||||
(method-handle
|
(method-handle
|
||||||
(let (
|
(let* ((method-handle (field callback-procedure 'applyToConsumerDefault)))
|
||||||
;(method-handle (invoke procedure 'getApplyMethod))
|
|
||||||
(method-handle (invoke (class-methods (invoke helper-object 'getClass) 'test1234) 'getApplyMethod))
|
|
||||||
#;(method-handle (invoke (class-methods (invoke helper-object 'getClass)
|
|
||||||
'test1234) 'getApplyMethod))
|
|
||||||
#;(method-handle (invoke method-handle-lookup
|
|
||||||
'findStatic
|
|
||||||
(invoke helper-object 'getClass)
|
|
||||||
(invoke (class-methods (invoke helper-object 'getClass) 'test1234) 'getName)
|
|
||||||
method-type
|
|
||||||
|
|
||||||
))
|
|
||||||
|
|
||||||
)
|
|
||||||
;(invoke method-handle-lookup 'revealDirect method-handle)
|
|
||||||
(write method-handle)
|
|
||||||
(newline)
|
|
||||||
;(set! method-handle (invoke method-handle 'asType method-type))
|
|
||||||
(write method-handle)
|
(write method-handle)
|
||||||
(newline)
|
(newline)
|
||||||
method-handle)))
|
method-handle)))
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
(define pffi-os-name
|
(define pffi-os-name
|
||||||
(cond-expand
|
(cond-expand
|
||||||
(windows "windows")
|
(windows "windows")
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,8 @@
|
||||||
|
|
||||||
(define pffi-pointer->string
|
(define pffi-pointer->string
|
||||||
(lambda (pointer)
|
(lambda (pointer)
|
||||||
|
(when (pffi-pointer-null? pointer)
|
||||||
|
(error "Can not make string from null pointer" pointer))
|
||||||
(string-copy (cast pointer _pointer _string))))
|
(string-copy (cast pointer _pointer _string))))
|
||||||
|
|
||||||
(define pffi-shared-object-load
|
(define pffi-shared-object-load
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,8 @@
|
||||||
|
|
||||||
(define pffi-pointer?
|
(define pffi-pointer?
|
||||||
(lambda (object)
|
(lambda (object)
|
||||||
(pointer? object)))
|
(or (pointer? object)
|
||||||
|
(string? object))))
|
||||||
|
|
||||||
(define-syntax pffi-define
|
(define-syntax pffi-define
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
|
|
@ -73,17 +74,17 @@
|
||||||
|
|
||||||
(define pffi-pointer-null
|
(define pffi-pointer-null
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(integer->pointer 0)))
|
null-pointer))
|
||||||
|
|
||||||
(define pffi-string->pointer
|
(define pffi-string->pointer
|
||||||
(lambda (string-content)
|
(lambda (string-content)
|
||||||
(write string-content)
|
string-content))
|
||||||
(newline)
|
|
||||||
(bytevector->pointer (string->utf8 string-content))))
|
|
||||||
|
|
||||||
(define pffi-pointer->string
|
(define pffi-pointer->string
|
||||||
(lambda (pointer)
|
(lambda (pointer)
|
||||||
(pointer->string pointer)))
|
(if (string? pointer)
|
||||||
|
pointer
|
||||||
|
(pointer->string pointer))))
|
||||||
|
|
||||||
(define pffi-shared-object-load
|
(define pffi-shared-object-load
|
||||||
(lambda (header path)
|
(lambda (header path)
|
||||||
|
|
|
||||||
8
test.scm
8
test.scm
|
|
@ -349,14 +349,6 @@
|
||||||
|
|
||||||
(pffi-define qsort libc-stdlib 'qsort 'void (list 'pointer 'int 'int 'callback))
|
(pffi-define qsort libc-stdlib 'qsort 'void (list 'pointer 'int 'int 'callback))
|
||||||
|
|
||||||
(define test1234
|
|
||||||
(lambda (pointer-a pointer-b)
|
|
||||||
(let ((a (pffi-pointer-get pointer-a 'int 0))
|
|
||||||
(b (pffi-pointer-get pointer-b 'int 0)))
|
|
||||||
(cond ((> a b) 1)
|
|
||||||
((= a b) 0)
|
|
||||||
((< a b) -1)))))
|
|
||||||
|
|
||||||
(pffi-define-callback compare
|
(pffi-define-callback compare
|
||||||
'int
|
'int
|
||||||
(list 'pointer 'pointer)
|
(list 'pointer 'pointer)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue