From b7dc7296dbe591acf682609d3ab797b68e261c9b Mon Sep 17 00:00:00 2001 From: Slava Pestov <slava@slava-pestovs-macbook-pro.local> Date: Thu, 6 Nov 2008 13:42:53 -0600 Subject: [PATCH] Implement stream-read on memory-streams. This allows alien>string to work with utf16 encoding --- basis/alien/strings/strings-tests.factor | 6 +++++- basis/io/streams/memory/memory.factor | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/basis/alien/strings/strings-tests.factor b/basis/alien/strings/strings-tests.factor index 484809469f..c1a509041e 100644 --- a/basis/alien/strings/strings-tests.factor +++ b/basis/alien/strings/strings-tests.factor @@ -1,6 +1,6 @@ USING: alien.strings tools.test kernel libc io.encodings.8-bit io.encodings.utf8 io.encodings.utf16 -io.encodings.ascii alien ; +io.encodings.ascii alien io.encodings.string ; IN: alien.strings.tests [ "\u0000ff" ] @@ -28,3 +28,7 @@ unit-test ] unit-test [ f ] [ f utf8 alien>string ] unit-test + +[ "hello" ] [ "hello" utf16 encode utf16 decode ] unit-test + +[ "hello" ] [ "hello" utf16 string>alien utf16 alien>string ] unit-test diff --git a/basis/io/streams/memory/memory.factor b/basis/io/streams/memory/memory.factor index daadbb0e81..20d9f4eb0c 100644 --- a/basis/io/streams/memory/memory.factor +++ b/basis/io/streams/memory/memory.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel accessors alien.accessors math io ; +USING: kernel accessors alien alien.c-types alien.accessors math io ; IN: io.streams.memory TUPLE: memory-stream alien index ; @@ -11,3 +11,9 @@ TUPLE: memory-stream alien index ; M: memory-stream stream-read1 [ [ alien>> ] [ index>> ] bi alien-unsigned-1 ] [ [ 1+ ] change-index drop ] bi ; + +M: memory-stream stream-read + [ + [ index>> ] [ alien>> ] bi <displaced-alien> + swap memory>byte-array + ] [ [ + ] change-index drop ] 2bi ;