1 #ifndef MARISA_GRIMOIRE_TRIE_STATE_HISTORY_H_ 2 #define MARISA_GRIMOIRE_TRIE_STATE_HISTORY_H_ 3 4 #include "marisa/base.h" 5 6 namespace marisa { 7 namespace grimoire { 8 namespace trie { 9 10 class History { 11 public: History()12 History() 13 : node_id_(0), louds_pos_(0), key_pos_(0), 14 link_id_(MARISA_INVALID_LINK_ID), key_id_(MARISA_INVALID_KEY_ID) {} 15 set_node_id(std::size_t node_id)16 void set_node_id(std::size_t node_id) { 17 MARISA_DEBUG_IF(node_id > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); 18 node_id_ = (UInt32)node_id; 19 } set_louds_pos(std::size_t louds_pos)20 void set_louds_pos(std::size_t louds_pos) { 21 MARISA_DEBUG_IF(louds_pos > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); 22 louds_pos_ = (UInt32)louds_pos; 23 } set_key_pos(std::size_t key_pos)24 void set_key_pos(std::size_t key_pos) { 25 MARISA_DEBUG_IF(key_pos > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); 26 key_pos_ = (UInt32)key_pos; 27 } set_link_id(std::size_t link_id)28 void set_link_id(std::size_t link_id) { 29 MARISA_DEBUG_IF(link_id > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); 30 link_id_ = (UInt32)link_id; 31 } set_key_id(std::size_t key_id)32 void set_key_id(std::size_t key_id) { 33 MARISA_DEBUG_IF(key_id > MARISA_UINT32_MAX, MARISA_SIZE_ERROR); 34 key_id_ = (UInt32)key_id; 35 } 36 node_id()37 std::size_t node_id() const { 38 return node_id_; 39 } louds_pos()40 std::size_t louds_pos() const { 41 return louds_pos_; 42 } key_pos()43 std::size_t key_pos() const { 44 return key_pos_; 45 } link_id()46 std::size_t link_id() const { 47 return link_id_; 48 } key_id()49 std::size_t key_id() const { 50 return key_id_; 51 } 52 53 private: 54 UInt32 node_id_; 55 UInt32 louds_pos_; 56 UInt32 key_pos_; 57 UInt32 link_id_; 58 UInt32 key_id_; 59 }; 60 61 } // namespace trie 62 } // namespace grimoire 63 } // namespace marisa 64 65 #endif // MARISA_GRIMOIRE_TRIE_STATE_HISTORY_H_ 66