summaryrefslogtreecommitdiff
path: root/Lisp/utilities.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2007-09-14 21:32:59 +0200
committerMatthias Benkard <code@mail.matthias.benkard.de>2007-09-14 21:32:59 +0200
commit213250b363705b9be3acdd90f604169c0e23b355 (patch)
tree1d0d2f50b40ea50b57d15eacc6662a0537251d14 /Lisp/utilities.lisp
parent25cc1a489ff21bedae0a9ebfc9b462113ccc56c7 (diff)
Use PRIMITIVE-INVOKE in memory management and clean the codebase up a bit.
darcs-hash:a0d7f10b0b4e7fe43271fcce37523424f43480da
Diffstat (limited to 'Lisp/utilities.lisp')
-rw-r--r--Lisp/utilities.lisp34
1 files changed, 34 insertions, 0 deletions
diff --git a/Lisp/utilities.lisp b/Lisp/utilities.lisp
index 29efb60..be6f8b4 100644
--- a/Lisp/utilities.lisp
+++ b/Lisp/utilities.lisp
@@ -90,3 +90,37 @@
(defmethod objc-equal ((x string) (y selector))
(equal x (selector-name y)))
+
+
+;;; (@* "Object Representation")
+(defmethod print-object ((object id) stream)
+ (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)
+ (primitive-invoke object "hash" :unsigned-int))))
+
+
+(defmethod print-object ((class objc-class) stream)
+ (print-unreadable-object (class stream)
+ (format stream "~S ~A {~X}"
+ 'objc-class
+ (objcl-class-name class)
+ (primitive-invoke class "hash" :unsigned-int))))
+
+
+(defmethod print-object ((selector selector) stream)
+ (print-unreadable-object (selector stream)
+ (format stream "~S `~A'"
+ 'selector
+ (selector-name selector))))
+
+
+(defmethod print-object ((exception exception) stream)
+ (print-unreadable-object (exception stream)
+ (format stream "~S ~A {~X}"
+ 'exception
+ (primitive-invoke (primitive-invoke exception "name" :id)
+ "UTF8String" :string)
+ (primitive-invoke exception "hash" :unsigned-int))))