トップ «前の日記(2001-08-08) 最新 次の日記(2001-08-10)» 月表示 編集

日々の流転


2001-08-09 [長年日記]

λ. 朝飯を食って、床屋行って、それから寝た。PM 4:20ごろ起床。いい加減に朝型に戻さなくちゃ。

λ. NArray

NumArrayと比較してみてNArrayの方が目的にあってるような感じなのでNArrayのソースコードにざっと目を通してみる。うーん、思ってたよりも複雑。

Tags: ruby

λ. コメントのコメントのコメントへのコメント

説明するのが下手ですいません。やりたかったことは、例えば

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の趣旨にも反する気がしてきたので、素直にあきらめることにします。