3 // Copyright (C) 2005 Koichi Kamichi.
\r
5 // reference : http://www.swig.org/Doc1.3/Perl5.html
\r
6 // sample.c included to libchise
\r
10 // This tells SWIG to treat char ** as a special case
\r
11 %typemap(in) char ** {
\r
17 croak("Argument $argnum is not a reference.");
\r
18 if (SvTYPE(SvRV($input)) != SVt_PVAV)
\r
19 croak("Argument $argnum is not an array.");
\r
20 tempav = (AV*)SvRV($input);
\r
21 len = av_len(tempav);
\r
22 $1 = (char **) malloc((len+2)*sizeof(char *));
\r
23 for (i = 0; i <= len; i++) {
\r
24 tv = av_fetch(tempav, i, 0);
\r
25 $1[i] = (char *) SvPV(*tv,PL_na);
\r
30 // This cleans up the char ** array after the function call
\r
31 %typemap(freearg) char ** {
\r
35 // Creates a new Perl array and places a NULL-terminated char ** into it
\r
36 %typemap(out) char ** {
\r
40 /* Figure out how many elements we have */
\r
43 svs = (SV **) malloc(len*sizeof(SV *));
\r
44 for (i = 0; i < len ; i++) {
\r
45 svs[i] = sv_newmortal();
\r
46 sv_setpv((SV*)svs[i],$1[i]);
\r
48 myav = av_make(len,svs);
\r
50 $result = newRV((SV*)myav);
\r
51 sv_2mortal($result);
\r
59 unsigned char *get_uchar(char *argv){
\r
60 return (unsigned char *)argv;
\r
63 char *get_char(unsigned char *argv){
\r
64 return (char *)argv;
\r
67 unsigned char buffer[1024];
\r
68 int buffer_size = 1024;
\r
70 void clear_buffer(){
\r
72 for(i = 0; i < buffer_size; i++){
\r
77 unsigned char feature[10240];
\r
78 int feature_size = 10240;
\r
81 name_map_func (CHISE_DS *ds, unsigned char *name)
\r
83 strcat((char *)feature, (char *)name);
\r
84 strcat((char *)feature, (char *)"\n");
\r
88 void listup_feature(CHISE_DS *ds){
\r
90 for(i = 0; i < feature_size; i++){
\r
93 chise_ds_foreach_char_feature_name (ds, &name_map_func);
\r