[Cffi-devel] Fw: Casting variables and functions

Stelian Ionescu sionescu at cddr.org
Sun Mar 30 14:45:10 UTC 2014


On Sun, 2014-03-30 at 07:18 -0700, Joeish W wrote:
> Thanks for getting back to me., I really appreciate it

> Using coerce  though I'm already casting it to a float on the lisp
> side...I was wondering if I can cast a 4 to a float with CFFI and have
> the output be a 4.0f0 like it works in C...without doing anything on
> the Lisp side

CFFI doesn't do automatic coercions, but you can do it with a custom
type:

(define-foreign-type float+int () ()
  (:actual-type :float)
  (:simple-parser float+int))

(defmethod expand-to-foreign (value (type float+int))
  `(coerce ,value 'float))

(with-foreign-object (val :float)
  (setf (mem-ref val 'float+int) 4)
  (mem-ref val :float))

-- 
Stelian Ionescu a.k.a. fe[nl]ix
Quidquid latine dictum sit, altum videtur.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <https://mailman.common-lisp.net/pipermail/cffi-devel/attachments/20140330/f3def4b7/attachment.sig>


More information about the cffi-devel mailing list