class Thread

Public Class Methods

new(*args) click to toggle source
static VALUE
bdb_thread_init(int argc, VALUE *argv, VALUE obj)
{
    VALUE env;

    if ((env = rb_thread_local_aref(rb_thread_current(), bdb_id_current_env)) != Qnil) {
        rb_thread_local_aset(obj, bdb_id_current_env, env);
    }
    if (rb_block_given_p()) {
#if HAVE_RB_BLOCK_CALL
        return rb_block_call(obj, rb_intern("__bdb_thread_init__"), argc, argv,
                             rb_yield, obj);
#else
        VALUE tmp[3];
        tmp[0] = obj;
        tmp[1] = (VALUE)argc;
        tmp[2] = (VALUE)argv;
        return rb_iterate((VALUE (*)(VALUE))bdb_env_iterate, (VALUE)tmp, rb_yield, obj);
#endif
    }
    return rb_funcall2(obj, rb_intern("__bdb_thread_init__"), argc, argv);
}