From: <br...@us...> - 2000-09-08 17:35:11
|
"Nic Ferrier" <nfe...@ta...> writes: > I think it would be better if you use Map as the hashtable object. > Iterator might be easier to map to a list (which would be a better > Scheme interface) than Enumeration. It may be better, but AFAIK it would be the first BRL feature to require JDK 1.2, so I'm somewhat hesitant. If I use the following abstractions, would it cause a problem moving to java.util.Map in the future? (define (brl-hash) (make <java.util.Hashtable>)) (define (brl-hash? obj) (instance? obj <java.util.Dictionary>)) (define (brl-hash-size hh :: <java.util.Dictionary>) (make <integer> (invoke hh 'size))) (define (brl-hash-put! hh :: <java.util.Dictionary> key val) (invoke hh 'put key val)) (define (brl-hash-get hh :: <java.util.Dictionary> key) (let ((result (invoke hh 'get key))) (if (eq? #!null result) #f ; as assoc does result))) (define (brl-hash-remove! hh :: <java.util.Dictionary> key) (invoke hh 'remove key)) (define (brl-hash-keys hh :: <java.util.Dictionary>) (letrec ((enum (lambda (ee :: <java.util.Enumeration>) (if (invoke ee 'hasMoreElements) (let ((nxt (invoke ee 'nextElement))) (cons nxt (enum ee))) '())))) (enum (invoke hh 'keys)))) (define (brl-hash-contains-key? hh :: <java.util.Hashtable> key) (invoke hh 'containsKey key)) -- Bruce R. Lewis http://brl.sourceforge.net/ |