static VALUE rb_struct_set(VALUE obj, SEL sel, VALUE val) { VALUE members, slot; long i; // foo=: -> foo char buf[100]; const size_t s = strlcpy(buf, sel_getName(sel), sizeof buf); buf[s - 2] = '\0'; ID field = rb_intern(buf); members = rb_struct_members(obj); rb_struct_modify(obj); for (i=0; i<RARRAY_LEN(members); i++) { slot = RARRAY_AT(members, i); if (SYM2ID(slot) == field) { GC_WB(&RSTRUCT_PTR(obj)[i], val); return val; } } rb_name_error(rb_frame_this_func(), "`%s' is not a struct member", rb_id2name(field)); return Qnil; /* not reached */ }
void rb_notimplement(void) { rb_raise(rb_eNotImpError, "%"PRIsVALUE"() function is unimplemented on this machine", rb_id2str(rb_frame_this_func())); }
/* * Delegate the current method to the arrayish version of the multival. */ static VALUE multival_array_delegator( int argc, VALUE *argv, VALUE self ) { ID meth = rb_frame_this_func(); VALUE args = rb_iv_get( self, "@args" ); return rb_funcall2( args, meth, argc, argv ); }
/* * Delegate the current method to the stringish version of the multival (ie., * the first element of the array). */ static VALUE multival_string_delegator( int argc, VALUE *argv, VALUE self ) { ID meth = rb_frame_this_func(); VALUE args = rb_iv_get( self, "@args" ); return rb_funcall2( RARRAY_PTR(args)[0], meth, argc, argv ); }
static VALUE rb_struct_set(VALUE obj, VALUE val) { VALUE members, slot; long i; members = rb_struct_members(obj); rb_struct_modify(obj); for (i=0; i<RARRAY_LEN(members); i++) { slot = RARRAY_PTR(members)[i]; if (rb_id_attrset(SYM2ID(slot)) == rb_frame_this_func()) { return RSTRUCT_PTR(obj)[i] = val; } } rb_name_error(rb_frame_this_func(), "`%s' is not a struct member", rb_id2name(rb_frame_this_func())); return Qnil; /* not reached */ }
static VALUE rb_struct_set(VALUE obj, VALUE val) { VALUE members, slot; long i, len; members = rb_struct_members(obj); len = RARRAY_LEN(members); rb_struct_modify(obj); for (i=0; i<len; i++) { slot = RARRAY_AREF(members, i); if (rb_id_attrset(SYM2ID(slot)) == rb_frame_this_func()) { RSTRUCT_SET(obj, i, val); return val; } } rb_name_error(rb_frame_this_func(), "`%s' is not a struct member", rb_id2name(rb_frame_this_func())); UNREACHABLE; }
static VALUE rb_struct_set(VALUE obj, VALUE val) { VALUE members, slot, *ptr, *ptr_members; long i, len; members = rb_struct_members(obj); ptr_members = RARRAY_PTR(members); len = RARRAY_LEN(members); rb_struct_modify(obj); ptr = RSTRUCT_PTR(obj); for (i=0; i<len; i++) { slot = ptr_members[i]; if (rb_id_attrset(SYM2ID(slot)) == rb_frame_this_func()) { return ptr[i] = val; } } rb_name_error(rb_frame_this_func(), "`%s' is not a struct member", rb_id2name(rb_frame_this_func())); UNREACHABLE; }
static VALUE bdb_sary_indexes(int argc, VALUE *argv, VALUE obj) { #if HAVE_RB_ARY_VALUES_AT rb_warn("Recnum#%s is deprecated; use Recnum#values_at", #if HAVE_RB_FRAME_THIS_FUNC rb_id2name(rb_frame_this_func())); #else rb_id2name(rb_frame_last_func())); #endif #endif return bdb_sary_values_at(argc, argv, obj); }
static VALUE lazy_set_method(VALUE lazy, VALUE args) { ID id = rb_frame_this_func(); rb_ivar_set(lazy, id_method, ID2SYM(id)); if (NIL_P(args)) { /* Qfalse indicates that the arguments are empty */ rb_ivar_set(lazy, id_arguments, Qfalse); } else { rb_ivar_set(lazy, id_arguments, args); } return lazy; }
void shoes_msg(ID typ, VALUE str) { #ifndef RUBY_1_8 ID func = rb_frame_this_func(); rb_ary_push(shoes_world->msgs, rb_ary_new3(6, ID2SYM(typ), str, rb_funcall(rb_cTime, s_now, 0), func ? ID2SYM(func) : Qnil, rb_str_new2("<unknown>"), INT2NUM(0))); #else ID func = rb_frame_last_func(); rb_ary_push(shoes_world->msgs, rb_ary_new3(6, ID2SYM(typ), str, rb_funcall(rb_cTime, s_now, 0), func ? ID2SYM(func) : Qnil, rb_str_new2(ruby_sourcefile), INT2NUM(ruby_sourceline))); #endif }
static VALUE lazy_set_method(VALUE lazy, VALUE args, rb_enumerator_size_func *size_fn) { ID id = rb_frame_this_func(); struct enumerator *e = enumerator_ptr(lazy); rb_ivar_set(lazy, id_method, ID2SYM(id)); if (NIL_P(args)) { /* Qfalse indicates that the arguments are empty */ rb_ivar_set(lazy, id_arguments, Qfalse); } else { rb_ivar_set(lazy, id_arguments, args); } e->size_fn = size_fn; return lazy; }
static VALUE cr_s_wrap (VALUE self, VALUE pointer) { VALUE result; VALUE rb_cr; cairo_t *cr; if (NIL_P (rb_cairo__cFFIPointer)) { rb_raise (rb_eNotImpError, "%s: FFI::Pointer is required", rb_id2name (rb_frame_this_func ())); } if (!RTEST (rb_obj_is_kind_of (pointer, rb_cairo__cFFIPointer))) { rb_raise (rb_eArgError, "must be FFI::Pointer: %s", rb_cairo__inspect (pointer)); } { VALUE rb_cr_address; rb_cr_address = rb_funcall (pointer, rb_intern ("address"), 0); cr = NUM2PTR (rb_cr_address); cr_check_status (cr); } rb_cr = rb_obj_alloc (self); cairo_reference (cr); DATA_PTR (rb_cr) = cr; rb_ivar_set (rb_cr, cr_id_surface, Qnil); if (rb_block_given_p ()) { result = rb_ensure (rb_yield, rb_cr, cr_destroy_with_destroy_check, rb_cr); } else { result = rb_cr; } return result; }
static void error_pos(FILE *out, int cgi) { char buff[BUFSIZ]; #if RUBY_VERSION_CODE >= 190 ID last_func = rb_frame_this_func(); #else ID last_func = rb_frame_last_func(); #endif if (ruby_sourcefile) { if (last_func) { snprintf(buff, BUFSIZ, "%s:%d:in `%s'", ruby_sourcefile, ruby_sourceline, rb_id2name(last_func)); } else { snprintf(buff, BUFSIZ, "%s:%d", ruby_sourcefile, ruby_sourceline); } if (cgi) write_escaping_html(out, buff, strlen(buff)); else fputs(buff, out); } }
static VALUE rb_struct_ref(VALUE obj) { return rb_struct_getmember(obj, rb_frame_this_func()); }