diff --git a/bytevector-tests.scm b/bytevector-tests.scm new file mode 100644 index 00000000..2ee5f3b9 --- /dev/null +++ b/bytevector-tests.scm @@ -0,0 +1,13 @@ +(import (scheme base) (scheme write)) + +(write (make-bytevector 2 12)) ; =⇒ #u8(12 12) +(write (bytevector 1 3 5 1 3 5)) ; =⇒ #u8(1 3 5 1 3 5) +(write (bytevector)) ;=⇒ #u8() + +(write (bytevector-u8-ref '#u8(1 1 2 3 5 8 13 21) 5)) ;=⇒ 8 +(write + (let ((bv (bytevector 1 2 3 4))) + (bytevector-u8-set! bv 1 3) + bv) +) ;=⇒ #u8(1 3 3 4) + diff --git a/scheme/cyclone/cgen.sld b/scheme/cyclone/cgen.sld index 3949b3ec..9240ae1f 100644 --- a/scheme/cyclone/cgen.sld +++ b/scheme/cyclone/cgen.sld @@ -526,6 +526,9 @@ ((eq? p 'list->string) "Cyc_list2string") ((eq? p 'make-bytevector) "Cyc_make_bytevector") ((eq? p 'bytevector-length) "Cyc_bytevector_length") + ((eq? p 'bytevector) "Cyc_bytevector") + ((eq? p 'bytevector-u8-ref) "Cyc_bytevector_u8_ref") + ((eq? p 'bytevector-u8-set!) "Cyc_bytevector_u8_set") ((eq? p 'make-vector) "Cyc_make_vector") ((eq? p 'list->vector) "Cyc_list2vector") ((eq? p 'vector-length) "Cyc_vector_length") @@ -611,6 +614,9 @@ list->string make-bytevector bytevector-length + bytevector + bytevector-u8-ref + bytevector-u8-set! make-vector list->vector vector-length @@ -663,6 +669,7 @@ ((eq? p 'symbol->string) "object") ((eq? p 'substring) "object") ((eq? p 'make-bytevector) "object") + ;((eq? p 'bytevector) "object") ((eq? p 'make-vector) "object") ((eq? p 'list->string) "object") ((eq? p 'list->vector) "object") @@ -699,6 +706,9 @@ read-char peek-char symbol->string list->string substring string-append string->number make-bytevector + bytevector + bytevector-u8-ref + bytevector-u8-set! make-vector list->vector Cyc-installation-dir)))) ;; Primitive functions that pass a continuation or thread data but have no other arguments @@ -712,6 +722,7 @@ (member exp '(error Cyc-write Cyc-display string->number string-append make-bytevector + bytevector make-vector + - * /))))