6.62. kink/io/INPUT

input 型のコンパニオンモジュール。

6.62.1. input 型

inputは、バイト列の入力ポートの抽象型である。input値は、ここで挙げるメソッドを実装する必要がある。

input は下層にあるソースへのシーケンシャルなアクセスを提供する。シークなどのランダムアクセス操作は提供しない。

6.62.1.1. Input.read(Max_size ...[$config={}])

read はストリームからバイト列を読み込む。 read は最低1バイトが読まれるか、end-of-fileが検出されるか、IOエラーが発生するまでブロックする。

コンフィグメソッド:

• C.on_success($success): default = VAL.identity

• C.on_eof($eof): default = 例外を投げる関数

• C.on_error($error): default = fun which raises an exception

1バイト以上が読み込まれた場合、 read は$successに読み込まれた bin を渡して末尾呼び出しする。 bin の長さは Max_size を超えない。

end-of-fileが検出された場合、 read は$eofを引数なしで末尾呼び出しする。

IOエラーが起きた場合、 read は$errorに exception を渡して末尾呼び出しする。

事前条件

Max_size は1以上の整数の num 値でなければならない。

$successは bin を取る関数でなければならない。

$eofは引数を取らない関数でなければならない。

$errorはexceptionを取る関数でなければならない。

例

例: IOエラー

6.62.1.2. Input.read_all(...[$config={}])

read_allはend-of-fileに達するか、IOエラーが起きるまでバイト列を読み込む。

コンフィグメソッド:

• C.on_success($success): default = VAL.identity

• C.on_error($error): default = {(:Exc) Exc.raise }

IOエラーなしに1バイト以上読み込まれた場合、 read_all は$successを bin を渡して末尾呼び出しする。

1バイトも読み込まれなかった場合、 read_all は$successを、空の bin を渡して末尾呼び出しする。

IOエラーが起きた場合、 read_all は$errorを、 exception を渡して末尾呼び出しする。

事前条件

$successはbinを取る関数でなければならない。

$errorはexceptionを取る関数でなければならない。

例

参照

INPUT.mixin: read_all の一般的な実装を提供している。

6.62.1.3. Input.close(...[$config={}])

close はバイト列のソースであるリソースを閉じる。

コンフィグメソッド:

• C.on_success($success): default = {}

• C.on_error($error): default = 例外を投げる関数

リソースがエラーなしに閉じられた場合、closeは$successを引数なしで末尾呼び出しする。

IOエラーが起きた場合、closeは$errorをexceptionを渡して末尾呼び出しする。

事前条件

$successは引数を取らない関数でなければならない。

$errorはexceptionを取る関数でなければならない。

6.62.2. INPUT.is?(Val)

is? は Val が input かどうかを戻す。

6.62.3. INPUT.mixin

mixinはInput.read_allの実装を提供するミックスイントレイトを戻す。read_allはreadメソッドを用いて実装される。

例