1 # chiseperl.pl --- some useful funcions for using libchise with SWIG
\r
3 # Copyright (C) 2005 Koichi Kamichi.
\r
5 # global : $chise_ds, @chise_feature, @chise_ft, $chise_newid
\r
6 # function : void init_chise();
\r
7 # void close_chise();
\r
8 # void update_chise();
\r
9 # void search_newid();
\r
10 # $var get_feature_value($feature, $char_id);
\r
11 # $var set_feature_value($feature, $char_id, $value);
\r
12 # $var create_new_char($feature, $value);
\r
13 # $char_id decode_char($feature_char, $int);
\r
19 $chise_ds = chise::CHISE_DS_open(0, $chise::chise_system_db_dir, 0, 0755);
\r
20 chise_tools::listup_feature($chise_ds);
\r
21 @chise_feature = split(/\n/, chise_tools::get_char($chise_tools::feature));
\r
23 foreach(@chise_feature){
\r
24 push(@chise_ft, chise::chise_ds_get_feature($chise_ds, chise_tools::get_uchar($_)));
\r
26 $chise_newid = 0x0F0000;
\r
29 sub get_feature_value{ # feature, char_id -> 0 or value
\r
30 if(scalar(@_) != 2){
\r
33 my $ft = chise::chise_ds_get_feature($chise_ds, chise_tools::get_uchar($_[0]));
\r
34 chise_tools::clear_buffer;
\r
35 chise::chise_char_gets_feature_value($_[1], $ft,
\r
36 $chise_tools::buffer, $chise_tools::buffer_size);
\r
37 return chise_tools::get_char($chise_tools::buffer);
\r
40 sub set_feature_value{ # feature, char_id, value -> result
\r
41 if(scalar(@_) != 3){
\r
44 my $ft = chise::chise_ds_get_feature($chise_ds, chise_tools::get_uchar($_[0]));
\r
45 chise::chise_char_set_feature_value($_[1], $ft, chise_tools::get_uchar($_[2]));
\r
50 chise::CHISE_DS_close($chise_ds);
\r
53 sub create_new_char{ # feature, value -> assinged char_id
\r
55 &set_feature_value($_[0], $chise_newid, $_[1]);
\r
57 return $chise_newid - 1;
\r
60 sub search_newid{ # search new char_id and update $chise_newid
\r
64 chise_tools::clear_buffer;
\r
65 chise::chise_char_gets_feature_value($chise_newid, $_, $chise_tools::buffer, $chise_tools::buffer_size);
\r
66 if(length(chise_tools::get_char($chise_tools::buffer)) != 0){
\r
78 sub update_chise{ # save added data to database
\r
80 chise::chise_feature_sync($_);
\r
84 sub decode_char{ # feature, int -> charID, 0
\r
85 if(scalar(@_) != 2){
\r
88 return chise::chise_ds_decode_char($chise_ds, chise_tools::get_uchar($_[0]), $_[1]);
\r