福嶋です。 Masaki Fukushima <fukusima / goto.info.waseda.ac.jp> wrote: > 実は、最近 SWIG の Ruby モジュールを作ってました。 > 一応、動くようになっているので、リリースの準備さえ整えれば近日中 > に公開できると思います。 というわけで、公開します。 http://www.goto.info.waseda.ac.jp/~fukusima/ruby/swig-j.html # contrib にも put しました。 SWIGは、C/C++ のヘッダファイルか、あるいは専用に作ったインタフェー ス定義ファイルからスクリプト言語用の拡張モジュールを自動的に生成 するツールです。これは、その SWIG を Ruby に対応させるモジュール です。 「インタフェース定義ファイル」とは簡単に書くと以下のようなもので す。(実際に「使える」ものにするにはもう少し複雑になりますが...) %module SwigDBM typedef struct { %addmethods { static DBM *open(char *name, int flags = O_RDWR|O_CREAT, int mode = 0666); ~DBM() { dbm_close(self); } void close(); int store(datum key, datum content, int flag = DBM_REPLACE); datum fetch(datum key); } } DBM; インターフェースファイルで struct として定義されたものは自動的に Ruby のクラスとして扱えるようになります。例えば、今の dbm のイン タフェースをコンパイルすれば、以下のように使用することができます。 require 'SwigDBM' dbm = SwigDBM::DBM.open('test') value = dbm.fetch('key') dbm.close --- 福嶋正機