diff options
author | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2017-10-01 13:49:42 +0200 |
---|---|---|
committer | Stefan Israelsson Tampe <stefan.itampe@gmail.com> | 2017-10-01 13:49:42 +0200 |
commit | 0c1d43a631486f00ea26cb6eaa685509caf77d50 (patch) | |
tree | a2de1198039059bb91a2f5cfceed40d86136b7b3 /modules/language/python/dict.scm | |
parent | 710573cbdb4365b02563fd1c01e5f7e78a9ed6de (diff) |
generic function addition to property lookup
Diffstat (limited to 'modules/language/python/dict.scm')
-rw-r--r-- | modules/language/python/dict.scm | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/modules/language/python/dict.scm b/modules/language/python/dict.scm index 6c88ee4..5b6567b 100644 --- a/modules/language/python/dict.scm +++ b/modules/language/python/dict.scm @@ -14,7 +14,7 @@ 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-clear - py-hash-ref + py-hash-ref dict pyhash-listing )) (define (h x n) (modulo (py-hash x) n)) @@ -473,3 +473,40 @@ (define-method (in key (o <py-hashtable>)) (py-has_key o key)) +(define-python-class dict (<py-hashtable>) + (define __init__ + (case-lambda + ((self) + (let ((r (make-py-hashtable))) + (slot-set! self 't (slot-ref r 't)) + (slot-set! self 'h (slot-ref r 'h)) + (slot-set! self 'n (slot-ref r 'n)))) + ((self x) + (__init__ self) + (if (is-a? x <py-hashtable>) + (hash-for-each + (lambda (k v) + (pylist-set! self k v)) + (slot-ref x 't))))))) + +(define (pyhash-listing) + (let ((l (to-pylist + (map symbol->string + '(__class__ __cmp__ __contains__ __delattr__ + __delitem__ __doc__ __eq__ __format__ + __ge__ __getattribute__ __getitem__ + __gt__ __hash__ __init__ __iter__ + __le__ __len__ __lt__ __ne__ __new__ + __reduce__ __reduce_ex__ __repr__ + __setattr__ __setitem__ __sizeof__ + __str__ __subclasshook__ + clear copy fromkeys get has_key + items iteritems iterkeys itervalues + keys pop popitem setdefault update + values viewitems viewkeys viewvalues))))) + (pylist-sort! l) + l)) + + +(define-method (py-class (o <hashtable>)) dict) +(define-method (py-class (o <py-hashtable>)) dict) |