##
12.17.1 Packer オブジェクト

`Packer` インスタンスには以下のメソッドがあります:

`get_buffer`( | )

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

`reset`( | )

  パック処理用バッファをリセットして、空文字にします。

一般的には、適切な `pack_type()` メソッドを使えば、 一般に用いられているほとんどの XDR データをパックすることができます。 各々のメソッドは一つの引数をとり、パックしたい値を与えます。 単純なデータ型をパックするメソッドとして、以下のメソッド: `pack_uint()` 、`pack_int()` 、 `pack_enum()` 、 `pack_bool()` 、`pack_uhyper()` そして `pack_hyper()` がサポートされています。

`pack_float`( | value)

  単精度 (single-precision) の浮動小数点数 value をパックします。

`pack_double`( | value)

  倍精度 (double-precision) の浮動小数点数 value をパックします。

以下のメソッドは文字列、バイト列、不透明データ (opaque data) のパック 処理をサポートします:

`pack_fstring`( | n, s)

  固定長の文字列、s をパックします。 n は文字列の長さ ですが、この値自体はデータバッファにはパック されません 。 4 バイトのアラインメントを保証するために、文字列は必要に応じて null バイト列でパディングされます。

`pack_fopaque`( | n, data)

  `pack_fstring()` と同じく、固定長の不透明データストリームを パックします。

`pack_string`( | s)

  可変長の文字列 s をパックします。文字列の長さが最初に符号なし 整数でパックされ、続いて `pack_fstring()` を使って文字列データが パックされます。

`pack_opaque`( | data)

  `pack_string()` と同じく、可変長の不透明データ文字列をパックします。

`pack_bytes`( | bytes)

  `pack_string()` と同じく、可変長のバイトストリームをパックします。

以下のメソッドはアレイやリストのパック処理をサポートします:

`pack_list`( | list, pack_item)

  一様な項目からなる list をパックします。このメソッドは サイズ不定、すなわち、全てのリスト内容を網羅するまでサイズが 分からないリストに対して有用です。リストのすべての項目に対し、 最初に符号無し整数 `1` がパックされ、続いてリスト中の データがパックされます。pack_item は個々の項目をパック するために呼び出される関数です。リストの末端に到達すると、 符号無し整数 `0` がパックされます。

  例えば、整数のリストをパックするには、コードは以下のようになるはず です:

      import xdrlib
      p = xdrlib.Packer()
      p.pack_list([1, 2, 3], p.pack_int)

`pack_farray`( | n, array, pack_item)

  一様な項目からなる固定長のリスト (array) をパックします。 n はリストの長さです。この値はデータバッファにパック されません が、`len(array)` が n と 等しくない場合、例外 `ValueError` が送出されます。 上と同様に、pack_item は個々の要素をパック処理するための 関数です。

`pack_array`( | list, pack_item)

  一様の項目からなる可変長の list をパックします。 まず、リストの長さが符号無し整数でパックされ、つづいて各 要素が上の `pack_farray()` と同じやり方でパックされます。