The manual says that `define-foreign-type' is "a thin wrapper macro around defclass."
Knowing that, I've been using it as a way to define new classes, like `easy-handle' at section 4.11, but instead of creating a new class and naming a slot `pointer', I'm doing something like:
(define-foreign-type easy-handle (a-parent-foreign-type/class) ((pointer :initform (curl-easy-init))) (:actual-type :pointer) (:simple-parser easy-handle))
It works, be as the manual separate these things, I wonder: Am I using it wrong?
On Mon, Aug 27, 2012 at 10:04 AM, Diogo F. S. Ramos diogofsr@gmail.com wrote:
(define-foreign-type easy-handle (a-parent-foreign-type/class) ((pointer :initform (curl-easy-init))) (:actual-type :pointer) (:simple-parser easy-handle))
It works, be as the manual separate these things, I wonder: Am I using it wrong?
Say you now go ahead and use EASY-HANDLE as follows:
(defcfun foo :void (handle easy-handle))
When FOO is compiled, CFFI will instantiate an EASY-HANDLE and poke it to determine things like the basic C type it translates. Your definition is not adequate because it'll call CURL-EASY-INIT at this point.
HTH,