RosettaCodeData/Task/Use-another-language-to-call-a-function/TXR/use-another-language-to-call-a-function-3.txr
2023-07-01 13:44:08 -04:00

14 lines
532 B
Text

(with-dyn-lib "./query.so"
(deffi query "query" void (closure)))
(deffi-cb query-cb int ((carray char) (ptr (array 1 size-t))))
(query (query-cb (lambda (buf sizeptr)
(symacrolet ((size [sizeptr 0]))
(let* ((s "Here am I")
(l (length s)))
(cond
((> l size) 0)
(t (carray-set-length buf size)
(carray-put buf s)
(set size l))))))))