1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* README.EXT.ja: update about Fixnum. reported in

<http://www.tmtm.org/ja/tdiary/?date=20080611#p01>

	* README.EXT.ja: describe about StringValueCStr().



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
usa 2008-06-13 05:46:48 +00:00
parent 32ef17fe7b
commit 074a876df5
2 changed files with 30 additions and 13 deletions

View file

@ -1,3 +1,10 @@
Fri Jun 13 14:41:26 2008 NAKAMURA Usaku <usa@ruby-lang.org>
* README.EXT.ja: update about Fixnum. reported in
<http://www.tmtm.org/ja/tdiary/?date=20080611#p01>
* README.EXT.ja: describe about StringValueCStr().
Fri Jun 13 14:24:37 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* gc.c (rb_memerror): exit with EXIT_FAILURE instead of magic number.

View file

@ -35,7 +35,7 @@ Ruby
T_STRING 文字列
T_REGEXP 正規表現
T_ARRAY 配列
T_FIXNUM Fixnum(31bit長整数)
T_FIXNUM Fixnum(31bitまたは63bit長整数)
T_HASH 連想配列
T_STRUCT (Rubyの)構造体
T_BIGNUM 多倍長整数
@ -99,13 +99,15 @@ FIXNUM
れnil, false, trueですこのデータタイプのオブジェクトはひと
つずつしか存在しません.
データタイプがT_FIXNUMの時これは31bitのサイズを持つ整数で
FIXNUMをCの整数に変換するためにはマクロ「FIX2INT()」を使
いますそれからFIXNUMに限らずRubyのデータを整数に変換する
「NUM2INT()」というマクロがあります.このマクロはデータタイ
プのチェック無しで使えます(整数に変換できない場合には例外が
発生する)同様にチェック無しで使える変換マクロはdoubleを
取り出す「NUM2DBL()」があります。
データタイプがT_FIXNUMの時これは31bitまたは63bitのサイズを
持つ整数ですlongのサイズが32bitのプラットフォームであれば
31bitに, longのサイズが64bitのプラットフォームであれば63bit
になります. FIXNUM を C の整数に変換するためにはマクロ
「FIX2INT()」を使いますそれからFIXNUMに限らずRubyのデー
タを整数に変換する「NUM2INT()」というマクロがあります.この
マクロはデータタイプのチェック無しで使えます(整数に変換でき
ない場合には例外が発生する).同様にチェック無しで使える変換
マクロはdoubleを取り出す「NUM2DBL()」があります。
char* を取り出す場合、version 1.6 以前では「STR2CSTR()」とい
うマクロを使っていましたが、これは to_str() による暗黙の型変
@ -113,10 +115,17 @@ char*
obsolete となり、代わりに StringValue() と StringValuePtr()
を使う事を推奨しています。StringValue(var) は var が String
であれば何もせず、そうでなければ var を var.to_str() の結果
に置き換えるマクロ、StringValuePtr(var) は同様に var を置き
換えてから var の文字列表現に対する char* を返すマクロです。
var の内容を直接置き換える処理が入るので、var は lvalue であ
る必要があります。
に置き換えるマクロ、StringValuePtr(var) は同様に var を
String に置き換えてから var のバイト列表現に対する char* を
返すマクロです。var の内容を直接置き換える処理が入るので、
var は lvalue である必要があります。
また、StringValuePtr() に類似した StringValueCStr() というマ
クロもあります。StringValueCStr(var) は var を String に置き
換えてから var の文字列表現に対する char* を返します。返され
る文字列の末尾には nul 文字が付加されます。なお、途中に nul
文字が含まれる場合は ArgumentError が発生します。
一方、StringValuePtr() では、末尾に nul 文字がある保証はなく、
途中に nul 文字が含まれている可能性もあります。
それ以外のデータタイプは対応するCの構造体があります対応す
る構造体のあるVALUEはそのままキャスト(型変換)すれば構造体の
@ -166,7 +175,8 @@ FIXNUM
からVALUEに変換するマクロは以下のものがあります必要に応じ
て使い分けてください.
INT2FIX() もとの整数が31bit以内に収まる自信がある時
INT2FIX() もとの整数が31bitまたは63bit以内に収まる自信
がある時
INT2NUM() 任意の整数からVALUEへ
INT2NUM()は整数がFIXNUMの範囲に収まらない場合Bignumに変換