[Qt-interest] Serialize QList<qint64>
Bruno Tezine
bruno at tezine.com
Wed Jul 27 21:04:42 CEST 2011
Hi,
How can I serialize a QList<qint64>?
I already can serialize any class of mine, but I didn't figure it out on
how to serialize a simple QList<qint64>.
Whenever I try to serialize it, I get the assert saying "Invalid type to
save". Any ideas? Thanks/Bruno.
I registered the data type:
qRegisterMetaType<QList<qint64> >();
qRegisterMetaTypeStreamOperators<QList<qint64> >("QList<qint64>");
Registered the stream operators:
QDataStream &operator<<(QDataStream &stream, const QList<qint64> &d);
QDataStream &operator>>(QDataStream &stream, QList<qint64> &d);
...and here is the implementation(it's never called):
QDataStream &operator<<(QDataStream &stream, const QList<qint64> &d)
{
stream<<(quint32)0xA0B0C0D0; //Magic Number
stream<<d.count();
foreach(qlonglong number, d)
stream<<number;
return stream;
}
QDataStream &operator>>(QDataStream &stream, QList<qint64> &d)
{
quint32 magic;
stream >> magic;
if (magic != 0xA0B0C0D0)
{
BLogger::log(LogTypeError,NULL,"deserializing","Invalid magic
number");
return stream;
}
int listCount;
stream>>listCount;
QList<qlonglong> list;
for(int i=0;i<listCount;i++)
{
qlonglong temp;
stream>>temp;
list.append(temp);
}
d=list;
return stream;
}
More information about the Qt-interest-old
mailing list