next node: Commands,
prev node: BasicIO,
up to node: Subsystem Streams


BinStream

Binary I/O of (nearly) arbitrary data objects.

Signature of BinStream

List of Import References :
See BOOL
See Char
See Com
See DENOTATION
See File
See Int
See Nat
See Option
See Seq
See Stream
See String
See Void

SIGNATURE BinStream[data]

$Date: 2010-09-30 18:24:17 +0200 (Do, 30. Sep 2010) $ ($Revision: 616 $)

SORT data

IMPORT  Void            ONLY void            
        String          ONLY string        
        Stream          ONLY input output
        Com[void]       ONLY com
        Com[data]       ONLY com
        Com[input]      ONLY com
        Com[output]     ONLY com

Using Directions

Strong typing is violated by functions from this structure. The user is responsible to perform type checks. Reading and writing functions have an additional tag argument, which may be used by the user for type checks.

A tag mismatch error has the format "binary IO tag mismatches, found '%%', expected '&&'". %% is the tag found in the file, && is the tag given in the call of read, both contain also an internal tag.

Written objects must not contain functions, but this is not guaranteed to be checked by implementations.

Opening Binary Streams

Open stream for reading in binary mode

FUN openBin     : denotation -> com[input]

Open stream for writing in binary mode

    createBin   : denotation -> com[output]
    appendBin   : denotation -> com[output]

Writing to binary streams

write(output, tag, data): write data to output, tagging it with tag.

FUN write : output ** denotation ** data -> com[void]

store(file, tag, data): write data to file named file, tagging it with tag.

FUN store: denotation ** denotation ** data -> com[void]

Reading from binary streams

read(input, tag): read data from input which was written with the tag (aborts otherwise)

FUN read : input ** denotation -> com[data]

load(file, tag): read data from file named filewhich was written with the tag (aborts otherwise)

 
FUN load: denotation ** denotation -> com[data]


next node: Commands,
prev node: BasicIO,
up to node: Subsystem Streams