summaryrefslogtreecommitdiff
path: root/modules/language/python/dict.scm
diff options
context:
space:
mode:
authorStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-04-25 20:00:41 +0200
committerStefan Israelsson Tampe <stefan.itampe@gmail.com>2018-04-25 20:00:41 +0200
commit1b2144cfb35202c05f39f279198a6ad90748be23 (patch)
tree405845e063b778e7b05077dbc66cbc318c5e0c0c /modules/language/python/dict.scm
parent70e3ba150960fdbd46c69e00ef6f7437f99966c8 (diff)
improvements
Diffstat (limited to 'modules/language/python/dict.scm')
-rw-r--r--modules/language/python/dict.scm26
1 files changed, 25 insertions, 1 deletions
diff --git a/modules/language/python/dict.scm b/modules/language/python/dict.scm
index f76e2ad..0e130d0 100644
--- a/modules/language/python/dict.scm
+++ b/modules/language/python/dict.scm
@@ -123,7 +123,7 @@
0 o))
(define-method (py-hash (o <py-hashtable>))
- (slot-ref o 'h))
+ (slot-ref o 'hash))
(define-method (len (o <hashtable>))
(hash-fold (lambda (k v s) (+ s 1)) 0 o))
@@ -543,7 +543,31 @@
(define-method (in key (o <py-hashtable>))
(py-has_key o key))
+
+(define <dict> `(,<py-hashtable> . _))
+(define dict-set! (resolve-method-g pylist-set! <dict>))
+(define dict-ref (resolve-method-g pylist-ref <dict>))
+(define dict-del! (resolve-method-g pylist-delete! <dict>))
+(define dict-pop! (resolve-method-g pylist-pop! <dict>))
+(define dict-clear! (resolve-method-g py-clear <dict>))
+(define dict-get (resolve-method-g py-get <dict>))
+(define dict-len (resolve-method-g len <dict>))
+(define dict-bool (resolve-method-g bool <dict>))
+
+
(define-python-class dict (<py-hashtable>)
+ (define __getitem__ dict-ref)
+ (define __setitem__ dict-set!)
+ (define __delitem__ dict-del!)
+ (define pop dict-pop!)
+ (define clear dict-clear!)
+ (define get dict-get)
+ (define __len__ dict-len)
+ (define __bool__ dict-bool)
+ (define __format___ (lambda x #f))
+ (define __setattr__ (@@ (oop pf-objects) __setattr__))
+ (define __getattribute__ (@@ (oop pf-objects) __getattribute__))
+
(define __init__
(letrec ((__init__
(case-lambda