зеркало из https://github.com/github/ruby.git
* 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:
Родитель
0acca9a826
Коммит
818e1de104
|
@ -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),
|
||||
|
|
10
README.EXT
10
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)
|
||||
|
|
|
@ -95,19 +95,24 @@ FIXNUM
|
|||
|
||||
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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче