From 48cd6cb153c6b14b5843934cd403103ff369f648 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Mon, 5 Sep 2011 01:06:25 +0000 Subject: README.ja, README.EXT.ja: resolve conflicts. [ruby-dev:44459] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33187 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- README.EXT.ja | 141 ---------------------------------------------------------- 1 file changed, 141 deletions(-) (limited to 'README.EXT.ja') diff --git a/README.EXT.ja b/README.EXT.ja index d061f16ff2..44ea819ebb 100644 --- a/README.EXT.ja +++ b/README.EXT.ja @@ -94,110 +94,6 @@ FIXNUMとNILに関してはより高速な判別マクロが用意されてい FIXNUM_P(obj) NIL_P(obj) -<<<<<<< HEAD -1.3 VALUEをCのデータに変換する - -データタイプがT_NIL,T_FALSE,T_TRUEである時,データはそれぞ -れnil,false,trueです.このデータタイプのオブジェクトはひと -つずつしか存在しません. - -データタイプがT_FIXNUMの時,これは31bitまたは63bitのサイズを -持つ整数です.longのサイズが32bitのプラットフォームであれば -31bitに,longのサイズが64bitのプラットフォームであれば63bit -になります. FIXNUM を C の整数に変換するためにはマクロ -「FIX2INT()」または「FIX2LONG()」を使います.これらのマクロ -を使用する際には事前にデータタイプがFIXNUMであることを確認す -る必要がありますが,比較的高速に変換を行うことができます.ま -た,「FIX2LONG()」は例外を発生しませんが,「FIX2INT()」は変 -換結果がintのサイズに収まらない場合には例外を発生します. -それから,FIXNUMに限らずRubyのデータを整数に変換する -「NUM2INT()」および「NUM2LONG()」というマクロがあります.こ -れらのマクロはマクロはデータタイプのチェック無しで使えます -(整数に変換できない場合には例外が発生する).同様にチェック無 -で使える変換マクロはdoubleを取り出す「NUM2DBL()」があります. - -char* を取り出す場合, StringValue() と StringValuePtr() -を使います. -StringValue(var) は var が String -であれば何もせず,そうでなければ var を var.to_str() の結果 -に置き換えるマクロ,StringValuePtr(var) は同様に var を -String に置き換えてから var のバイト列表現に対する char* を -返すマクロです.var の内容を直接置き換える処理が入るので, -var は lvalue である必要があります. -また,StringValuePtr() に類似した StringValueCStr() というマ -クロもあります.StringValueCStr(var) は var を String に置き -換えてから var の文字列表現に対する char* を返します.返され -る文字列の末尾には nul 文字が付加されます.なお,途中に nul -文字が含まれる場合は ArgumentError が発生します. -一方,StringValuePtr() では,末尾に nul 文字がある保証はなく, -途中に nul 文字が含まれている可能性もあります. - -それ以外のデータタイプは対応するCの構造体があります.対応す -る構造体のあるVALUEはそのままキャスト(型変換)すれば構造体の -ポインタに変換できます. - -構造体は「struct RXxxxx」という名前でruby.hで定義されていま -す.例えば文字列は「struct RString」です.実際に使う可能性が -あるのは文字列と配列くらいだと思います. - -ruby.hでは構造体へキャストするマクロも「RXXXXX()」(全部大文 -字にしたもの)という名前で提供されています(例: RSTRING()). - -構造体からデータを取り出すマクロが提供されています.文字列 -strの長さを得るためには「RSTRING_LEN(str)」とし,文字列strを -char*として得るためには「RSTRING_PTR(str)」とします.配列の -場合には,それぞれ「RARRAY_LEN(ary)」,「RARRAY_PTR(ary)」と -なります. - -Rubyの構造体を直接アクセスする時に気をつけなければならないこ -とは,配列や文字列の構造体の中身は参照するだけで,直接変更し -ないことです.直接変更した場合,オブジェクトの内容の整合性が -とれなくなって,思わぬバグの原因になります. - -1.4 CのデータをVALUEに変換する - -VALUEの実際の構造は - - * FIXNUMの場合 - - 1bit左シフトして,LSBを立てる. - - * その他のポインタの場合 - - そのままVALUEにキャストする. - -となっています.よって,LSBをチェックすればVALUEがFIXNUMかど -うかわかるわけです(ポインタのLSBが立っていないことを仮定して -いる). - -ですから,FIXNUM以外のRubyのオブジェクトの構造体は単にVALUE -にキャストするだけでVALUEに変換出来ます.ただし,任意の構造 -体がVALUEにキャスト出来るわけではありません.キャストするの -はRubyの知っている構造体(ruby.hで定義されているstruct RXxxx -のもの)だけです. - -FIXNUMに関しては変換マクロを経由する必要があります.Cの整数 -からVALUEに変換するマクロは以下のものがあります.必要に応じ -て使い分けてください. - - INT2FIX() もとの整数が31bitまたは63bit以内に収まる自信 - がある時 - INT2NUM() 任意の整数からVALUEへ - -INT2NUM()は整数がFIXNUMの範囲に収まらない場合,Bignumに変換 -してくれます(が,少し遅い). - -1.5 Rubyのデータを操作する - -先程も述べた通り,Rubyの構造体をアクセスする時に内容の更新を -行うことは勧められません.で,Rubyのデータを操作する時には -Rubyが用意している関数を用いてください. - -ここではもっとも使われるであろう文字列と配列の生成/操作を行 -い関数をあげます(全部ではないです). - - 文字列に対する関数 -======= 1.3 VALUEをCのデータに変換する データタイプがT_NIL,T_FALSE,T_TRUEである時,データはそれぞ @@ -300,7 +196,6 @@ Rubyが用意している関数を用いてください. い関数をあげます(全部ではないです). 文字列に対する関数 ->>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128] rb_str_new(const char *ptr, long len) @@ -347,15 +242,9 @@ Rubyが用意している関数を用いてください. rb_str_cat2(str, rb_vsprintf(format, ap)) と同等である. rb_enc_str_new(const char *ptr, long len, rb_encoding *enc) -<<<<<<< HEAD - - 指定されたエンコーディングでRubyの文字列を生成する. - -======= 指定されたエンコーディングでRubyの文字列を生成する. ->>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128] rb_usascii_str_new(const char *ptr, long len) rb_usascii_str_new_cstr(const char *ptr) @@ -1130,13 +1019,8 @@ Rubyコマンドの実装 enc/*.c : エンコーディングクラス群 enc/trans/* : コードポイント対応表 -<<<<<<< HEAD -gorubyコマンドの実装 - -======= gorubyコマンドの実装 ->>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128] goruby.c golf_prelude.rb : goruby固有のライブラリ -> golf_prelude.c : 自動生成 @@ -1296,21 +1180,12 @@ void rb_define_global_const(const char *name, VALUE val) rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc) -<<<<<<< HEAD - メソッドを定義する.argcはselfを除く引数の数.argcが-1の時, - 関数には引数の数(selfを含まない)を第1引数, 引数の配列を第2 - 引数とする形式で与えられる(第3引数はself).argcが-2の時, - 第1引数がself, 第2引数がargs(argsは引数を含むRubyの配列)と - いう形式で与えられる. - -======= メソッドを定義する.argcはselfを除く引数の数.argcが-1の時, 関数には引数の数(selfを含まない)を第1引数, 引数の配列を第2 引数とする形式で与えられる(第3引数はself).argcが-2の時, 第1引数がself, 第2引数がargs(argsは引数を含むRubyの配列)と いう形式で与えられる. ->>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128] rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc) privateメソッドを定義する.引数はrb_define_method()と同じ. @@ -1423,15 +1298,6 @@ VALUE rb_block_call(VALUE obj, ID mid, int argc, VALUE * argv, [OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) -<<<<<<< HEAD - func2をブロックとして設定し, func1をイテレータとして呼ぶ. - func1には arg1が引数として渡され, func2には第1引数にイテレー - タから与えられた値, 第2引数にarg2が渡される. - - 1.9でrb_iterateを使う場合は, func1の中でRubyレベルのメソッド - を呼び出さなければならない. - 1.9でobsoleteとなった. 代わりにrb_block_callが用意された. -======= func2をブロックとして設定し, func1をイテレータとして呼ぶ. func1には arg1が引数として渡され, func2には第1引数にイテレー タから与えられた値, 第2引数にarg2が渡される. @@ -1439,7 +1305,6 @@ VALUE rb_block_call(VALUE obj, ID mid, int argc, VALUE * argv, 1.9でrb_iterateを使う場合は, func1の中でRubyレベルのメソッド を呼び出さなければならない. 1.9でobsoleteとなった. 代わりにrb_block_callが用意された. ->>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128] VALUE rb_yield(VALUE val) @@ -1694,15 +1559,9 @@ dir_config(target[, default_include, default_lib]) pkg_config(pkg) -<<<<<<< HEAD - pkg-configコマンドからパッケージpkgの情報を得る. - pkg-configの実際のコマンド名は,--with-pkg-configコマンド - ラインオプションで指定可能. -======= pkg-configコマンドからパッケージpkgの情報を得る. pkg-configの実際のコマンド名は,--with-pkg-configコマンド ラインオプションで指定可能. ->>>>>>> Change encoding from EUC-JP to UTF-8. [Feature #5128] /* * Local variables: -- cgit v1.2.3