Adding bytevector support to srfi-38.

This commit is contained in:
Alex Shinn 2012-11-03 23:35:37 +09:00
parent 83a2de519c
commit 90856b8de2

View file

@ -288,6 +288,21 @@
((#\b) (read-char in) (read-number 2)) ((#\b) (read-char in) (read-number 2))
((#\i) (read-char in) (exact->inexact (read-one))) ((#\i) (read-char in) (exact->inexact (read-one)))
((#\e) (read-char in) (inexact->exact (read-one))) ((#\e) (read-char in) (inexact->exact (read-one)))
((#\u #\v)
(if (eqv? #\v (peek-char in))
(read-char in))
(read-char in)
(if (not (eqv? #\8 (peek-char in)))
(error "invalid syntax #u" (peek-char in)))
(read-char in)
(let ((ls (read-one)))
(if (not (list? ls))
(error "invalid bytevector syntax" ls))
(let* ((len (length ls))
(bv (make-bytevector len)))
(do ((i 0 (+ i 1)) (ls ls (cdr ls)))
((null? ls) bv)
(bytevector-u8-set! bv i (car ls))))))
((#\\) ((#\\)
(read-char in) (read-char in)
(let* ((c1 (read-char in)) (let* ((c1 (read-char in))