R6RS:翻訳:Standard Libraries:8.2.7 Input ports

R6RS:翻訳:Standard Libraries:8.2.7 Input ports

8.2.7 入力ポート

入力ポートを使うとファイル終端オブジェクトで区切られた有限のバイトないし文字の列を読むことができる。入力ポートはファイル終端オブジェクトの無限の並びで終端される有限のデータの読み込み元である。

複数のバイトからなる文字符号化のバイト間にファイル終端があるかどうかは規定されていない。例えば、 get-char が、次のファイル終端の前でポートの位置での文字符号化が不完全なため、 &i/o-decoding 例外を発生される場合、次の get-char の呼び出しは、ファイル終端の後にその符号化を完全にするバイト列が読み込み可能であった場合、文字を成功裏に復号化できるかもしれない。

[procedure] (input-port? obj)

引き数が入力ポート(または入力ポートと出力ポートを組み合わせたもの)であった場合 #t を返し、さもなくは #f を返す。

[procedure] (port-eof? input-port)

lookahead-u8 手続き(input-port がバイナリポートであった場合)か lookahead-char 手続き(input-port がバイナリポートであった場合)がファイル終端オブジェクトを返す場合 #t を返し、それ以外の場合には #f を返す。この操作はデータが読み込み可能ではないが、ポートがファイル終端にあるか確定できない場合に無制限にブロックすることがある。

[procedure] (open-file-input-port filename)

[procedure] (open-file-input-port filename file-options)

[procedure] (open-file-input-port filename file-options buffer-mode)

[procedure] (open-file-input-port filename file-options buffer-mode maybe-transcoder)

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

open-file-input-port 手続きは名前付きファイルに対する入力ポートを返す。 file-optionsmaybe-transcoder 引き数は省略可能である。

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! をサポートするかどうかは実装系依存(で、さらにあるいはコード変換器依存)である。

[procedure] (open-bytevector-input-port bytevector)

[procedure] (open-bytevector-input-port bytevector maybe-transcoder)

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

open-bytevector-inputーport 手続きは bytevector からバイトを読み込む入力ポートを返す。 transcoder が指定された場合は、それが戻り値のポートに対応づけられる

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

open-bytevector-input-port を呼び出したあとに bytevector を修正した場合の効果は規定されていない。

[procedure] (open-string-input-port string)

string から文字を読み出すテキストポートを返す。ポートはコード変換器と対応づけられることもあり対応づけられないこともある。対応づけられた場合、コード変換器は実装系依存である。このポートは port-position と set-port-position! をサポートしなければならない。

open-string-input-port を呼び出したあとに string を修正した場合の効果は規定されていない。

[procedure] (standard-input-port)

標準入力に接続したバイナリポートを新たに返す。このポートが port-position と set-port-position! をサポートするかどうかは実装系依存である。

[procedure] (current-input-port)

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

[procedure] (make-custom-binary-input-port id read! get-position set-position! close)

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

残りの引き数は #f であってもかまわない。いずれかが #f でなかった場合、それは手続きでなければならず下に示すように振舞う。

(read! bytevector start count)

start は非負の正確な整数オブジェクトであり、 count は正の正確な整数オブジェクトであり、bytevector は少なくとも start + count の長さのバイトベクタである。 read! 手続きは count バイト以下のバイト列を読み込み元から得て、それを bytevectorstart 番目からの部分に書き込む。 read! 手続きは正確な整数オブジェクトを返さなければならない。この整数オブジェクトは読み込まれたバイト数を表す。ファイル終端を示すには、バイトを書き込まず 0 を返せばよい。

(get-position)

(get-position) 手続きは(もし省略されなければ)入力ポートの現在の位置を表す正確な整数オブジェクトを返す。省略された場合には、カスタムポートは port-position をサポートしない。

(set-position! pos)

pos は非負の正確な整数オブジェクトである。 set-position! 手続きは(もし省略されなければ)入力ポートの位置を pos に設定する。省略した場合には、カスタムポートは set-port-position をサポートしない。

(close)

close 手続きは(もし省略されなければ)入力ポートが閉じられたときに必要な任意の動作を行なう。

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

[procedure] (make-custom-textual-input-port id read! get-position set-position! close)

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

残りの引き数は #f であってもかまわない。いずれかが #f でなかった場合、それは手続きでなければならず以下に示すように振舞う。

(read! string start count)

start は非負の正確な整数オブジェクトであり、 count は正の正確な整数オブジェクトであり、string は少なくとも start + count の長さの文字列である。 read! 手続きは count 文字以下の文字列を読み込み元から得て、それを stringstart 番目からの部分に書き込む。 read! 手続きは正確な整数オブジェクトを返す。この整数オブジェクトは書き込まれた文字数を表す。ファイル終端を示すには、バイトを書き込まず 0 を返せばよい。

(get-position)

(get-position) 手続きは(もし省略されなければ)入力ポートの現在の位置を表す正確な整数オブジェクトを返す。省略された場合には、カスタムポートは port-position をサポートしない。

(set-position! pos)

posget-position の呼び出しの戻り値である場合、 set-position! 手続きは(もし省略されなければ)入力ポートの位置を pos に設定する。省略した場合には、カスタムポートは set-port-position をサポートしない。

(close)

close 手続きは(もし省略されなければ)入力ポートが閉じられたときに必要な任意の動作を行なう。

ポートはコード変換器と対応づけられていることもあり、いないこともある。対応づけられている場合には、そのコード変換器は実装系依存である。

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


Last modified : 2008/11/23 03:03:10 UTC