[Qt-interest] Serialize QList<qint64>

Bruno Tezine bruno at tezine.com
Thu Jul 28 15:53:01 CEST 2011


Hi Thiago,
It worked. I just executed the qmake again!
Thanks
Em 28/07/2011 10:11, Bruno Tezine escreveu:
> Hi Thiago,
> I know it compiles with Q_DECLARE_METATYPE, but it doesn't serialize 
> the example below:
>
> QList<qint64>  list;
> list<<1;
> QVariant v=QVariant::fromValue(list);
> QByteArray array;
> QDataStream out(&array, QIODevice::WriteOnly);
> out<<v;
>
> using...
>
> qRegisterMetaType<QList<qint64> >();
> qRegisterMetaTypeStreamOperators<QList<qint64> >("QList<qint64>");
> QDataStream&operator<<(QDataStream&stream, const QList<qint64> &d);
> QDataStream&operator>>(QDataStream&stream, QList<qint64> &d);
> 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