summaryrefslogtreecommitdiff
path: root/Lisp/utilities.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2007-09-18 02:35:51 +0200
committerMatthias Benkard <code@mail.matthias.benkard.de>2007-09-18 02:35:51 +0200
commit812ce570c5712dcf0006a1bbd88c026b6953d4e0 (patch)
tree732c276f9f8271f3bf1921da008179afde134d61 /Lisp/utilities.lisp
parentc93a74f1befea75be769fb47968e67568139954d (diff)
INVOKE-WITH-CONVERSION: Support arrays, structs, and unions, and convert Lisp objects into Objective-C instances automatically.
darcs-hash:decc92c91c315c1e347b9f5327bfb6e21ccca9a8
Diffstat (limited to 'Lisp/utilities.lisp')
-rw-r--r--Lisp/utilities.lisp16
1 files changed, 9 insertions, 7 deletions
diff --git a/Lisp/utilities.lisp b/Lisp/utilities.lisp
index 710ac94..a81b61c 100644
--- a/Lisp/utilities.lisp
+++ b/Lisp/utilities.lisp
@@ -94,13 +94,15 @@
;;; (@* "Object Representation")
(defmethod print-object ((object id) stream)
- (print-unreadable-object (object stream)
- (with-slots (pointer) object
- (format stream "~A `~A' {~X}"
- (objcl-class-name (primitive-invoke object "class" 'id))
- (primitive-invoke (primitive-invoke object "description" 'id)
- "UTF8String" :string)
- (cffi:pointer-address pointer)))))
+ (with-slots (pointer) object
+ (if (cffi:pointer-eq pointer (pointer-to +nil+))
+ (format stream "#.~S" '+nil+)
+ (print-unreadable-object (object stream)
+ (format stream "~A `~A' {~X}"
+ (objcl-class-name (primitive-invoke object "class" 'id))
+ (primitive-invoke (primitive-invoke object "description" 'id)
+ "UTF8String" :string)
+ (cffi:pointer-address pointer))))))
(defmethod print-object ((class objc-class) stream)