18 #ifndef NURIA_SERIALIZER_HPP
19 #define NURIA_SERIALIZER_HPP
21 #include "essentials.hpp"
22 #include "metaobject.hpp"
23 #include <QStringList>
29 class SerializerPrivate;
79 InfiniteRecursion = -3
112 QVector< QByteArray > exclude ()
const;
119 void setExclude (
const QVector< QByteArray > &list);
125 QVector< QByteArray > allowedTypes ()
const;
130 void setAllowedTypes (
const QVector< QByteArray > &list)
const;
135 QStringList failedFields ()
const;
141 int recursionDepth ()
const;
146 void setRecursionDepth (
int maxDepth);
160 void *deserialize (
const QVariantMap &data,
MetaObject *meta);
163 void *deserialize (
const QVariantMap &data,
const QByteArray &typeName);
166 template<
typename T >
169 return meta ?
reinterpret_cast< T *
> (deserialize (data, meta)) :
nullptr;
177 bool populate (
void *
object,
MetaObject *meta,
const QVariantMap &data);
180 bool populate (
void *
object,
const QByteArray &typeName,
const QVariantMap &data);
183 template<
typename T >
184 bool populate (T *
object,
const QVariantMap &data) {
186 return meta ? populate (
object, meta, data) :
false;
203 QVariantMap serialize (
void *
object,
MetaObject *meta);
206 QVariantMap serialize (
void *
object,
const QByteArray &typeName);
212 static MetaObject *defaultMetaObjectFinder (
const QByteArray &typeName);
219 static void *defaultInstanceCreator (
MetaObject *metaObject, QVariantMap &data);
222 SerializerPrivate *d;
224 QVariantMap serializeImpl (
void *
object,
MetaObject *meta);
225 bool populateImpl (
void *
object,
MetaObject *meta,
const QVariantMap &data);
226 bool variantToField (QVariant &value,
const QByteArray &targetType,
227 int targetId,
int sourceId,
int pointerId,
bool &ignored);
228 bool fieldToVariant (QVariant &value,
bool &ignore);
230 bool writeField (
void *
object,
Nuria::MetaField &field,
const QVariantMap &data);
235 #endif // NURIA_SERIALIZER_HPP
T * deserialize(const QVariantMap &data)
Definition: serializer.hpp:167
bool populate(T *object, const QVariantMap &data)
Definition: serializer.hpp:184
std::function< void *(MetaObject *, QVariantMap &) > InstanceCreator
Definition: serializer.hpp:98
(De-)Serializer for arbitary types based on Nuria::MetaObject.
Definition: serializer.hpp:74
std::function< MetaObject *(const QByteArray &) > MetaObjectFinder
Definition: serializer.hpp:87