class.c: store aspec in ROM method table entries

Restore MRB_ARGS_* argument specs and ISO section comments to all
709 ROM method table entries. The aspec is encoded in bits 4-27 of
the flags field; MRB_MT_NOARG is now auto-derived from aspec==0.

Add MRB_MT_ENTRY_PRIVATE() macro for private methods (53 entries)
and MRB_MT_ASPEC() accessor for extracting aspec from flags.

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Yukihiro "Matz" Matsumoto
2026-02-20 11:44:28 +09:00
parent 20b9002214
commit 483c155a41
34 changed files with 758 additions and 744 deletions
+53 -53
View File
@@ -2220,59 +2220,59 @@ str_prepend(mrb_state *mrb, mrb_value self)
/* ---------------------------*/
static const mrb_mt_entry string_ext_rom_entries[] = {
MRB_MT_ENTRY(mrb_str_dump, MRB_SYM(dump), MRB_MT_NOARG),
MRB_MT_ENTRY(str_swapcase_bang, MRB_SYM_B(swapcase), MRB_MT_NOARG),
MRB_MT_ENTRY(mrb_str_slice_bang, MRB_SYM_B(slice), 0),
MRB_MT_ENTRY(str_swapcase, MRB_SYM(swapcase), MRB_MT_NOARG),
MRB_MT_ENTRY(str_clear, MRB_SYM(clear), MRB_MT_NOARG),
MRB_MT_ENTRY(str_concat_m, MRB_OPSYM(lshift), 0),
MRB_MT_ENTRY(str_concat_m, MRB_SYM(concat), 0),
MRB_MT_ENTRY(str_append_as_bytes, MRB_SYM(append_as_bytes), 0),
MRB_MT_ENTRY(str_count, MRB_SYM(count), 0),
MRB_MT_ENTRY(str_tr_m, MRB_SYM(tr), 0),
MRB_MT_ENTRY(str_partition, MRB_SYM(partition), 0),
MRB_MT_ENTRY(str_rpartition, MRB_SYM(rpartition), 0),
MRB_MT_ENTRY(str_insert, MRB_SYM(insert), 0),
MRB_MT_ENTRY(str_prepend, MRB_SYM(prepend), 0),
MRB_MT_ENTRY(str_tr_bang, MRB_SYM_B(tr), 0),
MRB_MT_ENTRY(str_tr_s, MRB_SYM(tr_s), 0),
MRB_MT_ENTRY(str_tr_s_bang, MRB_SYM_B(tr_s), 0),
MRB_MT_ENTRY(str_squeeze_m, MRB_SYM(squeeze), 0),
MRB_MT_ENTRY(str_squeeze_bang, MRB_SYM_B(squeeze), 0),
MRB_MT_ENTRY(str_delete_m, MRB_SYM(delete), 0),
MRB_MT_ENTRY(str_delete_bang, MRB_SYM_B(delete), 0),
MRB_MT_ENTRY(str_start_with, MRB_SYM_Q(start_with), 0),
MRB_MT_ENTRY(str_end_with, MRB_SYM_Q(end_with), 0),
MRB_MT_ENTRY(str_hex, MRB_SYM(hex), MRB_MT_NOARG),
MRB_MT_ENTRY(str_oct, MRB_SYM(oct), MRB_MT_NOARG),
MRB_MT_ENTRY(str_chr, MRB_SYM(chr), MRB_MT_NOARG),
MRB_MT_ENTRY(str_succ, MRB_SYM(succ), MRB_MT_NOARG),
MRB_MT_ENTRY(str_succ_bang, MRB_SYM_B(succ), MRB_MT_NOARG),
MRB_MT_ENTRY(str_succ, MRB_SYM(next), MRB_MT_NOARG),
MRB_MT_ENTRY(str_succ_bang, MRB_SYM_B(next), MRB_MT_NOARG),
MRB_MT_ENTRY(str_ord, MRB_SYM(ord), MRB_MT_NOARG),
MRB_MT_ENTRY(str_del_prefix_bang, MRB_SYM_B(delete_prefix), 0),
MRB_MT_ENTRY(str_del_prefix, MRB_SYM(delete_prefix), 0),
MRB_MT_ENTRY(str_del_suffix_bang, MRB_SYM_B(delete_suffix), 0),
MRB_MT_ENTRY(str_del_suffix, MRB_SYM(delete_suffix), 0),
MRB_MT_ENTRY(str_casecmp, MRB_SYM(casecmp), 0),
MRB_MT_ENTRY(str_casecmp_p, MRB_SYM_Q(casecmp), 0),
MRB_MT_ENTRY(str_uplus, MRB_OPSYM(plus), 0),
MRB_MT_ENTRY(str_uminus, MRB_OPSYM(minus), 0),
MRB_MT_ENTRY(str_ascii_only_p, MRB_SYM_Q(ascii_only), MRB_MT_NOARG),
MRB_MT_ENTRY(str_b, MRB_SYM(b), MRB_MT_NOARG),
MRB_MT_ENTRY(str_lines, MRB_SYM(__lines), MRB_MT_NOARG),
MRB_MT_ENTRY(str_codepoints, MRB_SYM(__codepoints), MRB_MT_NOARG),
MRB_MT_ENTRY(str_lstrip, MRB_SYM(lstrip), MRB_MT_NOARG),
MRB_MT_ENTRY(str_rstrip, MRB_SYM(rstrip), MRB_MT_NOARG),
MRB_MT_ENTRY(str_strip, MRB_SYM(strip), MRB_MT_NOARG),
MRB_MT_ENTRY(str_lstrip_bang, MRB_SYM_B(lstrip), MRB_MT_NOARG),
MRB_MT_ENTRY(str_rstrip_bang, MRB_SYM_B(rstrip), MRB_MT_NOARG),
MRB_MT_ENTRY(str_strip_bang, MRB_SYM_B(strip), MRB_MT_NOARG),
MRB_MT_ENTRY(str_chars_ary, MRB_SYM(__chars), MRB_MT_NOARG),
MRB_MT_ENTRY(str_ljust_core, MRB_SYM(ljust), 0),
MRB_MT_ENTRY(str_rjust_core, MRB_SYM(rjust), 0),
MRB_MT_ENTRY(str_center_core, MRB_SYM(center), 0),
MRB_MT_ENTRY(mrb_str_dump, MRB_SYM(dump), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_swapcase_bang, MRB_SYM_B(swapcase), MRB_ARGS_NONE()),
MRB_MT_ENTRY(mrb_str_slice_bang, MRB_SYM_B(slice), MRB_ARGS_ARG(1,1)),
MRB_MT_ENTRY(str_swapcase, MRB_SYM(swapcase), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_clear, MRB_SYM(clear), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_concat_m, MRB_OPSYM(lshift), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_concat_m, MRB_SYM(concat), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_append_as_bytes, MRB_SYM(append_as_bytes), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_count, MRB_SYM(count), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_tr_m, MRB_SYM(tr), MRB_ARGS_REQ(2)),
MRB_MT_ENTRY(str_partition, MRB_SYM(partition), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_rpartition, MRB_SYM(rpartition), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_insert, MRB_SYM(insert), MRB_ARGS_REQ(2)),
MRB_MT_ENTRY(str_prepend, MRB_SYM(prepend), MRB_ARGS_REST()),
MRB_MT_ENTRY(str_tr_bang, MRB_SYM_B(tr), MRB_ARGS_REQ(2)),
MRB_MT_ENTRY(str_tr_s, MRB_SYM(tr_s), MRB_ARGS_REQ(2)),
MRB_MT_ENTRY(str_tr_s_bang, MRB_SYM_B(tr_s), MRB_ARGS_REQ(2)),
MRB_MT_ENTRY(str_squeeze_m, MRB_SYM(squeeze), MRB_ARGS_OPT(1)),
MRB_MT_ENTRY(str_squeeze_bang, MRB_SYM_B(squeeze), MRB_ARGS_OPT(1)),
MRB_MT_ENTRY(str_delete_m, MRB_SYM(delete), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_delete_bang, MRB_SYM_B(delete), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_start_with, MRB_SYM_Q(start_with), MRB_ARGS_REST()),
MRB_MT_ENTRY(str_end_with, MRB_SYM_Q(end_with), MRB_ARGS_REST()),
MRB_MT_ENTRY(str_hex, MRB_SYM(hex), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_oct, MRB_SYM(oct), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_chr, MRB_SYM(chr), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_succ, MRB_SYM(succ), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_succ_bang, MRB_SYM_B(succ), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_succ, MRB_SYM(next), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_succ_bang, MRB_SYM_B(next), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_ord, MRB_SYM(ord), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_del_prefix_bang, MRB_SYM_B(delete_prefix), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_del_prefix, MRB_SYM(delete_prefix), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_del_suffix_bang, MRB_SYM_B(delete_suffix), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_del_suffix, MRB_SYM(delete_suffix), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_casecmp, MRB_SYM(casecmp), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_casecmp_p, MRB_SYM_Q(casecmp), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_uplus, MRB_OPSYM(plus), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_uminus, MRB_OPSYM(minus), MRB_ARGS_REQ(1)),
MRB_MT_ENTRY(str_ascii_only_p, MRB_SYM_Q(ascii_only), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_b, MRB_SYM(b), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_lines, MRB_SYM(__lines), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_codepoints, MRB_SYM(__codepoints), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_lstrip, MRB_SYM(lstrip), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_rstrip, MRB_SYM(rstrip), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_strip, MRB_SYM(strip), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_lstrip_bang, MRB_SYM_B(lstrip), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_rstrip_bang, MRB_SYM_B(rstrip), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_strip_bang, MRB_SYM_B(strip), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_chars_ary, MRB_SYM(__chars), MRB_ARGS_NONE()),
MRB_MT_ENTRY(str_ljust_core, MRB_SYM(ljust), MRB_ARGS_ARG(1,1)),
MRB_MT_ENTRY(str_rjust_core, MRB_SYM(rjust), MRB_ARGS_ARG(1,1)),
MRB_MT_ENTRY(str_center_core, MRB_SYM(center), MRB_ARGS_ARG(1,1)),
};
static mrb_mt_tbl string_ext_rom_mt = MRB_MT_ROM_TAB(string_ext_rom_entries);