mruby-struct: use presym for initialization

This commit is contained in:
Yukihiro "Matz" Matsumoto
2024-06-14 01:59:30 +09:00
parent 8bd66a9358
commit db8d43090a
+17 -17
View File
@@ -672,28 +672,28 @@ mrb_struct_to_s(mrb_state *mrb, mrb_value self)
void
mrb_mruby_struct_gem_init(mrb_state* mrb)
{
struct RClass *st = mrb_define_class(mrb, "Struct", mrb->object_class);
struct RClass *st = mrb_define_class_id(mrb, MRB_SYM(Struct), mrb->object_class);
MRB_SET_INSTANCE_TT(st, MRB_TT_STRUCT);
MRB_UNDEF_ALLOCATOR(st);
mrb_define_class_method(mrb, st, "new", mrb_struct_s_def, MRB_ARGS_ANY()); /* 15.2.18.3.1 */
mrb_define_class_method_id(mrb, st, MRB_SYM(new), mrb_struct_s_def, MRB_ARGS_ANY()); /* 15.2.18.3.1 */
mrb_define_method(mrb, st, "==", mrb_struct_equal, MRB_ARGS_REQ(1)); /* 15.2.18.4.1 */
mrb_define_method(mrb, st, "[]", mrb_struct_aref, MRB_ARGS_REQ(1)); /* 15.2.18.4.2 */
mrb_define_method(mrb, st, "[]=", mrb_struct_aset, MRB_ARGS_REQ(2)); /* 15.2.18.4.3 */
mrb_define_method(mrb, st, "members", mrb_struct_members, MRB_ARGS_NONE()); /* 15.2.18.4.6 */
mrb_define_method(mrb, st, "initialize", mrb_struct_initialize, MRB_ARGS_ANY()); /* 15.2.18.4.8 */
mrb_define_method(mrb, st, "initialize_copy", mrb_struct_init_copy, MRB_ARGS_REQ(1)); /* 15.2.18.4.9 */
mrb_define_method(mrb, st, "eql?", mrb_struct_eql, MRB_ARGS_REQ(1)); /* 15.2.18.4.12(x) */
mrb_define_method(mrb, st, "to_s", mrb_struct_to_s, MRB_ARGS_NONE()); /* 15.2.18.4.11(x) */
mrb_define_method(mrb, st, "inspect", mrb_struct_to_s, MRB_ARGS_NONE()); /* 15.2.18.4.10(x) */
mrb_define_method_id(mrb, st, MRB_OPSYM(eq), mrb_struct_equal, MRB_ARGS_REQ(1)); /* 15.2.18.4.1 */
mrb_define_method_id(mrb, st, MRB_OPSYM(aref), mrb_struct_aref, MRB_ARGS_REQ(1)); /* 15.2.18.4.2 */
mrb_define_method_id(mrb, st, MRB_OPSYM(aset), mrb_struct_aset, MRB_ARGS_REQ(2)); /* 15.2.18.4.3 */
mrb_define_method_id(mrb, st, MRB_SYM(members), mrb_struct_members, MRB_ARGS_NONE()); /* 15.2.18.4.6 */
mrb_define_method_id(mrb, st, MRB_SYM(initialize), mrb_struct_initialize, MRB_ARGS_ANY()); /* 15.2.18.4.8 */
mrb_define_method_id(mrb, st, MRB_SYM(initialize_copy), mrb_struct_init_copy, MRB_ARGS_REQ(1)); /* 15.2.18.4.9 */
mrb_define_method_id(mrb, st, MRB_SYM_Q(eql), mrb_struct_eql, MRB_ARGS_REQ(1)); /* 15.2.18.4.12(x) */
mrb_define_method_id(mrb, st, MRB_SYM(to_s), mrb_struct_to_s, MRB_ARGS_NONE()); /* 15.2.18.4.11(x) */
mrb_define_method_id(mrb, st, MRB_SYM(inspect), mrb_struct_to_s, MRB_ARGS_NONE()); /* 15.2.18.4.10(x) */
mrb_define_method(mrb, st, "size", mrb_struct_len, MRB_ARGS_NONE());
mrb_define_method(mrb, st, "length", mrb_struct_len, MRB_ARGS_NONE());
mrb_define_method(mrb, st, "to_a", mrb_struct_to_a, MRB_ARGS_NONE());
mrb_define_method(mrb, st, "values", mrb_struct_to_a, MRB_ARGS_NONE());
mrb_define_method(mrb, st, "to_h", mrb_struct_to_h, MRB_ARGS_NONE());
mrb_define_method(mrb, st, "values_at", mrb_struct_values_at, MRB_ARGS_ANY());
mrb_define_method_id(mrb, st, MRB_SYM(size), mrb_struct_len, MRB_ARGS_NONE());
mrb_define_method_id(mrb, st, MRB_SYM(length), mrb_struct_len, MRB_ARGS_NONE());
mrb_define_method_id(mrb, st, MRB_SYM(to_a), mrb_struct_to_a, MRB_ARGS_NONE());
mrb_define_method_id(mrb, st, MRB_SYM(values), mrb_struct_to_a, MRB_ARGS_NONE());
mrb_define_method_id(mrb, st, MRB_SYM(to_h), mrb_struct_to_h, MRB_ARGS_NONE());
mrb_define_method_id(mrb, st, MRB_SYM(values_at), mrb_struct_values_at, MRB_ARGS_ANY());
}
void