[Qt-interest] Serialize QList<qint64>
Murphy, Sean M.
sean.murphy at gd-ais.com
Wed Jul 27 21:18:04 CEST 2011
You shouldn't have to do anything if you're willing to accept Qt's built in serialization of a QList<T>:
http://doc.trolltech.com/4.7/qlist.html#operator-lt-lt-77
Sean
-----Original Message-----
From: qt-interest-bounces+sean.murphy=gd-ais.com at qt.nokia.com [mailto:qt-interest-bounces+sean.murphy=gd-ais.com at qt.nokia.com] On Behalf Of Bruno Tezine
Sent: Wednesday, July 27, 2011 3:05 PM
To: qt-interest at qt.nokia.com
Subject: [Qt-interest] Serialize QList<qint64>
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;
}
_______________________________________________
Qt-interest mailing list
Qt-interest at qt.nokia.com
http://lists.qt.nokia.com/mailman/listinfo/qt-interest
More information about the Qt-interest-old
mailing list