obj が Array
でない場合は to_a を使って
Array
に変換します。
argc が 1 のときは ary[*argv]
、
2 のときは ary[argv[0], argv[1]
を返します。
ary.clear
ary.concat another
ary.delete
ary のインデックス offset の要素を返します。
インデックスが範囲を越えるときは Qnil
を返します。
負のインデックスも使えます。
対応するRubyコード
ary[offset] または ary.at(offset)
使用例
VALUE num; num = rb_ary_entry(ary, offset); printf("%d\n", FIX2INT(num));
キャストを使った要素の参照方法
VALUE num = RARRAY(ary)->ptr[offset];
ary.include? item
空の Ruby の配列を作成し返します。
対応する Ruby プログラム
ary = []
使用例
VALUE ary; ary = rb_ary_new();
len 個の要素分だけメモリを確保した、 長さゼロの Ruby の配列を作成し返します。
対応する Ruby プログラム
ary = Array.new(len)
使用例
VALUE ary; long len; ... ary = rb_ary_new2(len);
長さ n で要素に i0 i1 i2 …を格納した Ruby の配列を作成し返します。i0 i1 ……はちょうど n 個だけ渡さなければいけません。
対応する Ruby プログラム
ary = [i0, i1, i2...]
使用例
VALUE ary; int i[3] = { 1, 2, 3 }; ary = rb_ary_new3(3, INT2FIX(i[0]), INT2FIX(i[1]), INT2FIX(i[2]));
配列 ary の末尾の要素をとりのぞき返します。
配列が空のときは Qnil
を返します。
使用例
VALUE val = rb_ary_pop(ary);
対応する Ruby プログラム
val = ary.pop
配列 ary の末尾に item を追加します。
使用例
rb_ary_push(ary, INT2FIX(3));
対応する Ruby プログラム
ary.push 3
配列 ary の先頭の要素を取り除き返します。
空配列のときは Qnil
を返します。
使用例
VALUE val = rb_ary_shift(ary);
対応する Ruby プログラム
val = ary.shift
ary.sort
配列 ary のインデックス idx に val を格納します。idx が範囲を越えるときは Ruby レベルと同じく自動的にサイズが拡張されます。
対応するRubyコード
ary[idx] = val
使用例
VALUE ary; int idx; int n[5] = { 1, 2, 3, 4, 5 }; ary = rb_ary_new(); for (idx=0; idx<5; idx++) rb_ary_store(ary, idx, INT2FIX(n[idx]));
ary.to_s
使用例
void debug_print(VALUE ary) { Check_Type(ary, T_ARRAY); printf("%s", STR2CSTR(rb_ary_to_s(ary))); }
配列 ary の先頭に item を挿入します。
使用例
rb_ary_unshift(ary, rb_str_new2("add"));
対応する Ruby プログラム
ary.unshift 'add'
[a,b]
を返します。
使用例
ary = rb_assoc_new(INT2FIX(5), rb_str_new2("e"));
対応する Ruby プログラム
ary = [5, "e"]
メソッドがブロック付きで呼ばれていればQtrueを返します。
obj の構造体型 ID を返します。
SPECIAL_CONST_P(obj)
が真のオブジェクトに対して使うと落ちます。
klass の名前を返します。
返り値の内容を変更したり free
してはいけません。
RSTRING(rb_class_path(klass))->ptr
と同じです。
obj のクラスを返します。
klass の名前を返します.klass が無名クラスまたは 無名モジュールであるときは "#<Class 0xXXXX>" や "#<Module 0xXXXX>" のような文字列を返します。
Module#to_s
と同じ結果です。
定数 klass::name
の値を取得します。
クラス klass で定義された定数 name の値を取得します (祖先や外のクラスは調べない)。
定数 klass::name
の値を val として定義します。
オブジェクトvalをクラスtypeのインスタンスに変換します。 変換には、val.methodの戻り値が使われます。
valがもともとtypeクラスのインスタンスならvalを そのまま返します。
klass のクラス変数 name の値を 取得します。
klass のクラス変数 name に val を代入します。
変数がまだ定義されていない場合は NameError
を発生します。
klass のクラス変数 name に val を代入します。
klass のクラス変数 name の値を 取得します。
klass のクラス変数 name に val を代入します。
変数がまだ定義されていない場合は NameError
を発生します。
Ruby のオブジェクト obj から type 型へのポインタを とりだし svar に代入します。
使用例
struct mytype { int i; char *s; }; VALUE my_i(self) VALUE self; { struct mytype *m; Data_Get_Struct(self, struct mytype, m); return INT2NUM(m->i); }
type 型の構造体をヒープに割り当ててそれへのポインタを svar に代入し、クラス klass のインスタンスである Ruby のオブジェクトを生成し、それを返します。mark free はそれぞれマーク用・解放用の関数へのポインタです。 どちらも、必要ないときはかわりに 0 を渡します。
また RUBY_DATA_FUNC
の定義は以下のようです。
typedef void (*RUBY_DATA_FUNC)(void *st)
第一引数 st には svar の値が渡されます。
使用例
struct mytype { int i; char *s; }; VALUE my_s_new(klass) VALUE klass; { struct mytype *dummy; return Data_Make_Struct(MyClass, struct mytype, mark_my, free_my, dummy); }
C の構造体 sval をラップして klass クラスの インスタンスである Ruby オブジェクトを生成し、それを返します。 mark、free はそれぞれ sval のマーク用・解放用の 関数へのポインタです。どちらも、必要ないときはかわりに 0 を渡します。
また RUBY_DATA_FUNC
の定義は以下のようです。
typedef void (*RUBY_DATA_FUNC)(void *st)
第一引数 st には sval が渡されます。
使用例
struct mytype { int i; char *s; }; VALUE my_s_new(klass) VALUE klass; { struct mytype *m = malloc(sizeof(struct mytype)); m->i = 0; m->s = 0; return Data_Wrap_Struct(MyClass, 0, free_my, m); }
クラス klass のインスタンスメソッド old の 別名 new を定義します。
クラス super の下位クラス name を作成し返します。
クラス super の下位クラス outer::name
を作成し返します。
関数 name を定義します。
func と argc は rb_define_method
と同じです。
クラスklassのインスタンスメソッドnameを定義します。
argcはCの関数へ渡される引数の数(と形式)を決めます.
argcが0以上の時
argcで指定した値がそのメソッドの引数の数になります。 16個以上の引数は使えません,
VALUE func(VALUE self, VALUE arg1, ... VALUE argN)
argcが-1のとき
引数はCの配列として第二引数に入れて渡されます。 第一引数は配列の要素数です。
VALUE func(int argc, VALUE *argv, VALUE self)
argcが-2のとき
引数はRubyの配列に入れて渡されます。
VALUE func(VALUE self, VALUE args)
rb_scan_argsも参照
モジュール name を作成し返します。
モジュール module にモジュール関数 name を定義します。
func と argc は rb_define_method
と同じです。
モジュール outer::name
を作成し返します。
クラス klass にプライベートのインスタンスメソッド name を
定義します。func に関数ポインタで与え、その関数がとる
引数のタイプを argc に渡します。argc のフォーマットに
ついては rb_define_method
の記述を参照してください。
obj に特異メソッド name を定義します。
メソッドの実体を func に関数ポインタで与え、その関数がとる
引数のタイプを argc に渡します。argc のフォーマットに
ついては rb_define_method
の記述を参照してください。
ensure の C 版です。まず body(data1)
を実行し、その途中で
例外や exit
が起きたとしても ensure(data2)
が確実に
実行されます ( body()
が正常終了しても実行されます)。
obj1.equal? obj2
ならば Qtrue
、
そうでないならば Qfalse
。
obj1 == obj2
ならば Qtrue
、
そうでないならば Qfalse
。
str を Ruby スクリプトとしてコンパイル・評価し、 その値を返します。
str を Ruby スクリプトとしてコンパイル・評価し、 その値を返します。
コンパイル中または評価中に例外を含む大域脱出が発生した場合、 state が NULL でなければ値が設定され Qnil を返します。
rb_eval_string_protectと同じですが,スクリプトの評価を 無名のモジュールのもとで行います。
obj が Fixnum
のインスタンスのとき真。
recv に対してメソッド name を呼びだし、 メソッドの返り値を返します。プライベートメソッドも 呼びだせます。
メソッドへの引数は第四引数以降にあたえ、その数を nargs
に指定します。それら引数はすべて VALUE
でなければ
いけません。
recv に対してメソッド name を呼びだし、 メソッドの返り値を返します。プライベートメソッドも 呼びだせます。
メソッドへの引数は VALUE
の配列として第四引数にあたえ、
その長さを nargs に指定します。
明示的に GC を開始する。rb_gc_disable() で禁止中のときおよび すでに GC が実行中のときは実際には行われません。
GC をオフにする。
GC をオンにする。
Ruby のオブジェクト v をマークします。
v が Ruby のオブジェクトだったらマークします。
ポインタ addr が指す変数を GC の対象にします。
初出: [ruby-list:20488]
ポインタ addr が指す変数を GC の対象から外します。
初出: [ruby-list:20488]
rb_gc_register_address と同じ。
Ruby のグローバル変数の値を取得します。
使用例
VALUE v = rb_gv_get("$!")
Ruby のグローバル変数 name に val を代入します。 val を返します。
obj がポインタでも special const でもないとき真。
すなわち現在の実装では obj が Symbol
か
Fixnum
のインスタンスであるとき真。
obj.inspect
31ビット以内におさまる整数を Fixnum に変換します。
任意の整数を Fixnum か Bignum に変換します。
obj が Ruby の整数でない場合は to_i を使って
Integer
に変換します。
fopen(3)のようなモード指定modeをruby内部のモードフラグに 変換します。
modeは、[rwa][b][+]という文字列です(例: "rb+")
戻り値は、
FMODE_READABLE
,
FMODE_WRITABLE
,
FMODE_BINMODE
,
FMODE_READWRITE
の論理和です。FMODE_READWRITE
は、FMODE_READABLE
と
FMODE_WRITEABLE
の論理和です。
open(2)のようなモード指定modeをruby内部のモードフラグに 変換します。
modeは、O_RDONLY, O_WRONLY, O_RDWRのい
ずれかで
対応する以下の値のいずれかを返します。
FMODE_READABLE
,
FMODE_WRITABLE
,
FMODE_READWRITE
FMODE_READWRITE
は、FMODE_READABLE
と
FMODE_WRITEABLE
の論理和です。
MS-Windowsなどファイルにバイナリ/テキスト属性の区別があるプラッ
トホームでは、modeにO_BINARYの論理和が指定されてい
れば、戻り値にはFMODE_BINMODE
の論理和が指定されます。
ブロック付きメソッド(イテレータ)呼び出しを行う関数です.
まず call_proc(data1)
を実行します。そしてその関数か
その直下のメソッドで yield
が発生すると以下が実行されます。
block_proc(VALUE block_arg, VALUE data2, VALUE self)
block_arg
はブロック引数(複数なら配列に入っている)、
data2
は rb_iterate()
に渡したもの、
self
は block_proc
呼び出し時点での self
です。
この関数はobsoleteです。rb_block_given_pを使用してください。
オブジェクト obj のインスタンス変数 name の値を 取得します。
オブジェクト obj のインスタンス変数 name に val を代入します。
オブジェクト obj のインスタンス変数 name の値を 取得します。
オブジェクト obj のインスタンス変数 name に val を代入します。
初出: [ruby-dev:4064]
rb_load_protect,rb_eval_string_protect,rb_protect などで捕捉した大域脱出を再生成します。
tagには上記関数の引数で受け取ったstateを指定します。
loadの低レベルインタフェースです。Rubyスクリプ トが格納されたファイルfname をロードします。
引数wrapが、non-zeroなら無名のモジュールを生成して、ロー ドした内容をそのモジュールに閉じ込めます。閉じ込めるのは
です。グローバル変数の変更などは閉じ込められません。
参考: [ruby-list:21651]]
Module#name
です。無名クラス、無名モジュールに対して
空文字列を返します。
obj が Qnil
のとき真。
klass のインスタンスを作成する。
obj.freeze
obj.frozen?
obj がクラス klass のインスタンスのとき真。
obj がクラス klass およびそのサブクラスの インスタンスのとき真。
obj.taint
obj.tainted?
obj.untaint
p
の実体。obj を見やすく出力します。
popen(3)を実行します。引数pname、modeはpopen(3)の 引数に対応します。
pnameは、実行するプロセスで"-"
ならば、自身を
fork(2)します。
IOオブジェクトを生成し、
modeが"r"
のとき、
子プロセスの標準出力を生成したIO
の入力につなぎます。
modeが"w"
のとき、
子プロセスの標準入力を生成したIO
の出力につなぎます。
modeに"+"
が含まれれば、子プロセスの標準入出力を
生成したIO
の入出力につなぎます。
生成したIO
オブジェクトを返します。(pnameが
"-"
であれば、子プロセスには、nil
を返します)
初出: [ruby-dev:4064]
proc(data)
実行中のあらゆる大域脱出(例外を含む)を捕捉します。
val = rb_protect(func, arg, &status); if (status != 0) { puts("大域脱出が起きた"); rb_jump_tag(status); }
require
の C 版です。feature「fname」をロードします。
b_proc(data1)を実行し、そのときに例外が発生すればr_proc(data2) を実行します。
捕捉する例外はStandardErrorのサブクラスに限られます。
b_proc(data1)を実行し、そのときに例外が発生すればr_proc(data2) を実行します。
第5引数以降の可変長引数に捕捉したい例外クラスを指定します。引数の最後は NULLで終らなければなりません。
obj が Qfalse
でも Qnil
でもないとき真。
obj が実体の構造体を持たないとき真。現時点で真になるのは
Qnil
Qtrue
Qfalse
と、
Fixnum
/Symbol
のインスタンス。
Ruby のオブジェクト str から C の文字列を取り出します。
str が String
でない場合は to_str
によって
変換を試みます。
返り値を free したり直接書き換えたりしてはいけません。
strl を C の文字列に変換します。第二引数も与えると
*len にバイト長を書き込みます。str が String
でない場合は to_str での変換を試みます。
文字列 str に、長さ len (NUL 含まず)の C の文字列 ptr を破壊的に連結します。
文字列 str に C の文字列 ptr を破壊的に 連結します。ptr はヌル終端を仮定しています。
s1.concat s2
文字列 str の複製を作成し返します。
ptr から len バイト分をコピーして Ruby の文字列を作成し返します。
rb_str_new(0,0)
は空文字列を生成して返します。
rb_str_new(ptr, strlen(ptr))
文字列 orig
の変更不可能な複製を作成し返します。
str[beg, len]
Symbol symbol を数値に変換します。 1.4では、FIX2INT(symbol)と同じです。
obj が Symbol
のインスタンスのとき真。
String
・Fixnum
・Symbol
を ID
に変換します。
obj の構造体型 ID を返します。
任意の整数を Fixnum か Bignum に変換します。
クラス klass のインスタンスメソッド name を undef します。
31ビット以内におさまる整数を Fixnum に変換します。
yield
の C 版です.val を引数にブロックを実行します.
複数の引数を与えたいときは配列に格納して渡します。
この関数を呼び出したメソッドがブロックを伴わない場合は,例外 LocalJumpError が発生します.