argra****@users*****
argra****@users*****
2013年 10月 28日 (月) 18:44:34 JST
Index: docs/perl/5.16.1/perlxstut.pod diff -u docs/perl/5.16.1/perlxstut.pod:1.1 docs/perl/5.16.1/perlxstut.pod:1.2 --- docs/perl/5.16.1/perlxstut.pod:1.1 Sun Oct 27 03:44:08 2013 +++ docs/perl/5.16.1/perlxstut.pod Mon Oct 28 18:44:33 2013 @@ -999,13 +999,11 @@ C のデータ型(int, char, など)に変換する規則を使います。 これらのルールは typemap ファイル ($PERLLIB/ExtUtils/typemap)に 格納されます。 -There's a brief discussion -below, but all the nitty-gritty details can be found in L<perlxstypemap>. -If you have a new-enough version of perl (5.16 and up) or an upgraded -XS compiler (C<ExtUtils::ParseXS> 3.13_01 or better), then you can inline -typemaps in your XS instead of writing separate files. -どちらの場合でも、このファイルは三つの部分に分けられます。 -(TBT) +要点に関する議論は後述しますが、本質的な詳細は L<perlxstypemap> にあります。 +十分に新しい perl (5.16 以降) または更新された XS コンパイラ +(C<ExtUtils::ParseXS> 3.13_01 以降) があるなら、typemap を独立した +ファイルではなく XS コードのインラインで書くことが出来ます。 +どちらの場合でも、この typemap は三つの部分に分けられます。 =begin original @@ -1353,9 +1351,7 @@ ここで、デフォルトの Perl は今のところ C<const char *> という型をサポートして いないので、typemap を作成する必要があります。 -Include a new TYPEMAP -section in your XS code before the above function: -(TBT) +XS コードの前述の関数の前に新しい TYPEMAP セクションを追加します: TYPEMAP: <<END; const char * T_PV @@ -2560,8 +2556,8 @@ 呼び出します。 それから、C<SvROK> が真を返すことをチェックします; これをパスが正当なリファレンスであることを示しています。 -(Simply -checking C<SvROK> won't trigger FETCH on a tied variable.) +(単に C<SvROK> をチェックしても、tie された変数の FETCH の引き金には +なりません。) それから、C<SvRV> でパスをデリファレンスして、C<SvTYPE> でその型を 調べることで、パスでリファレンスされているオブジェクトが配列であることを 検証します。 @@ -2569,7 +2565,6 @@ パスでリファレンスされた配列が空でないことをチェックします。 XSRETURN_UNDEF マクロは、これら 3 つの条件のどれかが成立しないときに XSUB を中断して未定義値を返すために使われます。 -(TBT) =item *