福嶋です。

At Wed, 27 Sep 2000 11:03:38 +0900,
Nobuyuki Horie <horie / smail.u-shizuoka-ken.ac.jp> wrote:
> SWIG1.3a5で 
> デストラクターを持つクラスで、最初にstaticな関数が定義されていると、
> コードの生成がうまくいかないようです。

以下のパッチをあててみて下さい。

Index: ruby.cxx
===================================================================
RCS file: /cvsroot/SWIG/Source/Modules1.1/ruby.cxx,v
retrieving revision 1.30
diff -u -r1.30 ruby.cxx
--- ruby.cxx	2000/09/18 13:29:52	1.30
+++ ruby.cxx	2000/09/27 13:29:15
@@ -444,8 +444,12 @@
   int i;
 
   /* Ruby needs no destructor wrapper */
-  if (current == DESTRUCTOR)
+  if (current == DESTRUCTOR) {
+    Wrapper *dummy = NewWrapper();
+    emit_func_call(name,t,l,dummy);
+    DelWrapper(dummy);
     return;
+  }
 
   char mname[256], inamebuf[256];
   int predicate = 0, need_result = 0;

> いつもお願いばかりですみませんが、ご確認ください。

フィードバックをもらえるのは、こちらとしては大歓迎です。

> あと、SWIG本体の方のコードで、マイナーですが、
> diff -urN SWIG1.3a5.orig/Source/Swig/cwrap.c SWIG1.3a5/Source/Swig/cwrap.c
> --- SWIG1.3a5.orig/Source/Swig/cwrap.c  Mon Sep  4 04:14:55 2000
> +++ SWIG1.3a5/Source/Swig/cwrap.c       Wed Sep 27 10:35:42 2000
> @@ -253,7 +253,7 @@
>    
>    switch(SwigType_type(t)) {
>    case T_USER:
> -    Printf(fcall,");");
> +    Printf(fcall,");\n");

こっちもレポートしておきます。

> いまSWIGを用いてqt 2.2 をrubyに取り込もうと悪戦苦闘しています。
> うまくいったら、また報告させていただきます。

ぜひ。

---
福嶋正機