BeeeOn Gateway  v2020.3.1-2-g6f737dc
Platform to interconnect the IoT world
Entity.h
1 #pragma once
2 
3 #include <string>
4 
5 namespace BeeeOn {
6 
7 class EntityLoader;
8 
12 template <typename TypeID>
13 class Entity {
14  friend EntityLoader;
15 public:
16  typedef TypeID ID;
17 
18  Entity();
19  Entity(const TypeID &id);
20 
21  virtual ~Entity()
22  {
23  }
24 
25  void setId(const TypeID &id);
26  const TypeID &id() const;
27  bool hasId() const;
28 
29  bool loaded() const;
30 
31  virtual const std::string toString() const;
32 
33  bool operator <(const Entity<TypeID> &e) const
34  {
35  return m_id < e.m_id;
36  }
37 
38 protected:
39  void setLoaded(bool loaded);
40 
41 private:
42  TypeID m_id;
43  bool m_loaded;
44 };
45 
46 template <typename TypeID>
47 inline std::string operator +(const char *s, const Entity<TypeID> &e)
48 {
49  return std::string(s) + e.toString();
50 }
51 
52 template <typename TypeID>
53 inline std::string operator +(const std::string &s, const Entity<TypeID> &e)
54 {
55  return s + e.toString();
56 }
57 
58 template <typename TypeID>
59 Entity<TypeID>::Entity():
60  m_loaded(false)
61 {
62 }
63 
64 template <typename TypeID>
65 Entity<TypeID>::Entity(const TypeID &id):
66  m_id(id),
67  m_loaded(false)
68 {
69 }
70 
71 template <typename TypeID>
72 void Entity<TypeID>::setId(const TypeID &id)
73 {
74  m_id = id;
75 }
76 
77 template <typename TypeID>
78 const TypeID &Entity<TypeID>::id() const
79 {
80  return m_id;
81 }
82 
83 template <typename TypeID>
84 bool Entity<TypeID>::hasId() const
85 {
86  return !m_id.isNull();
87 }
88 
89 template <typename TypeID>
90 void Entity<TypeID>::setLoaded(bool loaded)
91 {
92  m_loaded = loaded;
93 }
94 
95 template <typename TypeID>
96 bool Entity<TypeID>::loaded() const
97 {
98  return m_loaded;
99 }
100 
101 template <typename TypeID>
102 const std::string Entity<TypeID>::toString() const
103 {
104  return m_id.toString();
105 }
106 
107 }
Definition: Entity.h:13