#ifndef MARISA_GRIMOIRE_TRIE_STATE_HISTORY_H_ #define MARISA_GRIMOIRE_TRIE_STATE_HISTORY_H_ #include "marisa/base.h" namespace marisa { namespace grimoire { namespace trie { class History { public: History() : node_id_(0), louds_pos_(0), key_pos_(0), link_id_(MARISA_INVALID_LINK_ID), key_id_(MARISA_INVALID_KEY_ID) {} void set_node_id(std::size_t node_id) { MARISA_DEBUG_IF(node_id > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); node_id_ = (UInt32)node_id; } void set_louds_pos(std::size_t louds_pos) { MARISA_DEBUG_IF(louds_pos > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); louds_pos_ = (UInt32)louds_pos; } void set_key_pos(std::size_t key_pos) { MARISA_DEBUG_IF(key_pos > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); key_pos_ = (UInt32)key_pos; } void set_link_id(std::size_t link_id) { MARISA_DEBUG_IF(link_id > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); link_id_ = (UInt32)link_id; } void set_key_id(std::size_t key_id) { MARISA_DEBUG_IF(key_id > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); key_id_ = (UInt32)key_id; } std::size_t node_id() const { return node_id_; } std::size_t louds_pos() const { return louds_pos_; } std::size_t key_pos() const { return key_pos_; } std::size_t link_id() const { return link_id_; } std::size_t key_id() const { return key_id_; } private: UInt32 node_id_; UInt32 louds_pos_; UInt32 key_pos_; UInt32 link_id_; UInt32 key_id_; }; } // namespace trie } // namespace grimoire } // namespace marisa #endif // MARISA_GRIMOIRE_TRIE_STATE_HISTORY_H_