Defining list->u8vector (issue #749).

This commit is contained in:
Alex Shinn 2021-06-18 13:04:20 +09:00
parent ead366870b
commit 5207bdfde2
2 changed files with 8 additions and 1 deletions

View file

@ -94,7 +94,13 @@
(define c64vector-length uvector-length) (define c64vector-length uvector-length)
(define c128vector-length uvector-length) (define c128vector-length uvector-length)
(define (list->u1vector ls) (list->uvector SEXP_U1 ls)) (define (list->u1vector ls) (list->uvector SEXP_U1 ls))
(define (list->u8vector ls) (apply u8vector ls)) (define (list->u8vector ls)
(let* ((len (length ls))
(res (make-bytevector len)))
(do ((ls ls (cdr ls))
(i 0 (+ i 1)))
((null? ls) res)
(bytevector-u8-set! res i (car ls)))))
(define (list->s8vector ls) (list->uvector SEXP_S8 ls)) (define (list->s8vector ls) (list->uvector SEXP_S8 ls))
(define (list->u16vector ls) (list->uvector SEXP_U16 ls)) (define (list->u16vector ls) (list->uvector SEXP_U16 ls))
(define (list->s16vector ls) (list->uvector SEXP_S16 ls)) (define (list->s16vector ls) (list->uvector SEXP_S16 ls))

View file

@ -8,6 +8,7 @@
(test-begin "srfi-160: uniform vectors") (test-begin "srfi-160: uniform vectors")
(test-group "uvectors/constructors" (test-group "uvectors/constructors"
(define a2i '#u32(0 1 2 3 4 5 6 7 8)) (define a2i '#u32(0 1 2 3 4 5 6 7 8))
(test '#u8(0 1 2 3 4) (u8vector 0 1 2 3 4))
(test '#u32(0 1 2 3 4) (u32vector 0 1 2 3 4)) (test '#u32(0 1 2 3 4) (u32vector 0 1 2 3 4))
(test '#u32(0 1 2 3 4 5 6 7 8 9) (test '#u32(0 1 2 3 4 5 6 7 8 9)
(u32vector-unfold (lambda (i x) (values x (+ x 1))) 10 0)) (u32vector-unfold (lambda (i x) (values x (+ x 1))) 10 0))