removed fasls
[objcffi.git] / designators.lisp
bloba73c8d56ac18fe0833733e3d300b2325989a714f
1 (in-package :objcffi)
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)))
22 (values object
23 (cffi:foreign-slot-value isa-object 'objc_class 'name)
24 instance))
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))