System Class BROADCAST-STREAM
broadcastストリームは出力ストリームであり、 ゼロか複数の出力ストリームの集合を関連付けたものです。 broadcastストリームにはどのような出力も送ることでき、 関連付けられたそれぞれの出力ストリームに対する出力として転送されます (もしbroadcastストリームが何のストリームも持っていなかったときは、 全てのbroadcastストリームへの出力は切り捨てられます)。
broadcastストリームで実行できる処理の集合は、 関連付けられた出力ストリームの共通部分です。
いくつかの出力処理(例えばfresh-line)は、 その処理時のストリームの状態による値を返却します。 各ストリームの要素が違った返却値であるとき、 次のように特定した値を返却するように定義する必要があります。
stream-element-typeは、最後の要素のストリームの値を返却し、 もしストリームの要素が無いときはtを返却します。
fresh-lineは、最後の要素のストリームの値を返却し、 もしストリームの要素が無いときはnilを返却します。
file-length, file-position, file-string-length, stream-external-formatは 最後の要素のストリームの値を返却します。 もしストリームの要素が無いときは、 file-lengthとfile-positionは0を返却し、 file-string-lengthは1を返却、 stream-external-formatは:defaultを返却します。
streampとoutput-stream-pは、 broadcastストリームに対しては常にtrueを返却します。
open-stream-pはbroadcastストリームが開いているかどうかをテストします。 保有しているストリーム要素に対して 開いているかどうかをテストするわけではありません。
input-stream-pとinteractive-stream-pは実装定義ですが、 generalized-booleanを返却します。
入力処理であるclear-input, peek-char, read-byte, read-char-no-hang, read-char, read-line, unread-charは、 もしこれらの処理が実行されたときの結果は未定義です。 しかし実装は、実装依存の拡張による 振る舞いを定義することが許されています。
上記かまたは本文書の他の箇所で 戻り値が明確に指定されていない出力操作については、 その操作による返却値は、 そのストリームの要素の最後のものに対して操作を実行した 結果の返却値であると定義されます。 それ以前のストリームに対して行った操作の全ての結果の値は破棄されます。 もしストリームの要素が存在しないときは、 返却値は実装依存です。
broadcast-stream-streams, make-broadcast-stream