argra****@users*****
argra****@users*****
2012年 8月 19日 (日) 18:32:12 JST
Index: docs/perl/5.10.0/perlguts.pod diff -u docs/perl/5.10.0/perlguts.pod:1.10 docs/perl/5.10.0/perlguts.pod:1.11 --- docs/perl/5.10.0/perlguts.pod:1.10 Sun Aug 19 05:51:40 2012 +++ docs/perl/5.10.0/perlguts.pod Sun Aug 19 18:32:11 2012 @@ -1906,7 +1906,7 @@ =end original -「揮発性」SVs は主に、perl のスタックに置かれる SV に対して使われます。 +「揮発性」SV は主に、perl のスタックに置かれる SV に対して使われます。 例えば、単に数値を呼び出したサブルーチンに渡すために作られた SV は スタックからポップされたときに自動的に片付けられるように揮発性になります。 同様に、(スタックにプッシュされた) XSUB から返された結果はしばしば @@ -2552,13 +2552,13 @@ =end original -The last three slots are a recent addition, and for source code -compatibility they are only checked for if one of the three flags -MGf_COPY, MGf_DUP or MGf_LOCAL is set in mg_flags. This means that most -code can continue declaring a vtable as a 5-element value. These three are -currently used exclusively by the threading code, and are highly subject -to change. -(TBT) +末尾の三つのスロットは最近追加されたもので、ソースコードの互換性のために、 +mg_flags に MGf_COPY, MGf_DUP, MGf_LOCAL のいずれか一つが設定されている +場合にのみチェックされます。 +これは、ほとんどのコードは vtable を 5 要素の値として定義したままで +よいということです。 +これらの三つは現在のところスレッドのコードのみで使われていて、 +変更される可能性が高いです。 =begin original @@ -2713,10 +2713,10 @@ =end original -Similarly, C<PERL_MAGIC_uvar> magic can be used much like tie() to call a -C function any time a scalar's value is used or changed. The C<MAGIC>'s -C<mg_ptr> field points to a C<ufuncs> structure: -(TBT) +同様に、C<PERL_MAGIC_uvar> マジックは、スカラの値が使われたり +変更されたりしたときに C 関数を呼び出すという、tie() とよく似た形で +使えます。 +C<MAGIC> の C<mg_ptr> フィールドは C<ufuncs> 構造体へのポインタです: struct ufuncs { I32 (*uf_val)(pTHX_ IV, SV*); @@ -2734,12 +2734,12 @@ =end original -When the SV is read from or written to, the C<uf_val> or C<uf_set> -function will be called with C<uf_index> as the first arg and a pointer to -the SV as the second. A simple example of how to add C<PERL_MAGIC_uvar> -magic is shown below. Note that the ufuncs structure is copied by -sv_magic, so you can safely allocate it on the stack. -(TBT) +SV が読み書きされたとき、C<uf_index> を最初の引数、SV へのポインタを +2 番目の引数として C<uf_val> または C<uf_set> 関数が呼び出されます。 +どのように C<PERL_MAGIC_uvar> マジックを追加するかの簡単な例を以下に +示します。 +ufuncs 構造体は sv_magic によってコピーされるので、スタック上に安全に +割り当てられることに注意してください。 void Umagic(sv) @@ -2774,15 +2774,16 @@ =end original -For hashes there is a specialized hook that gives control over hash -keys (but not values). This hook calls C<PERL_MAGIC_uvar> 'get' magic -if the "set" function in the C<ufuncs> structure is NULL. The hook -is activated whenever the hash is accessed with a key specified as -an C<SV> through the functions C<hv_store_ent>, C<hv_fetch_ent>, -C<hv_delete_ent>, and C<hv_exists_ent>. Accessing the key as a string -through the functions without the C<..._ent> suffix circumvents the -hook. See L<Hash::Util::Fieldhash/Guts> for a detailed description. -(TBT) +ハッシュについては、ハッシュのキー(値ではありません)の制御をするための +専門化されたフックがあります。 +このフックは、C<ufuncs> 構造体の "set" 関数が NULL のとき、 +C<PERL_MAGIC_uvar> 'get' マジックを呼び出します。 +このフックは、C<hv_store_ent>, C<hv_fetch_ent>, C<hv_delete_ent>, +C<hv_exists_ent> 関数を通して C<SV> で指定されたキーでハッシュに +アクセスされたときに有効になります。 +C<..._ent> 接尾辞を持たない関数を等して文字列としてキーにアクセスすると、 +フックを通りません。 +詳細な説明については L<Hash::Util::Fieldhash/Guts> を参照してください。 =begin original @@ -2918,10 +2919,9 @@ perl の tie 関数は、ある変数と GET、SET 等といった様々なメソッドを 実装しているオブジェクトとを結び付けるものです。 -XSUB から perl の tie 関数と等価な働きをさせるには、 -ちょっとしたオマジナイをしなければなりません。 -以下の例が必要なステップです。 -まず最初にハッシュを作り、それから +XSUB から perl の tie 関数と等価な働きをさせるには、ちょっとした +オマジナイをしなければなりません。 +以下の例が必要なステップです - まず最初にハッシュを作り、それから tie メソッドを実装するクラスに bless した二番目のハッシュを作ります。 最後に二つのハッシュを tie し、新たに生成した tie されたハッシュに対する リファレンスを返します。 @@ -3437,6 +3437,8 @@ =head1 Subroutines +(サブルーチン) + =head2 XSUBs and the Argument Stack (XSUB と引数スタック) @@ -3861,7 +3863,7 @@ しかしながら、SV に対する最適化のようなものは(通常は)毎回 行なわれるわけではありません。 オペコードは解放されたり、生成されることのない特別に割り当てられた -SVs (I<target>s) を再利用します。 +SV (I<target>) を再利用します。 =begin original @@ -5347,9 +5349,9 @@ =end original -The second column is the return type, the third column the name. Columns -after that are the arguments. The first column is a set of flags: -(TBT) +2 番目の列は返り値型で、3 番目の列は名前です。 +それ以降の列は引数です。 +最初の列はフラグの集合です: =over 3 @@ -5525,9 +5527,8 @@ =end original -Binary backward compatibility; this function is a macro but also has -a C<Perl_> implementation (which is exported). -(TBT) +バイナリ後方互換性; この関数はマクロですが、(エクスポートされている) +C<Perl_> 実装もあります。 =item others @@ -5537,8 +5538,7 @@ =end original -See the comments at the top of C<embed.fnc> for others. -(TBT) +その他については C<embed.fnc> の先頭のコメントを参照してください。 =back @@ -5550,10 +5550,9 @@ =end original -If you edit F<embed.pl> or F<embed.fnc>, you will need to run -C<make regen_headers> to force a rebuild of F<embed.h> and other -auto-generated files. -(TBT) +F<embed.pl> または F<embed.fnc> を編集した場合、F<embed.h> およびその他の +自動生成ファイルを強制的にリビルドするために C<make regen_headers> を +実行する必要があります。 =head2 Formatted Printing of IVs, UVs, and NVs @@ -5567,10 +5566,9 @@ =end original -If you are printing IVs, UVs, or NVS instead of the stdio(3) style -formatting codes like C<%d>, C<%ld>, C<%f>, you should use the -following macros for portability -(TBT) +IV, UV, NVS を、stdio(3) 形式の C<%d>, C<%ld>, C<%f> のような +フォーマッティングコードではなく表示したいなら、互換性のために以下の +マクロを使うべきです IVdf IV in decimal UVuf UV in decimal @@ -5587,9 +5585,8 @@ =end original -These will take care of 64-bit integers and long doubles. -For example: -(TBT) +これらは 64 ビット整数や long double も考慮します。 +例えば: printf("IV is %"IVdf"\n", iv); @@ -5599,8 +5596,7 @@ =end original -The IVdf will expand to whatever is the correct format for the IVs. -(TBT) +IVdf は、なんであれ IV のための正しいフォーマットに拡張されます。 =begin original @@ -5609,9 +5605,8 @@ =end original -If you are printing addresses of pointers, use UVxf combined -with PTR2UV(), do not use %lx or %p. -(TBT) +ポインタのアドレスを表示したいなら、PTR2UV() で UVxf を使ってください; +%lx や %p は使わないでください。 =head2 Pointer-To-Integer and Integer-To-Pointer @@ -5624,9 +5619,8 @@ =end original -Because pointer size does not necessarily equal integer size, -use the follow macros to do it right. -(TBT) +ポインタサイズは整数のサイズと同じである必要はないので、正しく行うために +以下のマクロを使ってください。 PTR2UV(pointer) PTR2IV(pointer)