cl-stream/cl-stream/README.md

Download

cl-stream

Common Lisp ticket to evented I/O on any kind of data.

cl-stream streams support any kind of data. READ and WRITE both operate on exactly one stream element of type (STREAM-ELEMENT-TYPE stream). There is no READ-BYTE or READ-CHAR type specific read methods. Actual operations are implemented by specializing STREAM-READ and STREAM-WRITE.

cl-stream streams support reading and writing to sequences of elements with READ-SEQUENCE and WRITE-SEQUENCE. Actual operations are implemented by specializing STREAM-READ-SEQUENCE and STREAM-WRITE-SEQUENCE.

cl-stream streams support non-blocking I/O through the setf-able place (STREAM-BLOCKING-P stream). Actual operations are implemented by specializing (SETF STREAM-BLOCKING-P).

cl-stream streams provide a new stream API which can be used on all common lisp streams too (see cl-stream.lisp).

cl-stream streams can be used as gray-streams by using the steam-gray system.

Abstract stream classes

Class: stream

Base class for all streams.

Generic: stream-element-type stream => type

Returns the type of elements of stream.

Condition: stream-error

Superclass for all errors related to streams.

Condition: stream-closed-error

An error that is signalled when trying to read from or write to a closed stream.

Generic: check-if-open stream => nil

Checks if STREAM is open and signals an error otherwise.

Generic: close stream

Prevents further read and write operations on STREAM causing them to raise STREAM-CLOSED-ERROR.

Macro: with (var stream-class &rest initargs &key &allow-other-keys) &body body

Instantiates a stream and ensures it gets closed returning from BODY.

Class: input-stream

Subclass of STREAM supporting READ operations.

Condition: stream-input-error

An error which is signalled when an input error occurs on a stream.

Generic: read input-stream => element state-indicator

Tries to read one element from STREAM. Returns two values : the element or NIL if read failed; and a state indicator which is NIL if read succeeded, :EOF if end of file was reached, or :NON-BLOCKING if read would block.

Generic: read-sequence input-stream seq &key start end

Reads elements from INPUT-STREAM into SEQ from START to END. Returns two values : the number of elements read, and a state indicator which is NIL if READ-SEQUENCE succeeded :EOF if end of file was reached :NON-BLOCKING if read would block.

Generic: read-sequence-until input-stream end-element seq &key start end

Reads elements from INPUT-STREAM into SEQ from START to END until END-ELEMENT is read. Returns two values : the number of elements read, and a state indicator which is NIL if READ-SEQUENCE-UNTIL succeeded :EOF if end of file was reached :NON-BLOCKING if read would block.

Generic: read-until input-stream end-element => sequence

Reads elements from INPUT-STREAM from START to END until END-ELEMENT is read. Returns two values : a sequence of elements read, and a state indicator which is NIL if READ-UNTIL succeeded :EOF if end of file was reached :NON-BLOCKING if read would block.

Class: output-stream

Subclass of STREAM supporting WRITE operations.

Condition: stream-output-error

An error which is signalled when an output error occurs on a stream.

Generic: write output-stream element

Tries to write one element to STREAM. Returns a state indicator which is NIL if write succeeded, :EOF if end of file was reached, or :NON-BLOCKING if write would block.

Buffered stream classes

Special variable: *default-buffer-size*

Type: fixnum+

A positive fixnum which may be 0.

Class: buffered-input-stream

Generic: make-stream-input-buffer buffered-input-stream => buffer

Returns a new input buffer for stream.

Generic: stream-input-buffer buffered-input-stream => buffer

Returns the stream input buffer, calling MAKE-STREAM-INPUT-BUFFER to create it if needed.

Generic: stream-fill-input-buffer buffered-input-stream => state

Fills the stream input buffer. Returns NIL if successful, or :EOF if end of file was reached, or :NON-BLOCKING if operation would block.

Class: buffered-output-stream

An output stream that buffers its writes until it gets flushed.

Generic: make-stream-output-buffer buffered-output-stream => output-buffer

Returns a new output buffer for BUFFERED-OUTPUT-STREAM.

Generic: stream-output-buffer buffered-output-stream => output-buffer

Returns the stream output buffer, calling MAKE-STREAM-OUTPUT-BUFFER to create it if needed.

Generic: stream-flush-output-buffer buffered-output-stream => state

Tries once to flush the stream output buffer. Returns : NIL if successful, or :EOF if end of file was reached, or :NON-BLOCKING if operation would block.

Generic: flush buffered-output-stream => state

Flushes the output buffer of BUFFERED-OUTPUT-STREAM by repeatedly calling STREAM-FLUSH-OUTPUT-BUFFER until empty. Returns NIL if output buffer was empty or emptied, or :EOF if end of file was reached, or :NON-BLOCKING if write would block.

Class: sequence-input-stream

A buffered input stream that reads from a sequence.

Macro: with-input-from-sequence

Binds VAR to a new sequence input stream reading from SEQUENCE. The stream is closed after BODY returns normally or before it is aborted by a control transfer of some kind.

Macro: with-input-from-string

Binds VAR to a new sequence input stream reading from STRING. The stream is closed after BODY returns normally or before it is aborted by a control transfer of some kind.

Class: sequence-output-stream

A buffered output stream that writes to a sequence.

Generic: sequence-output-stream-sequence sequence-output-stream => sequence

Returns the sequence that was written to SEQUENCE-OUTPUT-STREAM.

Macro: with-output-to-sequence (var element-type) &body body

Binds VAR to a new sequence output stream with element-type ELEMENT-TYPE. Returns the sequence output stream sequence if BODY returns normally. The stream is closed after BODY returns normally or before it is aborted by a control transfer of some kind.

Macro: with-output-to-string (var) &body body

Binds VAR to a new sequence output stream with element-type character. Returns the sequence output stream string if BODY returns normally. The stream is closed after BODY returns normally or before it is aborted by a control transfer of some kind.


Source

Download