From 628a01f38931b5cd3b3c1ede19e8b0b5678bf453 Mon Sep 17 00:00:00 2001 From: Matthias Benkard Date: Sat, 2 Feb 2008 23:49:57 +0100 Subject: Introduce new metaclass OBJECTIVE-C-META-CLASS. darcs-hash:3d9bf7fb5b37a4089ae3d85493612c6e6abc4469 --- Lisp/libobjcl.lisp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'Lisp/libobjcl.lisp') diff --git a/Lisp/libobjcl.lisp b/Lisp/libobjcl.lisp index dd4ec88..40c41ec 100644 --- a/Lisp/libobjcl.lisp +++ b/Lisp/libobjcl.lisp @@ -250,14 +250,16 @@ conventional case for namespace identifiers in Objective-C." nil)))) -(defun find-objc-meta-class-by-name (class-name) - (let ((class-ptr (%objcl-find-meta-class class-name))) +(defun find-objc-meta-class-by-name (class-name-string) + (let ((class-ptr (%objcl-find-meta-class class-name-string))) (if (objc-pointer-null class-ptr) nil - #-(or t openmcl) (make-pointer-wrapper 'objc-meta-class :pointer class-ptr) - #+(and nil openmcl) (change-class (make-pointer-wrapper 'c-pointer-wrapper - :pointer value) - 'objc-meta-class)))) + (let ((class-name (objc-meta-class-name->symbol class-name-string))) + (or (find-class class-name nil) + (c2mop:ensure-class class-name + :metaclass 'objective-c-meta-class + :pointer class-ptr)))))) + (defun objc-pointer-null (pointer) (or (cffi:null-pointer-p pointer) @@ -569,9 +571,8 @@ separating parts by hyphens works nicely in all of the `:INVERT`, (%objcl-class-name (%objcl-object-get-class (pointer-to obj))))) (defun object-get-meta-class (obj) - (make-pointer-wrapper 'objc-meta-class - :pointer (%objcl-object-get-meta-class (pointer-to obj)) - :meta-class-for-class (object-get-class obj))) + (find-objc-meta-class-by-name + (%objcl-class-name (%objcl-object-get-class (pointer-to obj))))) (defun objc-class-of (obj) (cond ((object-is-meta-class-p obj) -- cgit v1.2.3