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