Skip to content
Snippets Groups Projects
Commit 496e521b authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

restore instruments serialization

parent 4cce3df8
No related branches found
No related tags found
1 merge request!1457Restore instruments serialization (#512)
......@@ -323,7 +323,7 @@ std::unique_ptr<IBeamScan> ScanningFunctionality::createScan() const
return result;
}
void ScanningFunctionality::writeScanTo(QXmlStreamWriter *w) const
void ScanningFunctionality::writeScanTo(QXmlStreamWriter* w) const
{
XML::writeAttribute(w, XML::Attrib::version, uint(1));
......@@ -333,22 +333,22 @@ void ScanningFunctionality::writeScanTo(QXmlStreamWriter *w) const
w->writeEndElement();
}
void ScanningFunctionality::readScanFrom(QXmlStreamReader *r)
void ScanningFunctionality::readScanFrom(QXmlStreamReader* r)
{
const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
Q_UNUSED(version)
Q_UNUSED(version)
while (r->readNextStartElement()) {
QString tag = r->name().toString();
while (r->readNextStartElement()) {
QString tag = r->name().toString();
// scan
if (tag == Tag::Scan) {
m_scanItem->readFrom(r);
XML::gotoEndElementOfTag(r, tag);
// scan
if (tag == Tag::Scan) {
m_scanItem->readFrom(r);
XML::gotoEndElementOfTag(r, tag);
} else
r->skipCurrentElement();
}
} else
r->skipCurrentElement();
}
}
......@@ -434,6 +434,44 @@ ISimulation* SpecularInstrumentItem::createSimulation(const MultiLayer& sample)
return new SpecularSimulation(*createScan(), sample);
}
void SpecularInstrumentItem::writeTo(QXmlStreamWriter* w) const
{
XML::writeAttribute(w, XML::Attrib::version, uint(1));
// instrument parameters from base class
w->writeStartElement(Tag::BaseData);
InstrumentItem::writeTo(w);
w->writeEndElement();
// scan parameters from base class
w->writeStartElement(Tag::ScanParameters);
ScanningFunctionality::writeScanTo(w);
w->writeEndElement();
}
void SpecularInstrumentItem::readFrom(QXmlStreamReader* r)
{
const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
Q_UNUSED(version)
while (r->readNextStartElement()) {
QString tag = r->name().toString();
// instrument parameters from base class
if (tag == Tag::BaseData) {
InstrumentItem::readFrom(r);
XML::gotoEndElementOfTag(r, tag);
// scan parameters from base class
} else if (tag == Tag::ScanParameters) {
ScanningFunctionality::readScanFrom(r);
XML::gotoEndElementOfTag(r, tag);
} else
r->skipCurrentElement();
}
}
// ************************************************************************************************
// class DepthprobeInstrumentItem
// ************************************************************************************************
......@@ -495,14 +533,14 @@ void DepthprobeInstrumentItem::writeTo(QXmlStreamWriter* w) const
{
XML::writeAttribute(w, XML::Attrib::version, uint(1));
// parameters from base class
// instrument parameters from base class
w->writeStartElement(Tag::BaseData);
InstrumentItem::writeTo(w);
w->writeEndElement();
// scan
w->writeStartElement(Tag::Scan);
scanItem()->writeTo(w);
// scan parameters from base class
w->writeStartElement(Tag::ScanParameters);
ScanningFunctionality::writeScanTo(w);
w->writeEndElement();
// z axis
......@@ -519,14 +557,14 @@ void DepthprobeInstrumentItem::readFrom(QXmlStreamReader* r)
while (r->readNextStartElement()) {
QString tag = r->name().toString();
// parameters from base class
// instrument parameters from base class
if (tag == Tag::BaseData) {
InstrumentItem::readFrom(r);
XML::gotoEndElementOfTag(r, tag);
// scan
} else if (tag == Tag::Scan) {
scanItem()->readFrom(r);
// scan parameters from base class
} else if (tag == Tag::ScanParameters) {
ScanningFunctionality::readScanFrom(r);
XML::gotoEndElementOfTag(r, tag);
// z axis
......@@ -594,14 +632,14 @@ void OffspecInstrumentItem::writeTo(QXmlStreamWriter* w) const
{
XML::writeAttribute(w, XML::Attrib::version, uint(1));
// parameters from base class
// instrument parameters from base class
w->writeStartElement(Tag::BaseData);
InstrumentItem::writeTo(w);
w->writeEndElement();
// scan
w->writeStartElement(Tag::Scan);
scanItem()->writeTo(w);
// scan parameters from base class
w->writeStartElement(Tag::ScanParameters);
ScanningFunctionality::writeScanTo(w);
w->writeEndElement();
}
......@@ -613,14 +651,14 @@ void OffspecInstrumentItem::readFrom(QXmlStreamReader* r)
while (r->readNextStartElement()) {
QString tag = r->name().toString();
// parameters from base class
// instrument parameters from base class
if (tag == Tag::BaseData) {
InstrumentItem::readFrom(r);
XML::gotoEndElementOfTag(r, tag);
// scan
} else if (tag == Tag::Scan) {
scanItem()->readFrom(r);
// scan parameters from base class
} else if (tag == Tag::ScanParameters) {
ScanningFunctionality::readScanFrom(r);
XML::gotoEndElementOfTag(r, tag);
} else
......
......@@ -165,6 +165,9 @@ public:
bool alignedWith(const RealItem* item) const override;
const ICoordSystem* createCoordSystem() const override;
ISimulation* createSimulation(const MultiLayer& sample) const override;
void writeTo(QXmlStreamWriter* w) const override;
void readFrom(QXmlStreamReader* r) override;
};
......
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