summaryrefslogtreecommitdiff
path: root/modules/language/python/dict.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/dict.scm')
-rw-r--r--modules/language/python/dict.scm25
1 files changed, 24 insertions, 1 deletions
diff --git a/modules/language/python/dict.scm b/modules/language/python/dict.scm
index 5442720..b24031b 100644
--- a/modules/language/python/dict.scm
+++ b/modules/language/python/dict.scm
@@ -13,7 +13,7 @@
#:export (make-py-hashtable
py-copy py-fromkeys py-get py-has_key py-items py-iteritems
py-iterkeys py-itervalues py-keys py-values
- py-popitem py-setdefault py-update
+ py-popitem py-setdefault py-update py-clear
))
(define (h x n) (modulo (py-hash x) n))
@@ -52,6 +52,12 @@
(raise KeyError x)
r)))
+(define-method (pylist-delete! (o <hashtable>) k)
+ (pyhash-rem! o k))
+
+(define-method (pylist-delete! (o <py-hashtable>) k)
+ (pyhash-rem! o k))
+
(define-method (py-hash (o <hashtable>))
(hash-fold
(lambda (k v s)
@@ -373,6 +379,16 @@
(<py-hashtable>
(apply update o l)))
+(define-py (py-clear clear o)
+ (<hashtable>
+ (hash-clear! o))
+ (<py-hashtable>
+ (let ((t (slot-ref o 't)))
+ (hash-clear! t)
+ (slot-set! o 'n 0)
+ (slot-set! o 'h H)
+ (values))))
+
#|
'viewitems'
'viewkeys'
@@ -449,3 +465,10 @@
(values k v))
(throw StopIteration))))
+
+(define-method (in key (o <hashtable>))
+ (py-has_key o key))
+
+(define-method (in key (o <py-hashtable>))
+ (py-has_key o key))
+