...
original commit: 50e9029dfd69a183e235ca0bde4945ca292a976e
This commit is contained in:
parent
bc42f68f99
commit
9a9d0eb13f
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user