Kentaro Shirakata
argra****@users*****
2006年 10月 31日 (火) 21:53:45 JST
Index: docs/perl/5.6.1/perlapio.pod diff -u docs/perl/5.6.1/perlapio.pod:1.2 docs/perl/5.6.1/perlapio.pod:1.3 --- docs/perl/5.6.1/perlapio.pod:1.2 Thu Jun 2 18:07:18 2005 +++ docs/perl/5.6.1/perlapio.pod Tue Oct 31 21:53:45 2006 @@ -1,6 +1,8 @@ +=encoding euc-jp + =head1 NAME -perlapio - perlの入出力抽象インターフェース +perlapio - perl の入出力抽象インターフェース =head1 SYNOPSIS @@ -56,24 +58,24 @@ =head1 DESCRIPTION -Perlのソースコードでは、ANSI CのI<stdio.h>にある関数ではなく -上記の関数を使うべきであり、I<perlio.h>がConfigureの実行時に選択した -I/O機構へC<#define>します。 +Perl のソースコードでは、ANSI C の I<stdio.h> にある関数ではなく +上記の関数を使うべきであり、I<perlio.h> が Configure の実行時に選択した +I/O 機構へ C<#define> します。 -これらの関数はI<stdio.h>にあるものがモデルになっていますが、 +これらの関数は I<stdio.h> にあるものがモデルになっていますが、 それに渡すパラメーターは“ちょっとばかし整頓”されています。 =over 4 =item B<PerlIO *> -これはFILE *と似たものではありますが、FILE *と異なるのはこれが +これは FILE * と似たものではありますが、FILE * と異なるのはこれが 不透明なものであるように扱うべきだということです (これが何かに対するポインターであると仮定するのが安全でしょう)。 =item B<PerlIO_stdin()>, B<PerlIO_stdout()>, B<PerlIO_stderr()> -C<stdin>, C<stdout>, C<stderr>の代わりに使ってください。 +C<stdin>, C<stdout>, C<stderr> の代わりに使ってください。 これらは変数でなく“関数呼び出し”のように記述されていますが、 これは使用するプラットフォームにおいてロードモジュールに対するデータの エクスポートができなかったり、あるいは異なる“スレッド”が異なる値を @@ -86,16 +88,16 @@ =item B<PerlIO_printf(f,fmt,...)>, B<PerlIO_vprintf(f,fmt,a)> -fprintf()/vfprintf と等価です。 +fprintf()/vfprintf() と等価です。 =item B<PerlIO_stdoutf(fmt,...)> -これはprintf()と等価です。printfはこの関数に対する#definedとなっていますから、 -(現時点では)Perlのソースコード中でC<printf(fmt,...)>とすることは合法です。 +これは printf() と等価です。printf はこの関数に対する #define となっていますから、 +(現時点では) Perl のソースコード中で C<printf(fmt,...)> とすることは合法です。 =item B<PerlIO_read(f,buf,count)>, B<PerlIO_write(f,buf,count)> -fread() および fwrite()に対応します。これらの引数がそれとは異なり、 +fread() および fwrite() に対応します。これらの引数がそれとは異なり、 “count”は一つだけしかなくて“file”が先頭であるということに 注意してください。 @@ -103,20 +105,20 @@ =item B<PerlIO_puts(s,f)>, B<PerlIO_putc(c,f)> -fputs() および fputc()に対応します。最初の引数に“file”が来るということに +fputs() および fputc() に対応します。最初の引数に“file”が来るということに 注意してください。 =item B<PerlIO_ungetc(c,f)> -ungetc()に対応します。最初の引数に“file”が来るということに注意してください。 +ungetc() に対応します。最初の引数に“file”が来るということに注意してください。 =item B<PerlIO_getc(f)> -getc()に対応します。 +getc() に対応します。 =item B<PerlIO_eof(f)> -feof()に対応します。 +feof() に対応します。 =item B<PerlIO_error(f)> @@ -124,92 +126,120 @@ =item B<PerlIO_fileno(f)> -fileno()に対応します。一部のプラットフォームにおいては、“fileno”の +fileno() に対応します。一部のプラットフォームにおいては、“fileno”の 意味するところがUNIXとは違うということに注意してください。 =item B<PerlIO_clearerr(f)> -clearerr()に対応し、“ストリーム”の`eof'や`error'といったフラグを +clearerr() に対応し、“ストリーム”の`eof'や`error'といったフラグを クリアします。 =item B<PerlIO_flush(f)> -fflush()に対応します。 +fflush() に対応します。 =item B<PerlIO_tell(f)> -ftell()に対応します。 +ftell() に対応します。 =item B<PerlIO_seek(f,o,w)> -fseek()に対応します。 +fseek() に対応します。 =item B<PerlIO_getpos(f,p)>, B<PerlIO_setpos(f,p)> -それぞれftgetpos()とfsetpos()に対応します。 +それぞれ ftgetpos() と fsetpos() に対応します。 プラットフォームが stdio 呼び出しを持っていない場合にはこれらの関数は -PerlIO_tell()、PerlIO_seek()によって実装されます。 +PerlIO_tell()、PerlIO_seek() によって実装されます。 =item B<PerlIO_rewind(f)> -rewind()に対応します。一部の状況においてはこれはPerlIO_seek()によって +rewind() に対応します。一部の状況においてはこれは PerlIO_seek() によって 再定義されている可能性があるので注意してください。 =item B<PerlIO_tmpfile()> -tmpfile()に対応し、クローズ時に自動的に削除される無名 PerlIOを返します。 +tmpfile() に対応し、クローズ時に自動的に削除される無名 PerlIO を返します。 =back =head2 Co-existence with stdio -(stdioとの共存) +(stdio との共存) + +=begin original -PerlIOとstdioとの共存をサポートするためのアウトラインがあります。 -PerlIOがstdioを使って実装されているのであれば、問題はありません。 -しかし、perlioが sfioのの上に実装されているのであればstdio呼び出しを -使おうとするライブラリコードに渡すことができるFILE *を作成する機構が +There is outline support for co-existence of PerlIO with stdio. +Obviously if PerlIO is implemented in terms of stdio there is +no problem. However if perlio is implemented on top of (say) sfio +then mechanisms must exist to create a FILE * which can be passed +to library code which is going to use stdio calls. + +=end original + +PerlIO と stdio との共存をサポートするためのアウトラインがあります。 +PerlIO が stdio を使って実装されているのであれば、問題はありません。 +しかし、perlio が sfio の上に実装されているのであれば stdio 呼び出しを +使おうとするライブラリコードに渡すことができる FILE * を作成する機構が なければなりません。 =over 4 =item B<PerlIO_importFILE(f,flags)> -FILE *からPerlIO *を得るのに使います。検討されている インターフェースの -引数を追加することができます。 +=begin original + +Used to get a PerlIO * from a FILE *. +May need additional arguments, interface under review. + +=end original + +FILE * から PerlIO * を得るのに使います。 +追加の引数やインタフェースのレビューが必要です。 =item B<PerlIO_exportFILE(f,flags)> -PerlIO *を取り、ANSI CのI<stdio.h>のルーチンに渡して使われる +PerlIO * を取り、ANSI C の I<stdio.h> のルーチンに渡して使われる ‘ネイティブ’な FILE * 構造体を返します。 -‘export’された FILE *は記録され、それ以後のオリジナルの -PerlIO *に対するPerlIO操作に影響を及ぼす可能性があります。 +‘export’された FILE * は記録され、それ以後のオリジナルの +PerlIO * に対する PerlIO 操作に影響を及ぼす可能性があります。 =item B<PerlIO_findFILE(f)> -直前の`export'されたFILE *を(もしあれば)返します。インターフェースが +直前の`export'された FILE * を(もしあれば)返します。インターフェースが 完全に定義されるまではこれはプレースホルダーです。 =item B<PerlIO_releaseFILE(p,f)> -PerlIO_releaseFILE は、PerlIOにすべてのFILE *の使用が完了したことを知らせます。 -完了したものは‘export’された FILE *のリストから削除されます。 +PerlIO_releaseFILE は、PerlIO にすべてのFILE * の使用が完了したことを知らせます。 +完了したものは‘export’された FILE * のリストから削除されます。 そして、それに結び付けられている PerlIO * は元々の振る舞いに戻ります。 =item B<PerlIO_setlinebuf(f)> -これはsetlinebuf()に対応します。これを使うことは現時点では避けてください。 -(Perl coreは“dumping”が$| の自動フラッシュに関係していないB<ときにのみ> +これは setlinebuf() に対応します。これを使うことは現時点では避けてください。 +(Perl core は“dumping”が $| の自動フラッシュに関係していないB<ときにのみ> これを使います)。 =back -上述した ユーザーAPIに加えて、perlが、PerlIOの内部で扱うことが -できるようにする“implementation”インターフェースがあります。 -以下に挙げる呼び出しは、それぞれConfigureで定義されるFILE_xxxマクロに +=begin original + +In addition to user API above there is an "implementation" interface +which allows perl to get at internals of PerlIO. +The following calls correspond to the various FILE_xxx macros determined +by Configure. This section is really of interest to only those +concerned with detailed perl-core behaviour or implementing a +PerlIO mapping. + +=end original + +上述したユーザー API に加えて、perl が PerlIO の内部で扱うことが +できるようにする「実装」インターフェースがあります。 +以下に挙げる呼び出しは、それぞれ Configure で定義される FILE_xxx マクロに 対応しています。 -このセクションでは、perlプログラムの振る舞いや PerlIO のマッピングの +このセクションでは、perl-core の振る舞いや PerlIO のマッピングの 詳細についてのみ注目します。 =over 4 @@ -229,12 +259,11 @@ =item B<PerlIO_canset_cnt(f)> -バッファにあるバイト数を調整することのできる -実装です。 +バッファにあるバイト数を調整することのできる実装です。 =item B<PerlIO_fast_gets(f)> -<FILE>機構を取り扱うためのperlのfast codeを許すのに要求される +<FILE> 機構を取り扱うための perl の fast code を許すのに要求される インターフェースのすべてを実装しています。 PerlIO_fast_gets(f) = PerlIO_has_cntptr(f) && \ @@ -244,14 +273,14 @@ =item B<PerlIO_set_ptrcnt(f,p,c)> ポインターをバッファにセットし、バッファにあるバイト数はそのままです。 -以前のC<PerlIO_get_ptr> と C<PerlIO_get_cnt>の呼び出しから +以前の C<PerlIO_get_ptr> と C<PerlIO_get_cnt> の呼び出しから 推測される範囲内のポインターをセットすることのみに使うべきでしょう。 =item B<PerlIO_set_cnt(f,c)> 不明瞭 - バッファにあるバイト数をセットします。使うのはお薦めできません。 -現在これは、doio.cでのみ count < -1 を 強制的に-1にするために使われています。 -おそらくPerlIO_set_emptyやそれに類するものがあるべきでしょう。 +現在これは、doio.c でのみ count < -1 を 強制的に -1 にするために使われています。 +おそらく PerlIO_set_empty やそれに類するものがあるべきでしょう。 この呼び出しは、“count”がポインターと“limit”から導き出される場合には 実際にはなにもしません。