`typemap' は、xsubpp コンパイラが、C の関数の引数や値を Perlの値に
マッピングするために使用する、コードを集めたものです。`typemap' ファ
イルは、 TYPEMAP
、INPUT
、OUTPUT
というラベルを付け
た、3 つのセクションに分けることができます。INPUT
セクションは、
Perl の値を、特定の型の C の変数に変換する方法を、コンパイラに伝えるもの
です。 OUTPUT
セクションは、特定の型のC の値から、Perl が認識でき
る値に変換する方法をコンパイラに伝えます。 TYPEMAP
セクションでは、
与えられた C の型を Perlの値にマッピングするために、どの INPUT
コー
ドと OUTPUT
コードを使用するかを、コンパイラに教えます。
`typemap' のどのセクションも、TYPEMAP
、INPUT
、
OUTPUT
のいずれかのキーワードで始まることになります。
Perl のソースディレクトリの `ext' ディレクトリにあるデフォルトの
`typemap' には、Perl の拡張モジュールで使用することができる便利な型
をたくさん入れてあります。拡張モジュールによっては、自分のディレクトリに、
追加の `typemap' を定義して置いているものもあります。そのような追加
の `typemap' は、デフォルトの`typemap' の INPUT
と
OUTPUT
のマッピングを参照することができます。xsubpp コンパイラで
は、デフォルトの `typemap' のマッピングが、拡張モジュールの
`typemap' でオーバライドすることが許されています。
独自の `typemap' を必要とする拡張モジュールでは、ほとんどの場合、
`typemap' ファイルの TYPEMAP
セクションだけが必要になります。
getnetconfigent()
の例で示した独自 `typemap' は、拡張モジュー
ルの `typemap' の使用例としては、典型的なものかもしれません。この
`typemap' は、C の構造体と T_PTROBJ typemap を等しいものとして扱う
ために使われてます。 getnetconfigent()
で使った `typemap' を
再掲します。C の型は、XS の型とタブで区切られ、C の単項演算子 *
は、C の型名の一部とみなされます。
TYPEMAP Netconfig *<tab>T_PTROBJ
Go to the first, previous, next, last section, table of contents.