[Senna-dev 839] Re: %append_output

アーカイブの一覧に戻る

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




Senna-dev メーリングリストの案内
アーカイブの一覧に戻る