chise_swig_perl

これは何?

chiseライブラリ(concord + libchise)をPerlで利用するための仕組みです。SWIGを利用しています。Cygwinでも利用可能です。

ダウンロード

CVSリポジトリより入手してください。

% cvs -d:pserver:anonymous@cvs.m17n.org:/cvs/chise co kage/tools

内容

chise.i
SWIG定義インターフェイスファイル
chiseperl.pl
簡単にlibchiseを使うための高級(?)ライブラリ

ビルド

すでにconcordとlibchiseが使える状態であると仮定します。Cygwin等適宜ディレクトリを読みかえてください。

% swig -c++ -perl -I/usr/local/include chise.i
% g++ -c chise_wrap.cxx -I/usr/lib/perl/5.8/CORE
% g++ -shared -lchise chise_wrap.o -o chise.so -Wl,-rpath,/usr/local/lib

(上記はCGI等で利用するために -Wl,-rpath,/usr/local/lib のオプションを含めてライブラリパスも埋め込んでいます)

完了

最終的に以下のファイルを利用します

活用

chise.hを元に、libchiseの関数を呼び出してもいいのですが、chiseperl.plを活用するともう少し簡単にlibchiseをPerlから利用できます。

関数

void init_chise();
初期化します。必ず実行してください
void close_chise();
バッファ等を開放します
void update_chise();
chise_feature_sync相当関数。新オブジェクトの割り当てや、素性の更新処理をデータベースに反映させます。
void search_newid();
未使用の文字オブジェクトIDを探します。内部用です。
$var get_feature_value($feature, $char_id);
chise_char_gets_feature_value相当。素性名とcharIDから素性を得ます
$var set_feature_value($feature, $char_id, $value);
chise_char_set_feature_value相当。素性をセットします
$var create_new_char($feature, $value);
新しい文字オブジェクトを生成します
$char_id decode_char($feature_char, $int);
chise_ds_decode_char相当。CCSとコードからUCSコードを得ます(?)

グローバル変数

いわゆるPerlのモジュールっぽくない実装になっています。基本的に内部でしか使いません。

$chise_ds
CHISEデータベースセットのハンドル
@chise_feature
素性の一覧リスト(文字列)
@chise_ft
全素性のハンドル
$chise_newid
void search_newid();の結果が格納されます

サンプルは?

すみません。準備中です。たとえばCHISE漢字連環図を参考することができます。

ところで

現在Cygwinでコンパイルはできますが、現在のlibchiseバージョンに対応したCHISE文字データベースをCygwin上で用意することはできません。この問題はもうすぐ解決されるはずです。

リンク

KAMICHI Koichi -- fonts.jp