Added string->bytevector and bytevector->string as per bug 245983.

This commit is contained in:
Abdulaziz Ghuloum 2008-07-07 01:11:36 -07:00
parent 8423610f45
commit f6957b91c2
3 changed files with 30 additions and 7 deletions

View File

@ -4,7 +4,7 @@
angle make-polar
bitwise-copy-bit-field bitwise-reverse-bit-field
bitwise-rotate-bit-field bitwise-if fxreverse-bit-field
fxrotate-bit-field bytevector->string string->bytevector
fxrotate-bit-field
make-custom-binary-input/output-port
make-custom-textual-input/output-port
open-file-input/output-port output-port-buffer-mode
@ -20,7 +20,7 @@
angle make-polar
bitwise-copy-bit-field bitwise-reverse-bit-field
bitwise-rotate-bit-field bitwise-if fxreverse-bit-field
fxrotate-bit-field bytevector->string string->bytevector
fxrotate-bit-field
make-custom-binary-input/output-port
make-custom-textual-input/output-port
open-file-input/output-port output-port-buffer-mode
@ -56,7 +56,6 @@
(not-yet
;;; should be implemented
bytevector->string string->bytevector
string-downcase string-titlecase string-upcase
angle make-polar
bitwise-if

View File

@ -16,9 +16,11 @@
(library (ikarus transcoders)
(export string->utf8 utf8->string string->utf16 string->utf32
utf16->string utf32->string)
utf16->string utf32->string string->bytevector
bytevector->string)
(import (except (ikarus) string->utf8 utf8->string string->utf16
utf16->string string->utf32 utf32->string)
utf16->string string->utf32 utf32->string
string->bytevector bytevector->string)
(ikarus system $strings)
(ikarus system $bytevectors)
(ikarus system $fx)
@ -584,4 +586,26 @@
[(bv endianness em?)
($utf32->string bv endianness em?)])))
(define (bytevector->string bv t)
(define who 'bytevector->string)
(unless (bytevector? bv)
(die who "not a bytevector" bv))
(unless (transcoder? t)
(die who "not a transcoder" t))
(call-with-port (open-bytevector-input-port bv t)
(lambda (tcip)
(let ([r (get-string-all tcip)])
(if (eof-object? r) "" r)))))
(define (string->bytevector str t)
(define who 'string->bytevector)
(unless (string? str)
(die who "not a string" str))
(unless (transcoder? t)
(die who "not a transcoder" t))
(call-with-bytevector-output-port
(lambda (tcop)
(put-string tcop str))
t))
)

View File

@ -1 +1 @@
1530
1531