1 #ifndef CTL_ABSTRACTSERIALIZER_H 2 #define CTL_ABSTRACTSERIALIZER_H 4 #include "acquisition/abstractpreparestep.h" 5 #include "acquisition/acquisitionsetup.h" 24 void serialize(
const AbstractProjector& projector,
const QString& fileName)
const;
26 void serialize(
const AcquisitionSetup& setup,
const QString& fileName)
const;
27 void serialize(
const CTSystem& system,
const QString& fileName)
const;
28 void serialize(
const SystemComponent& component,
const QString& fileName)
const;
33 const QString& fileName)
const = 0;
36 public:
virtual std::unique_ptr<SystemComponent> deserializeComponent(
const QString& fileName)
const = 0;
37 public:
virtual std::unique_ptr<AbstractDataModel> deserializeDataModel(
const QString& fileName)
const = 0;
38 public:
virtual std::unique_ptr<AbstractDataModel2D> deserializeDataModel2D(
const QString& fileName)
const = 0;
39 public:
virtual std::unique_ptr<AbstractPrepareStep> deserializePrepareStep(
const QString& fileName)
const = 0;
40 public:
virtual std::unique_ptr<AbstractProjector> deserializeProjector(
const QString& fileName)
const = 0;
41 public:
virtual std::unique_ptr<AbstractReconstructor> deserializeReconstructor(
const QString& fileName)
const = 0;
42 public:
virtual std::unique_ptr<CTSystem> deserializeSystem(
const QString& fileName)
const = 0;
43 public:
virtual std::unique_ptr<AcquisitionSetup> deserializeAcquisitionSetup(
const QString& fileName)
const = 0;
44 public:
virtual std::unique_ptr<SerializationInterface> deserializeMiscObject(
const QString& fileName)
const = 0;
48 template<
class DerivedType>
49 std::unique_ptr<DerivedType> deserialize(
const QString& fileName);
52 template<
class DerivedType>
53 std::unique_ptr<DerivedType> deserializeDerived(
const QString& fileName,
SystemComponent*);
54 template<
class DerivedType>
55 std::unique_ptr<DerivedType> deserializeDerived(
const QString& fileName,
AbstractDataModel*);
56 template<
class DerivedType>
57 std::unique_ptr<DerivedType> deserializeDerived(
const QString& fileName,
AbstractDataModel2D*);
58 template<
class DerivedType>
59 std::unique_ptr<DerivedType> deserializeDerived(
const QString& fileName,
AbstractPrepareStep*);
60 template<
class DerivedType>
61 std::unique_ptr<DerivedType> deserializeDerived(
const QString& fileName,
AbstractProjector*);
62 template<
class DerivedType>
64 template<
class DerivedType>
65 std::unique_ptr<DerivedType> deserializeDerived(
const QString& fileName,
CTSystem*);
66 template<
class DerivedType>
67 std::unique_ptr<DerivedType> deserializeDerived(
const QString& fileName,
AcquisitionSetup*);
68 template<
class DerivedType>
79 inline void AbstractSerializer::serialize(
const AbstractDataModel& model,
const QString& fileName)
const 81 serialize(static_cast<const SerializationInterface&>(model), fileName);
84 inline void AbstractSerializer::serialize(
const AbstractDataModel2D& model,
const QString& fileName)
const 86 serialize(static_cast<const SerializationInterface&>(model), fileName);
89 inline void AbstractSerializer::serialize(
const AbstractPrepareStep& prepStep,
90 const QString& fileName)
const 92 serialize(static_cast<const SerializationInterface&>(prepStep), fileName);
95 inline void AbstractSerializer::serialize(
const AbstractProjector& projector,
96 const QString& fileName)
const 98 serialize(static_cast<const SerializationInterface&>(projector), fileName);
101 inline void AbstractSerializer::serialize(
const AbstractReconstructor& reconstructor,
102 const QString& fileName)
const 104 serialize(static_cast<const SerializationInterface&>(reconstructor), fileName);
107 inline void AbstractSerializer::serialize(
const AcquisitionSetup& setup,
const QString& fileName)
const 109 serialize(static_cast<const SerializationInterface&>(setup), fileName);
112 inline void AbstractSerializer::serialize(
const CTSystem& system,
const QString& fileName)
const 114 serialize(static_cast<const SerializationInterface&>(system), fileName);
117 inline void AbstractSerializer::serialize(
const SystemComponent& component,
const QString& fileName)
const 119 serialize(static_cast<const SerializationInterface&>(component), fileName);
122 template<
class DerivedType>
123 std::unique_ptr<DerivedType> AbstractSerializer::deserialize(
const QString& fileName)
125 DerivedType* d =
nullptr;
126 return deserializeDerived<DerivedType>(fileName, d);
129 template<
class DerivedType>
130 std::unique_ptr<DerivedType> AbstractSerializer::deserializeDerived(
const QString& fileName, SystemComponent*)
132 auto uPtr = deserializeComponent(fileName);
133 if(dynamic_cast<DerivedType*>(uPtr.get()))
134 return std::unique_ptr<DerivedType>(static_cast<DerivedType*>(uPtr.release()));
138 template<
class DerivedType>
139 std::unique_ptr<DerivedType> AbstractSerializer::deserializeDerived(
const QString& fileName, AbstractDataModel*)
141 auto uPtr = deserializeDataModel(fileName);
142 if(dynamic_cast<DerivedType*>(uPtr.get()))
143 return std::unique_ptr<DerivedType>(static_cast<DerivedType*>(uPtr.release()));
147 template<
class DerivedType>
148 std::unique_ptr<DerivedType> AbstractSerializer::deserializeDerived(
const QString& fileName, AbstractDataModel2D*)
150 auto uPtr = deserializeDataModel2D(fileName);
151 if(dynamic_cast<DerivedType*>(uPtr.get()))
152 return std::unique_ptr<DerivedType>(static_cast<DerivedType*>(uPtr.release()));
156 template<
class DerivedType>
157 std::unique_ptr<DerivedType> AbstractSerializer::deserializeDerived(
const QString& fileName, AbstractPrepareStep*)
159 auto uPtr = deserializePrepareStep(fileName);
160 if(dynamic_cast<DerivedType*>(uPtr.get()))
161 return std::unique_ptr<DerivedType>(static_cast<DerivedType*>(uPtr.release()));
165 template<
class DerivedType>
166 std::unique_ptr<DerivedType> AbstractSerializer::deserializeDerived(
const QString& fileName, AbstractProjector*)
168 auto uPtr = deserializeProjector(fileName);
169 if(dynamic_cast<DerivedType*>(uPtr.get()))
170 return std::unique_ptr<DerivedType>(static_cast<DerivedType*>(uPtr.release()));
174 template<
class DerivedType>
175 std::unique_ptr<DerivedType> AbstractSerializer::deserializeDerived(
const QString& fileName, AbstractReconstructor*)
177 auto uPtr = deserializeReconstructor(fileName);
178 if(dynamic_cast<DerivedType*>(uPtr.get()))
179 return std::unique_ptr<DerivedType>(static_cast<DerivedType*>(uPtr.release()));
183 template<
class DerivedType>
184 std::unique_ptr<DerivedType> AbstractSerializer::deserializeDerived(
const QString& fileName, CTSystem*)
186 auto uPtr = deserializeSystem(fileName);
187 if(dynamic_cast<DerivedType*>(uPtr.get()))
188 return std::unique_ptr<DerivedType>(static_cast<DerivedType*>(uPtr.release()));
192 template<
class DerivedType>
193 std::unique_ptr<DerivedType> AbstractSerializer::deserializeDerived(
const QString& fileName, AcquisitionSetup*)
195 auto uPtr = deserializeAcquisitionSetup(fileName);
196 if(dynamic_cast<DerivedType*>(uPtr.get()))
197 return std::unique_ptr<DerivedType>(static_cast<DerivedType*>(uPtr.release()));
201 template<
class DerivedType>
202 std::unique_ptr<DerivedType> AbstractSerializer::deserializeDerived(
const QString& fileName, SerializationInterface*)
204 auto uPtr = deserializeMiscObject(fileName);
205 if(dynamic_cast<DerivedType*>(uPtr.get()))
206 return std::unique_ptr<DerivedType>(static_cast<DerivedType*>(uPtr.release()));
213 #endif // CTL_ABSTRACTSERIALIZER_H
The AbstractDataModel2D class is the base class for two-dimensional data models.
Definition: abstractdatamodel2d.h:47
Base class for preparation steps used within an AcquisitionSetup.
Definition: abstractpreparestep.h:46
Holds a CTSystem together with the information about the system settings for all views from which pro...
Definition: acquisitionsetup.h:175
The AbstractProjector class is the abstract base class defining the interfaces for forward projectors...
Definition: abstractprojector.h:68
Specify an interface for de-/serialization from/to QVariants.
Definition: serializationinterface.h:17
The AbstractReconstructor class defined the interface for reconstruction types.
Definition: abstractreconstructor.h:163
The CTSystem class manages the list of all components of a system.
Definition: ctsystem.h:84
Base class for all system components.
Definition: systemcomponent.h:53
The AbstractDataModel class is the base class for basic data models.
Definition: abstractdatamodel.h:55
Definition: abstractserializer.h:15