diff options
author | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-09-18 02:35:51 +0200 |
---|---|---|
committer | Matthias Benkard <code@mail.matthias.benkard.de> | 2007-09-18 02:35:51 +0200 |
commit | 812ce570c5712dcf0006a1bbd88c026b6953d4e0 (patch) | |
tree | 732c276f9f8271f3bf1921da008179afde134d61 /Lisp/utilities.lisp | |
parent | c93a74f1befea75be769fb47968e67568139954d (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.lisp | 16 |
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) |