CTL  0.6.1
Computed Tomography Library
serializationinterface.h
Go to the documentation of this file.
1 #ifndef CTL_SERIALIZATIONINTERFACE_H
2 #define CTL_SERIALIZATIONINTERFACE_H
3 
5 
6 #include <QVariant>
7 
8 namespace CTL {
9 
18 {
19 public:
20  enum { Type = -1, UserType = 65536 };
21  virtual int type() const;
22  virtual void fromVariant(const QVariant& variant); // de-serialization
23  virtual QVariant toVariant() const; // serialization
24 
25  virtual ~SerializationInterface() = default;
26 
27 protected:
28  SerializationInterface() = default;
33 };
34 
41 inline int SerializationInterface::type() const
42 {
43  return Type;
44 }
45 
59 inline void SerializationInterface::fromVariant(const QVariant&)
60 {
61 }
62 
83 inline QVariant SerializationInterface::toVariant() const
84 {
85  QVariantMap ret;
86  ret.insert(QStringLiteral("type-id"), this->type());
87  return ret;
88 }
89 
126 } // namespace CTL
127 
129 
189 #define CTL_TYPE_ID(newIndex) \
190 public: \
191  enum { Type = (newIndex) }; \
192  int type() const override { return Type; } \
193  \
194 private: \
195  template<class> \
196  friend struct ::CTL::SerializationHelper::RegisterWithSerializationHelper;
197 
199 #endif // CTL_SERIALIZATIONINTERFACE_H
Specify an interface for de-/serialization from/to QVariants.
Definition: serializationinterface.h:17
virtual ~SerializationInterface()=default
virtual int type() const
Definition: serializationinterface.h:41
SerializationInterface & operator=(const SerializationInterface &)=default
virtual void fromVariant(const QVariant &variant)
Definition: serializationinterface.h:59
virtual QVariant toVariant() const
Definition: serializationinterface.h:83