diff --git a/basis/io/encodings/binary/binary.factor b/basis/io/encodings/binary/binary.factor index e54163f632..8c53d36efb 100644 --- a/basis/io/encodings/binary/binary.factor +++ b/basis/io/encodings/binary/binary.factor @@ -4,5 +4,5 @@ USING: io.encodings kernel ; IN: io.encodings.binary SINGLETON: binary -M: binary drop ; -M: binary drop ; +M: binary drop ; inline +M: binary drop ; inline diff --git a/basis/io/ports/ports.factor b/basis/io/ports/ports.factor index eaae1e40a9..55685a0a1d 100644 --- a/basis/io/ports/ports.factor +++ b/basis/io/ports/ports.factor @@ -7,7 +7,7 @@ io.buffers io.encodings io.encodings.ascii io.encodings.binary io.encodings.private io.encodings.utf8 io.timeouts kernel libc locals math math.order namespaces sequences specialized-arrays specialized-arrays.instances.alien.c-types.uchar splitting -strings summary system typed ; +strings summary system typed io.files ; IN: io.ports SYMBOL: default-buffer-size @@ -30,8 +30,7 @@ TUPLE: buffered-port < port { buffer buffer } ; TUPLE: input-port < buffered-port ; INSTANCE: input-port input-stream - -M: input-port stream-element-type drop +byte+ ; inline +INSTANCE: input-port file-reader : ( handle -- input-port ) input-port ; inline @@ -118,6 +117,7 @@ M: input-port stream-read-until ( seps port -- str/f sep/f ) TUPLE: output-port < buffered-port ; INSTANCE: output-port output-stream +INSTANCE: output-port file-writer : ( handle -- output-port ) output-port ; @@ -126,8 +126,6 @@ INSTANCE: output-port output-stream [ nip ] [ buffer>> buffer-capacity <= ] 2bi [ drop ] [ stream-flush ] if ; inline -M: output-port stream-element-type drop +byte+ ; inline - M: output-port stream-write1 dup check-disposed 1 over wait-to-write diff --git a/core/io/files/files.factor b/core/io/files/files.factor index 5248a9437c..d1ff0ffc77 100644 --- a/core/io/files/files.factor +++ b/core/io/files/files.factor @@ -5,6 +5,12 @@ io.backend io.pathnames io.encodings io.files.private alien.strings ; IN: io.files +MIXIN: file-reader +MIXIN: file-writer + +M: file-reader stream-element-type drop +byte+ ; inline +M: file-writer stream-element-type drop +byte+ ; inline + HOOK: (file-reader) io-backend ( path -- stream ) HOOK: (file-writer) io-backend ( path -- stream ) @@ -12,13 +18,13 @@ HOOK: (file-writer) io-backend ( path -- stream ) HOOK: (file-appender) io-backend ( path -- stream ) : ( path encoding -- stream ) - [ normalize-path (file-reader) ] dip ; + [ normalize-path (file-reader) { file-reader } declare ] dip ; inline : ( path encoding -- stream ) - [ normalize-path (file-writer) ] dip ; + [ normalize-path (file-writer) { file-writer } declare ] dip ; inline : ( path encoding -- stream ) - [ normalize-path (file-appender) ] dip ; + [ normalize-path (file-appender) { file-writer } declare ] dip ; inline : file-lines ( path encoding -- seq ) stream-lines ; diff --git a/core/io/streams/c/c.factor b/core/io/streams/c/c.factor index 979d435a45..f05df81cf2 100644 --- a/core/io/streams/c/c.factor +++ b/core/io/streams/c/c.factor @@ -15,11 +15,10 @@ M: c-stream dispose* handle>> fclose ; TUPLE: c-writer < c-stream ; INSTANCE: c-writer output-stream +INSTANCE: c-writer file-writer : ( handle -- stream ) c-writer new-c-stream ; -M: c-writer stream-element-type drop +byte+ ; - M: c-writer stream-write1 dup check-disposed handle>> fputc ; M: c-writer stream-write @@ -30,11 +29,10 @@ M: c-writer stream-flush dup check-disposed handle>> fflush ; TUPLE: c-reader < c-stream ; INSTANCE: c-reader input-stream +INSTANCE: c-reader file-reader : ( handle -- stream ) c-reader new-c-stream ; -M: c-reader stream-element-type drop +byte+ ; - M: c-reader stream-read-unsafe dup check-disposed handle>> fread-unsafe ; M: c-reader stream-read1 dup check-disposed handle>> fgetc ;