##
12.17.2 Unpacker オブジェクト

`Unpacker` クラスは以下のメソッドを提供します:

`reset`( | data)

  文字列バッファを data でリセットします。

`get_position`( | )

  データバッファ中の現在のアンパック処理位置を返します。

`set_position`( | position)

  データバッファ中のアンパック処理位置を position に設定します。 `get_position()` および `set_position()` は注意して 使わなければなりません。

`get_buffer`( | )

  現在のアンパック処理用データバッファを文字列で返します。

`done`( | )

  アンパック処理を終了させます。全てのデータがまだアンパックされて いなければ、例外 `Error` が送出されます。

上のメソッドに加えて、`Packer` でパック処理できるデータ型はいずれも `Unpacker` でアンパック処理できます。アンパック処理メソッドは `unpack_type()` の形式をとり、引数をとりません。 これらのメソッドはアンパックされたデータオブジェクトを返します。

`unpack_float`( | )

  単精度の浮動小数点数をアンパックします。

`unpack_double`( | )

  `unpack_float()` と同様に、倍精度の浮動小数点数をアンパックします。

上のメソッドに加えて、文字列、バイト列、不透明データをアンパックする 以下のメソッドが提供されています:

`unpack_fstring`( | n)

  固定長の文字列をアンパックして返します。n は予想される文字列の 長さです。4 バイトのアラインメントを保証するために null バイトによる パディングが行われているものと仮定して処理を行います。

`unpack_fopaque`( | n)

  `unpack_fstring()` と同様に、固定長の不透明データストリームを アンパックして返します。

`unpack_string`( | )

  可変長の文字列をアンパックして返します。最初に文字列の長さが符号無し 整数としてアンパックされ、次に `unpack_fstring()` を使って 文字列データがアンパックされます。

`unpack_opaque`( | )

  `unpack_string()` と同様に、可変長の不透明データ文字列をアンパック して返します。

`unpack_bytes`( | )

  `unpack_string()` と同様に、可変長のバイトストリームをアンパック して返します。

以下メソッドはアレイおよびリストのアンパック処理をサポートします。

`unpack_list`( | unpack_item)

  一様な項目からなるリストをアンパック処理してかえします。リストは 一度に 1 要素づつアンパック処理されます、まず符号無し整数によるフラグ がアンパックされます。もしフラグが `1` なら、要素はアンパックされ、 返り値のリストに追加されます。フラグが `0` であれば、リストの終端 を示します。 unpack_item は個々の項目をアンパック処理するために 呼び出される関数です。

`unpack_farray`( | n, unpack_item)

  一様な項目からなる固定長のアレイをアンパックして（リストとして）返します。 n はバッファ内に存在すると期待されるリストの要素数です。 上と同様に、 unpack_item は各要素をアンパックするために使われる 関数です。

`unpack_array`( | unpack_item)

  一様な項目からなる可変長の list をアンパックして返します。 まず、リストの長さが符号無し整数としてアンパックされ、続いて各要素が 上の `unpack_farray()` のようにしてアンパック処理されます。