summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--README.EXT10
-rw-r--r--README.EXT.ja23
3 files changed, 28 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 7b16023f96..ea7e3447bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jul 22 18:08:34 2008 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * README.EXT, README.EXT.ja: mention about FIX2LONG and NUM2LONG.
+ see [ruby-dev:35197]
+
Tue Jul 22 17:53:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* compile.c (insn_data_to_s_detail), file.c (rb_stat_inspect),
diff --git a/README.EXT b/README.EXT
index 4f636d929b..57a68c0103 100644
--- a/README.EXT
+++ b/README.EXT
@@ -93,8 +93,12 @@ respectively. They are singletons for the data type.
The T_FIXNUM data is a 31bit length fixed integer (63bit length on
some machines), which can be converted to a C integer by using the
-FIX2INT() macro. There is also NUM2INT() which converts any Ruby
-numbers into C integers. The NUM2INT() macro includes a type check,
+FIX2INT() macro or FIX2LONG(). Though you have to check that the
+data is really FIXNUM before using them, they are faster. FIX2LONG()
+never raises exceptions, but FIX2INT() raises RangeError if the
+result is bigger or smaller than the size of int.
+There are also NUM2INT() and NUM2LONG() which converts any Ruby
+numbers into C integers. These macros includes a type check,
so an exception will be raised if the conversion failed. NUM2DBL()
can be used to retrieve the double float value in the same way.
@@ -827,8 +831,10 @@ void Check_SafeStr(VALUE value)
** Data type conversion
FIX2INT(value)
+FIX2LONG(value)
INT2FIX(i)
NUM2INT(value)
+NUM2LONG(value)
INT2NUM(i)
NUM2DBL(value)
rb_float_new(f)
diff --git a/README.EXT.ja b/README.EXT.ja
index b78591f38d..fe9eabd539 100644
--- a/README.EXT.ja
+++ b/README.EXT.ja
@@ -95,19 +95,24 @@ FIXNUMとNILに関してはより高速な判別マクロが用意されています.
1.3 VALUEをCのデータに変換する
-データタイプがT_NIL, T_FALSE, T_TRUEである時,データはそれぞ
-れnil, false, trueです.このデータタイプのオブジェクトはひと
+データタイプがT_NIL,T_FALSE,T_TRUEである時,データはそれぞ
+れnil,false,trueです.このデータタイプのオブジェクトはひと
つずつしか存在しません.
データタイプがT_FIXNUMの時,これは31bitまたは63bitのサイズを
持つ整数です.longのサイズが32bitのプラットフォームであれば
-31bitに, longのサイズが64bitのプラットフォームであれば63bit
+31bitに,longのサイズが64bitのプラットフォームであれば63bit
になります. FIXNUM を C の整数に変換するためにはマクロ
-「FIX2INT()」を使います.それから,FIXNUMに限らずRubyのデー
-タを整数に変換する「NUM2INT()」というマクロがあります.この
-マクロはデータタイプのチェック無しで使えます(整数に変換でき
-ない場合には例外が発生する).同様にチェック無しで使える変換
-マクロはdoubleを取り出す「NUM2DBL()」があります.
+「FIX2INT()」または「FIX2LONG()」を使います.これらのマクロ
+を使用する際には事前にデータタイプがFIXNUMであることを確認す
+る必要がありますが、比較的高速に変換を行うことができます.ま
+た、「FIX2LONG()」は例外を発生しませんが、「FIX2INT()」は変
+換結果がintのサイズに収まらない場合には例外を発生します。
+それから,FIXNUMに限らずRubyのデータを整数に変換する
+「NUM2INT()」および「NUM2LONG()」というマクロがあります.こ
+れらのマクロはマクロはデータタイプのチェック無しで使えます
+(整数に変換できない場合には例外が発生する).同様にチェック無
+で使える変換マクロはdoubleを取り出す「NUM2DBL()」があります.
char* を取り出す場合,version 1.6 以前では「STR2CSTR()」とい
うマクロを使っていましたが,これは to_str() による暗黙の型変
@@ -940,8 +945,10 @@ void Check_SafeStr(VALUE value)
** 型変換
FIX2INT(value)
+FIX2LONG(value)
INT2FIX(i)
NUM2INT(value)
+NUM2LONG(value)
INT2NUM(i)
NUM2DBL(value)
rb_float_new(f)