Skip to content
Snippets Groups Projects
Commit ecba387f authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

XML w/r at leave level

parent a0b91609
No related branches found
No related tags found
1 merge request!1437source items: minor cleanup
Pipeline #91530 passed
......@@ -194,6 +194,34 @@ BeamItem::BeamItem()
m_inclinationAngleItem.reset(new BeamInclinationAngleItem);
}
void BeamItem::writeTo(QXmlStreamWriter* w) const
{
XML::writeAttribute(w, XML::Attrib::version, uint(1));
// parameters from base class
w->writeStartElement(Tag::BaseData);
SourceItem::writeTo(w);
w->writeEndElement();
}
void BeamItem::readFrom(QXmlStreamReader* r)
{
const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
Q_UNUSED(version)
while (r->readNextStartElement()) {
QString tag = r->name().toString();
// parameters from base class
if (tag == Tag::BaseData) {
SourceItem::readFrom(r);
XML::gotoEndElementOfTag(r, tag);
} else
r->skipCurrentElement();
}
}
double BeamItem::getInclinationAngle() const
{
return dynamic_cast<BeamInclinationAngleItem*>(beamDistributionItem())->inclinationAngle();
......
......@@ -34,9 +34,6 @@ class InstrumentItem;
//! Base class for BeamItem and ScanItem. Name refers to radiation source.
class SourceItem {
public:
virtual void writeTo(QXmlStreamWriter* w) const;
virtual void readFrom(QXmlStreamReader* r);
DoubleProperty& intensity() { return m_intensity; }
const DoubleProperty& intensity() const { return m_intensity; }
void setIntensity(double v) { m_intensity.setValue(v); }
......@@ -61,6 +58,8 @@ public:
protected:
SourceItem();
void writeTo(QXmlStreamWriter* w) const;
void readFrom(QXmlStreamReader* r);
std::unique_ptr<BeamWavelengthItem> m_wavelengthItem;
std::unique_ptr<BeamAzimuthalAngleItem> m_azimuthalAngleItem;
......@@ -73,6 +72,10 @@ protected:
class BeamItem : public SourceItem {
public:
BeamItem();
void writeTo(QXmlStreamWriter* w) const;
void readFrom(QXmlStreamReader* r);
double getInclinationAngle() const override;
};
......@@ -80,8 +83,8 @@ class ScanItem : public SourceItem {
public:
explicit ScanItem(const InstrumentItem* owningInstrument);
void writeTo(QXmlStreamWriter* w) const override;
void readFrom(QXmlStreamReader* r) override;
void writeTo(QXmlStreamWriter* w) const;
void readFrom(QXmlStreamReader* r);
double getInclinationAngle() const override;
void setInclinationAngle(double value) 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