summaryrefslogtreecommitdiff
path: root/Lisp/libobjcl.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2008-02-02 23:49:57 +0100
committerMatthias Benkard <code@mail.matthias.benkard.de>2008-02-02 23:49:57 +0100
commit628a01f38931b5cd3b3c1ede19e8b0b5678bf453 (patch)
treeb51002ff91016a5ec9d276c78c27f649f4d9776f /Lisp/libobjcl.lisp
parent3d0e2eda9285b91a998b86cb72c806c2aa5d789e (diff)
Introduce new metaclass OBJECTIVE-C-META-CLASS.
darcs-hash:3d9bf7fb5b37a4089ae3d85493612c6e6abc4469
Diffstat (limited to 'Lisp/libobjcl.lisp')
-rw-r--r--Lisp/libobjcl.lisp19
1 files changed, 10 insertions, 9 deletions
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)