3 (defmethod persuade ((type (eql :objc-selector
)) object
)
4 (if (cffi:pointerp object
) (values object
(%sel_getName object
))
5 (error "Cannot persuade object of type ~a into an objc-selector" (type-of object
))))
6 (defmethod persuade ((type (eql :objc-selector
)) (object string
))
7 (values (%sel_getUid object
) object
))
10 (defmethod persuade ((type (eql :objc-class
)) object
)
11 (if (cffi:pointerp object
) (values object
12 (cffi:foreign-slot-value object
'objc_class
'name
))
13 (error "Cannot persuade object of type ~a into an objc-class" (type-of object
))))
14 (defmethod persuade ((type (eql :objc-class
)) (object string
))
15 (values (%objc_getClass object
) object
))
18 (defmethod persuade ((type (eql :objc-object
)) object
)
19 (if (cffi:pointerp object
)
20 (let* ((instance (%instancep object
))
21 (isa-object (if instance
(cffi:foreign-slot-value object
'objc_object
'isa
) object
)))
23 (cffi:foreign-slot-value isa-object
'objc_class
'name
)
25 (error "Cannot persuade object of type ~a into an objc-object" (type-of object
))))
26 (defmethod persuade ((type (eql :objc-object
)) (object string
))
27 (values (%objc_getClass object
) object t
))