QmlProfiler: Provide stream operators for QmlEventType and QmlNote

This is the foundation for a new file format.

Change-Id: Ib5ae5bfe8b45d9dc654b443ab700186993c3bfc9
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
This commit is contained in:
Ulf Hermann
2016-05-04 18:55:44 +02:00
parent 943fc80f51
commit ca5d9659e1
8 changed files with 147 additions and 2 deletions

View File

@@ -0,0 +1,41 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "qmleventlocation.h"
#include <QDataStream>
namespace QmlProfiler {
QDataStream &operator>>(QDataStream &stream, QmlEventLocation &location)
{
return stream >> location.filename >> location.line >> location.column;
}
QDataStream &operator<<(QDataStream &stream, const QmlEventLocation &location)
{
return stream << location.filename << location.line << location.column;
}
} // namespace QmlProfiler

View File

@@ -42,4 +42,7 @@ struct QMLPROFILER_EXPORT QmlEventLocation
int column; int column;
}; };
QDataStream &operator>>(QDataStream &stream, QmlEventLocation &location);
QDataStream &operator<<(QDataStream &stream, const QmlEventLocation &location);
} // namespace QmlProfiler } // namespace QmlProfiler

View File

@@ -0,0 +1,50 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "qmleventtype.h"
#include <QDataStream>
namespace QmlProfiler {
QDataStream &operator>>(QDataStream &stream, QmlEventType &type)
{
quint8 message;
quint8 rangeType;
stream >> type.displayName >> type.data >> type.location >> message >> rangeType
>> type.detailType;
type.message = static_cast<Message>(message);
type.rangeType = static_cast<RangeType>(rangeType);
return stream;
}
QDataStream &operator<<(QDataStream &stream, const QmlEventType &type)
{
return stream << type.displayName << type.data << type.location
<< static_cast<quint8>(type.message) << static_cast<quint8>(type.rangeType)
<< type.detailType;
}
} // namespace QmlProfiler

View File

@@ -48,6 +48,9 @@ struct QmlEventType {
int detailType; // can be EventType, BindingType, PixmapEventType or SceneGraphFrameType int detailType; // can be EventType, BindingType, PixmapEventType or SceneGraphFrameType
}; };
QDataStream &operator>>(QDataStream &stream, QmlEventType &type);
QDataStream &operator<<(QDataStream &stream, const QmlEventType &type);
} // namespace QmlProfiler } // namespace QmlProfiler
Q_DECLARE_METATYPE(QmlProfiler::QmlEventType) Q_DECLARE_METATYPE(QmlProfiler::QmlEventType)

View File

@@ -0,0 +1,41 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
****************************************************************************/
#include "qmlnote.h"
#include <QDataStream>
namespace QmlProfiler {
QDataStream &operator>>(QDataStream &stream, QmlNote &note)
{
return stream >> note.typeIndex >> note.startTime >> note.duration >> note.text;
}
QDataStream &operator<<(QDataStream &stream, const QmlNote &note)
{
return stream << note.typeIndex << note.startTime << note.duration << note.text;
}
} // namespace QmlProfiler

View File

@@ -41,6 +41,9 @@ struct QmlNote {
QString text; QString text;
}; };
QDataStream &operator>>(QDataStream &stream, QmlNote &note);
QDataStream &operator<<(QDataStream &stream, const QmlNote &note);
} // namespace QmlProfiler } // namespace QmlProfiler
Q_DECLARE_METATYPE(QmlProfiler::QmlNote) Q_DECLARE_METATYPE(QmlProfiler::QmlNote)

View File

@@ -13,6 +13,9 @@ SOURCES += \
localqmlprofilerrunner.cpp \ localqmlprofilerrunner.cpp \
memoryusagemodel.cpp \ memoryusagemodel.cpp \
pixmapcachemodel.cpp \ pixmapcachemodel.cpp \
qmleventlocation.cpp \
qmleventtype.cpp \
qmlnote.cpp \
qmlprofileranimationsmodel.cpp \ qmlprofileranimationsmodel.cpp \
qmlprofilerattachdialog.cpp \ qmlprofilerattachdialog.cpp \
qmlprofilerbindingloopsrenderpass.cpp \ qmlprofilerbindingloopsrenderpass.cpp \

View File

@@ -28,8 +28,9 @@ QtcPlugin {
"memoryusagemodel.cpp", "memoryusagemodel.h", "memoryusagemodel.cpp", "memoryusagemodel.h",
"pixmapcachemodel.cpp", "pixmapcachemodel.h", "pixmapcachemodel.cpp", "pixmapcachemodel.h",
"qmlevent.h", "qmlevent.h",
"qmleventlocation.h", "qmleventlocation.cpp", "qmleventlocation.h",
"qmleventtype.h", "qmlnote.h", "qmleventtype.cpp", "qmleventtype.h",
"qmlnote.cpp", "qmlnote.h",
"qmlprofiler_global.h", "qmlprofiler_global.h",
"qmlprofileranimationsmodel.h", "qmlprofileranimationsmodel.cpp", "qmlprofileranimationsmodel.h", "qmlprofileranimationsmodel.cpp",
"qmlprofilerattachdialog.cpp", "qmlprofilerattachdialog.h", "qmlprofilerattachdialog.cpp", "qmlprofilerattachdialog.h",