* 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
This commit is contained in:
usa 2008-07-22 09:09:41 +00:00
Родитель 0acca9a826
Коммит 818e1de104
3 изменённых файлов: 28 добавлений и 10 удалений

Просмотреть файл

@ -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),

Просмотреть файл

@ -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)

Просмотреть файл

@ -95,19 +95,24 @@ FIXNUM
1.3 VALUEをCのデータに変換する
データタイプがT_NIL, T_FALSE, T_TRUEである時データはそれぞ
れnil, false, trueですこのデータタイプのオブジェクトはひと
データタイプがT_NILT_FALSET_TRUEである時データはそれぞ
れnilfalsetrueですこのデータタイプのオブジェクトはひと
つずつしか存在しません.
データタイプが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)