まつもと ゆきひろです

In message "[ruby-dev:1473] argumant type"
    on 98/02/17, Masao Kanemitsu <masao-k / ascii.co.jp> writes:

|tkmandel.rb:104:in `loop': wrong argument type Module (expected Float) (TypeError)
|        from tkmandel.rb:104:in `mandel'
|        from tkmandel.rb:113:in `calc'
|        from tkmandel.rb:112:in `each'
|        from tkmandel.rb:112:in `calc'
|        from tkmandel.rb:153
|
|
|と、怒られます。なぜ?

これは

|    rb_define_singleton_method(mMandel, "loop", mandel_loop, 3);

ここに原因があります.rb_define_xxx_methodで指定する引数の数
は「rubyに見せる引数の数」です.C的にはこれに加えてselfを引
数として受け取りますので,Cで用意する関数の引数は3+1=4である
必要があります.具体的には

|static VALUE
>mandel_loop(self, re, im, max)
>    VALUE self;
|    VALUE re;
|    VALUE im;
|    VALUE max;

という感じで修正すれば良いのではないでしょうか?

                                まつもと ゆきひろ /:|)