Skip to content
Snippets Groups Projects
Commit 3be0d1de authored by Matthias Puchner's avatar Matthias Puchner
Browse files

complete InterferenceItems' serialization

parent 67c5801d
No related branches found
No related tags found
1 merge request!573Sample item serialization
...@@ -82,6 +82,15 @@ SelectionDescriptor<FTDecayFunction1DItem*> Interference1DLatticeItem::decayFunc ...@@ -82,6 +82,15 @@ SelectionDescriptor<FTDecayFunction1DItem*> Interference1DLatticeItem::decayFunc
return m_decayFunction; return m_decayFunction;
} }
void Interference1DLatticeItem::serialize(Serializer& s)
{
s.assertVersion(0);
s.rw(m_positionVariance);
s.rw(m_length);
s.rw(m_rotationAngle);
s.rw<FTDecayFunction1DItemCatalog>(m_decayFunction);
}
// --------------------------------------------------------------------------------------------- // // --------------------------------------------------------------------------------------------- //
SelectionDescriptor<Lattice2DItem*> Interference2DAbstractLatticeItem::latticeType() const SelectionDescriptor<Lattice2DItem*> Interference2DAbstractLatticeItem::latticeType() const
...@@ -132,6 +141,15 @@ std::unique_ptr<IInterference> Interference2DLatticeItem::createInterference() c ...@@ -132,6 +141,15 @@ std::unique_ptr<IInterference> Interference2DLatticeItem::createInterference() c
return std::unique_ptr<IInterference>(result.release()); return std::unique_ptr<IInterference>(result.release());
} }
void Interference2DLatticeItem::serialize(Serializer& s)
{
s.assertVersion(0);
s.rw(m_positionVariance);
s.rw("integrate", m_xiIntegration);
s.rw<Lattice2DItemCatalog>(m_latticeType);
s.rw<FTDecayFunction2DItemCatalog>(m_decayFunction);
}
void Interference2DLatticeItem::setDecayFunctionType(FTDecayFunction2DItem* p) void Interference2DLatticeItem::setDecayFunctionType(FTDecayFunction2DItem* p)
{ {
m_decayFunction.set(p); m_decayFunction.set(p);
...@@ -175,6 +193,19 @@ std::unique_ptr<IInterference> Interference2DParaCrystalItem::createInterference ...@@ -175,6 +193,19 @@ std::unique_ptr<IInterference> Interference2DParaCrystalItem::createInterference
return std::unique_ptr<IInterference>(result.release()); return std::unique_ptr<IInterference>(result.release());
} }
void Interference2DParaCrystalItem::serialize(Serializer& s)
{
s.assertVersion(0);
s.rw(m_positionVariance);
s.rw("integrate", m_xiIntegration);
s.rw<Lattice2DItemCatalog>(m_latticeType);
s.rw(m_dampingLength);
s.rw(m_domainSize1);
s.rw(m_domainSize2);
s.rw<FTDistribution2DItemCatalog>(m_pdf1);
s.rw<FTDistribution2DItemCatalog>(m_pdf2);
}
DoubleDescriptor Interference2DParaCrystalItem::dampingLength() const DoubleDescriptor Interference2DParaCrystalItem::dampingLength() const
{ {
return m_dampingLength; return m_dampingLength;
...@@ -250,6 +281,16 @@ std::unique_ptr<IInterference> InterferenceFinite2DLatticeItem::createInterferen ...@@ -250,6 +281,16 @@ std::unique_ptr<IInterference> InterferenceFinite2DLatticeItem::createInterferen
return std::unique_ptr<IInterference>(result.release()); return std::unique_ptr<IInterference>(result.release());
} }
void InterferenceFinite2DLatticeItem::serialize(Serializer& s)
{
s.assertVersion(0);
s.rw(m_positionVariance);
s.rw("integrate", m_xiIntegration);
s.rw<Lattice2DItemCatalog>(m_latticeType);
s.rw(m_domainSize1);
s.rw(m_domainSize2);
}
UIntDescriptor InterferenceFinite2DLatticeItem::domainSize1() UIntDescriptor InterferenceFinite2DLatticeItem::domainSize1()
{ {
return m_domainSize1; return m_domainSize1;
...@@ -286,6 +327,14 @@ std::unique_ptr<IInterference> InterferenceHardDiskItem::createInterference() co ...@@ -286,6 +327,14 @@ std::unique_ptr<IInterference> InterferenceHardDiskItem::createInterference() co
return std::unique_ptr<IInterference>(result.release()); return std::unique_ptr<IInterference>(result.release());
} }
void InterferenceHardDiskItem::serialize(Serializer& s)
{
s.assertVersion(0);
s.rw(m_positionVariance);
s.rw(m_radius);
s.rw(m_density);
}
DoubleDescriptor InterferenceHardDiskItem::density() const DoubleDescriptor InterferenceHardDiskItem::density() const
{ {
return m_density; return m_density;
...@@ -324,6 +373,17 @@ std::unique_ptr<IInterference> InterferenceRadialParaCrystalItem::createInterfer ...@@ -324,6 +373,17 @@ std::unique_ptr<IInterference> InterferenceRadialParaCrystalItem::createInterfer
return std::unique_ptr<IInterference>(result.release()); return std::unique_ptr<IInterference>(result.release());
} }
void InterferenceRadialParaCrystalItem::serialize(Serializer& s)
{
s.assertVersion(0);
s.rw(m_positionVariance);
s.rw(m_peakDistance);
s.rw(m_dampingLength);
s.rw(m_domainSize);
s.rw(m_kappa);
s.rw<FTDistribution1DItemCatalog>(m_pdf);
}
DoubleDescriptor InterferenceRadialParaCrystalItem::peakDistance() const DoubleDescriptor InterferenceRadialParaCrystalItem::peakDistance() const
{ {
return m_peakDistance; return m_peakDistance;
......
...@@ -30,23 +30,24 @@ class InterferenceItem { ...@@ -30,23 +30,24 @@ class InterferenceItem {
public: public:
virtual ~InterferenceItem() = default; virtual ~InterferenceItem() = default;
virtual std::unique_ptr<IInterference> createInterference() const = 0; virtual std::unique_ptr<IInterference> createInterference() const = 0;
virtual void serialize(Serializer& s) = 0;
DoubleDescriptor positionVariance() const; DoubleDescriptor positionVariance() const;
virtual void serialize(Serializer& s);
protected: protected:
InterferenceItem(); InterferenceItem();
private:
DoubleProperty m_positionVariance; DoubleProperty m_positionVariance;
}; };
// ------------------------------------------------------------------------------------------------
class Interference1DLatticeItem : public InterferenceItem { class Interference1DLatticeItem : public InterferenceItem {
public: public:
Interference1DLatticeItem(); Interference1DLatticeItem();
std::unique_ptr<IInterference> createInterference() const override; std::unique_ptr<IInterference> createInterference() const override;
void serialize(Serializer& s) override;
DoubleDescriptor length() const; DoubleDescriptor length() const;
DoubleDescriptor rotationAngle() const; DoubleDescriptor rotationAngle() const;
...@@ -60,6 +61,8 @@ private: ...@@ -60,6 +61,8 @@ private:
SelectionProperty<FTDecayFunction1DItem*> m_decayFunction; SelectionProperty<FTDecayFunction1DItem*> m_decayFunction;
}; };
// ------------------------------------------------------------------------------------------------
class Interference2DAbstractLatticeItem : public InterferenceItem { class Interference2DAbstractLatticeItem : public InterferenceItem {
public: public:
SelectionDescriptor<Lattice2DItem*> latticeType() const; SelectionDescriptor<Lattice2DItem*> latticeType() const;
...@@ -71,14 +74,17 @@ public: ...@@ -71,14 +74,17 @@ public:
protected: protected:
explicit Interference2DAbstractLatticeItem(bool xiIntegration); explicit Interference2DAbstractLatticeItem(bool xiIntegration);
bool m_xiIntegration; // #baMigration serialize bool m_xiIntegration;
SelectionProperty<Lattice2DItem*> m_latticeType; SelectionProperty<Lattice2DItem*> m_latticeType;
}; };
// ------------------------------------------------------------------------------------------------
class Interference2DLatticeItem : public Interference2DAbstractLatticeItem { class Interference2DLatticeItem : public Interference2DAbstractLatticeItem {
public: public:
Interference2DLatticeItem(); Interference2DLatticeItem();
std::unique_ptr<IInterference> createInterference() const override; std::unique_ptr<IInterference> createInterference() const override;
void serialize(Serializer& s) override;
void setDecayFunctionType(FTDecayFunction2DItem* p); void setDecayFunctionType(FTDecayFunction2DItem* p);
SelectionDescriptor<FTDecayFunction2DItem*> decayFunction() const; SelectionDescriptor<FTDecayFunction2DItem*> decayFunction() const;
...@@ -87,10 +93,13 @@ protected: ...@@ -87,10 +93,13 @@ protected:
SelectionProperty<FTDecayFunction2DItem*> m_decayFunction; SelectionProperty<FTDecayFunction2DItem*> m_decayFunction;
}; };
// ------------------------------------------------------------------------------------------------
class Interference2DParaCrystalItem : public Interference2DAbstractLatticeItem { class Interference2DParaCrystalItem : public Interference2DAbstractLatticeItem {
public: public:
Interference2DParaCrystalItem(); Interference2DParaCrystalItem();
std::unique_ptr<IInterference> createInterference() const override; std::unique_ptr<IInterference> createInterference() const override;
void serialize(Serializer& s) override;
DoubleDescriptor dampingLength() const; DoubleDescriptor dampingLength() const;
void setDampingLength(double dampingLength); void setDampingLength(double dampingLength);
...@@ -114,10 +123,13 @@ private: ...@@ -114,10 +123,13 @@ private:
SelectionProperty<FTDistribution2DItem*> m_pdf2; SelectionProperty<FTDistribution2DItem*> m_pdf2;
}; };
// ------------------------------------------------------------------------------------------------
class InterferenceFinite2DLatticeItem : public Interference2DAbstractLatticeItem { class InterferenceFinite2DLatticeItem : public Interference2DAbstractLatticeItem {
public: public:
InterferenceFinite2DLatticeItem(); InterferenceFinite2DLatticeItem();
std::unique_ptr<IInterference> createInterference() const override; std::unique_ptr<IInterference> createInterference() const override;
void serialize(Serializer& s) override;
UIntDescriptor domainSize1(); UIntDescriptor domainSize1();
void setDomainSize1(unsigned int domain_size1); void setDomainSize1(unsigned int domain_size1);
...@@ -129,10 +141,13 @@ private: ...@@ -129,10 +141,13 @@ private:
UIntProperty m_domainSize2; UIntProperty m_domainSize2;
}; };
// ------------------------------------------------------------------------------------------------
class InterferenceHardDiskItem : public InterferenceItem { class InterferenceHardDiskItem : public InterferenceItem {
public: public:
InterferenceHardDiskItem(); InterferenceHardDiskItem();
std::unique_ptr<IInterference> createInterference() const override; std::unique_ptr<IInterference> createInterference() const override;
void serialize(Serializer& s) override;
DoubleDescriptor radius() const; DoubleDescriptor radius() const;
DoubleDescriptor density() const; DoubleDescriptor density() const;
...@@ -142,10 +157,13 @@ private: ...@@ -142,10 +157,13 @@ private:
DoubleProperty m_density; DoubleProperty m_density;
}; };
// ------------------------------------------------------------------------------------------------
class InterferenceRadialParaCrystalItem : public InterferenceItem { class InterferenceRadialParaCrystalItem : public InterferenceItem {
public: public:
InterferenceRadialParaCrystalItem(); InterferenceRadialParaCrystalItem();
std::unique_ptr<IInterference> createInterference() const override; std::unique_ptr<IInterference> createInterference() const override;
void serialize(Serializer& s) override;
DoubleDescriptor peakDistance() const; DoubleDescriptor peakDistance() const;
DoubleDescriptor dampingLength() const; DoubleDescriptor dampingLength() const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment