| #ifndef MARISA_SWIG_H_ |
| #define MARISA_SWIG_H_ |
| |
| #include <marisa.h> |
| |
| namespace marisa_swig { |
| |
| #define MARISA_SWIG_ENUM_COPY(name) name = MARISA_ ## name |
| |
| enum ErrorCode { |
| MARISA_SWIG_ENUM_COPY(OK), |
| MARISA_SWIG_ENUM_COPY(STATE_ERROR), |
| MARISA_SWIG_ENUM_COPY(NULL_ERROR), |
| MARISA_SWIG_ENUM_COPY(BOUND_ERROR), |
| MARISA_SWIG_ENUM_COPY(RANGE_ERROR), |
| MARISA_SWIG_ENUM_COPY(CODE_ERROR), |
| MARISA_SWIG_ENUM_COPY(RESET_ERROR), |
| MARISA_SWIG_ENUM_COPY(SIZE_ERROR), |
| MARISA_SWIG_ENUM_COPY(MEMORY_ERROR), |
| MARISA_SWIG_ENUM_COPY(IO_ERROR), |
| MARISA_SWIG_ENUM_COPY(FORMAT_ERROR) |
| }; |
| |
| enum NumTries { |
| MARISA_SWIG_ENUM_COPY(MIN_NUM_TRIES), |
| MARISA_SWIG_ENUM_COPY(MAX_NUM_TRIES), |
| MARISA_SWIG_ENUM_COPY(DEFAULT_NUM_TRIES) |
| }; |
| |
| enum CacheLevel { |
| MARISA_SWIG_ENUM_COPY(HUGE_CACHE), |
| MARISA_SWIG_ENUM_COPY(LARGE_CACHE), |
| MARISA_SWIG_ENUM_COPY(NORMAL_CACHE), |
| MARISA_SWIG_ENUM_COPY(SMALL_CACHE), |
| MARISA_SWIG_ENUM_COPY(TINY_CACHE), |
| MARISA_SWIG_ENUM_COPY(DEFAULT_CACHE) |
| }; |
| |
| enum TailMode { |
| MARISA_SWIG_ENUM_COPY(TEXT_TAIL), |
| MARISA_SWIG_ENUM_COPY(BINARY_TAIL), |
| MARISA_SWIG_ENUM_COPY(DEFAULT_TAIL) |
| }; |
| |
| enum NodeOrder { |
| MARISA_SWIG_ENUM_COPY(LABEL_ORDER), |
| MARISA_SWIG_ENUM_COPY(WEIGHT_ORDER), |
| MARISA_SWIG_ENUM_COPY(DEFAULT_ORDER) |
| }; |
| |
| #undef MARISA_SWIG_ENUM_COPY |
| |
| class Key { |
| public: |
| void str(const char **ptr_out, std::size_t *length_out) const; |
| std::size_t id() const; |
| float weight() const; |
| |
| private: |
| const marisa::Key key_; |
| |
| Key(); |
| Key(const Key &key); |
| Key &operator=(const Key &); |
| }; |
| |
| class Query { |
| public: |
| void str(const char **ptr_out, std::size_t *length_out) const; |
| std::size_t id() const; |
| |
| private: |
| const marisa::Query query_; |
| |
| Query(); |
| Query(const Query &query); |
| Query &operator=(const Query &); |
| }; |
| |
| class Keyset { |
| friend class Trie; |
| |
| public: |
| Keyset(); |
| ~Keyset(); |
| |
| void push_back(const marisa::Key &key); |
| void push_back(const char *ptr, std::size_t length, float weight = 1.0); |
| |
| const Key &key(std::size_t i) const; |
| |
| void key_str(std::size_t i, |
| const char **ptr_out, std::size_t *length_out) const; |
| std::size_t key_id(std::size_t i) const; |
| |
| std::size_t num_keys() const; |
| |
| bool empty() const; |
| std::size_t size() const; |
| std::size_t total_length() const; |
| |
| void reset(); |
| void clear(); |
| |
| private: |
| marisa::Keyset *keyset_; |
| |
| Keyset(const Keyset &); |
| Keyset &operator=(const Keyset &); |
| }; |
| |
| class Agent { |
| friend class Trie; |
| |
| public: |
| Agent(); |
| ~Agent(); |
| |
| void set_query(const char *ptr, std::size_t length); |
| void set_query(std::size_t id); |
| |
| const Key &key() const; |
| const Query &query() const; |
| |
| void key_str(const char **ptr_out, std::size_t *length_out) const; |
| std::size_t key_id() const; |
| |
| void query_str(const char **ptr_out, std::size_t *length_out) const; |
| std::size_t query_id() const; |
| |
| private: |
| marisa::Agent *agent_; |
| char *buf_; |
| std::size_t buf_size_; |
| |
| Agent(const Agent &); |
| Agent &operator=(const Agent &); |
| }; |
| |
| class Trie { |
| public: |
| Trie(); |
| ~Trie(); |
| |
| void build(Keyset &keyset, int config_flags = 0); |
| |
| void mmap(const char *filename); |
| void load(const char *filename); |
| void save(const char *filename) const; |
| |
| bool lookup(Agent &agent) const; |
| void reverse_lookup(Agent &agent) const; |
| bool common_prefix_search(Agent &agent) const; |
| bool predictive_search(Agent &agent) const; |
| |
| std::size_t lookup(const char *ptr, std::size_t length) const; |
| void reverse_lookup(std::size_t id, |
| const char **ptr_out_to_be_deleted, std::size_t *length_out) const; |
| |
| std::size_t num_tries() const; |
| std::size_t num_keys() const; |
| std::size_t num_nodes() const; |
| |
| TailMode tail_mode() const; |
| NodeOrder node_order() const; |
| |
| bool empty() const; |
| std::size_t size() const; |
| std::size_t total_size() const; |
| std::size_t io_size() const; |
| |
| void clear(); |
| |
| private: |
| marisa::Trie *trie_; |
| |
| Trie(const Trie &); |
| Trie &operator=(const Trie &); |
| }; |
| |
| } // namespace marisa_swig |
| |
| #endif // MARISA_SWIG_H_ |