OSDN Git Service

Initial commit
[wordring-tm/wordring-tm.git] / third_party / mecab-0.996 / swig / MeCab.i
1 %module MeCab
2 %include exception.i
3 %{
4 #include "mecab.h"
5
6 /* Workaround for ruby1.9.x */
7 #if defined SWIGRUBY
8 #include "ruby/version.h"
9 #if RUBY_API_VERSION_CODE >= 10900
10 #include "ruby/encoding.h"
11 #define rb_str_new rb_external_str_new
12 #endif
13 #endif
14 %}
15
16 %newobject surface;
17
18 %exception {
19   try { $action }
20   catch (char *e) { SWIG_exception (SWIG_RuntimeError, e); }
21   catch (const char *e) { SWIG_exception (SWIG_RuntimeError, (char*)e); }
22 }
23
24 %rename(Node) mecab_node_t;
25 %rename(Path) mecab_path_t;
26 %rename(DictionaryInfo) mecab_dictionary_info_t;
27 %ignore    mecab_model_t;
28 %ignore    mecab_lattice_t;
29 %nodefault mecab_path_t;
30 %nodefault mecab_node_t;
31
32 %feature("notabstract") MeCab::Tagger;
33 %feature("notabstract") MeCab::Lattice;
34 %feature("notabstract") MeCab::Model;
35
36 %immutable mecab_dictionary_info_t::filename;
37 %immutable mecab_dictionary_info_t::charset;
38 %immutable mecab_dictionary_info_t::size;
39 %immutable mecab_dictionary_info_t::lsize;
40 %immutable mecab_dictionary_info_t::rsize;
41 %immutable mecab_dictionary_info_t::type;
42 %immutable mecab_dictionary_info_t::version;
43 %immutable mecab_dictionary_info_t::next;
44
45 %immutable mecab_path_t::rnode;
46 %immutable mecab_path_t::lnode;
47 %immutable mecab_path_t::rnext;
48 %immutable mecab_path_t::lnext;
49 %immutable mecab_path_t::cost;
50
51 %immutable mecab_node_t::prev;
52 %immutable mecab_node_t::next;
53 %immutable mecab_node_t::enext;
54 %immutable mecab_node_t::bnext;
55 %immutable mecab_node_t::lpath;
56 %immutable mecab_node_t::rpath;
57 %immutable mecab_node_t::feature;
58 %immutable mecab_node_t::length;
59 %immutable mecab_node_t::rlength;
60 %immutable mecab_node_t::id;
61 %immutable mecab_node_t::rcAttr;
62 %immutable mecab_node_t::lcAttr;
63 %immutable mecab_node_t::posid;
64 %immutable mecab_node_t::char_type;
65 %immutable mecab_node_t::stat;
66 %immutable mecab_node_t::isbest;
67 %immutable mecab_node_t::alpha;
68 %immutable mecab_node_t::beta;
69 %immutable mecab_node_t::wcost;
70 %immutable mecab_node_t::cost;
71 %immutable mecab_node_t::surface;
72
73 %extend mecab_node_t {
74   char *surface;
75 }
76
77 %extend MeCab::Tagger {
78    Tagger(const char *argc);
79    Tagger();
80    const char* parseToString(const char* str, size_t length = 0) {
81      return self->parse(str, length);
82    }
83 }
84
85 %extend MeCab::Model {
86    Model(const char *argc);
87    Model();
88 }
89
90 %extend MeCab::Lattice {
91   Lattice();
92   void set_sentence(const char *sentence) {
93     self->add_request_type(MECAB_ALLOCATE_SENTENCE);
94     self->set_sentence(sentence);
95   }
96 }
97
98 %{
99
100 MeCab::Tagger* new_MeCab_Tagger (const char *arg) {
101   char *p = new char [strlen(arg) + 4];
102   strcpy(p, "-C ");
103   strcat(p, arg);
104   MeCab::Tagger *tagger = MeCab::createTagger(p);
105   delete [] p;
106   if (! tagger) throw MeCab::getLastError();
107   return tagger;
108 }
109
110 MeCab::Tagger* new_MeCab_Tagger () {
111   MeCab::Tagger *tagger = MeCab::createTagger("-C");
112   if (! tagger) throw MeCab::getLastError();
113   return tagger;
114 }
115
116 void delete_MeCab_Tagger (MeCab::Tagger *t) {
117   delete t;
118   t = 0;
119 }
120
121 MeCab::Model* new_MeCab_Model (const char *arg) {
122   char *p = new char [strlen(arg) + 4];
123   strcpy(p, "-C ");
124   strcat(p, arg);
125   MeCab::Model *model = MeCab::createModel(p);
126   delete [] p;
127   if (! model) throw MeCab::getLastError();
128   return model;
129 }
130
131 MeCab::Model* new_MeCab_Model () {
132   MeCab::Model *model = MeCab::createModel("-C");
133   if (! model) throw MeCab::getLastError();
134   return model;
135 }
136
137 void delete_MeCab_Model (MeCab::Model *t) {
138   delete t;
139   t = 0;
140 }
141
142 MeCab::Lattice* new_MeCab_Lattice () {
143   return MeCab::createLattice();
144 }
145
146 void delete_MeCab_Lattice (MeCab::Lattice *t) {
147   delete t;
148   t = 0;
149 }
150
151 char* mecab_node_t_surface_get(mecab_node_t *n) {
152   char *s = new char [n->length + 1];
153   memcpy (s, n->surface, n->length);
154   s[n->length] = '\0';
155   return s;
156 }
157 %}
158
159 %include ../src/mecab.h
160 %include version.h