Perl と C ライブラリの間のインタフェースを設計する段階では、ほとんどの場 合、C から XS への直訳で十分です。そのインタフェースは、多くは C 風のも のとなり、特に C の関数が引数を変更するようなときには、直感的とはいえな いものとなります。もっと Perl 風なインタフェースを作りたい場合には、イン タフェースが、どちら寄りに傾くかを左右するような部分を特定するのに、以下 のような戦略をとると良いでしょう。
引数を変更する C 関数を見つけること。こういった関数の XSUB は、Perl へリ ストを返すようにし、失敗時には `undef' や空リストを返すようにするこ とができるでしょう。
C と XSUB の関数のみで使用される値を見つけなさい。Perl 側でその値の中身 に触れる必要がないのであれば、その値を C からPerl へ変換する必要もありま せん。
C の関数の引数リストと返却値から、ポインタを探しなさい。ポインタによって
は、XS で変数名に単項演算子 &
を付けて扱うことができますし、型名
に *
演算子を使わなければならないものもあります。一般に、
&
演算子で処理する方が簡単です。
C の関数で使われる構造体を特定しなさい。多くの場合、そのような構造体が
bless
されたオブジェクトとして Perl から扱えるように、
`T_PTROBJ typemap' をこの構造体に使うとよいでしょう。
Go to the first, previous, next, last section, table of contents.