56 mrb_intern2(mrb,
"__classid__", 11), mrb_symbol_value(name));
59 #define make_metaclass(mrb, c) prepare_singleton_class((mrb), (struct RBasic*)(c))
101 name, mrb_obj_value(m));
144 setup_class(mrb, outer, c,
id);
155 name, mrb_obj_value(c));
200 setup_class(mrb, outer, c,
id);
201 mrb_funcall(mrb, mrb_obj_value(s),
"inherited", 1, mrb_obj_value(c));
262 c = class_from_sym(mrb, outer,
id);
269 mrb_warn(mrb,
"no super class for `%S::%S', Object assumed", outer, name);
272 setup_class(mrb, mrb_obj_value(outer), c,
id);
284 c = class_from_sym(mrb, outer,
id);
288 setup_class(mrb, mrb_obj_value(outer), c,
id);
356 return check_type(mrb, val,
MRB_TT_STRING,
"String",
"to_str");
362 return check_type(mrb, val,
MRB_TT_ARRAY,
"Array",
"to_ary");
368 return check_type(mrb, val,
MRB_TT_HASH,
"Hash",
"to_hash");
407 va_start(ap, format);
414 while ((c = *format++)) {
416 case '|':
case '*':
case '&':
419 if (argc <= i && !opt) {
443 *p = to_str(mrb, *sp++);
454 *p = to_ary(mrb, *sp++);
465 *p = to_hash(mrb, *sp++);
477 ps = va_arg(ap,
char**);
478 pl = va_arg(ap,
int*);
480 ss = to_str(mrb, *sp++);
495 ps = va_arg(ap,
char**);
497 ss = to_str(mrb, *sp++);
503 else if (len > s->
len) {
521 aa = to_ary(mrb, *sp++);
655 pl = va_arg(ap,
int*);
675 if (!c && argc > i) {
701 struct RClass *p = c, *ic;
702 int superclass_seen = 0;
704 if (c->
mt == m->
mt) {
711 else if (p->
mt == m->
mt){
728 ic->super = ins_pos->
super;
755 for (i=0; i<argc; i++) {
759 mrb_funcall(mrb, argv[argc],
"append_features", 1, klass);
760 mrb_funcall(mrb, argv[argc],
"included", 1, klass);
800 return mrb_false_value();
942 return mrb_nil_value();
947 prepare_singleton_class(mrb, obj);
948 return mrb_obj_value(obj->c);
954 prepare_singleton_class(mrb, (
struct RBasic*)o);
1024 return mrb_obj_value(o);
1046 obj = mrb_instance_alloc(mrb, cv);
1058 obj = mrb_instance_alloc(mrb, mrb_obj_value(c));
1068 struct RClass *new_class;
1074 mrb_funcall(mrb, super,
"inherited", 1, mrb_obj_value(new_class));
1075 return mrb_obj_value(new_class);
1088 if (!c)
return mrb_nil_value();
1089 return mrb_obj_value(c);
1095 return mrb_nil_value();
1101 return mrb_bool_value(!
mrb_test(cv));
1160 return mrb_nil_value();
1206 return mrb_nil_value();
1284 c = boot_defclass(mrb, super);
1418 return mrb_nil_value();
1459 return mrb_nil_value();
1478 return mrb_symbol_value(mid);
1488 if (len < 3 || !(s[0] ==
'@' && s[1] ==
'@')) {
1498 if (len < 3 || !(s[0] ==
'@' && s[1] ==
'@')) {
1516 return mrb_nil_value();
1541 id = get_sym_or_str_arg(mrb);
1548 check_cv_name_str(mrb,
id);
1557 return mrb_bool_value(defined_p);
1581 check_cv_name_sym(mrb,
id);
1610 check_cv_name_sym(mrb,
id);
1645 check_cv_name_sym(mrb,
id);
1659 return mrb_nil_value();
1695 id = get_sym_or_str_arg(mrb);
1702 method_defined_p =
FALSE;
1708 return mrb_bool_value(method_defined_p);
1760 if (len < 1 || !
ISUPPER(*s)) {
1779 id = get_sym_or_str_arg(mrb);
1786 check_const_name_str(mrb,
id);
1789 const_defined_p =
FALSE;
1796 return mrb_bool_value(const_defined_p);
1805 check_const_name_sym(mrb,
id);
1816 check_const_name_sym(mrb,
id);
1828 check_const_name_sym(mrb,
id);
1840 return mrb_nil_value();
1852 return mrb_bool_value(eqq);
1865 bob = boot_defclass(mrb, 0);
1866 obj = boot_defclass(mrb, bob); mrb->
object_class = obj;
1867 mod = boot_defclass(mrb, obj); mrb->
module_class = mod;
1868 cls = boot_defclass(mrb, mod); mrb->
class_class = cls;
1870 bob->c = obj->c = mod->c = cls->c = cls;