mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
Support custom arg types in c-define
This commit is contained in:
parent
fd8cb32e46
commit
ec63593324
2 changed files with 14 additions and 2 deletions
|
@ -190,10 +190,19 @@
|
|||
(arg-syms/unbox
|
||||
(map
|
||||
(lambda (type)
|
||||
(let ((var (mangle (gensym 'arg))))
|
||||
(let ((var (mangle (gensym 'arg)))
|
||||
(arg-cust-type (eval `(with-handler
|
||||
(lambda X #f)
|
||||
(hash-table-ref *foreign-types* (quote ,type))
|
||||
)))
|
||||
)
|
||||
(cons
|
||||
var
|
||||
(scm->c var type)
|
||||
(scm->c
|
||||
var
|
||||
(if arg-cust-type
|
||||
(car arg-cust-type)
|
||||
type))
|
||||
;(string-append "string_str(" var ")")
|
||||
)))
|
||||
arg-types))
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
(define *my-global* #f)
|
||||
|
||||
(c-define-type my-string string)
|
||||
(c-define-type my-integer integer)
|
||||
(c-define-type my-integer-as-string integer string->number number->string)
|
||||
|
||||
|
@ -41,9 +42,11 @@
|
|||
(c-define scm-strlen-str my-integer-as-string "strlen" string)
|
||||
;(c-define scm-strlen "int" "strlen" string)
|
||||
(c-define scm-strlend double "strlen" string)
|
||||
(c-define scm-strlen2 integer "strlen" my-string)
|
||||
|
||||
(test-group "foreign lambda"
|
||||
(test 15 (scm-strlen "testing 1, 2, 3"))
|
||||
(test 15 (scm-strlen2 "testing 1, 2, 3"))
|
||||
(test 15.0 (scm-strlend "testing 1, 2, 3"))
|
||||
(test "15" (scm-strlen-str "testing 1, 2, 3"))
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue