[Senna-dev 837] %append_output

アーカイブの一覧に戻る

Kouhei Sutou kou****@cozmi*****
2008年 5月 9日 (金) 17:28:21 JST


須藤です。

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 メーリングリストの案内
アーカイブの一覧に戻る