diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-22 09:09:41 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-22 09:09:41 +0000 |
commit | 818e1de104e0e9a2dfa676f3bc5ba7c17ab556e5 (patch) | |
tree | 6fc149ddf0b571fd965efe87badbe2ce02a68795 | |
parent | 0acca9a8261fb33f720d941fd5113f046bda2d70 (diff) | |
download | ruby-818e1de104e0e9a2dfa676f3bc5ba7c17ab556e5.tar.gz |
* README.EXT, README.EXT.ja: mention about FIX2LONG and NUM2LONG.
see [ruby-dev:35197]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18159 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | README.EXT | 10 | ||||
-rw-r--r-- | README.EXT.ja | 23 |
3 files changed, 28 insertions, 10 deletions
@@ -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) |