6 /* Workaround for ruby1.9.x */
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
20 catch (char *e) { SWIG_exception (SWIG_RuntimeError, e); }
21 catch (const char *e) { SWIG_exception (SWIG_RuntimeError, (char*)e); }
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;
32 %feature("notabstract") MeCab::Tagger;
33 %feature("notabstract") MeCab::Lattice;
34 %feature("notabstract") MeCab::Model;
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;
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;
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;
73 %extend mecab_node_t {
77 %extend MeCab::Tagger {
78 Tagger(const char *argc);
80 const char* parseToString(const char* str, size_t length = 0) {
81 return self->parse(str, length);
85 %extend MeCab::Model {
86 Model(const char *argc);
90 %extend MeCab::Lattice {
92 void set_sentence(const char *sentence) {
93 self->add_request_type(MECAB_ALLOCATE_SENTENCE);
94 self->set_sentence(sentence);
100 MeCab::Tagger* new_MeCab_Tagger (const char *arg) {
101 char *p = new char [strlen(arg) + 4];
104 MeCab::Tagger *tagger = MeCab::createTagger(p);
106 if (! tagger) throw MeCab::getLastError();
110 MeCab::Tagger* new_MeCab_Tagger () {
111 MeCab::Tagger *tagger = MeCab::createTagger("-C");
112 if (! tagger) throw MeCab::getLastError();
116 void delete_MeCab_Tagger (MeCab::Tagger *t) {
121 MeCab::Model* new_MeCab_Model (const char *arg) {
122 char *p = new char [strlen(arg) + 4];
125 MeCab::Model *model = MeCab::createModel(p);
127 if (! model) throw MeCab::getLastError();
131 MeCab::Model* new_MeCab_Model () {
132 MeCab::Model *model = MeCab::createModel("-C");
133 if (! model) throw MeCab::getLastError();
137 void delete_MeCab_Model (MeCab::Model *t) {
142 MeCab::Lattice* new_MeCab_Lattice () {
143 return MeCab::createLattice();
146 void delete_MeCab_Lattice (MeCab::Lattice *t) {
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);
159 %include ../src/mecab.h