summaryrefslogtreecommitdiff
path: root/README.EXT.ja
diff options
context:
space:
mode:
Diffstat (limited to 'README.EXT.ja')
-rw-r--r--README.EXT.ja14
1 files changed, 10 insertions, 4 deletions
diff --git a/README.EXT.ja b/README.EXT.ja
index d4d1e61..2e4ac3c 100644
--- a/README.EXT.ja
+++ b/README.EXT.ja
@@ -140,13 +140,15 @@ var は lvalue である必要があります.
あるのは文字列と配列くらいだと思います.
ruby.hでは構造体へキャストするマクロも「RXXXXX()」(全部大文
-字にしたもの)という名前で提供されています(例: RSTRING()).
+字にしたもの)という名前で提供されています(例: RSTRING()).た
+だし、構造体への直接のアクセスはできるだけ避け,対応する
+rb_xxxx() といった関数を使うようにして下さい.例えば,配列の
+要素へアクセスする場合は,rb_ary_entry(ary, offset),
+rb_ary_store(ary, offset, obj) を利用するようにして下さい.
構造体からデータを取り出すマクロが提供されています.文字列
strの長さを得るためには「RSTRING_LEN(str)」とし,文字列strを
-char*として得るためには「RSTRING_PTR(str)」とします.配列の
-場合には,それぞれ「RARRAY_LEN(ary)」,「RARRAY_PTR(ary)」と
-なります.
+char*として得るためには「RSTRING_PTR(str)」とします.
Rubyの構造体を直接アクセスする時に気をつけなければならないこ
とは,配列や文字列の構造体の中身は参照するだけで,直接変更し
@@ -310,6 +312,10 @@ rb_ary_entry(VALUE ary, long offset)
ary[offset]
+rb_ary_store(VALUE ary, long offset, VALUE obj) ::
+
+ ary[offset] = obj
+
rb_ary_subseq(VALUE ary, long beg, long len)
ary[beg, len]