[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000807] Re: SWIG + NArray (2)
小塚様:
堀之内です。
> FORTRANの例に続き、Cの場合についてのチュートリアルを書きました。
> http://www.unyo.marushin.media.kyoto-u.ac.jp/~kozuka/swig-f-9.html
遅まきながら、読んでみました。
まずマイナーなミスの話ですが、C のソースで #include 以下が抜けて
ます。<stdio.h> とか <stdlib.h> ですね。あと、test8_c.c 冒頭のプ
ロトタイプ宣言が char *trans(char *original, int width); となっ
てて height が抜けてます。
さて、内容についてですが、なんとか swig 適用後の手作業の書き換え
をなくすことは出来ないでしょうか。これは、test8.i に引数間の関係
を記述出来れば不可能ではないと思うのですが。今は
char *trans(char *ARRAY, int LENGTH, int LENGTH);
となってますが、例えば
char *trans(char *ARRAY(LENGTH1,LENGTH2), int LENGTH1, int LENGTH2);
として、ARRAY から LENGTH1, LENGTH2 を取り出す規則を書ければ、入
力引数に関する問題は解決しますね。さらに、
char *(LENGTH1,LENGTH2) trans(char *ARRAY(LENGTH1,LENGTH2), int LENGTH1, int LENGTH2);
と書いて、char *(LENGTH1,LENGTH2) に関する出力引数定義法を適切に
記述できれば、swig の結果を手作業で修正する必要はなくなるでしょ
う。
GNU Scientific Library (http://sources.redhat.com/gsl/) のように、
配列が長さ情報込の構造体になってる場合はいいんですが、長さを別引
数で渡すライブラリーでラップしたいのは多いので、手作業はしないで
済むに越したことはありません。
堀之内 武 horinout@xxxxxx
京都大学宙空電波科学研究センター phone:0774-38-3812
611-0011 宇治市五ヶ庄 fax:0774-31-8463