ruby-trunk-changes r54291 - r54299

今日は数値クラスの統合の一環と思われる整数用の演算関数の追加などがありました。

naruse: r54291 2016-03-26 06:35:39 +0900

localeinit.c の rb_locale_charmap_index() の引数が未使用の VALUE 型になっていたのを void にしています。実際に呼んでる encoding.c での宣言と異なってたみたいですね。 [ruby-core:74579] [Bug #12118]

naruse: r54292 2016-03-26 06:40:49 +0900

r54291 の ChangeLog エントリにパッチ提供者と ML 番号を追記しています。

naruse: r54293 2016-03-26 06:44:26 +0900

r54291 の ChangeLog エントリのチケット番号を [Bug #12218] に変更しています。

nobu: r54294 2016-03-26 10:34:35 +0900

古い VC での挙動のために関数を関数ポインタとして返す時に & 演算子を明示的に使うようにしています。

nobu: r54295 2016-03-26 10:52:00 +0900

numeric.c に Fixnum の符号の判定を VALUE 型のままで行うためのマクロ FIXNUM_POSIVIVE_P(), FIXNUM_NEGATIVE_P(), FIXNUM_ZERO_P() を追加しています。 INT2FIX() で 0 の Fixnum表現を作って SIGNED_VALUE として比較しています。が NEGATIVE_P() だけは直接 0 と比較している…。まあ Fixnum は1ビット左シフトして最下位ビットを立てたものなのでこれで誤ることはないですが、なんかすわりが悪いですね。

nobu: r54296 2016-03-26 10:54:16 +0900

uminus(単項マイナス)、plus, minus, mul, idiv, modulo などの整数の演算を任意の整数オブジェクトを受け付ける関数群 rb_int_uminus(), ... などを追加しています。これも数値型の統合のためでしょうか。

nobu: r54297 2016-03-26 10:54:50 +0900

r54296 に続いて int_round_0() を rb_int_round() と改名して rb_int_idiv(), rb_int_modulo(), rb_int_minus() などを利用するようにして任意の整数オブジェクトを受け取るようにしています。

nobu: r54298 2016-03-26 10:55:14 +0900

int_to_s() から引数処理以降を rb_int2str() という関数に切り出して任意の整数オブジェクトを受け付ける文字列化関数を定義しています。

nobu: r54299 2016-03-26 11:03:49 +0900

test/ruby/test_integer.rb に assert_int_equal および assert_float_equal というユーティリティメソッドを追加してリファクタリングして、また Fixnum と Bignum は区別しないようにしています。