38.3. "aepack" --- Python 変数と AppleEvent データコンテナ間の変換
******************************************************************

"aepack" モジュールは、Python 変数から AppleEvent デスクリプタへの変換
(パック)と、その逆に変換(アンパック)する関数を定義しています。Python
内では AppleEvent デスクリプタは、組み込み型である AEDesc の Python オ
ブジェクトとして扱われます。 "AEDesc" は "Carbon.AE" モジュールで定義
されています。

注釈: このモジュールは Python 3.x で削除されました。

"aepack" モジュールは次の関数を定義しています。

aepack.pack(x[, forcetype])

   Python 値 *x* を変換した値を保持する "AEDesc" オブジェクトを返しま
   す。 *forcetype* を与えることで、結果のデスクリプタ型を指定できます
   。それ以外では、Python 型から Apple Event デスクリプタ型へのデフォ
   ルトのマッピングが使われます。マッピングは次の通りとなります:

   +-------------------+-------------------------------------+
   | Python の型       | デスクリプタの型                    |
   +===================+=====================================+
   | "FSSpec"          | typeFSS                             |
   +-------------------+-------------------------------------+
   | "FSRef"           | typeFSRef                           |
   +-------------------+-------------------------------------+
   | "Alias"           | typeAlias                           |
   +-------------------+-------------------------------------+
   | integer           | typeLong (32 ビット整数)            |
   +-------------------+-------------------------------------+
   | float             | typeFloat (64 ビット浮動小数点数)   |
   +-------------------+-------------------------------------+
   | string            | typeText                            |
   +-------------------+-------------------------------------+
   | unicode           | typeUnicodeText                     |
   +-------------------+-------------------------------------+
   | list              | typeAEList                          |
   +-------------------+-------------------------------------+
   | dictionary        | typeAERecord                        |
   +-------------------+-------------------------------------+
   | instance          | *下記参照*                          |
   +-------------------+-------------------------------------+

   *x* が Python インスタンスなら、この関数は "__aepack__()" メソッド
   を呼びだそうとします。このメソッドは "AEDesc" オブジェクトを返しま
   す。

   *x* の変換が上で定義されていない場合は、この関数は、テキストデスク
   リプタとしてエンコードされた、値の(repr() 関数による) Python 文字列
   表現が返されます。

aepack.unpack(x[, formodulename])

   *x* は "AEDesc" タイプのオブジェクトでなければいけません。この関数
   は、Apple Event デスクリプタ *x* のデータの Python オブジェクト表現
   を返します。単純な AppleEvent データ型 (整数、テキスト、浮動小数点
   数) の、対応する Python 型が返されます。Apple Event リストは Python
   リストとして返され、リストの要素は再帰的にアンパックされます。
   "formodulename" の指定がない場合、オブジェクト参照 (例： "line 3 of
   document 1") が、 "aetypes.ObjectSpecifier" のインスタンスとして返
   されます。デスクリプタ型が typeFSS である AppleEvent デスクリプタは
   、 "FSSpec" オブジェクトとして返されます。 AppleEvent レコードデス
   クリプタは、再帰的にアンパックされた、型の 4 文字キーと要素を持つ
   Python 辞書として返されます。

   オプションの "formodulename" 引数は "gensuitemodule" より作成される
   スタブパッケージにより利用され、オブジェクト指定子のための OSA クラ
   スをモジュールの中で見つけられることを保証します。これは、例えば、
   ファインダがウィンドウに対してオブジェクト指定子を返す場合、
   "Finder.Window" のインスタンスが得られ、 "aetypes.Window" が得られ
   ないことを保証します。前者は、ファインダ上のウィンドウが持っている
   、すべての特性および要素のことを知っています。一方、後者のものはそ
   れらのことを知りません。

参考:

  "Carbon.AE" モジュール
     Apple Event マネージャルーチンへの組み込みアクセス

  "aetypes" モジュール
     Apple Event デスクリプタ型としてコードされた Python 定義
