##
20.3.2 パーザオブジェクト

パーザオブジェクト（`createparser()`で返されます）には以下のメ ソッドがあります：

`addcallback`( | type, func, arg)

  パーザにコールバックを加えます。 デジタルオーディオストリームの8つの異なるデータタイプのためのコールバッ クをパーザは持っています。 これらのタイプのための定数は`cd`モジュールのレベルで定義されてい ます（上記参照）。 コールバックは以下のように呼び出されます： `func(arg, type, data)`、ここでargはユーザが与え た引数、typeはコールバックの特定のタイプ、dataはこの typeのコールバックに渡されるデータです。 データのタイプは以下のようにコールバックのタイプによって決まります：

  Type | Value
  --- | ---
  `audio` | `al.writesamps()`へそのまま渡すことのできる文字列。
  `pnum` | プログラム（トラック）ナンバーを示す整数。
  `index` | インデックスナンバーを示す整数。
  `ptime` | プログラムの時間を示す分、秒、フレームからなるタプル。
  `atime` | 絶対的な時刻を示す分、秒、フレームからなるタプル。
  `catalog` | CDのカタログナンバーを示す13文字の文字列。
  `ident` | 録音のISRC識別番号を示す12文字の文字列。 文字列は2文字の国別コード、3文字の所有者コード、2文字の年号、5文字のシリ アルナンバーからなります。
  `control` | CDのサブコードデータのコントロールビットを示す整数。

`deleteparser`( | )

  パーザを消去して、使用していたメモリを解放します。 この呼び出しのあと、オブジェクトは使用できません。 オブジェクトへの最後の参照が削除されると、自動的にこのメソッドが呼び出さ れます。

`parseframe`( | frame)

  `readda()`などから返されたデジタルオーディオCDのデータの1つあるい はそれ以上のフレームをパースします。 データ内にどういうサブコードがあるかを決定します。 その前のフレームからサブコードが変化していたら、`parseframe()` は対応するタイプのコールバックを起動して、フレーム内のサブコードデータを コールバックに渡します。 Cの関数とは違って、1つ以上のデジタルオーディオデータのフレームをこの メソッドに渡すことができます。

`removecallback`( | type)

  指定したtypeのコールバックを削除します。

`resetparser`( | )

  サブコードを追跡しているパーザのフィールドをリセットして、初期状態にしま す。 ディスクを交換したあと、`resetparser()`を呼び出さなければなりませ ん。