• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef MARISA_KEY_H_
2 #define MARISA_KEY_H_
3 
4 namespace marisa {
5 
6 template <typename T>
7 class Key {
8  public:
Key()9   Key() : str_(), weight_(0.0), id_(0), terminal_(0) {}
10 
set_str(const T & str)11   void set_str(const T &str) {
12     str_ = str;
13   }
set_weight(double weight)14   void set_weight(double weight) {
15     weight_ = weight;
16   }
set_id(UInt32 id)17   void set_id(UInt32 id) {
18     id_ = id;
19   }
set_terminal(UInt32 terminal)20   void set_terminal(UInt32 terminal) {
21     terminal_ = terminal;
22   }
23 
str()24   const T &str() const {
25     return str_;
26   }
weight()27   double weight() const {
28     return weight_;
29   }
id()30   UInt32 id() const {
31     return id_;
32   }
terminal()33   UInt32 terminal() const {
34     return terminal_;
35   }
36 
37  private:
38   T str_;
39   double weight_;
40   UInt32 id_;
41   UInt32 terminal_;
42 };
43 
44 template <typename T>
45 inline bool operator<(const Key<T> &lhs, const T &rhs) {
46   return lhs.str() < rhs;
47 }
48 
49 template <typename T>
50 inline bool operator<(const T &lhs, const Key<T> &rhs) {
51   return lhs < rhs.str();
52 }
53 
54 template <typename T>
55 inline bool operator<(const Key<T> &lhs, const Key<T> &rhs) {
56   return lhs.str() < rhs.str();
57 }
58 
59 template <typename T>
60 inline bool operator==(const Key<T> &lhs, const Key<T> &rhs) {
61   return lhs.str() == rhs.str();
62 }
63 
64 }  // namespace marisa
65 
66 #endif  // MARISA_KEY_H_
67