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の趣旨にも反する気がしてきたので、素直にあきらめることにします。
[ツッコミを入れる]
