summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-struct/src
diff options
context:
space:
mode:
authormattn <[email protected]>2013-03-01 14:56:28 +0900
committermattn <[email protected]>2013-03-01 14:56:28 +0900
commit878fe38b4caad6d775072593d9aa3e737926167d (patch)
treedab545f92e2769172820de77157934a70672a9dd /mrbgems/mruby-struct/src
parent261efd8e9dc3bdaf4438797a9cdb34f7792a5639 (diff)
downloadmruby-878fe38b4caad6d775072593d9aa3e737926167d.tar.gz
mruby-878fe38b4caad6d775072593d9aa3e737926167d.zip
Gemify
Diffstat (limited to 'mrbgems/mruby-struct/src')
-rw-r--r--mrbgems/mruby-struct/src/struct.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c
index 131702e9c..6dd208ebf 100644
--- a/mrbgems/mruby-struct/src/struct.c
+++ b/mrbgems/mruby-struct/src/struct.c
@@ -69,7 +69,7 @@ mrb_value
mrb_struct_members(mrb_state *mrb, mrb_value s)
{
mrb_value members = mrb_struct_s_members(mrb, mrb_obj_value(mrb_obj_class(mrb, s)));
- if (mrb_type(s) == MRB_TT_STRUCT) {
+ if (!strcmp(mrb_class_name(mrb, mrb_obj_class(mrb, s)), "Struct")) {
if (RSTRUCT_LEN(s) != RARRAY_LEN(members)) {
mrb_raisef(mrb, E_TYPE_ERROR, "struct size differs (%ld required %ld given)",
RARRAY_LEN(members), RSTRUCT_LEN(s));
@@ -140,7 +140,7 @@ mrb_struct_getmember(mrb_state *mrb, mrb_value obj, mrb_sym id)
return ptr[i];
}
}
- mrb_name_error(mrb, id, "%s is not struct member", mrb_sym2name(mrb, id));
+ mrb_raisef(mrb, E_NAME_ERROR, "%s is not struct member", mrb_sym2name(mrb, id));
return mrb_nil_value(); /* not reached */
}
@@ -219,7 +219,7 @@ mrb_struct_set(mrb_state *mrb, mrb_value obj, mrb_value val)
}
}
- mrb_name_error(mrb, mid, "`%s' is not a struct member",
+ mrb_raisef(mrb, E_NAME_ERROR, "`%s' is not a struct member",
mrb_sym2name(mrb, mid));
return mrb_nil_value(); /* not reached */
}
@@ -264,7 +264,7 @@ make_struct(mrb_state *mrb, mrb_value name, mrb_value members, struct RClass * k
name = mrb_str_to_str(mrb, name);
id = mrb_to_id(mrb, name);
if (!mrb_is_const_id(id)) {
- mrb_name_error(mrb, id, "identifier %s needs to be constant", mrb_string_value_ptr(mrb, name));
+ mrb_raisef(mrb, E_NAME_ERROR, "identifier %s needs to be constant", mrb_string_value_ptr(mrb, name));
}
if (mrb_const_defined_at(mrb, klass, id)) {
mrb_warn("redefining constant Struct::%s", mrb_string_value_ptr(mrb, name));
@@ -272,7 +272,6 @@ make_struct(mrb_state *mrb, mrb_value name, mrb_value members, struct RClass * k
}
c = mrb_define_class_under(mrb, klass, RSTRING_PTR(name), klass);
}
- MRB_SET_INSTANCE_TT(c, MRB_TT_STRUCT);
nstr = mrb_obj_value(c);
mrb_iv_set(mrb, nstr, mrb_intern(mrb, "__members__"), members);
@@ -552,7 +551,7 @@ mrb_struct_aref_id(mrb_state *mrb, mrb_value s, mrb_sym id)
return ptr[i];
}
}
- mrb_name_error(mrb, id, "no member '%s' in struct", mrb_sym2name(mrb, id));
+ mrb_raisef(mrb, E_NAME_ERROR, "no member '%s' in struct", mrb_sym2name(mrb, id));
return mrb_nil_value(); /* not reached */
}
@@ -624,7 +623,7 @@ mrb_struct_aset_id(mrb_state *mrb, mrb_value s, mrb_sym id, mrb_value val)
return val;
}
}
- mrb_name_error(mrb, id, "no member '%s' in struct", mrb_sym2name(mrb, id));
+ mrb_raisef(mrb, E_NAME_ERROR, "no member '%s' in struct", mrb_sym2name(mrb, id));
return val; /* not reach */
}
@@ -703,7 +702,7 @@ mrb_struct_equal(mrb_state *mrb, mrb_value s)
mrb_get_args(mrb, "o", &s2);
if (mrb_obj_equal(mrb, s, s2)) return mrb_true_value();
- if (mrb_type(s2) != MRB_TT_STRUCT) return mrb_false_value();
+ if (!strcmp(mrb_class_name(mrb, mrb_obj_class(mrb, s)), "Struct")) return mrb_false_value();
if (mrb_obj_class(mrb, s) != mrb_obj_class(mrb, s2)) return mrb_false_value();
if (RSTRUCT_LEN(s) != RSTRUCT_LEN(s2)) {
mrb_bug("inconsistent struct"); /* should never happen */
@@ -734,7 +733,7 @@ mrb_struct_eql(mrb_state *mrb, mrb_value s)
mrb_get_args(mrb, "o", &s2);
if (mrb_obj_equal(mrb, s, s2)) return mrb_true_value();
- if (mrb_type(s2) != MRB_TT_STRUCT) return mrb_false_value();
+ if (strcmp(mrb_class_name(mrb, mrb_obj_class(mrb, s2)), "Struct")) return mrb_false_value();
if (mrb_obj_class(mrb, s) != mrb_obj_class(mrb, s2)) return mrb_false_value();
if (RSTRUCT_LEN(s) != RSTRUCT_LEN(s2)) {
mrb_bug("inconsistent struct"); /* should never happen */
@@ -765,7 +764,7 @@ mrb_struct_eql(mrb_state *mrb, mrb_value s)
* <code>Symbol</code> (such as <code>:name</code>).
*/
void
-mrb_init_struct(mrb_state *mrb)
+mrb_mruby_struct_gem_init(mrb_state* mrb)
{
struct RClass *st;
st = mrb_define_class(mrb, "Struct", mrb->object_class);
@@ -783,3 +782,8 @@ mrb_init_struct(mrb_state *mrb)
mrb_define_method(mrb, st, "eql?", mrb_struct_eql, ARGS_REQ(1)); /* 15.2.18.4.12(x) */
}
+
+void
+mrb_mruby_struct_gem_final(mrb_state* mrb)
+{
+}