mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-24 04:25:06 +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
|
(arg-syms/unbox
|
||||||
(map
|
(map
|
||||||
(lambda (type)
|
(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
|
(cons
|
||||||
var
|
var
|
||||||
(scm->c var type)
|
(scm->c
|
||||||
|
var
|
||||||
|
(if arg-cust-type
|
||||||
|
(car arg-cust-type)
|
||||||
|
type))
|
||||||
;(string-append "string_str(" var ")")
|
;(string-append "string_str(" var ")")
|
||||||
)))
|
)))
|
||||||
arg-types))
|
arg-types))
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
(define *my-global* #f)
|
(define *my-global* #f)
|
||||||
|
|
||||||
|
(c-define-type my-string string)
|
||||||
(c-define-type my-integer integer)
|
(c-define-type my-integer integer)
|
||||||
(c-define-type my-integer-as-string integer string->number number->string)
|
(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-str my-integer-as-string "strlen" string)
|
||||||
;(c-define scm-strlen "int" "strlen" string)
|
;(c-define scm-strlen "int" "strlen" string)
|
||||||
(c-define scm-strlend double "strlen" string)
|
(c-define scm-strlend double "strlen" string)
|
||||||
|
(c-define scm-strlen2 integer "strlen" my-string)
|
||||||
|
|
||||||
(test-group "foreign lambda"
|
(test-group "foreign lambda"
|
||||||
(test 15 (scm-strlen "testing 1, 2, 3"))
|
(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.0 (scm-strlend "testing 1, 2, 3"))
|
||||||
(test "15" (scm-strlen-str "testing 1, 2, 3"))
|
(test "15" (scm-strlen-str "testing 1, 2, 3"))
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue