QEloquent 1.1.0
Qt most flexible ORM.
Loading...
Searching...
No Matches
itemproxy.h
1#ifndef QELOQUENT_ITEMPROXY_H
2#define QELOQUENT_ITEMPROXY_H
3
4#include <QEloquent/global.h>
5
6namespace QEloquent {
7
8template<typename T>
9class AbstractItemProxy
10{
11public:
12 virtual ~AbstractItemProxy() = default;
13
14 const T &operator*() const { return *constItem(); }
15 T &operator*() { return *mutableItem(); }
16
17 const T *operator->() const { return constItem(); }
18 T *operator->() { return mutableItem(); }
19
20 operator const T&() const { return *constItem(); }
21 operator T&() { return *mutableItem(); }
22
23protected:
24 virtual const T *constItem() const = 0;
25 virtual T *mutableItem() = 0;
26};
27
28template<typename T>
29class ItemProxy : public AbstractItemProxy<T>
30{
31public:
32 const T *constItem() const { return &m_proxy; }
33 T *mutableItem() { return &m_proxy; }
34
35private:
36 T m_proxy;
37};
38
39} // namespace QEloquent
40
41#endif // QELOQUENT_ITEMPROXY_H