diff options
Diffstat (limited to 'modules/language/python/dict.scm')
-rw-r--r-- | modules/language/python/dict.scm | 25 |
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)) + |