3 (eval-when (:compile-toplevel
:load-toplevel
:execute
)
4 (defvar *replay-map
* nil
))
6 (defun register-replay (name special-handler channel-creator output-fn
)
7 (push (list name special-handler channel-creator output-fn
)
10 (defun set-tune-replay (name tune
)
11 (dolist (replay *replay-map
*)
12 (when (equal name
(car replay
))
13 (setf (tune-replay tune
) name
)))
14 (equal (tune-replay tune
) name
))
16 (defun replay-output-fn (replay tune file
)
17 (do ((list *replay-map
* (cdr list
)))
18 ((equal replay
(caar list
)) (funcall (fourth (car list
)) tune file
))))
20 (defun replay-create-channels (replay)
21 (do ((list *replay-map
* (cdr list
)))
22 ((equal replay
(caar list
)) (funcall (third (car list
))))))
24 (defun replay-special-handler (replay stream channels
)
25 (do ((list *replay-map
* (cdr list
)))
26 ((equal replay
(caar list
)) (funcall (second (car list
))
32 (defun compile-mumble (in-file out-file
)
33 (with-open-file (stream in-file
)
34 (let ((tune (parse-mumble-file stream
)))
35 (replay-output-fn (tune-replay tune
) tune out-file
))))