summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/txr/stdlib/place.tl12
1 files changed, 12 insertions, 0 deletions
diff --git a/share/txr/stdlib/place.tl b/share/txr/stdlib/place.tl
index 101deb1e..eb827fd4 100644
--- a/share/txr/stdlib/place.tl
+++ b/share/txr/stdlib/place.tl
@@ -561,6 +561,18 @@
^(remhash ,',hash ,',key))))
,body)))
+(defplace (hash-userdata hash) body
+ (getter setter
+ (with-gensyms (hash-sym)
+ ^(slet ((,hash-sym ,hash))
+ (macrolet ((,getter () ^(hash-userdata ,',hash-sym))
+ (,setter (val) ^(set-hash-userdata ,',hash-sym ,val)))
+ ,body))))
+ (ssetter
+ ^(macrolet ((,ssetter (val)
+ ^(set-hash-userdata ,',hash ,val)))
+ ,body)))
+
(defplace (dwim obj-place index : (default nil have-default-p) :env env) body
(getter setter
(with-gensyms (ogetter-sym osetter-sym obj-sym