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

mv rwSelected to SelectionProperty.h

parent f1a0729d
No related branches found
No related tags found
1 merge request!707Split serializer
......@@ -16,6 +16,7 @@
#define BORNAGAIN_GUI_MODEL_DESCRIPTOR_SELECTIONPROPERTY_H
#include "GUI/Model/Descriptor/SelectionDescriptor.h"
#include "GUI/Model/XML/Streamer.h"
// #baMigration docu
template <typename T>
......@@ -124,5 +125,34 @@ private:
std::function<void(T, const T)> m_initializer;
};
// Extends namespace defined in GUI/Model/XML/Serialize.h
namespace Serialize {
//! Serializes an item from a catalog.
//! Passes optional arguments to the constructor.
template <typename Catalog, typename... ArgsForCreation>
void rwSelected(Streamer& s, SelectionProperty<typename Catalog::CatalogedType*>& d,
ArgsForCreation... argsForCreation);
} // namespace Serialize
// ************************************************************************************************
// Template implementation
// ************************************************************************************************
template <typename Catalog, typename... ArgsForCreation>
void Serialize::rwSelected(Streamer& s, SelectionProperty<typename Catalog::CatalogedType*>& d,
ArgsForCreation... argsForCreation)
{
if (QXmlStreamWriter* w = s.xmlWriter()) {
typename Catalog::CatalogedType* p = d.get();
s.write<Catalog>(d.persistentTag(), p);
} else if (QXmlStreamReader* r = s.xmlReader()) {
typename Catalog::CatalogedType* p = nullptr;
s.read<Catalog>(d.persistentTag(), p, argsForCreation...);
d.set(p);
}
}
#endif // BORNAGAIN_GUI_MODEL_DESCRIPTOR_SELECTIONPROPERTY_H
......@@ -16,7 +16,7 @@
#define BORNAGAIN_GUI_MODEL_XML_SERIALIZE_H
#include "GUI/Model/XML/Streamer.h"
#include "GUI/Model/Descriptor/SelectionProperty.h"
#include "GUI/Model/BaseItem/SessionItem.h"
//! Functions to serialize various data types.
//!
......@@ -54,12 +54,6 @@ template <typename Catalog, typename... Args>
void rwCatalogized(Streamer& s, const QString& tag, QVector<typename Catalog::CatalogedType*>& vec,
Args... argsForConstructor);
//! Serializes an item from a catalog.
//! Passes optional arguments to the constructor.
template <typename Catalog, typename... ArgsForCreation>
void rwSelected(Streamer& s, SelectionProperty<typename Catalog::CatalogedType*>& d,
ArgsForCreation... argsForCreation);
//! Serializes an optional item of known type.
//! Passes optional arguments to the constructor.
template <typename ItemClass, typename... ArgsForConstructor>
......@@ -149,20 +143,6 @@ void Serialize::rwCatalogized(Streamer& s, const QString& tag,
}
}
template <typename Catalog, typename... ArgsForCreation>
void Serialize::rwSelected(Streamer& s, SelectionProperty<typename Catalog::CatalogedType*>& d,
ArgsForCreation... argsForCreation)
{
if (QXmlStreamWriter* w = s.xmlWriter()) {
typename Catalog::CatalogedType* p = d.get();
s.write<Catalog>(d.persistentTag(), p);
} else if (QXmlStreamReader* r = s.xmlReader()) {
typename Catalog::CatalogedType* p = nullptr;
s.read<Catalog>(d.persistentTag(), p, argsForCreation...);
d.set(p);
}
}
template <typename ItemClass, typename... ArgsForConstructor>
void Serialize::rwOptional(Streamer& s, const QString& tag, std::unique_ptr<ItemClass>& up,
ArgsForConstructor... argsForConstructor)
......
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