SML# Document Version 3.7.1
26.36 PRIM_IO
Provide low-level IO primitives.
signature PRIM_IO = sig type array type array_slice type elem eqtype pos datatype reader = RD of {name : string, chunkSize : int, readVec : (int -> vector) option, readArr : (array_slice -> int) option, readVecNB : (int -> vector option) option, readArrNB : (array_slice -> int option) option, block : (unit -> unit) option, canInput : (unit -> bool) option, avail : unit -> int option, getPos : (unit -> pos) option, setPos : (pos -> unit) option, endPos : (unit -> pos) option, verifyPos : (unit -> pos) option, close : unit -> unit, ioDesc : OS.IO.iodesc option} type vector type vector_slice datatype writer = WR of {name : string, chunkSize : int, writeVec : (vector_slice -> int) option, writeArr : (array_slice -> int) option, writeVecNB : (vector_slice -> int option) option, writeArrNB : (array_slice -> int option) option, block : (unit -> unit) option, canOutput : (unit -> bool) option, getPos : (unit -> pos) option, setPos : (pos -> unit) option, endPos : (unit -> pos) option, verifyPos : (unit -> pos) option, close : unit -> unit, ioDesc : OS.IO.iodesc option} val augmentReader : reader -> reader val augmentWriter : writer -> writer val compare : pos * pos -> order val nullRd : unit -> reader val nullWr : unit -> writer val openVector : vector -> reader end
Structures that implement the signature
-
•
structure BinPrimIO :> PRIM_IO
where type array = Word8Array.array
where type vector = Word8Vector.vector
where type elem = Word8.word
where type pos = Position.int -
•
structure TextPrimIO :> PRIM_IO
where type array = CharArray.array
where type vector = CharVector.vector
where type elem = Char.char