| #ifndef MARISA_ALPHA_KEY_H_ |
| #define MARISA_ALPHA_KEY_H_ |
| |
| #include "string.h" |
| |
| namespace marisa_alpha { |
| |
| template <typename T> |
| class Key { |
| public: |
| Key() : str_(), weight_(0.0), id_(0), terminal_(0) {} |
| |
| void set_str(const T &str) { |
| str_ = str; |
| } |
| void set_weight(double weight) { |
| weight_ = weight; |
| } |
| void set_id(UInt32 id) { |
| id_ = id; |
| } |
| void set_terminal(UInt32 terminal) { |
| terminal_ = terminal; |
| } |
| |
| const T &str() const { |
| return str_; |
| } |
| double weight() const { |
| return weight_; |
| } |
| UInt32 id() const { |
| return id_; |
| } |
| UInt32 terminal() const { |
| return terminal_; |
| } |
| |
| private: |
| T str_; |
| double weight_; |
| UInt32 id_; |
| UInt32 terminal_; |
| }; |
| |
| template <typename T> |
| inline bool operator<(const Key<T> &lhs, const T &rhs) { |
| return lhs.str() < rhs; |
| } |
| |
| template <typename T> |
| inline bool operator<(const T &lhs, const Key<T> &rhs) { |
| return lhs < rhs.str(); |
| } |
| |
| template <typename T> |
| inline bool operator<(const Key<T> &lhs, const Key<T> &rhs) { |
| return lhs.str() < rhs.str(); |
| } |
| |
| template <typename T> |
| inline bool operator==(const Key<T> &lhs, const Key<T> &rhs) { |
| return lhs.str() == rhs.str(); |
| } |
| |
| } // namespace marisa_alpha |
| |
| #endif // MARISA_ALPHA_KEY_H_ |