R6RS:翻訳:Standard Libraries:8.2.10 Output ports

R6RS:翻訳:Standard Libraries:8.2.10 Output ports

8.2.10 出力ポート

出力ポートはバイト列や文字列の書き込み先である。書き込まれたデータは外部機器を制御したりファイルや、その他の、続いて入力用に開かれるオブジェクトを生成したりする。

(output-port? obj)

引き数が出力ポート(ないしは入力ポートと出力ポートを組み合わせたもの)であれば #t を返し、そうでなければ #f を返す。

(flush-output-port output-port)

output-port のバッファからバッファされている出力を下層のファイルやデバイスやオブジェクトにフラッシュする。 flush-output-port 手続きは未規定値を返す。

(output-port-buffer-mode output-port) procedure

output-port のバッファモードを表すシンボルを返す。

(open-file-output-port filename)

(open-file-output-port filename file-options)

(open-file-output-port filename file-options buffer-mode)

(open-file-output-port filename file-options buffer-mode maybe-transcoder)

maybe-transcoder はコード変換器か #f でなければならない。

open-file-output-port 手続きは名前付きファイルに対する出力ポートを返す。

file-options 引き数は返されるポートの様々な側面を決定する(R6RS:翻訳:Standard Libraries:8.2.2 File options参照)。既定値は (file-options) である。

buffer-mode 引き数は、もし省略されなければ、バッファモードの名前であるシンボルのひとつでなければならない。デフォルト値は block である。

maybe-transcoder がコード変換器であった場合、その変換器は戻り値のポートに対応づけられる。

maybe-transcoder が #f であるか省略された場合、ポートはバイナリポートになり port-position と set-port-position! をサポートする。それ以外の場合はポートはテキストポートになり port-position と set-port-position! をサポートするかどうかは実装系依存(で、さらにあるいはコード変換器依存)である。

(open-bytevector-output-port)

(open-bytevector-output-port maybe-transcoder)

maybe-transcoder はコード変換器か #f でなければならない。

open-bytevector-output-port はふたつの値を返す。出力ポートと取り出し手続きである。出力ポートは手続きによる後の取り出しのために書き込まれたバイトを溜め込む。

maybe-transcoder が #f であるか省略された場合、ポートはバイナリポートになり port-position と set-port-position! をサポートする。それ以外の場合はポートはテキストポートになり port-position と set-port-position! をサポートするかどうかは実装系依存(で、さらにあるいはコード変換器依存)である。

取り出し手続きは引き数を取らない。呼び出されると、(ポートの現在位置によらず)ポートに溜め込まれたバイト列すべてから成るバイトベクタを返し、溜め込まれたバイト列をポートから取り除き、ポートの位置を再設定する。

(call-with-bytevector-output-port proc)

(call-with-bytevector-output-port proc maybe-transcoder)

proc は引き数をひとつ取らなければならず、 maybe-transcoder はコード変換器か #f のいずれかでなければならない。

call-with-bytevector-output-port は書き込まれたバイト列を溜め込む出力ポートを作成し、その出力ポートを引き数として proc を呼び出す。 proc から返ると毎回、(現在のポート位置によらず)ポートに溜め込まれたバイト列すべてから成るバイトベクタが返り、ポートが閉じられる。

出力ポートに対応づけられたコード変換器は open-bytevector-output の呼び出しの場合と同様に決定される。

(open-string-output-port)

テキスト出力ポートと取り出し手続きのふたつの値を返す。出力ポートは後の手続きによる取り出しのために書き込まれた文字列を溜め込む。

ポートには対応づけられたコード変換器があることもありないこともある。ある場合には、変換器は実装系依存である。ポートは port-position と set-port-position! をサポートしなければならない。

取り出し手続きは引き数を取らない。呼び出されると、(現在のポート位置によらず)ポートに溜め込んだ文字すべてから成る文字列を返し、溜め込まれた文字列を取り除き、ポートの位置を再設定する。

(call-with-string-output-port proc)

proc は引き数をひとつ取らなければならない。 call-with-string-output-port 手続きは書き込まれた文字を溜め込むテキスト出力ポートを作り、その出力ポートを引き数として proc を呼び出す。 proc から返ると毎回、(現在のポート位置によらず)ポートに溜め込まれた文字すべてから成る文字列が返り、ポートが閉じられる。

ポートには対応づけられたコード変換器があることもありないこともある。ある場合には、変換器は実装系依存である。ポートは port-position と set-port-position! をサポートしなければならない。

(standard-output-port)

(standard-error-port)

それぞれ、標準出力と標準エラーに接続されたバイナリ出力ポートを新たに返す。ポートが port-position と set-port-position! をサポートするかどうかは実装系依存である。

(current-output-port)

(current-error-port)

標準出力とエラー出力に対する既定のテキストポートを返す。一般には、これらは標準出力と標準エラーにそれぞれ対応づけられる。 current-output-port- の戻り値は (rnrs io simple (6)) ライブラリ(R6RS:翻訳:Standard Libraries:8.3 Simple I/O参照)の with-output-to-file を使って動的に再設定することができる。これらの手続きの返したポートには対応づけられたコード変換器があることもありないこともある。ある場合には、変換器は実装系依存である。

(make-custom-binary-output-port id write! get-position set-position! close)

書き込み先が write! 手続きで表される任意のアルゴリズムであるバイナリ出力ポートを新たに作成して返す。 id はポートに名前をつける文字列であり、情報目的のためだけに与えられる。 write! は手続きでなければならず、以下で規定するように振る舞わなければならない。この手続きはバイナリ出力を行なう操作から呼び出される。

残りの各引き数は #f であってもよい。 #f でない場合には手続きでなければならず、 make-custom-binary-input-port の項で説明したように振舞う。

(write! bytevector start count)

startcount は非負の正確な整数オブジェクトであり、 bytevector は長さが最低でも start + count のバイトベクタである。 write! 手続きは bytevectorstart 番目から count バイトのバイトを書き込み先に書き込む。 count が 0 の場合、 write! 手続きは書き込み先にファイル終端オブジェクトを渡したようにしなければならない。いずれの場合も、 write! 手続きは書き込んだバイト数を正確な整数オブジェクトとして返す。

実装系への要求: 実装系は write! の戻り値を、それが実際にプログラムで要求された入出力処理の一部として呼び出された場合にだけ検しなければならない。それ以外の場合には、実装系は write! が上で述べたような振舞いをしているか確認する必要はない。ただし、そのような振舞いをしていない場合、戻り値のポートの振舞いは未規定である。

(make-custom-textual-output-port id write! get-position set-position! close)

書き込み先が write! 手続きで表される任意のアルゴリズムであるテキスト出力ポートを新たに作成して返す。 id はポートに名前をつける文字列であり、情報目的のためだけに与えられる。 write! は手続きでなければならず、以下で規定するように振る舞わなければならない。この手続きはテキスト出力を行なう操作から呼び出される。

残りの各引き数は #f であってもよい。 #f でない場合には手続きでなければならず、 make-textual-binary-input-port の項で説明したように振舞う。

(write! string start count)

startcount は非負の正確な整数オブジェクトであり、 string は長さが最低でも start + count の文字列である。 write! 手続きは stringstart 番目から count 文字の文字を書き込み先に書き込む。 count が 0 の場合、 write! 手続きは書き込み先にファイル終端オブジェクトを渡したようにしなければならない。いずれの場合も、 write! 手続きは書き込んだ文字数を正確な整数オブジェクトとして返す。

ポートには対応づけられたコード変換器があることもありないこともある。ある場合には、変換器は実装系依存である。ポートは port-position と set-port-position! をサポートしなければならない。

実装系への要求: 実装系は write! の戻り値を、それが実際にプログラムで要求された入出力処理の一部として呼び出された場合にだけ検しなければならない。それ以外の場合には、実装系は write! が上で述べたような振舞いをしているか確認する必要はない。ただし、そのような振舞いをしていない場合、戻り値のポートの振舞いは未規定である。

More ...