[TOP][UP][<-PREV][NEXT->]

eval.c

VALUE rb_eval_string(const char *str)

str を Ruby スクリプトとしてコンパイル・評価し、 その値を返します。

VALUE rb_eval_string_protect(const char *str, int *state)

str を Ruby スクリプトとしてコンパイル・評価し、 その値を返します。

コンパイル中または評価中に例外を含む大域脱出が発生した場合、 state が NULL でなければ値が設定され Qnil を返します。

VALUE rb_eval_string_wrap(const char *str, int *state)

rb_eval_string_protectと同じですが,スクリプトの評価を 無名のモジュールのもとで行います。

VALUE rb_funcall(VALUE recv, ID name, int nargs, ...)

recv に対してメソッド name を呼びだし、 メソッドの返り値を返します。プライベートメソッドも 呼びだせます。

メソッドへの引数は第四引数以降にあたえ、その数を nargs に指定します。それら引数はすべて VALUE でなければ いけません。

VALUE rb_funcall2(VALUE recv, ID name, int nargs, VALUE *args)

recv に対してメソッド name を呼びだし、 メソッドの返り値を返します。プライベートメソッドも 呼びだせます。

メソッドへの引数は VALUE の配列として第四引数にあたえ、 その長さを nargs に指定します。

void rb_jump_tag(int tag)

初出: [ruby-dev:4064]

rb_load_protect,rb_eval_string_protect,rb_protect などで捕捉した大域脱出を再生成します。

tagには上記関数の引数で受け取ったstateを指定します。

int rb_block_given_p()

メソッドがブロック付きで呼ばれていればQtrueを返します。

int rb_iterator_p()

この関数はobsoleteです。rb_block_given_pを使用してください。

VALUE rb_yield(VALUE val)

yield の C 版です.val を引数にブロックを実行します. 複数の引数を与えたいときは配列に格納して渡します。

この関数を呼び出したメソッドがブロックを伴わない場合は,例外 LocalJumpError が発生します.

VALUE rb_iterate(VALUE (*call_proc)(), VALUE date1, VALUE (*block_proc)(), date2)

ブロック付きメソッド(イテレータ)呼び出しを行う関数です.

まず call_proc(data1) を実行します。そしてその関数か その直下のメソッドで yield が発生すると以下が実行されます。

block_proc(VALUE block_arg, VALUE data2, VALUE self)

block_arg はブロック引数(複数なら配列に入っている)、 data2rb_iterate() に渡したもの、 selfblock_proc 呼び出し時点での self です。

VALUE rb_rescue(VALUE (*b_proc)(), VALUE data1, VALUE (*r_proc)(), VALUE data2)

b_proc(data1)を実行し、そのときに例外が発生すればr_proc(data2) を実行します。

捕捉する例外はStandardErrorのサブクラスに限られます。

VALUE rb_rescue2(VALUE (*b_proc)(), VALUE data1, VALUE (*r_proc)(), VALUE data2, ...)

b_proc(data1)を実行し、そのときに例外が発生すればr_proc(data2) を実行します。

第5引数以降の可変長引数に捕捉したい例外クラスを指定します。引数の最後は NULLで終らなければなりません。

VALUE rb_ensure(VALUE (*body)(), VALUE data1, VALUE (*ensure)(), VALUE data2)

ensure の C 版です。まず body(data1) を実行し、その途中で 例外や exit が起きたとしても ensure(data2) が確実に 実行されます ( body() が正常終了しても実行されます)。

VALUE rb_protect(VALUE (*proc)(), VALUE data, int *state)

初出: [ruby-dev:4064]

proc(data)実行中のあらゆる大域脱出(例外を含む)を捕捉します。

val = rb_protect(func, arg, &status);
if (status != 0) {
  puts("大域脱出が起きた");
  rb_jump_tag(status);
}
VALUE rb_require(const char *fname)

require の C 版です。feature「fname」をロードします。

void rb_load(VALUE fname, int wrap)

参考: [ruby-list:21651]

loadの低レベルインタフェースです。Rubyスクリプ トが格納されたファイルfname をロードします。

引数wrapが、non-zeroなら無名のモジュールを生成して、ロー ドした内容をそのモジュールに閉じ込めます。閉じ込めるのは

です。グローバル変数の変更などは閉じ込められません。


[TOP][UP][<-PREV][NEXT->]