From aa8645cdf28eb7b13d2813f5f0fe014df4d7b4b8 Mon Sep 17 00:00:00 2001 From: Matthias Benkard Date: Mon, 24 Mar 2008 13:28:45 +0100 Subject: When receiving a Lisp value wrapper from Objective-C, unwrap it automatically. darcs-hash:f1b183f46c4d97c27121e0ada8614b9e9feb9955 --- Lisp/lisp-value-wrapping.lisp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'Lisp/lisp-value-wrapping.lisp') diff --git a/Lisp/lisp-value-wrapping.lisp b/Lisp/lisp-value-wrapping.lisp index dbc9c6e..1406a95 100644 --- a/Lisp/lisp-value-wrapping.lisp +++ b/Lisp/lisp-value-wrapping.lisp @@ -26,12 +26,6 @@ (find-objc-class "NSDictionary" t)) -(defclass lisp-value-wrapper-mixin () - ((lisp-value :initarg :value - :initform nil - :accessor lisp-value))) - - ;; May usefully override, among others: ;; - description (defclass ns::mlk-lisp-value (ns::ns-object lisp-value-wrapper-mixin) @@ -62,12 +56,14 @@ (defun make-lisp-value (value) ;; FIXME: The following won't work. Make MAKE-INSTANCE more useful... ;(make-instance 'ns::mlk-lisp-value :value value) - (let ((instance (invoke (typecase value + (let* ((*skip-value-wrapper-unwrapping* t) + (instance + (invoke-by-name (typecase value (string (find-class 'ns::mlk-lisp-string)) (vector (find-class 'ns::mlk-lisp-array)) (list (find-class 'ns::mlk-lisp-list)) (t (find-class 'ns::mlk-lisp-value))) - 'new))) + "new"))) (setf (lisp-value instance) value) instance)) -- cgit v1.2.3