diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-02-03 09:12:03 +0100 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2008-02-03 09:12:03 +0100 |
commit | afc1b0855e777332ff9331c70dad9d22b9d4ebfc (patch) | |
tree | 234958c12740a7673bc21995e2ab09cabb413d2e /Lisp | |
parent | 5c746b80b1daa4b5ab8b57346bda535ebca72b63 (diff) |
Make selectors funcallable.
darcs-hash:cf005558542aa4148fe2e94a113c0eac682d3cac
Diffstat (limited to 'Lisp')
-rw-r--r-- | Lisp/data-types.lisp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/Lisp/data-types.lisp b/Lisp/data-types.lisp index 0b5865d..ba98fc3 100644 --- a/Lisp/data-types.lisp +++ b/Lisp/data-types.lisp @@ -38,7 +38,8 @@ :initform (cffi:null-pointer)))) -(defclass selector (c-pointer-wrapper) () +(defclass selector (c2mop:funcallable-standard-object c-pointer-wrapper) () + (:metaclass c2mop:funcallable-standard-class) (:documentation "An Objective-C method selector. ## Description: @@ -55,6 +56,18 @@ Use __find-selector__ instead. __find-selector__")) +(defmethod shared-initialize :after ((selector selector) + slot-names + &rest initargs + &key + &allow-other-keys) + (declare (ignore slot-names initargs)) + (c2mop:set-funcallable-instance-function + selector + #'(lambda (receiver &rest args) + (apply #'invoke-by-name receiver selector args)))) + + (defclass id (c-pointer-wrapper) () (:documentation "An instance of an Objective-C class. |