;; generated automatically.  DO NOT EDIT
#!no-fold-case
(define-module gauche.parameter (export <parameter> make-parameter parameterize parameter-pre-observers parameter-post-observers parameter-observer-add! parameter-observer-delete!))
(select-module gauche.parameter)
(dynamic-load "gauche--parameter")
(define-syntax parameterize (syntax-rules () ((_ () . body) (begin . body)) ((_ ((param val)) . body) (let ((P param) (V val) (restarted #f)) (dynamic-wind (^ () (if restarted (set! V (%restore-parameter P V)) (set! V (P V)))) (^ () . body) (^ () (set! restarted #t) (set! V (%restore-parameter P V)))))) ((_ ((param val) ...) . body) (let ((P (list param ...)) (V (list val ...)) (S '()) (restarted #f)) (dynamic-wind (^ () (if restarted (set! S (map (^ (p v) (%restore-parameter p v)) P S)) (set! S (map (^ (p) (p)) P)))) (^ () (unless restarted (set! S (map (^ (p v) (p v)) P V))) . body) (^ () (set! restarted #t) (set! S (map (^ (p v) (%restore-parameter p v)) P S)))))) ((_ . x) (syntax-rules "Invalid parameterize form:" (parameterize . x)))))
