0.9.18.34:
[sbcl.git] / doc / manual / streams.texinfo
1 @node Extensible Streams
2 @comment  node-name,  next,  previous,  up
3 @chapter Extensible Streams
4
5 SBCL supports various extensions of ANSI Common Lisp streams.
6
7 @table @strong
8 @item Bivalent Streams
9 A type of stream that can read and write both @code{character} and
10 @code{(unsigned-byte 8)} values.
11
12 @item Gray Streams
13 User-overloadable CLOS classes whose instances can be used as Lisp
14 streams (e.g. passed as the first argument to @code{format}).
15
16 @item Simple Streams
17 The bundled contrib module @dfn{sb-simple-streams} implements a subset
18 of the Franz Allegro simple-streams proposal.
19
20 @end table
21
22 @menu
23 * Bivalent Streams::
24 * Gray Streams::                
25 * Simple Streams::              
26 @end menu
27
28 @node Bivalent Streams
29 @section Bivalent Streams
30
31 A @dfn{bivalent stream} can be used to read and write both
32 @code{character} and @code{(unsigned-byte 8)} values.  A bivalent
33 stream is created by calling @code{open} with the argument @code{:element-type
34 :default}.  On such a stream, both binary and character data can be
35 read and written with the usual input and output functions.
36
37 @c Horrible visual markup
38 @quotation
39 Streams are @emph{not} created bivalent by default for performance
40 reasons.  Bivalent streams are incompatible with
41 @code{fast-read-char}, an internal optimization in sbcl's stream
42 machinery that bulk-converts octets to characters and implements a
43 fast path through @code{read-char}.
44 @end quotation
45
46 @node Gray Streams
47 @section Gray Streams
48
49 @include class-sb-gray-fundamental-stream.texinfo
50 @include fun-sb-gray-stream-advance-to-column.texinfo
51 @include fun-sb-gray-stream-clear-input.texinfo
52 @include fun-sb-gray-stream-clear-output.texinfo
53 @include fun-sb-gray-stream-finish-output.texinfo
54 @include fun-sb-gray-stream-force-output.texinfo
55 @include fun-sb-gray-stream-fresh-line.texinfo
56 @include fun-sb-gray-stream-line-column.texinfo
57 @include fun-sb-gray-stream-line-length.texinfo
58 @include fun-sb-gray-stream-listen.texinfo
59 @include fun-sb-gray-stream-peek-char.texinfo
60 @include fun-sb-gray-stream-read-byte.texinfo
61 @include fun-sb-gray-stream-read-char-no-hang.texinfo
62 @include fun-sb-gray-stream-read-char.texinfo
63 @include fun-sb-gray-stream-read-line.texinfo
64 @include fun-sb-gray-stream-read-sequence.texinfo
65 @include fun-sb-gray-stream-start-line-p.texinfo
66 @include fun-sb-gray-stream-terpri.texinfo
67 @include fun-sb-gray-stream-unread-char.texinfo
68 @include fun-sb-gray-stream-write-byte.texinfo
69 @include fun-sb-gray-stream-write-char.texinfo
70 @include fun-sb-gray-stream-write-sequence.texinfo
71 @include fun-sb-gray-stream-write-string.texinfo
72
73 @node Simple Streams
74 @comment  node-name,  next,  previous,  up
75 @section Simple Streams
76 @include sb-simple-streams/sb-simple-streams.texinfo