void mrb_alias_method(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b) { struct RProc *m = mrb_method_search(mrb, c, b); mrb_define_method_vm(mrb, c, a, mrb_obj_value(m)); }
mrb_bool mrb_obj_basic_to_s_p(mrb_state *mrb, mrb_value obj) { struct RProc *me = mrb_method_search(mrb, mrb_class(mrb, obj), mrb_intern_lit(mrb, "to_s")); if (me && MRB_PROC_CFUNC_P(me) && (me->body.func == mrb_any_to_s)) return TRUE; return FALSE; }
MRB_API mrb_bool mrb_func_basic_p(mrb_state *mrb, mrb_value obj, mrb_sym mid, mrb_func_t func) { struct RProc *me = mrb_method_search(mrb, mrb_class(mrb, obj), mid); if (MRB_PROC_CFUNC_P(me) && (me->body.func == func)) return TRUE; return FALSE; }
int mrb_obj_basic_to_s_p(mrb_state *mrb, mrb_value obj) { //const mrb_method_entry_t *me = mrb_method_entry(CLASS_OF(obj), mrb_intern("to_s")); //if (me && me->def && me->def->type == VM_METHOD_TYPE_CFUNC && //me->def->body.cfunc.func == mrb_any_to_s) struct RProc *me = mrb_method_search(mrb, mrb_class(mrb, obj), mrb_intern(mrb, "to_s")); if (me && MRB_PROC_CFUNC_P(me) && (me->body.func == mrb_any_to_s)) return 1; return 0; }
/* * Class: org_jamruby_mruby_RClass * Method: n_methodSearch * Signature: (JJJ)J */ JNIEXPORT jlong JNICALL Java_org_jamruby_mruby_RClass_n_1methodSearch (JNIEnv *env, jclass, jlong mrb, jlong c, jlong mid) { RProc * const proc = mrb_method_search(to_ptr<mrb_state>(mrb), to_ptr<RClass>(c), static_cast<mrb_sym>(mid)); return to_jlong(proc); }