1*ab8db090SAndroid Build Coastguard Worker #ifndef MARISA_SWIG_H_ 2*ab8db090SAndroid Build Coastguard Worker #define MARISA_SWIG_H_ 3*ab8db090SAndroid Build Coastguard Worker 4*ab8db090SAndroid Build Coastguard Worker #include <marisa.h> 5*ab8db090SAndroid Build Coastguard Worker 6*ab8db090SAndroid Build Coastguard Worker namespace marisa_swig { 7*ab8db090SAndroid Build Coastguard Worker 8*ab8db090SAndroid Build Coastguard Worker #define MARISA_SWIG_ENUM_COPY(name) name = MARISA_ ## name 9*ab8db090SAndroid Build Coastguard Worker 10*ab8db090SAndroid Build Coastguard Worker enum ErrorCode { 11*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(OK), 12*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(STATE_ERROR), 13*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(NULL_ERROR), 14*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(BOUND_ERROR), 15*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(RANGE_ERROR), 16*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(CODE_ERROR), 17*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(RESET_ERROR), 18*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(SIZE_ERROR), 19*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(MEMORY_ERROR), 20*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(IO_ERROR), 21*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(FORMAT_ERROR) 22*ab8db090SAndroid Build Coastguard Worker }; 23*ab8db090SAndroid Build Coastguard Worker 24*ab8db090SAndroid Build Coastguard Worker enum NumTries { 25*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(MIN_NUM_TRIES), 26*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(MAX_NUM_TRIES), 27*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(DEFAULT_NUM_TRIES) 28*ab8db090SAndroid Build Coastguard Worker }; 29*ab8db090SAndroid Build Coastguard Worker 30*ab8db090SAndroid Build Coastguard Worker enum CacheLevel { 31*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(HUGE_CACHE), 32*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(LARGE_CACHE), 33*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(NORMAL_CACHE), 34*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(SMALL_CACHE), 35*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(TINY_CACHE), 36*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(DEFAULT_CACHE) 37*ab8db090SAndroid Build Coastguard Worker }; 38*ab8db090SAndroid Build Coastguard Worker 39*ab8db090SAndroid Build Coastguard Worker enum TailMode { 40*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(TEXT_TAIL), 41*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(BINARY_TAIL), 42*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(DEFAULT_TAIL) 43*ab8db090SAndroid Build Coastguard Worker }; 44*ab8db090SAndroid Build Coastguard Worker 45*ab8db090SAndroid Build Coastguard Worker enum NodeOrder { 46*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(LABEL_ORDER), 47*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(WEIGHT_ORDER), 48*ab8db090SAndroid Build Coastguard Worker MARISA_SWIG_ENUM_COPY(DEFAULT_ORDER) 49*ab8db090SAndroid Build Coastguard Worker }; 50*ab8db090SAndroid Build Coastguard Worker 51*ab8db090SAndroid Build Coastguard Worker #undef MARISA_SWIG_ENUM_COPY 52*ab8db090SAndroid Build Coastguard Worker 53*ab8db090SAndroid Build Coastguard Worker class Key { 54*ab8db090SAndroid Build Coastguard Worker public: 55*ab8db090SAndroid Build Coastguard Worker void str(const char **ptr_out, std::size_t *length_out) const; 56*ab8db090SAndroid Build Coastguard Worker std::size_t id() const; 57*ab8db090SAndroid Build Coastguard Worker float weight() const; 58*ab8db090SAndroid Build Coastguard Worker 59*ab8db090SAndroid Build Coastguard Worker private: 60*ab8db090SAndroid Build Coastguard Worker const marisa::Key key_; 61*ab8db090SAndroid Build Coastguard Worker 62*ab8db090SAndroid Build Coastguard Worker Key(); 63*ab8db090SAndroid Build Coastguard Worker Key(const Key &key); 64*ab8db090SAndroid Build Coastguard Worker Key &operator=(const Key &); 65*ab8db090SAndroid Build Coastguard Worker }; 66*ab8db090SAndroid Build Coastguard Worker 67*ab8db090SAndroid Build Coastguard Worker class Query { 68*ab8db090SAndroid Build Coastguard Worker public: 69*ab8db090SAndroid Build Coastguard Worker void str(const char **ptr_out, std::size_t *length_out) const; 70*ab8db090SAndroid Build Coastguard Worker std::size_t id() const; 71*ab8db090SAndroid Build Coastguard Worker 72*ab8db090SAndroid Build Coastguard Worker private: 73*ab8db090SAndroid Build Coastguard Worker const marisa::Query query_; 74*ab8db090SAndroid Build Coastguard Worker 75*ab8db090SAndroid Build Coastguard Worker Query(); 76*ab8db090SAndroid Build Coastguard Worker Query(const Query &query); 77*ab8db090SAndroid Build Coastguard Worker Query &operator=(const Query &); 78*ab8db090SAndroid Build Coastguard Worker }; 79*ab8db090SAndroid Build Coastguard Worker 80*ab8db090SAndroid Build Coastguard Worker class Keyset { 81*ab8db090SAndroid Build Coastguard Worker friend class Trie; 82*ab8db090SAndroid Build Coastguard Worker 83*ab8db090SAndroid Build Coastguard Worker public: 84*ab8db090SAndroid Build Coastguard Worker Keyset(); 85*ab8db090SAndroid Build Coastguard Worker ~Keyset(); 86*ab8db090SAndroid Build Coastguard Worker 87*ab8db090SAndroid Build Coastguard Worker void push_back(const marisa::Key &key); 88*ab8db090SAndroid Build Coastguard Worker void push_back(const char *ptr, std::size_t length, float weight = 1.0); 89*ab8db090SAndroid Build Coastguard Worker 90*ab8db090SAndroid Build Coastguard Worker const Key &key(std::size_t i) const; 91*ab8db090SAndroid Build Coastguard Worker 92*ab8db090SAndroid Build Coastguard Worker void key_str(std::size_t i, 93*ab8db090SAndroid Build Coastguard Worker const char **ptr_out, std::size_t *length_out) const; 94*ab8db090SAndroid Build Coastguard Worker std::size_t key_id(std::size_t i) const; 95*ab8db090SAndroid Build Coastguard Worker 96*ab8db090SAndroid Build Coastguard Worker std::size_t num_keys() const; 97*ab8db090SAndroid Build Coastguard Worker 98*ab8db090SAndroid Build Coastguard Worker bool empty() const; 99*ab8db090SAndroid Build Coastguard Worker std::size_t size() const; 100*ab8db090SAndroid Build Coastguard Worker std::size_t total_length() const; 101*ab8db090SAndroid Build Coastguard Worker 102*ab8db090SAndroid Build Coastguard Worker void reset(); 103*ab8db090SAndroid Build Coastguard Worker void clear(); 104*ab8db090SAndroid Build Coastguard Worker 105*ab8db090SAndroid Build Coastguard Worker private: 106*ab8db090SAndroid Build Coastguard Worker marisa::Keyset *keyset_; 107*ab8db090SAndroid Build Coastguard Worker 108*ab8db090SAndroid Build Coastguard Worker Keyset(const Keyset &); 109*ab8db090SAndroid Build Coastguard Worker Keyset &operator=(const Keyset &); 110*ab8db090SAndroid Build Coastguard Worker }; 111*ab8db090SAndroid Build Coastguard Worker 112*ab8db090SAndroid Build Coastguard Worker class Agent { 113*ab8db090SAndroid Build Coastguard Worker friend class Trie; 114*ab8db090SAndroid Build Coastguard Worker 115*ab8db090SAndroid Build Coastguard Worker public: 116*ab8db090SAndroid Build Coastguard Worker Agent(); 117*ab8db090SAndroid Build Coastguard Worker ~Agent(); 118*ab8db090SAndroid Build Coastguard Worker 119*ab8db090SAndroid Build Coastguard Worker void set_query(const char *ptr, std::size_t length); 120*ab8db090SAndroid Build Coastguard Worker void set_query(std::size_t id); 121*ab8db090SAndroid Build Coastguard Worker 122*ab8db090SAndroid Build Coastguard Worker const Key &key() const; 123*ab8db090SAndroid Build Coastguard Worker const Query &query() const; 124*ab8db090SAndroid Build Coastguard Worker 125*ab8db090SAndroid Build Coastguard Worker void key_str(const char **ptr_out, std::size_t *length_out) const; 126*ab8db090SAndroid Build Coastguard Worker std::size_t key_id() const; 127*ab8db090SAndroid Build Coastguard Worker 128*ab8db090SAndroid Build Coastguard Worker void query_str(const char **ptr_out, std::size_t *length_out) const; 129*ab8db090SAndroid Build Coastguard Worker std::size_t query_id() const; 130*ab8db090SAndroid Build Coastguard Worker 131*ab8db090SAndroid Build Coastguard Worker private: 132*ab8db090SAndroid Build Coastguard Worker marisa::Agent *agent_; 133*ab8db090SAndroid Build Coastguard Worker char *buf_; 134*ab8db090SAndroid Build Coastguard Worker std::size_t buf_size_; 135*ab8db090SAndroid Build Coastguard Worker 136*ab8db090SAndroid Build Coastguard Worker Agent(const Agent &); 137*ab8db090SAndroid Build Coastguard Worker Agent &operator=(const Agent &); 138*ab8db090SAndroid Build Coastguard Worker }; 139*ab8db090SAndroid Build Coastguard Worker 140*ab8db090SAndroid Build Coastguard Worker class Trie { 141*ab8db090SAndroid Build Coastguard Worker public: 142*ab8db090SAndroid Build Coastguard Worker Trie(); 143*ab8db090SAndroid Build Coastguard Worker ~Trie(); 144*ab8db090SAndroid Build Coastguard Worker 145*ab8db090SAndroid Build Coastguard Worker void build(Keyset &keyset, int config_flags = 0); 146*ab8db090SAndroid Build Coastguard Worker 147*ab8db090SAndroid Build Coastguard Worker void mmap(const char *filename); 148*ab8db090SAndroid Build Coastguard Worker void load(const char *filename); 149*ab8db090SAndroid Build Coastguard Worker void save(const char *filename) const; 150*ab8db090SAndroid Build Coastguard Worker 151*ab8db090SAndroid Build Coastguard Worker bool lookup(Agent &agent) const; 152*ab8db090SAndroid Build Coastguard Worker void reverse_lookup(Agent &agent) const; 153*ab8db090SAndroid Build Coastguard Worker bool common_prefix_search(Agent &agent) const; 154*ab8db090SAndroid Build Coastguard Worker bool predictive_search(Agent &agent) const; 155*ab8db090SAndroid Build Coastguard Worker 156*ab8db090SAndroid Build Coastguard Worker std::size_t lookup(const char *ptr, std::size_t length) const; 157*ab8db090SAndroid Build Coastguard Worker void reverse_lookup(std::size_t id, 158*ab8db090SAndroid Build Coastguard Worker const char **ptr_out_to_be_deleted, std::size_t *length_out) const; 159*ab8db090SAndroid Build Coastguard Worker 160*ab8db090SAndroid Build Coastguard Worker std::size_t num_tries() const; 161*ab8db090SAndroid Build Coastguard Worker std::size_t num_keys() const; 162*ab8db090SAndroid Build Coastguard Worker std::size_t num_nodes() const; 163*ab8db090SAndroid Build Coastguard Worker 164*ab8db090SAndroid Build Coastguard Worker TailMode tail_mode() const; 165*ab8db090SAndroid Build Coastguard Worker NodeOrder node_order() const; 166*ab8db090SAndroid Build Coastguard Worker 167*ab8db090SAndroid Build Coastguard Worker bool empty() const; 168*ab8db090SAndroid Build Coastguard Worker std::size_t size() const; 169*ab8db090SAndroid Build Coastguard Worker std::size_t total_size() const; 170*ab8db090SAndroid Build Coastguard Worker std::size_t io_size() const; 171*ab8db090SAndroid Build Coastguard Worker 172*ab8db090SAndroid Build Coastguard Worker void clear(); 173*ab8db090SAndroid Build Coastguard Worker 174*ab8db090SAndroid Build Coastguard Worker private: 175*ab8db090SAndroid Build Coastguard Worker marisa::Trie *trie_; 176*ab8db090SAndroid Build Coastguard Worker 177*ab8db090SAndroid Build Coastguard Worker Trie(const Trie &); 178*ab8db090SAndroid Build Coastguard Worker Trie &operator=(const Trie &); 179*ab8db090SAndroid Build Coastguard Worker }; 180*ab8db090SAndroid Build Coastguard Worker 181*ab8db090SAndroid Build Coastguard Worker } // namespace marisa_swig 182*ab8db090SAndroid Build Coastguard Worker 183*ab8db090SAndroid Build Coastguard Worker #endif // MARISA_SWIG_H_ 184