From: m_seki@... Date: 2003-10-15T07:35:00+09:00 Subject: [ruby-list:38563] Re: marshal_dump (was Re: ) 咳といいます。 matz> |[ruby-dev:21590]のextendの件はmarshal.cで気を使ってくれると matz> |良いように思うけど、どうなのかしら。 matz> matz> 具体的にはどういうアクションが期待されているんでしょう。きち matz> んと定義しようとするととたんに難しいように思います。 えっと、s_dumpの時みたいにこんな感じなのを思ってました。 --- marshal.c~ Fri Oct 10 02:45:52 2003 +++ marshal.c Tue Oct 14 08:55:28 2003 @@ -483,8 +483,7 @@ VALUE v; v = rb_funcall(obj, s_mdump, 0, 0); - w_byte(TYPE_USRMARSHAL, arg); - w_unique(rb_class2name(CLASS_OF(obj)), arg); + w_class(TYPE_USRMARSHAL, obj, arg); w_object(v, arg, limit); if (ivtbl) w_ivar(0, &c_arg); return; でも、復元する時は、r_object0()してからrb_extend_object()するので (つまり、オブジェクトが復元されてからextendされるので) marshal_loadを持つモジュールをextendしても呼んでもらえないんですね。 case TYPE_EXTENDED: { VALUE m = path2module(r_unique(arg)); v = r_object0(arg, 0, 0); rb_extend_object(v, m); } break; 残念