original commit: 50e9029dfd69a183e235ca0bde4945ca292a976e
This commit is contained in:
Robby Findler 1999-10-25 02:19:03 +00:00
parent bc42f68f99
commit 9a9d0eb13f

View File

@ -14,15 +14,11 @@
[(windows) "mred.pre"]
[else ".mred.prefs"])))
(define-struct callbacks-ht (ht))
(define preferences (make-hash-table))
(define marshall-unmarshall (make-hash-table))
(define callbacks (make-callbacks-ht (make-hash-table)))
(define callbacks (make-hash-table))
(define defaults (make-hash-table))
(printf "hash-tables: ~s~n" (list preferences marshall-unmarshall (callbacks-ht-ht callbacks) defaults))
(define-struct un/marshall (marshall unmarshall))
(define-struct marshalled (data))
(define-struct pref (value))
@ -63,25 +59,22 @@
(define get-callbacks
(lambda (p)
(hash-table-get (callbacks-ht-ht callbacks)
(hash-table-get callbacks
p
(lambda () null))))
(define add-callback
(lambda (p callback)
(printf "added callback (~s) for ~s~n" callback p)
(hash-table-put! (callbacks-ht-ht callbacks) p (append (get-callbacks p) (list callback)))
(hash-table-put! callbacks p (append (get-callbacks p) (list callback)))
(lambda ()
(hash-table-put!
(callbacks-ht-ht callbacks)
callbacks
p
(let loop ([callbacks (get-callbacks p)])
(cond
[(null? callbacks) null]
[else (if (eq? (car callbacks) callback)
(begin
(printf "removed callback (~s) for ~s~n" callback p)
(loop (cdr callbacks)))
(loop (cdr callbacks))
(cons (car callbacks) (loop (cdr callbacks))))]))))))
(define check-callbacks