#ifndef MARISA_TRIE_H_ #define MARISA_TRIE_H_ #include "marisa/keyset.h" #include "marisa/agent.h" namespace marisa { namespace grimoire { namespace trie { class LoudsTrie; } // namespace trie } // namespace grimoire class Trie { friend class TrieIO; public: Trie(); ~Trie(); void build(Keyset &keyset, int config_flags = 0); void mmap(const char *filename); void map(const void *ptr, std::size_t size); void load(const char *filename); void read(int fd); void save(const char *filename) const; void write(int fd) 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 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(); void swap(Trie &rhs); private: scoped_ptr trie_; // Disallows copy and assignment. Trie(const Trie &); Trie &operator=(const Trie &); }; } // namespace marisa #endif // MARISA_TRIE_H_