[perldocjp-cvs 372] CVS update: docs/perl/5.8.8

Back to archive index

argra****@users***** argra****@users*****
2009年 1月 3日 (土) 03:53:34 JST


Index: docs/perl/5.8.8/perlxs.pod
diff -u docs/perl/5.8.8/perlxs.pod:1.7 docs/perl/5.8.8/perlxs.pod:1.8
--- docs/perl/5.8.8/perlxs.pod:1.7	Thu Jan  1 04:45:25 2009
+++ docs/perl/5.8.8/perlxs.pod	Sat Jan  3 03:53:34 2009
@@ -48,10 +48,8 @@
 
 B<XSUB> は XS インターフェースの基本単位を形成します。
 B<xsubpp> コンパイラによるコンパイル後、
-each XSUB amounts to a C function definition
-which will provide the glue between Perl calling conventions and C
-calling conventions.
-(TBT)
+それぞれの XSUB は Perl 呼び出し規則と C 呼び出し規則の間の糊を提供する
+C 関数定義となります。
 
 =begin original
 
@@ -65,14 +63,13 @@
 
 =end original
 
-The glue code pulls the arguments from the Perl stack, converts these
-Perl values to the formats expected by a C function, call this C function,
-transfers the return values of the C function back to Perl.
-Return values here may be a conventional C return value or any C
-function arguments that may serve as output parameters.  These return
-values may be passed back to Perl either by putting them on the
-Perl stack, or by modifying the arguments supplied from the Perl side.
-(TBT)
+糊のコードは Perl スタックから引数を取り出し、Perl の値を C 関数が
+想定している形式に変換し、C 関数を酔いだし、C 関数の返り値を Perl に
+返します。
+ここでの返り値は、伝統的な C の返り値か、出力パラメータの役目をする
+C 関数引数です。
+これらの返り値は、Perl スタックに置かれるか、Perl 側から供給された
+引数を変更することによって Perl に返されます。
 
 =begin original
 
@@ -86,14 +83,12 @@
 
 =end original
 
-The above is a somewhat simplified view of what really happens.  Since
-Perl allows more flexible calling conventions than C, XSUBs may do much
-more in practice, such as checking input parameters for validity,
-throwing exceptions (or returning undef/empty list) if the return value
-from the C function indicates failure, calling different C functions
-based on numbers and types of the arguments, providing an object-oriented
-interface, etc.
-(TBT)
+上記は実際に起きることをいくらか単純化したものです。
+Perl は C よりもより柔軟な呼び出し規則を認めているので、
+実際には XSUB は、検証のために入力をチェックする、もし C 関数からの
+返り値が失敗を示していたら例外を投げる(あるいは undef/空リストを返す)、
+引数の数と型によって異なった C 関数を呼び出す、オブジェクト指向
+インターフェースを提供する、といった、遥かに多くのことができます。
 
 =begin original
 
@@ -107,14 +102,13 @@
 
 =end original
 
-もちろん、このような糊コードを直接 C で書くこともできます。
+もちろん、このような糊のコードを直接 C で書くこともできます。
 しかし、これはつまらない仕事です; 特に複数の C 関数に対する糊を書く
 必要があったり、Perl スタックの分野やその奥義に親しくない場合はそうです。
 XS はこれを助けます:
-instead of writing this glue C code in long-hand, one can write
-a more concise short-hand I<description> of what should be done by
-the glue, and let the XS compiler B<xsubpp> handle the rest.
-(TBT)
+糊の C コードを長々と書く代わりに、糊にしてほしいことに関する、
+もっと簡潔で短い I<記述> を書いて、XS コンパイラ B<xsubpp> に
+残りを扱わせることができます。
 
 =begin original
 
@@ -133,16 +127,13 @@
 
 XS 言語は、どのように C ルーチンが使うのかと、どのように対応する Perl
 ルーチンが使うのかとのマッピングを記述できます。
-It
-also allows creation of Perl routines which are directly translated to
-C code and which are not related to a pre-existing C function.  In cases
-when the C interface coincides with the Perl interface, the XSUB
-declaration is almost identical to a declaration of a C function (in K&R
-style).  In such circumstances, there is another tool called C<h2xs>
-that is able to translate an entire C header file into a corresponding
-XS file that will provide glue to the functions/macros described in
-the header file.
-(TBT)
+これはまた、直接 C コードに変換され、既に存在する C 関数と関係ない
+Perl ルーチンの作成も可能にします。
+C インターフェースが Perl インターフェースと同期している場合、
+XSUB 宣言はほとんど (K&R 形式の) C 関数の宣言と同じです。
+このような事情から、C ヘッダ全体から、ヘッダファイルに記述されている
+関数/マクロへの糊を提供する XS ファイルへ変換する、C<h2xs> と呼ばれる
+もう一つのツールがあります。
 
 =begin original
 
@@ -181,11 +172,10 @@
 XS 形式のファイルは、最初の C<MODULE =Z<>> 指示子が現れるまで C 言語
 セクションから開始します。
 その他の XS 指示子と XSUB 定義はこの行に続きます。
-The "language" used in this part of the file
-is usually referred to as the XS language.  B<xsubpp> recognizes and
-skips POD (see L<perlpod>) in both the C and XS language sections, which
-allows the XS file to contain embedded documentation. 
-(TBT)
+ファイルのこの部分で使われる「言語」は普通 XS 言語として参照されます。
+B<xsubpp> は C と XS の言語セクションで POD (L<perlpod> を
+参照してください)を認識して呼び飛ばすので、XS ファイルに組み込み
+ドキュメントを含めることができます。
 
 =begin original
 
@@ -363,10 +353,8 @@
 
 =end original
 
-The simplest XSUBs consist of 3 parts: a description of the return
-value, the name of the XSUB routine and the names of its arguments,
-and a description of types or formats of the arguments.
-(TBT)
+もっとも単純な XSUB は 3 つの部分からなります: 返り値の記述、XSUB
+ルーチンの名前とその引数の名前、引数の型や形式の記述です。
 
 =begin original
 
Index: docs/perl/5.8.8/perlxstut.pod
diff -u docs/perl/5.8.8/perlxstut.pod:1.7 docs/perl/5.8.8/perlxstut.pod:1.8
--- docs/perl/5.8.8/perlxstut.pod:1.7	Thu Jan  1 04:45:25 2009
+++ docs/perl/5.8.8/perlxstut.pod	Sat Jan  3 03:53:34 2009
@@ -88,12 +88,12 @@
 
 =end original
 
-When writing a Perl extension for general consumption, one should expect that
-the extension will be used with versions of Perl different from the
-version available on your machine.  Since you are reading this document,
-the version of Perl on your machine is probably 5.005 or later, but the users
-of your extension may have more ancient versions.
-(TBT)
+一般向けに Perl エクステンションを書くとき、あなたのマシンで
+利用可能なバージョンと異なるバージョンの Perl でエクステンションが
+使われることを想定するべきです。
+この文書を読んでいるということは、あなたのマシンの Perl のバージョンは
+おそらく 5.005 以降でしょうが、エクステンションのユーザーはもっと古い
+バージョンかもしれません。
 
 =begin original
 
@@ -103,7 +103,7 @@
 
 =end original
 
-どのような非互換性が想定されるかを理解するために、、また珍しい場合として
+どのような非互換性が想定されるかを理解するために、また珍しい場合として、
 マシンに入っている Perl のバージョンがこのドキュメントより古い場合、
 さらなる情報は "Troubleshooting these Examples" の章を参照してください。
 
@@ -117,12 +117,11 @@
 
 =end original
 
-If your extension uses some features of Perl which are not available on older
-releases of Perl, your users would appreciate an early meaningful warning.
-You would probably put this information into the F<README> file, but nowadays
-installation of extensions may be performed automatically, guided by F<CPAN.pm>
-module or other tools.
-(TBT)
+もしエクステンションが、Perl の古いリリースでは利用できないような Perl の
+機能を使っているなら、ユーザーは早期の意味のある警告で理解します。
+おそらくこの情報を F<README> ファイルに追加するべきでしょうが、最近の
+エクステンションのインストールは、F<CPAN.pm> モジュールやその他の
+ツールによって自動的に行われるかもしれません。
 
 =begin original
 
@@ -1519,6 +1518,8 @@
 
 =head2 Anatomy of .xs file
 
+(.xs ファイルの解剖)
+
 =begin original
 
 The .xs file of L<"EXAMPLE 4"> contained some new elements.  To understand
@@ -1540,11 +1541,11 @@
 
 =end original
 
-Anything before this line is plain C code which describes which headers
-to include, and defines some convenience functions.  No translations are
-performed on this part, apart from having embedded POD documentation
-skipped over (see L<perlpod>) it goes into the generated output C file as is.
-(TBT)
+この行以前の全てはインクルードするヘッダおよび便利な関数を定義した
+プレーンな C コードです。
+この部分では、組み込みの POD 文書が読み飛ばされる(L<perlpod> を
+参照してください)ことを除いては何の変換は行われず、そのまま出力 C ファイルが
+出力されます。
 
 =begin original
 
@@ -1555,11 +1556,9 @@
 
 =end original
 
-Anything after this line is the description of XSUB functions.
-These descriptions are translated by B<xsubpp> into C code which
-implements these functions using Perl calling conventions, and which
-makes these functions visible from Perl interpreter.
-(TBT)
+この行以降の全ては XSUB 関数の記述です。
+これらの記述は、関数を Perl 呼び出し規則を使って実装し、関数が Perl
+インタプリタから見えるように、B<xsubpp> が C コードに変換します。
 
 =begin original
 
@@ -1570,11 +1569,10 @@
 
 =end original
 
-Pay a special attention to the function C<constant>.  This name appears
-twice in the generated .xs file: once in the first part, as a static C
-function, then another time in the second part, when an XSUB interface to
-this static C function is defined.
-(TBT)
+C<constant> 関数には特別な注意を払ってください。
+この名前は生成された .xs ファイルに 2 回現れます:
+1 回目は最初の部分に static C 関数として、2 回目は 2 番目の部分に、
+この static C 関数への XSUB インターフェースが定義されたときです。
 
 =begin original
 
@@ -1588,17 +1586,19 @@
 
 =end original
 
-This is quite typical for .xs files: usually the .xs file provides
-an interface to an existing C function.  Then this C function is defined
-somewhere (either in an external library, or in the first part of .xs file),
-and a Perl interface to this function (i.e. "Perl glue") is described in the
-second part of .xs file.  The situation in L<"EXAMPLE 1">, L<"EXAMPLE 2">,
-and L<"EXAMPLE 3">, when all the work is done inside the "Perl glue", is
-somewhat of an exception rather than the rule.
-(TBT)
+これは .xs ファイルではかなり典型的です: 普通 .xs ファイルは既にある
+C 関数へのインターフェースを提供します。
+それからこの C 関数はどこか(外部ライブラリか、.xs ファイルの最初の部分)で
+定義され、この関数への Perl インターフェース(つまり「Perl の糊」)が
+.xs ファイルの 2 番目の部分に記述されます。
+L<"EXAMPLE 1">, L<"EXAMPLE 2">,  L<"EXAMPLE 3"> の状況、
+つまり全ての動作が「Perl の糊」の内側で行われるときは、
+規則ではなく何らかの例外があります。
 
 =head2 Getting the fat out of XSUBs
 
+(太った部分を XSUB の外に出す)
+
 =begin original
 
 In L<"EXAMPLE 4"> the second part of .xs file contained the following
@@ -1626,12 +1626,11 @@
 
 =end original
 
-Note that in contrast with L<"EXAMPLE 1">, L<"EXAMPLE 2"> and L<"EXAMPLE 3">,
-this description does not contain the actual I<code> for what is done
-is done during a call to Perl function foo().
+L<"EXAMPLE 1">, L<"EXAMPLE 2">, L<"EXAMPLE 3"> と比較して、この記述は
+Perl 関数 foo() の呼び出しに何が起きているのかの実際の I<コード> は
+含んでいません。
 ここで何が起きているのかを理解するために、この XSUB に CODE セクションを
 追加できます:
-(TBT)
 
 	double
 	foo(a,b,c)
@@ -1656,15 +1655,15 @@
 
 =end original
 
-However, these two XSUBs provide almost identical generated C code: B<xsubpp>
-compiler is smart enough to figure out the C<CODE:> section from the first
-two lines of the description of XSUB.  What about C<OUTPUT:> section?  In
-fact, that is absolutely the same!  The C<OUTPUT:> section can be removed
-as well, I<as far as C<CODE:> section or C<PPCODE:> section> is not
-specified: B<xsubpp> can see that it needs to generate a function call
-section, and will autogenerate the OUTPUT section too.  Thus one can
-shortcut the XSUB to become:
-(TBT)
+しかし、これら 2 つの XSUB はほとんど同じ C コードを生成します:
+B<xsubpp> コンパイラは、XSUB の記述の最初の 2 行から
+C<CODE:> セクションを見つけ出すことができるぐらい賢いです。
+C<OUTPUT:> セクションについてはどうでしょう?
+実際、これは全く同じです!
+I<C<CODE:> セクションや C<PPCODE:> セクションが指定されない限り>、
+C<OUTPUT:> セクションも同様に削除でき、同様に OUTPUT セクションを
+自動生成します。
+従って、XSUB を以下のように省略できます:
 
 	double
 	foo(a,b,c)
@@ -1697,8 +1696,8 @@
 =end original
 
 で出来るでしょうか?
-これをするためには、C 関数 C<int is_even(int input)> を定義する必要が
-あります。
+これをするためには、C 関数 C<int is_even(int input)> を定義する
+必要があります。
 L<Anatomy of .xs file> で見たように、この定義に適切な場所は .xs ファイルの
 最初の部分です。
 実際、C 関数
@@ -1747,14 +1746,13 @@
 
 =end original
 
-This technique of separation of the glue part from the workhorse part has
-obvious tradeoffs: if you want to change a Perl interface, you need to
-change two places in your code.  However, it removes a lot of clutter,
-and makes the workhorse part independent from idiosyncrasies of Perl calling
-convention.  (In fact, there is nothing Perl-specific in the above description,
-a different version of B<xsubpp> might have translated this to TCL glue or
-Python glue as well.)
-(TBT)
+実際の動作の部分から糊の部分を分離する技術は明らかなトレードオフです:
+もし Perl インターフェースをしようとすると、コードの 2 箇所を変更する
+必要があります。
+しかし、これは多くの乱雑なものを取り除き、実際の動作の部分を Perl 呼び出し
+規則の特異性から独立させます。
+(実際のところ、上述の記述には Perl 固有のものはなく、異なるバージョンの
+B<xsubpp> はこれを TCL の糊や Python の糊にも変換できるかもしれません。)
 
 =head2 More about XSUB arguments
 
@@ -2172,13 +2170,14 @@
 
 =end original
 
-This extension is very Unix-oriented (struct statfs and the statfs system
-call).  If you are not running on a Unix system, you can substitute for
-statfs any other function that returns multiple values, you can hard-code
-values to be returned to the caller (although this will be a bit harder
-to test the error case), or you can simply not do this example.  If you
-change the XSUB, be sure to fix the test cases to match the changes.
-(TBT)
+このエクステンションはとても Unix 指向です(struct statfs と
+statfs システムコール)。
+もし Unix システム以外で実行するなら、statfs を複数の値を返す別の関数に
+置き換えるか、呼び出し元に返す値をハードコーディングする(しかしこれは
+エラーの場合をテストするのが少し難しくなります)か、あるいは単に
+この例を実行しないということもできます。
+もし XSUB を変更したなら、テストケースも変更にあわせて確実に
+修正してください。
 
 =begin original
 


perldocjp-cvs メーリングリストの案内
Back to archive index