morit****@razil*****
morit****@razil*****
2008年 5月 10日 (土) 03:09:03 JST
森です。 なるほど!! そんなワザがあったのですね!! 最近SWIGを使いつづけるご利益があまり感じられなくて、 次にAPIを拡張するぐらいのタイミングで脱SWIGしようかと思っていたのですが、 単に研究が足らなかっただけなのかも‥。ちょっと揺れてます。。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > Rubyバインディングの.iでは自前で複数の戻り値に対応していますが、 > これを%append_outputを使うようにしてはいかがでしょうか? > > 全部やろうかと思ったのですが、多かったので試しに一つだけやって > みました。 > > Index: bindings/ruby/senna_api.i > =================================================================== > --- bindings/ruby/senna_api.i (revision 804) > +++ bindings/ruby/senna_api.i (working copy) > @@ -174,20 +174,12 @@ > $2 = size; > } > %typemap(argout) (void *keybuf, int bufsize) { > - VALUE ary; > - if (TYPE($result) == T_ARRAY) { > - ary = $result; > - } else { > - ary = rb_ary_new2(2); > - rb_ary_push(ary, $result); > - } > if ($1) { > - rb_ary_push(ary, rb_str_new2($1)); > + %append_output(rb_str_new2($1)); > free($1); > } else { > - rb_ary_push(ary, Qnil); > + %append_output(Qnil); > } > - $result = ary; > } > > %typemap(in) (char *pathbuf, int bufsize) { > > _______________________________________________ > Senna-dev mailing list > Senna****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita