2001-08-09 [長年日記]
λ. 朝飯を食って、床屋行って、それから寝た。PM 4:20ごろ起床。いい加減に朝型に戻さなくちゃ。
λ. NArray
NumArrayと比較してみてNArrayの方が目的にあってるような感じなのでNArrayのソースコードにざっと目を通してみる。うーん、思ってたよりも複雑。
λ. コメントのコメントのコメントへのコメント
説明するのが下手ですいません。やりたかったことは、例えば
void a_callback_func(void* data, size_t len, VALUE callback) { VALUE obj = rb_str_new2((char*)data, len); rb_funcall(callback, rb_intern("call"), 1, obj); memcpy(data, RSTRING(obj)->ptr, min(len, RSTRING(obj)->len)); }
λ. 等と書くかわりに、以下のように書けたらなぁという事でした。
void a_callback_func(void* data, size_t len, VALUE callback) { VALUE mem = mem_block_wrap(data, len); rb_funcall(callback, rb_intern("call"), 1, mem); mem_block_detach(mem); // これ以降memのメソッドを呼び出そうとすると例外。 }
λ. でも、NArrayの現在の構造でこれを実現するのは面倒そうですし、NArrayの趣旨にも反する気がしてきたので、素直にあきらめることにします。