mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-15 16:57:35 +02:00
Added read-bytevector
This commit is contained in:
parent
02fcad76f6
commit
e5dca1835f
2 changed files with 22 additions and 2 deletions
|
@ -4,7 +4,7 @@
|
|||
|
||||
Features
|
||||
|
||||
- Added `write-bytevector` from R7RS.
|
||||
- Added `read-bytevector` and `write-bytevector` IO functions from R7RS.
|
||||
|
||||
Bug Fixes
|
||||
|
||||
|
|
|
@ -190,7 +190,7 @@
|
|||
; Possibly missing functions:
|
||||
;
|
||||
; ; following byte vector functions are not implemented yet:
|
||||
; read-bytevector
|
||||
read-bytevector
|
||||
; read-bytevector!
|
||||
write-bytevector
|
||||
;
|
||||
|
@ -713,6 +713,26 @@
|
|||
(if (null? port)
|
||||
(Cyc-display str (current-output-port))
|
||||
(Cyc-display str (car port))))
|
||||
(define (read-bytevector k . _port)
|
||||
(let ((port (if (null? _port)
|
||||
(current-input-port)
|
||||
(car _port))))
|
||||
'test))
|
||||
(define (read-bytevector k . _port)
|
||||
(letrec ((port (if (null? port)
|
||||
(current-input-port)
|
||||
(car _port)))
|
||||
(bv (make-bytevector k))
|
||||
(loop (lambda (n)
|
||||
(let ((b (read-u8 port)))
|
||||
(cond
|
||||
((eof-object? b)
|
||||
(bytevector-copy bv 0 n))
|
||||
((< n k)
|
||||
(bytevector-u8-set! bv n b)
|
||||
(loop (+ n 1)))
|
||||
(else bv))))))
|
||||
(loop 0)))
|
||||
(define (write-bytevector vec . opts)
|
||||
(letrec ((len (bytevector-length vec))
|
||||
(port (if (> (length opts) 0) (car opts) (current-output-port)))
|
||||
|
|
Loading…
Add table
Reference in a new issue