;; ctls.scm - (c) rohan drape, 2003-2007 (module ctls scheme/base (require (only-in srfi/43 vector-unfold vector-copy) rsc3/rsc3 "ctl.scm") (provide (all-defined-out)) ;; s = socket, d = ctl data, n = number (define-structure ctls s d n) (define (make-ctls* s n) (let ((c (make-ctls s (vector-unfold (lambda (i) (make-ctl* s i)) n) n))) (lambda (i) (ctls-ref c i)))) (define (ctls-ref c i) (let* ((d (ctls-d c)) (n (ctls-n c))) (if (or (< i 0) (>= i n)) (error "ctls-ref: domain error" i n) #f) (vector-ref d i))) (define (ctls-segment c left right) (vector-copy (ctls-d c) left right)) )