summaryrefslogtreecommitdiff
path: root/Lisp/method-invocation.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2007-09-17 23:29:48 +0200
committerMatthias Benkard <code@mail.matthias.benkard.de>2007-09-17 23:29:48 +0200
commit909b52ce5a0c7a9beca639b830f5f57380af64ff (patch)
tree192c61d1e0a02c11f0586b79514ce2bcbf4948f9 /Lisp/method-invocation.lisp
parenta49631ce9185a362f48bb31578287fbe705f9ee6 (diff)
LOW-LEVEL-INVOKE: Support selectors as arguments.
darcs-hash:0dc99e4177c665793fe10972f86d6f5f1507c742
Diffstat (limited to 'Lisp/method-invocation.lisp')
-rw-r--r--Lisp/method-invocation.lisp5
1 files changed, 4 insertions, 1 deletions
diff --git a/Lisp/method-invocation.lisp b/Lisp/method-invocation.lisp
index d851f63..40d1d5d 100644
--- a/Lisp/method-invocation.lisp
+++ b/Lisp/method-invocation.lisp
@@ -303,7 +303,7 @@ Returns: *result* --- the return value of the method invocation.
(defun typespec->c-type (typespec)
(case (car typespec)
- ((:pointer struct union id objc-class exception array) :pointer)
+ ((:pointer struct union id objc-class exception array selector) :pointer)
((:string) :string)
(otherwise (car typespec))))
@@ -345,6 +345,9 @@ Returns: *result* --- the return value of the method invocation.
(setf (argref :pointer i) arg))
((id objc-class exception)
(setf (argref :pointer i) (pointer-to arg)))
+ ((selector)
+ (ctypecase arg
+ (selector (setf (argref :pointer i) (pointer-to arg)))))
(:string
(setf (argref :string i)
(alloc-string-and-register arg)))