Revision control

++ // Copyright (C) 2016 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++
++ #include <QtCore>
++ #include <QByteArray>
++ #include <QDataStream>
++
++ //! [0]
++ struct Movie
++ {
++ int id;
++ QString title;
++ QDate releaseDate;
++ };
++ //! [0]
++
++ //! [1]
++ QDataStream &operator<<(QDataStream &out, const Movie &movie)
++ {
++ out << (quint32)movie.id << movie.title
++ << movie.releaseDate;
++ return out;
++ }
++ //! [1]
++
++ //! [2]
++ QDataStream &operator>>(QDataStream &in, Movie &movie)
++ {
++ quint32 id;
++ QDate date;
++
++ in >> id >> movie.title >> date;
++ movie.id = (int)id;
++ movie.releaseDate = date;
++ return in;
++ }
++ //! [2]
++
++ int main(int argc, char *argv[])
++ {
++ QCoreApplication app(argc, argv);
++
++ Movie m;
++ m.id = 0001;
++ m.title = "Happy Meal";
++ m.releaseDate = QDate(1995, 5, 17);
++
++ QByteArray byteArray;
++ QDataStream stream(&byteArray, QIODevice::WriteOnly);
++ stream << m;
++
++ // display
++ qDebug() << m.id << m.releaseDate << m.title;
++
++ Movie m2;
++
++ int id2;
++ QString title2;
++ QDate date2;
++
++ QDataStream stream2(byteArray);
++ stream2 >> id2 >> title2 >> date2;
++
++ m2.id = id2;
++ m2.title = title2;
++ m2.releaseDate = date2;
++
++ qDebug() << id2 << " " << date2 << " " << title2;
++
++ return 0;
++ }