From: "NARUSE, Yui" Date: 2008-05-21T04:25:48+09:00 Subject: [ruby-dev:34778] VALUE rb_enc_associate(VALUE obj, rb_encoding *enc) 成瀬です。 現在 rb_enc_associate() は、 void rb_enc_associate(VALUE obj, rb_encoding *enc) という定義になっています。 これだと、object を作ってそれに encoding を適用させ、 さらにその object をほかの関数に渡すという操作をする時、 obj = rb_obj_new(); rb_enc_associate(obj, enc); foo(obj); などとしなければなりません。 string.c の rb_str_new ではそれを嫌い、rb_enc_str_new を作っています。 また、Dir.entries まわりで rb_enc_str_new2, rb_tainted_enc_str_new, rb_tainted_enc_str_new2 も必要になりそうな気配があります。 rb_enc_associate が obj を返すようになると、これらを、 foo(rb_enc_associate(rb_obj_new(), enc)); と書くことができるようになり、必要以上に関数を増やさなくてもよくなります。 -- NARUSE, Yui