summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.qmake.conf2
-rw-r--r--dist/changes-5.10.022
-rw-r--r--dist/changes-5.10.130
-rw-r--r--examples/sensors/accelbubble/accelbubble.qml6
-rw-r--r--examples/sensors/grue/console_app/main.cpp2
-rw-r--r--examples/sensors/grue/import/main.cpp2
-rw-r--r--examples/sensors/grue/lib/gruesensor.h2
-rw-r--r--examples/sensors/grue/plugin/gruesensorimpl.h4
-rw-r--r--examples/sensors/grue/plugin/main.cpp6
-rw-r--r--examples/sensors/maze/Mouse.qml4
-rw-r--r--examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.h6
-rw-r--r--examples/sensors/qmlsensorgestures/plugin/qcounterrecognizer.h10
-rw-r--r--examples/sensors/sensor_explorer/import/main.cpp2
-rw-r--r--examples/sensors/sensorgestures/sensorgestures.pro1
-rw-r--r--src/imports/sensors/plugins.qmltypes2
-rw-r--r--src/imports/sensors/qmlhumiditysensor.h8
-rw-r--r--src/imports/sensors/qmllidsensor.h8
-rw-r--r--src/imports/sensors/qmlsensor.h4
-rw-r--r--src/imports/sensors/sensors.cpp5
-rw-r--r--src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp5
-rw-r--r--src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp5
-rw-r--r--src/plugins/sensors/android/jar/bundledjar.pro3
-rw-r--r--src/plugins/sensors/android/jar/distributedjar.pro2
-rw-r--r--src/plugins/sensors/android/jar/jar.pri13
-rw-r--r--src/plugins/sensors/android/jar/jar.pro16
-rw-r--r--src/plugins/sensors/android/src/androidcompass.cpp3
-rw-r--r--src/plugins/sensors/android/src/androidgyroscope.cpp8
-rw-r--r--src/plugins/sensors/android/src/androidpressure.h4
-rw-r--r--src/plugins/sensors/android/src/androidrotation.cpp8
-rw-r--r--src/plugins/sensors/android/src/main.cpp4
-rw-r--r--src/plugins/sensors/dummy/dummylightsensor.cpp4
-rw-r--r--src/plugins/sensors/dummy/main.cpp4
-rw-r--r--src/plugins/sensors/generic/genericrotationsensor.cpp8
-rw-r--r--src/plugins/sensors/generic/generictiltsensor.cpp49
-rw-r--r--src/plugins/sensors/generic/main.cpp6
-rw-r--r--src/plugins/sensors/iio-sensor-proxy/main.cpp4
-rw-r--r--src/plugins/sensors/ios/iosgyroscope.mm7
-rw-r--r--src/plugins/sensors/ios/main.mm4
-rw-r--r--src/plugins/sensors/linux/main.cpp4
-rw-r--r--src/plugins/sensors/sensorfw/main.cpp4
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwlidsensor.h6
-rw-r--r--src/plugins/sensors/sensors.pro9
-rw-r--r--src/plugins/sensors/sensortag/Sensors.conf13
-rw-r--r--src/plugins/sensors/sensortag/main.cpp113
-rw-r--r--src/plugins/sensors/sensortag/plugin.json1
-rw-r--r--src/plugins/sensors/sensortag/sensortag.pri22
-rw-r--r--src/plugins/sensors/sensortag/sensortag.pro11
-rw-r--r--src/plugins/sensors/sensortag/sensortagaccelerometer.cpp82
-rw-r--r--src/plugins/sensors/sensortag/sensortagaccelerometer.h68
-rw-r--r--src/plugins/sensors/sensortag/sensortagals.cpp97
-rw-r--r--src/plugins/sensors/sensortag/sensortagals.h68
-rw-r--r--src/plugins/sensors/sensortag/sensortagbase.cpp600
-rw-r--r--src/plugins/sensors/sensortag/sensortagbase.h252
-rw-r--r--src/plugins/sensors/sensortag/sensortaggyroscope.cpp84
-rw-r--r--src/plugins/sensors/sensortag/sensortaggyroscope.h67
-rw-r--r--src/plugins/sensors/sensortag/sensortaghumiditysensor.cpp74
-rw-r--r--src/plugins/sensors/sensortag/sensortaghumiditysensor.h62
-rw-r--r--src/plugins/sensors/sensortag/sensortaglightsensor.cpp78
-rw-r--r--src/plugins/sensors/sensortag/sensortaglightsensor.h66
-rw-r--r--src/plugins/sensors/sensortag/sensortagmagnetometer.cpp80
-rw-r--r--src/plugins/sensors/sensortag/sensortagmagnetometer.h69
-rw-r--r--src/plugins/sensors/sensortag/sensortagpressuresensor.cpp73
-rw-r--r--src/plugins/sensors/sensortag/sensortagpressuresensor.h65
-rw-r--r--src/plugins/sensors/sensortag/sensortagtemperaturesensor.cpp73
-rw-r--r--src/plugins/sensors/sensortag/sensortagtemperaturesensor.h62
-rw-r--r--src/plugins/sensors/simulator/main.cpp4
-rw-r--r--src/plugins/sensors/winrt/main.cpp4
-rw-r--r--src/sensors/doc/snippets/sensorgestures/myplugin.h16
-rw-r--r--src/sensors/doc/snippets/sensors/mybackend.h4
-rw-r--r--src/sensors/doc/snippets/sensors/plugin.cpp4
-rw-r--r--src/sensors/doc/src/compatmap.qdoc21
-rw-r--r--src/sensors/gestures/qsensorgesture.h4
-rw-r--r--src/sensors/qaccelerometer.h2
-rw-r--r--src/sensors/qambientlightsensor.h2
-rw-r--r--src/sensors/qhumiditysensor.h2
-rw-r--r--src/sensors/qlidsensor.h2
-rw-r--r--src/sensors/qsensor.h2
-rw-r--r--src/sensors/qsensorbackend.cpp2
-rw-r--r--src/sensors/sensors.pro2
-rw-r--r--tests/auto/bic/data/QtSensors.5.10.0.linux-gcc-amd64.txt6386
-rw-r--r--tests/auto/qsensor/test_backends.cpp2
-rw-r--r--tests/auto/qsensor/test_backends.h6
-rw-r--r--tests/auto/qsensor/test_sensor.h2
-rw-r--r--tests/auto/qsensor/test_sensor2.h4
-rw-r--r--tests/auto/qsensor/test_sensor2impl.h4
-rw-r--r--tests/auto/qsensor/test_sensorimpl.h4
-rw-r--r--tests/auto/qsensor/test_sensorplugin.cpp6
-rw-r--r--tests/auto/qsensor/tst_qsensor.cpp6
-rw-r--r--tests/auto/qsensorgestures/plugins/test/qtest2recognizer.h10
-rw-r--r--tests/auto/qsensorgestures/plugins/test/qtestrecognizer.h10
-rw-r--r--tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h6
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.h10
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.h10
-rw-r--r--tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h6
-rw-r--r--tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp10
-rw-r--r--tests/auto/qsensorgestures_gestures/mockbackends.h4
-rw-r--r--tests/auto/qsensorgestures_gestures/mockcommon.h4
-rw-r--r--tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp31
-rw-r--r--tests/auto/sensors2qmlapi/qtemplategestureplugin.h6
-rw-r--r--tests/auto/sensors2qmlapi/qtemplaterecognizer.h20
100 files changed, 8865 insertions, 239 deletions
diff --git a/.qmake.conf b/.qmake.conf
index 7e0ad0e1..dc68d388 100644
--- a/.qmake.conf
+++ b/.qmake.conf
@@ -1,3 +1,3 @@
load(qt_build_config)
-MODULE_VERSION = 5.9.5
+MODULE_VERSION = 5.11.0
diff --git a/dist/changes-5.10.0 b/dist/changes-5.10.0
new file mode 100644
index 00000000..e7365f5e
--- /dev/null
+++ b/dist/changes-5.10.0
@@ -0,0 +1,22 @@
+Qt 5.10 introduces many new features and improvements as well as bugfixes
+over the 5.9.x series. For more details, refer to the online documentation
+included in this distribution. The documentation is also available online:
+
+http://doc.qt.io/qt-5/index.html
+
+The Qt version 5.10 series is binary compatible with the 5.9.x series.
+Applications compiled for 5.9 will continue to run with 5.10.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* Qt 5.10.0 Changes *
+****************************************************************************
+
+ - This release contains only minor code improvements.
diff --git a/dist/changes-5.10.1 b/dist/changes-5.10.1
new file mode 100644
index 00000000..83b9840f
--- /dev/null
+++ b/dist/changes-5.10.1
@@ -0,0 +1,30 @@
+Qt 5.10.1 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.10.0.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+http://doc.qt.io/qt-5/index.html
+
+The Qt version 5.10 series is binary compatible with the 5.9.x series.
+Applications compiled for 5.9 will continue to run with 5.10.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+This release contains all fixes included in the Qt 5.9.4 release.
+
+****************************************************************************
+* Qt 5.10.1 Changes *
+****************************************************************************
+
+QtSensors
+---------
+
+ - Fixed missing QML version bump. The QML import statement for QtSensors
+ was still 5.9.
diff --git a/examples/sensors/accelbubble/accelbubble.qml b/examples/sensors/accelbubble/accelbubble.qml
index 37bf4278..8bd036ff 100644
--- a/examples/sensors/accelbubble/accelbubble.qml
+++ b/examples/sensors/accelbubble/accelbubble.qml
@@ -63,7 +63,7 @@ ApplicationWindow {
width: 320
height: 480
visible: true
-
+ readonly property double radians_to_degrees: 180 / Math.PI
//! [1]
Accelerometer {
@@ -101,10 +101,10 @@ ApplicationWindow {
}
function calcPitch(x,y,z) {
- return -(Math.atan(y / Math.sqrt(x * x + z * z)) * 57.2957795);
+ return -Math.atan2(y, Math.hypot(x, z)) * mainWindow.radians_to_degrees;
}
function calcRoll(x,y,z) {
- return -(Math.atan(x / Math.sqrt(y * y + z * z)) * 57.2957795);
+ return -Math.atan2(x, Math.hypot(y, z)) * mainWindow.radians_to_degrees;
}
Image {
diff --git a/examples/sensors/grue/console_app/main.cpp b/examples/sensors/grue/console_app/main.cpp
index 6eb5d062..29a629b5 100644
--- a/examples/sensors/grue/console_app/main.cpp
+++ b/examples/sensors/grue/console_app/main.cpp
@@ -61,7 +61,7 @@ public:
{
}
- bool filter(QSensorReading *reading)
+ bool filter(QSensorReading *reading) override
{
int percent = reading->property("chanceOfBeingEaten").value<int>();
if (percent == 0) {
diff --git a/examples/sensors/grue/import/main.cpp b/examples/sensors/grue/import/main.cpp
index b4b6faae..4827af48 100644
--- a/examples/sensors/grue/import/main.cpp
+++ b/examples/sensors/grue/import/main.cpp
@@ -66,7 +66,7 @@ class GrueSensorQmlImport : public QQmlExtensionPlugin
Q_OBJECT
Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid FILE "import.json")
public:
- virtual void registerTypes(const char *uri)
+ void registerTypes(const char *uri) override
{
char const * const package = "Grue";
if (QLatin1String(uri) != QLatin1String(package)) return;
diff --git a/examples/sensors/grue/lib/gruesensor.h b/examples/sensors/grue/lib/gruesensor.h
index b65e5d89..90379939 100644
--- a/examples/sensors/grue/lib/gruesensor.h
+++ b/examples/sensors/grue/lib/gruesensor.h
@@ -78,7 +78,7 @@ class Q_GRUE_EXPORT GrueFilter : public QSensorFilter
public:
virtual bool filter(GrueSensorReading *reading) = 0;
private:
- bool filter(QSensorReading *reading) { return filter(static_cast<GrueSensorReading*>(reading)); }
+ bool filter(QSensorReading *reading) override { return filter(static_cast<GrueSensorReading*>(reading)); }
};
class Q_GRUE_EXPORT GrueSensor : public QSensor
diff --git a/examples/sensors/grue/plugin/gruesensorimpl.h b/examples/sensors/grue/plugin/gruesensorimpl.h
index 15c23b5f..0847ed9c 100644
--- a/examples/sensors/grue/plugin/gruesensorimpl.h
+++ b/examples/sensors/grue/plugin/gruesensorimpl.h
@@ -68,8 +68,8 @@ public:
gruesensorimpl(QSensor *sensor);
- void start();
- void stop();
+ void start() override;
+ void stop() override;
private Q_SLOTS:
void lightChanged();
diff --git a/examples/sensors/grue/plugin/main.cpp b/examples/sensors/grue/plugin/main.cpp
index c8fdc1d1..4c5da15d 100644
--- a/examples/sensors/grue/plugin/main.cpp
+++ b/examples/sensors/grue/plugin/main.cpp
@@ -61,12 +61,12 @@ class GrueSensorPlugin : public QObject, public QSensorPluginInterface, public Q
Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface QSensorChangesInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
qDebug() << "loaded the grue plugin";
}
- void sensorsChanged()
+ void sensorsChanged() override
{
if (!QSensor::defaultSensorForType(QAmbientLightSensor::type).isEmpty()) {
// There is a light sensor available. Register the backend
@@ -78,7 +78,7 @@ public:
}
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == gruesensorimpl::id)
return new gruesensorimpl(sensor);
diff --git a/examples/sensors/maze/Mouse.qml b/examples/sensors/maze/Mouse.qml
index 7f8ea279..cf839910 100644
--- a/examples/sensors/maze/Mouse.qml
+++ b/examples/sensors/maze/Mouse.qml
@@ -62,6 +62,7 @@ Item {
width: Lib.cellDimension
height: Lib.cellDimension
property int angle
+ readonly property double radians_to_degrees: 180 / Math.PI
AnimatedImage {
id: img
@@ -79,8 +80,7 @@ Item {
//! [0]
var a = newy - mouse.y
var b = newx - mouse.x
- var radians_to_degrees = 57.2957795
- angle = Math.atan2(-b, a) * radians_to_degrees
+ angle = Math.atan2(-b, a) * mouse.radians_to_degrees
if (angle < 0)
angle = 360 + angle
diff --git a/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.h b/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.h
index e4198930..1b756328 100644
--- a/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.h
+++ b/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.h
@@ -66,11 +66,11 @@ public:
explicit QCounterGesturePlugin();
~QCounterGesturePlugin();
- QList <QSensorGestureRecognizer *> createRecognizers();
+ QList<QSensorGestureRecognizer *> createRecognizers() override;
QStringList gestureSignals() const;
- QStringList supportedIds() const;
- QString name() const { return "CounterGestures"; }
+ QStringList supportedIds() const override;
+ QString name() const override { return "CounterGestures"; }
};
#endif // QCOUNTERGESTUREPLUGIN_H
diff --git a/examples/sensors/qmlsensorgestures/plugin/qcounterrecognizer.h b/examples/sensors/qmlsensorgestures/plugin/qcounterrecognizer.h
index abdf0332..4a0212ab 100644
--- a/examples/sensors/qmlsensorgestures/plugin/qcounterrecognizer.h
+++ b/examples/sensors/qmlsensorgestures/plugin/qcounterrecognizer.h
@@ -63,12 +63,12 @@ public:
QCounterGestureRecognizer(QObject *parent = 0);
~QCounterGestureRecognizer();
- void create();
+ void create() override;
- QString id() const;
- bool start();
- bool stop();
- bool isActive();
+ QString id() const override;
+ bool start() override;
+ bool stop() override;
+ bool isActive() override;
private slots:
void timeout();
diff --git a/examples/sensors/sensor_explorer/import/main.cpp b/examples/sensors/sensor_explorer/import/main.cpp
index 8acf56cc..b43ea339 100644
--- a/examples/sensors/sensor_explorer/import/main.cpp
+++ b/examples/sensors/sensor_explorer/import/main.cpp
@@ -60,7 +60,7 @@ class SensorExplorerDeclarativeModule : public QQmlExtensionPlugin
Q_OBJECT
Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid FILE "import.json")
public:
- virtual void registerTypes(const char *uri)
+ void registerTypes(const char *uri) override
{
Q_ASSERT(QLatin1String(uri) == QLatin1String("Explorer"));
// @uri Explorer
diff --git a/examples/sensors/sensorgestures/sensorgestures.pro b/examples/sensors/sensorgestures/sensorgestures.pro
index a60728e7..e692a53c 100644
--- a/examples/sensors/sensorgestures/sensorgestures.pro
+++ b/examples/sensors/sensorgestures/sensorgestures.pro
@@ -1,6 +1,7 @@
TEMPLATE = app
TARGET = gesture
QT += sensors widgets
+requires(qtConfig(treewidget))
SOURCES += main.cpp\
mainwindow.cpp
diff --git a/src/imports/sensors/plugins.qmltypes b/src/imports/sensors/plugins.qmltypes
index 2972b94d..bcad4cc5 100644
--- a/src/imports/sensors/plugins.qmltypes
+++ b/src/imports/sensors/plugins.qmltypes
@@ -4,7 +4,7 @@ import QtQuick.tooling 1.2
// It is used for QML tooling purposes only.
//
// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable QtSensors 5.9'
+// 'qmlplugindump -nonrelocatable QtSensors 5.10'
Module {
dependencies: ["QtQuick 2.8"]
diff --git a/src/imports/sensors/qmlhumiditysensor.h b/src/imports/sensors/qmlhumiditysensor.h
index 9fc54ac1..a84a428e 100644
--- a/src/imports/sensors/qmlhumiditysensor.h
+++ b/src/imports/sensors/qmlhumiditysensor.h
@@ -55,8 +55,8 @@ public:
~QmlHumiditySensor();
private:
- QSensor *sensor() const Q_DECL_OVERRIDE;
- QmlSensorReading *createReading() const Q_DECL_OVERRIDE;
+ QSensor *sensor() const override;
+ QmlSensorReading *createReading() const override;
QHumiditySensor *m_sensor;
};
@@ -78,8 +78,8 @@ Q_SIGNALS:
void absoluteHumidityChanged();
private:
- QSensorReading *reading() const Q_DECL_OVERRIDE;
- void readingUpdate() Q_DECL_OVERRIDE;
+ QSensorReading *reading() const override;
+ void readingUpdate() override;
QHumiditySensor *m_sensor;
qreal m_relativeHumidity;
diff --git a/src/imports/sensors/qmllidsensor.h b/src/imports/sensors/qmllidsensor.h
index caa44ef4..37c2faeb 100644
--- a/src/imports/sensors/qmllidsensor.h
+++ b/src/imports/sensors/qmllidsensor.h
@@ -53,8 +53,8 @@ public:
~QmlLidSensor();
private:
- QSensor *sensor() const Q_DECL_OVERRIDE;
- QmlSensorReading *createReading() const Q_DECL_OVERRIDE;
+ QSensor *sensor() const override;
+ QmlSensorReading *createReading() const override;
QLidSensor *m_sensor;
};
@@ -76,8 +76,8 @@ Q_SIGNALS:
bool frontLidChanged(bool closed);
private:
- QSensorReading *reading() const Q_DECL_OVERRIDE;
- void readingUpdate() Q_DECL_OVERRIDE;
+ QSensorReading *reading() const override;
+ void readingUpdate() override;
QLidSensor *m_sensor;
bool m_backClosed;
diff --git a/src/imports/sensors/qmlsensor.h b/src/imports/sensors/qmlsensor.h
index f74aeeb8..e46278b2 100644
--- a/src/imports/sensors/qmlsensor.h
+++ b/src/imports/sensors/qmlsensor.h
@@ -167,10 +167,10 @@ private Q_SLOTS:
void updateReading();
protected Q_SLOTS:
- void componentComplete();
+ void componentComplete() override;
private:
- void classBegin();
+ void classBegin() override;
virtual void _update();
bool m_parsed;
bool m_active;
diff --git a/src/imports/sensors/sensors.cpp b/src/imports/sensors/sensors.cpp
index 28f85d37..ffa09d80 100644
--- a/src/imports/sensors/sensors.cpp
+++ b/src/imports/sensors/sensors.cpp
@@ -98,7 +98,7 @@ class QtSensorsDeclarativeModule : public QQmlExtensionPlugin
Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid FILE "plugin.json")
public:
QtSensorsDeclarativeModule(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); }
- virtual void registerTypes(const char *uri)
+ void registerTypes(const char *uri) override
{
char const * const package = "QtSensors";
if (QLatin1String(uri) != QLatin1String(package)) return;
@@ -229,6 +229,9 @@ public:
minor = 9;
qmlRegisterType <QmlLidSensor >(package, major, minor, "LidSensor");
qmlRegisterUncreatableType<QmlLidReading >(package, major, minor, "LidReading", QLatin1String("Cannot create LidReading"));
+
+ // Register the latest Qt version as QML type version
+ qmlRegisterModule(package, QT_VERSION_MAJOR, QT_VERSION_MINOR);
}
};
diff --git a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
index f2f0a786..33688706 100644
--- a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
@@ -41,7 +41,6 @@
#include <QtCore/qmath.h>
-#define RADIANS_TO_DEGREES 57.2957795
#define TIMER_TIMEOUT 250
QT_BEGIN_NAMESPACE
@@ -117,8 +116,8 @@ void QPickupSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading
const qreal ydiff = pYaxis - y;
const qreal zdiff = pZaxis - z;
- qreal pitch = qAtan(y / qSqrt(x*x + z*z)) * RADIANS_TO_DEGREES;
- qreal roll = qAtan(x / qSqrt(y*y + z*z)) * RADIANS_TO_DEGREES;
+ qreal pitch = qRadiansToDegrees(qAtan(y / qSqrt(x * x + z * z)));
+ qreal roll = qRadiansToDegrees(qAtan(x / qSqrt(y * y + z * z)));
if ((qAbs(xdiff) < 0.7 && qAbs(ydiff) < .7 && qAbs(zdiff) < .7)
|| z < 0) {
diff --git a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp
index 1411f44c..6a1f1706 100644
--- a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp
@@ -44,7 +44,6 @@
QT_BEGIN_NAMESPACE
-#define RADIANS_TO_DEGREES 57.2957795
#define TIMER_TIMEOUT 750
QTwistSensorGestureRecognizer::QTwistSensorGestureRecognizer(QObject *parent)
: QSensorGestureRecognizer(parent)
@@ -155,7 +154,7 @@ void QTwistSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
if (!detecting && !checking&& dataList.count() > 21)
dataList.removeFirst();
- qreal angle = qAtan(x / qSqrt(y*y + z*z)) * RADIANS_TO_DEGREES;
+ qreal angle = qRadiansToDegrees(qAtan(x / qSqrt(y * y + z * z)));
if (qAbs(angle) > 2) {
if (detecting) {
@@ -177,7 +176,7 @@ void QTwistSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
if (!detecting && increaseCount > 3 && qAbs(angle) > 30) {
decreaseCount = 0;
detecting = true;
- detectedAngle = qAtan(y / qSqrt(x*x + z*z)) * RADIANS_TO_DEGREES;
+ detectedAngle = qRadiansToDegrees(qAtan(y / qSqrt(x * x + z * z)));
}
} else {
increaseCount = 0;
diff --git a/src/plugins/sensors/android/jar/bundledjar.pro b/src/plugins/sensors/android/jar/bundledjar.pro
deleted file mode 100644
index 2f6f195d..00000000
--- a/src/plugins/sensors/android/jar/bundledjar.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-TARGET = QtSensors-bundled
-CONFIG += bundled_jar_file
-include(jar.pri)
diff --git a/src/plugins/sensors/android/jar/distributedjar.pro b/src/plugins/sensors/android/jar/distributedjar.pro
deleted file mode 100644
index 2099826a..00000000
--- a/src/plugins/sensors/android/jar/distributedjar.pro
+++ /dev/null
@@ -1,2 +0,0 @@
-TARGET = QtSensors
-include(jar.pri)
diff --git a/src/plugins/sensors/android/jar/jar.pri b/src/plugins/sensors/android/jar/jar.pri
deleted file mode 100644
index 7e5916c8..00000000
--- a/src/plugins/sensors/android/jar/jar.pri
+++ /dev/null
@@ -1,13 +0,0 @@
-load(qt_build_paths)
-
-CONFIG += java
-DESTDIR = $$MODULE_BASE_OUTDIR/jar
-
-JAVACLASSPATH += $$PWD/src
-
-JAVASOURCES += \
- $$PWD/src/org/qtproject/qt5/android/sensors/QtSensors.java
-
-# install
-target.path = $$[QT_INSTALL_PREFIX]/jar
-INSTALLS += target
diff --git a/src/plugins/sensors/android/jar/jar.pro b/src/plugins/sensors/android/jar/jar.pro
index 70373fe1..1d5d4ae4 100644
--- a/src/plugins/sensors/android/jar/jar.pro
+++ b/src/plugins/sensors/android/jar/jar.pro
@@ -1,3 +1,15 @@
-TEMPLATE = subdirs
-SUBDIRS += bundledjar.pro distributedjar.pro
+TARGET = QtSensors
+load(qt_build_paths)
+
+CONFIG += java
+DESTDIR = $$MODULE_BASE_OUTDIR/jar
+
+JAVACLASSPATH += $$PWD/src
+
+JAVASOURCES += \
+ $$PWD/src/org/qtproject/qt5/android/sensors/QtSensors.java
+
+# install
+target.path = $$[QT_INSTALL_PREFIX]/jar
+INSTALLS += target
diff --git a/src/plugins/sensors/android/src/androidcompass.cpp b/src/plugins/sensors/android/src/androidcompass.cpp
index e98f0484..610dcde7 100644
--- a/src/plugins/sensors/android/src/androidcompass.cpp
+++ b/src/plugins/sensors/android/src/androidcompass.cpp
@@ -168,7 +168,6 @@ void AndroidCompass::testStuff()
return;
qreal azimuth = AndroidSensors::getCompassAzimuth(m_accelerometerListener->reading, m_magnetometerListener->reading);
- azimuth = azimuth * 180.0 / M_PI;
- m_reading.setAzimuth(azimuth);
+ m_reading.setAzimuth(qRadiansToDegrees(azimuth));
newReadingAvailable();
}
diff --git a/src/plugins/sensors/android/src/androidgyroscope.cpp b/src/plugins/sensors/android/src/androidgyroscope.cpp
index 623838db..c963761b 100644
--- a/src/plugins/sensors/android/src/androidgyroscope.cpp
+++ b/src/plugins/sensors/android/src/androidgyroscope.cpp
@@ -38,7 +38,7 @@
****************************************************************************/
#include "androidgyroscope.h"
-#include <math.h>
+#include <QtCore/qmath.h>
AndroidGyroscope::AndroidGyroscope(AndroidSensors::AndroidSensorType type, QSensor *sensor)
: AndroidCommonSensor<QGyroscopeReading>(type, sensor)
@@ -50,9 +50,9 @@ void AndroidGyroscope::onSensorChanged(jlong timestamp, const jfloat *values, ui
return;
m_reader.setTimestamp(timestamp/1000);
// check https://developer.android.com/reference/android/hardware/SensorEvent.html#values
- m_reader.setX(values[0]*180/M_PI);
- m_reader.setY(values[1]*180/M_PI);
- m_reader.setZ(values[2]*180/M_PI);
+ m_reader.setX(qRadiansToDegrees(values[0]));
+ m_reader.setY(qRadiansToDegrees(values[1]));
+ m_reader.setZ(qRadiansToDegrees(values[2]));
newReadingAvailable();
}
diff --git a/src/plugins/sensors/android/src/androidpressure.h b/src/plugins/sensors/android/src/androidpressure.h
index eae1ae6d..dbb59c1b 100644
--- a/src/plugins/sensors/android/src/androidpressure.h
+++ b/src/plugins/sensors/android/src/androidpressure.h
@@ -49,8 +49,8 @@ class AndroidPressure : public AndroidCommonSensor<QPressureReading>
public:
AndroidPressure(AndroidSensors::AndroidSensorType type, QSensor *sensor);
private:
- virtual void onAccuracyChanged(jint accuracy);
- virtual void onSensorChanged(jlong timestamp, const jfloat *values, uint size);
+ void onAccuracyChanged(jint accuracy) override;
+ void onSensorChanged(jlong timestamp, const jfloat *values, uint size) override;
};
#endif // ANDROIDPRESSURE_H
diff --git a/src/plugins/sensors/android/src/androidrotation.cpp b/src/plugins/sensors/android/src/androidrotation.cpp
index dfe4f2ad..f7d02257 100644
--- a/src/plugins/sensors/android/src/androidrotation.cpp
+++ b/src/plugins/sensors/android/src/androidrotation.cpp
@@ -38,7 +38,7 @@
****************************************************************************/
#include "androidrotation.h"
-#include <math.h>
+#include <QtCore/qmath.h>
AndroidRotation::AndroidRotation(AndroidSensors::AndroidSensorType type, QSensor *sensor)
: AndroidCommonSensor<QRotationReading>(type, sensor)
@@ -55,9 +55,9 @@ void AndroidRotation::onSensorChanged(jlong timestamp, const jfloat *values, uin
return;
m_reader.setTimestamp(timestamp/1000);
- float rz = -values[0]*180/M_PI;
- float rx = -values[1]*180/M_PI;
- float ry = values[2]*180/M_PI;
+ float rz = -qRadiansToDegrees(values[0]);
+ float rx = -qRadiansToDegrees(values[1]);
+ float ry = qRadiansToDegrees(values[2]);
m_reader.setFromEuler(rx, ry, rz);
newReadingAvailable();
}
diff --git a/src/plugins/sensors/android/src/main.cpp b/src/plugins/sensors/android/src/main.cpp
index 18da9d0a..fc80a273 100644
--- a/src/plugins/sensors/android/src/main.cpp
+++ b/src/plugins/sensors/android/src/main.cpp
@@ -61,7 +61,7 @@ class AndroidSensorPlugin : public QObject, public QSensorPluginInterface, publi
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
bool accelerometer = false;
bool magnetometer = false;
@@ -114,7 +114,7 @@ public:
QSensorManager::registerBackend(QCompass::type, AndroidCompass::id, this);
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == AndroidCompass::id)
return new AndroidCompass(sensor);
diff --git a/src/plugins/sensors/dummy/dummylightsensor.cpp b/src/plugins/sensors/dummy/dummylightsensor.cpp
index 84c5b6f4..8f2a9b8e 100644
--- a/src/plugins/sensors/dummy/dummylightsensor.cpp
+++ b/src/plugins/sensors/dummy/dummylightsensor.cpp
@@ -39,7 +39,7 @@
#include "dummylightsensor.h"
#include <QDebug>
-#include <QtGlobal>
+#include <QRandomGenerator>
char const * const dummylightsensor::id("dummy.lightsensor");
@@ -53,7 +53,7 @@ dummylightsensor::dummylightsensor(QSensor *sensor)
void dummylightsensor::poll()
{
m_reading.setTimestamp(getTimestamp());
- if ((qrand() % 100) == 0)
+ if (QRandomGenerator::global()->bounded(100) == 0)
m_reading.setLightLevel(QAmbientLightReading::Dark);
else
m_reading.setLightLevel(QAmbientLightReading::Light);
diff --git a/src/plugins/sensors/dummy/main.cpp b/src/plugins/sensors/dummy/main.cpp
index 181f2543..13dd732e 100644
--- a/src/plugins/sensors/dummy/main.cpp
+++ b/src/plugins/sensors/dummy/main.cpp
@@ -51,13 +51,13 @@ class dummySensorPlugin : public QObject, public QSensorPluginInterface, public
Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
QSensorManager::registerBackend(QAccelerometer::type, dummyaccelerometer::id, this);
QSensorManager::registerBackend(QAmbientLightSensor::type, dummylightsensor::id, this);
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == dummyaccelerometer::id) {
return new dummyaccelerometer(sensor);
diff --git a/src/plugins/sensors/generic/genericrotationsensor.cpp b/src/plugins/sensors/generic/genericrotationsensor.cpp
index adf28e43..40768297 100644
--- a/src/plugins/sensors/generic/genericrotationsensor.cpp
+++ b/src/plugins/sensors/generic/genericrotationsensor.cpp
@@ -41,8 +41,6 @@
#include <QDebug>
#include <qmath.h>
-#define RADIANS_TO_DEGREES 57.2957795
-
char const * const genericrotationsensor::id("generic.rotation");
genericrotationsensor::genericrotationsensor(QSensor *sensor)
@@ -88,8 +86,8 @@ bool genericrotationsensor::filter(QSensorReading *reading)
// Note that the formula used come from this document:
// http://www.freescale.com/files/sensors/doc/app_note/AN3461.pdf
- pitch = qAtan(y / qSqrt(x*x + z*z)) * RADIANS_TO_DEGREES;
- roll = qAtan(x / qSqrt(y*y + z*z)) * RADIANS_TO_DEGREES;
+ pitch = qRadiansToDegrees(qAtan(y / qSqrt(x * x + z * z)));
+ roll = qRadiansToDegrees(qAtan(x / qSqrt(y * y + z * z)));
// Roll is a left-handed rotation but we need right-handed rotation
roll = -roll;
@@ -98,7 +96,7 @@ bool genericrotationsensor::filter(QSensorReading *reading)
// Note that theta is defined as the angle of the Z axis relative
// to gravity (see referenced document). It's negative when the
// face of the device points downward.
- qreal theta = qAtan(qSqrt(x*x + y*y) / z) * RADIANS_TO_DEGREES;
+ qreal theta = qRadiansToDegrees(qAtan(qSqrt(x * x + y * y) / z));
if (theta < 0) {
if (roll > 0)
roll = 180 - roll;
diff --git a/src/plugins/sensors/generic/generictiltsensor.cpp b/src/plugins/sensors/generic/generictiltsensor.cpp
index 831b03ec..bb418893 100644
--- a/src/plugins/sensors/generic/generictiltsensor.cpp
+++ b/src/plugins/sensors/generic/generictiltsensor.cpp
@@ -39,14 +39,13 @@
#include "generictiltsensor.h"
#include <QDebug>
-#define _USE_MATH_DEFINES
#include <qmath.h>
char const * const GenericTiltSensor::id("generic.tilt");
GenericTiltSensor::GenericTiltSensor(QSensor *sensor)
: QSensorBackend(sensor)
- , radAccuracy(M_PI / 180)
+ , radAccuracy(qDegreesToRadians(qreal(1)))
, pitch(0)
, roll(0)
, calibratedPitch(0)
@@ -80,24 +79,18 @@ void GenericTiltSensor::stop()
/*
Angle between Ground and X
- | Ax |
- pitch = arctan| ----------------------- |
- | sqrt(Ay * Ay + Az * Az)|
*/
static inline qreal calcPitch(double Ax, double Ay, double Az)
{
- return -qAtan2(Ax, qSqrt(Ay * Ay + Az * Az));
+ return qAtan2(-Ax, qSqrt(Ay * Ay + Az * Az));
}
/*
Angle between Ground and Y
- | Ay |
- roll = arctan| ----------------------- |
- | sqrt(Ax * Ax + Az * Az)|
*/
-static inline qreal calcRoll(double Ax, double Ay, double Az)
+static inline qreal calcRoll(double /*Ax*/, double Ay, double Az)
{
- return qAtan2(Ay, (qSqrt(Ax * Ax + Az * Az)));
+ return qAtan2(Ay, Az);
}
void GenericTiltSensor::calibrate()
@@ -106,11 +99,6 @@ void GenericTiltSensor::calibrate()
calibratedRoll = roll;
}
-static qreal rad2deg(qreal rad)
-{
- return rad / (2 * M_PI) * 360;
-}
-
bool GenericTiltSensor::filter(QAccelerometerReading *reading)
{
/*
@@ -138,39 +126,26 @@ bool GenericTiltSensor::filter(QAccelerometerReading *reading)
qreal xrot = roll - calibratedRoll;
qreal yrot = pitch - calibratedPitch;
//get angle between 0 and 180 or 0 -180
- qreal aG = 1 * qSin(xrot);
- qreal aK = 1 * qCos(xrot);
- xrot = qAtan2(aG, aK);
- if (xrot > M_PI_2)
- xrot = M_PI - xrot;
- else if (xrot < -M_PI_2)
- xrot = -(M_PI + xrot);
- aG = 1 * qSin(yrot);
- aK = 1 * qCos(yrot);
- yrot = qAtan2(aG, aK);
- if (yrot > M_PI_2)
- yrot = M_PI - yrot;
- else if (yrot < -M_PI_2)
- yrot = -(M_PI + yrot);
-
+ xrot = qAtan2(qSin(xrot), qCos(xrot));
+ yrot = qAtan2(qSin(yrot), qCos(yrot));
#ifdef LOGCALIBRATION
qDebug() << "new xrot: " << xrot;
qDebug() << "new yrot: " << yrot;
qDebug() << "----------------------------------";
#endif
- qreal dxrot = rad2deg(xrot) - xRotation;
- qreal dyrot = rad2deg(yrot) - yRotation;
+ qreal dxrot = qRadiansToDegrees(xrot) - xRotation;
+ qreal dyrot = qRadiansToDegrees(yrot) - yRotation;
if (dxrot < 0) dxrot = -dxrot;
if (dyrot < 0) dyrot = -dyrot;
bool setNewReading = false;
- if (dxrot >= rad2deg(radAccuracy) || !sensor()->skipDuplicates()) {
- xRotation = rad2deg(xrot);
+ if (dxrot >= qRadiansToDegrees(radAccuracy) || !sensor()->skipDuplicates()) {
+ xRotation = qRadiansToDegrees(xrot);
setNewReading = true;
}
- if (dyrot >= rad2deg(radAccuracy) || !sensor()->skipDuplicates()) {
- yRotation = rad2deg(yrot);
+ if (dyrot >= qRadiansToDegrees(radAccuracy) || !sensor()->skipDuplicates()) {
+ yRotation = qRadiansToDegrees(yrot);
setNewReading = true;
}
diff --git a/src/plugins/sensors/generic/main.cpp b/src/plugins/sensors/generic/main.cpp
index 9bed9011..44bfff09 100644
--- a/src/plugins/sensors/generic/main.cpp
+++ b/src/plugins/sensors/generic/main.cpp
@@ -61,12 +61,12 @@ class genericSensorPlugin : public QObject, public QSensorPluginInterface, publi
Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface QSensorChangesInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
// Nothing to register here
}
- void sensorsChanged()
+ void sensorsChanged() override
{
if (!QSensor::defaultSensorForType(QAccelerometer::type).isEmpty()) {
// There is an accelerometer available. Register the backends
@@ -110,7 +110,7 @@ public:
}
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
#ifdef QTSENSORS_GENERICORIENTATIONSENSOR
if (sensor->identifier() == genericorientationsensor::id)
diff --git a/src/plugins/sensors/iio-sensor-proxy/main.cpp b/src/plugins/sensors/iio-sensor-proxy/main.cpp
index 5d38833f..136dd40e 100644
--- a/src/plugins/sensors/iio-sensor-proxy/main.cpp
+++ b/src/plugins/sensors/iio-sensor-proxy/main.cpp
@@ -55,7 +55,7 @@ class IIOSensorProxySensorPlugin : public QObject, public QSensorPluginInterface
Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
if (!QSensorManager::isBackendRegistered(QOrientationSensor::type, IIOSensorProxyOrientationSensor::id))
QSensorManager::registerBackend(QOrientationSensor::type, IIOSensorProxyOrientationSensor::id, this);
@@ -65,7 +65,7 @@ public:
QSensorManager::registerBackend(QCompass::type, IIOSensorProxyCompass::id, this);
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == IIOSensorProxyOrientationSensor::id)
return new IIOSensorProxyOrientationSensor(sensor);
diff --git a/src/plugins/sensors/ios/iosgyroscope.mm b/src/plugins/sensors/ios/iosgyroscope.mm
index 0cd37aea..8155abac 100644
--- a/src/plugins/sensors/ios/iosgyroscope.mm
+++ b/src/plugins/sensors/ios/iosgyroscope.mm
@@ -41,6 +41,7 @@
#include "iosgyroscope.h"
#import <CoreMotion/CoreMotion.h>
+#import <QtCore/qmath.h>
char const * const IOSGyroscope::id("ios.gyroscope");
@@ -89,9 +90,9 @@ void IOSGyroscope::timerEvent(QTimerEvent *)
if (rate.x != rate.x || rate.y != rate.y || rate.z != rate.z)
return;
m_reading.setTimestamp(quint64(data.timestamp * 1e6));
- m_reading.setX((qreal(rate.x) / M_PI) * 180);
- m_reading.setY((qreal(rate.y) / M_PI) * 180);
- m_reading.setZ((qreal(rate.z) / M_PI) * 180);
+ m_reading.setX(qRadiansToDegrees(qreal(rate.x)));
+ m_reading.setY(qRadiansToDegrees(qreal(rate.y)));
+ m_reading.setZ(qRadiansToDegrees(qreal(rate.z)));
newReadingAvailable();
}
diff --git a/src/plugins/sensors/ios/main.mm b/src/plugins/sensors/ios/main.mm
index a4766c37..d6b98192 100644
--- a/src/plugins/sensors/ios/main.mm
+++ b/src/plugins/sensors/ios/main.mm
@@ -59,7 +59,7 @@ class IOSSensorPlugin : public QObject, public QSensorPluginInterface, public QS
Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
#ifdef HAVE_COREMOTION
QSensorManager::registerBackend(QAccelerometer::type, IOSAccelerometer::id, this);
@@ -78,7 +78,7 @@ public:
#endif
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
#ifdef HAVE_COREMOTION
if (sensor->identifier() == IOSAccelerometer::id)
diff --git a/src/plugins/sensors/linux/main.cpp b/src/plugins/sensors/linux/main.cpp
index 3f68cd11..a82ab821 100644
--- a/src/plugins/sensors/linux/main.cpp
+++ b/src/plugins/sensors/linux/main.cpp
@@ -52,14 +52,14 @@ class LinuxSensorPlugin : public QObject, public QSensorPluginInterface, public
Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
QString path = QString::fromLatin1(qgetenv("QT_ACCEL_FILEPATH"));
if (!path.isEmpty() && !QSensorManager::isBackendRegistered(QAccelerometer::type, LinuxSysAccelerometer::id))
QSensorManager::registerBackend(QAccelerometer::type, LinuxSysAccelerometer::id, this);
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == LinuxSysAccelerometer::id)
return new LinuxSysAccelerometer(sensor);
diff --git a/src/plugins/sensors/sensorfw/main.cpp b/src/plugins/sensors/sensorfw/main.cpp
index bc1246ab..c1a02a57 100644
--- a/src/plugins/sensors/sensorfw/main.cpp
+++ b/src/plugins/sensors/sensorfw/main.cpp
@@ -64,7 +64,7 @@ class sensorfwSensorPlugin : public QObject, public QSensorPluginInterface, publ
public:
- void registerSensors()
+ void registerSensors() override
{
// if no default - no support either, uses Sensors.conf
QSettings settings(QSettings::SystemScope, QLatin1String("QtProject"), QLatin1String("Sensors"));
@@ -78,7 +78,7 @@ public:
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == sensorfwaccelerometer::id)
return new sensorfwaccelerometer(sensor);
diff --git a/src/plugins/sensors/sensorfw/sensorfwlidsensor.h b/src/plugins/sensors/sensorfw/sensorfwlidsensor.h
index 734fd0f3..7ee967a9 100644
--- a/src/plugins/sensors/sensorfw/sensorfwlidsensor.h
+++ b/src/plugins/sensors/sensorfw/sensorfwlidsensor.h
@@ -56,9 +56,9 @@ public:
static char const * const id;
SensorfwLidSensor(QSensor *sensor);
protected:
- bool doConnect() Q_DECL_OVERRIDE;
- QString sensorName() const Q_DECL_OVERRIDE;
- void start() Q_DECL_OVERRIDE;
+ bool doConnect() override;
+ QString sensorName() const override;
+ void start() override;
virtual void init();
private:
QLidReading m_reading;
diff --git a/src/plugins/sensors/sensors.pro b/src/plugins/sensors/sensors.pro
index 76989335..7fce2071 100644
--- a/src/plugins/sensors/sensors.pro
+++ b/src/plugins/sensors/sensors.pro
@@ -25,6 +25,14 @@ linux {
isEmpty(SENSORS_PLUGINS): SENSORS_PLUGINS = linux iio-sensor-proxy generic
}
+contains(CONFIG, sensortag) {
+ qtHaveModule(bluetooth) {
+ SENSORS_PLUGINS = sensortag generic
+ } else {
+ message("You have configured for sensortag, but Qt Bluetooth module was not found.")
+ }
+}
+
contains(SENSORS_PLUGINS, dummy):SUBDIRS += dummy
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, generic):SUBDIRS += generic
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, simulator):qtHaveModule(simulator):SUBDIRS += simulator
@@ -32,5 +40,6 @@ isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, linux):linux:SUBDIRS += linux
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, iio-sensor-proxy):linux:qtHaveModule(dbus):SUBDIRS += iio-sensor-proxy
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, android):android:SUBDIRS += android
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, sensorfw):sensorfw:SUBDIRS += sensorfw
+isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, sensortag):linux:SUBDIRS += sensortag
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, ios):darwin:SUBDIRS += ios
isEmpty(SENSORS_PLUGINS)|contains(SENSORS_PLUGINS, winrt):winrt:SUBDIRS += winrt
diff --git a/src/plugins/sensors/sensortag/Sensors.conf b/src/plugins/sensors/sensortag/Sensors.conf
new file mode 100644
index 00000000..b8d79752
--- /dev/null
+++ b/src/plugins/sensors/sensortag/Sensors.conf
@@ -0,0 +1,13 @@
+[Default]
+QAccelerometer=sensortag.accelerometer
+QAmbientLightSensor=sensortag.als
+QCompass=sensortag.compass
+QMagnetometer=sensortag.magnetometer
+QOrientationSensor=sensortag.orientationsensor
+QProximitySensor=sensortag.proximitysensor
+QRotationSensor=sensortag.rotationsensor
+QTapSensor=sensortag.tapsensor
+QLightSensor=sensortag.lightsensor
+QIRProximitySensor=sensortag.irproximitysensor
+QGyroscope=sensortag.gyroscope
+QLidSensor=sensortag.lidsensor
diff --git a/src/plugins/sensors/sensortag/main.cpp b/src/plugins/sensors/sensortag/main.cpp
new file mode 100644
index 00000000..e6dc54e5
--- /dev/null
+++ b/src/plugins/sensors/sensortag/main.cpp
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2016 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "sensortagaccelerometer.h"
+#include "sensortagals.h"
+#include "sensortagbase.h"
+#include "sensortaggyroscope.h"
+#include "sensortaghumiditysensor.h"
+#include "sensortaglightsensor.h"
+#include "sensortagmagnetometer.h"
+#include "sensortagpressuresensor.h"
+#include "sensortagtemperaturesensor.h"
+
+#include <QtSensors/qsensorplugin.h>
+#include <QtSensors/qsensorbackend.h>
+#include <QtSensors/qsensormanager.h>
+#include <QSettings>
+
+class SensortagSensorPlugin : public QObject, public QSensorPluginInterface, public QSensorBackendFactory
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
+ Q_INTERFACES(QSensorPluginInterface)
+
+public:
+
+ void registerSensors()
+ {
+ if (!QSensorManager::isBackendRegistered(QAccelerometer::type, SensorTagAccelerometer::id))
+ QSensorManager::registerBackend(QAccelerometer::type, SensorTagAccelerometer::id, this);
+
+ if (!QSensorManager::isBackendRegistered(QAmbientLightSensor::type, SensorTagAls::id))
+ QSensorManager::registerBackend(QAmbientLightSensor::type, SensorTagAls::id, this);
+
+ if (!QSensorManager::isBackendRegistered(QLightSensor::type, SensorTagLightSensor::id))
+ QSensorManager::registerBackend(QLightSensor::type, SensorTagLightSensor::id, this);
+
+ if (!QSensorManager::isBackendRegistered(QAmbientTemperatureSensor::type, SensorTagTemperatureSensor::id))
+ QSensorManager::registerBackend(QAmbientTemperatureSensor::type, SensorTagTemperatureSensor::id, this);
+
+ if (!QSensorManager::isBackendRegistered(QHumiditySensor::type, SensorTagHumiditySensor::id))
+ QSensorManager::registerBackend(QHumiditySensor::type, SensorTagHumiditySensor::id, this);
+
+ if (!QSensorManager::isBackendRegistered(QPressureSensor::type, SensorTagPressureSensor::id))
+ QSensorManager::registerBackend(QPressureSensor::type, SensorTagPressureSensor::id, this);
+
+ if (!QSensorManager::isBackendRegistered(QGyroscope::type, SensorTagGyroscope::id))
+ QSensorManager::registerBackend(QGyroscope::type, SensorTagGyroscope::id, this);
+
+ if (!QSensorManager::isBackendRegistered(QMagnetometer::type, SensorTagMagnetometer::id))
+ QSensorManager::registerBackend(QMagnetometer::type, SensorTagMagnetometer::id, this);
+ }
+
+ QSensorBackend *createBackend(QSensor *sensor)
+ {
+ if (sensor->identifier() == SensorTagAccelerometer::id)
+ return new SensorTagAccelerometer(sensor);
+ if (sensor->identifier() == SensorTagAls::id)
+ return new SensorTagAls(sensor);
+ if (sensor->identifier() == SensorTagLightSensor::id)
+ return new SensorTagLightSensor(sensor);
+ if (sensor->identifier() == SensorTagTemperatureSensor::id)
+ return new SensorTagTemperatureSensor(sensor);
+ if (sensor->identifier() == SensorTagHumiditySensor::id)
+ return new SensorTagHumiditySensor(sensor);
+ if (sensor->identifier() == SensorTagPressureSensor::id)
+ return new SensorTagPressureSensor(sensor);
+ if (sensor->identifier() == SensorTagGyroscope::id)
+ return new SensorTagGyroscope(sensor);
+ if (sensor->identifier() == SensorTagMagnetometer::id)
+ return new SensorTagMagnetometer(sensor);
+ return nullptr;
+ }
+};
+
+#include "main.moc"
diff --git a/src/plugins/sensors/sensortag/plugin.json b/src/plugins/sensors/sensortag/plugin.json
new file mode 100644
index 00000000..9a0f4d52
--- /dev/null
+++ b/src/plugins/sensors/sensortag/plugin.json
@@ -0,0 +1 @@
+{ "Keys": [ "sensortag" ] }
diff --git a/src/plugins/sensors/sensortag/sensortag.pri b/src/plugins/sensors/sensortag/sensortag.pri
new file mode 100644
index 00000000..d1d60cb1
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortag.pri
@@ -0,0 +1,22 @@
+# Input
+HEADERS += sensortagaccelerometer.h \
+ sensortagals.h \
+ sensortagbase.h \
+ sensortaggyroscope.h \
+ sensortaghumiditysensor.h \
+ sensortaglightsensor.h \
+ sensortagmagnetometer.h \
+ sensortagpressuresensor.h \
+ sensortagtemperaturesensor.h
+
+SOURCES += main.cpp \
+ sensortagaccelerometer.cpp \
+ sensortagals.cpp \
+ sensortagbase.cpp \
+ sensortaggyroscope.cpp \
+ sensortaghumiditysensor.cpp \
+ sensortaglightsensor.cpp \
+ sensortagmagnetometer.cpp \
+ sensortagpressuresensor.cpp \
+ sensortagtemperaturesensor.cpp
+
diff --git a/src/plugins/sensors/sensortag/sensortag.pro b/src/plugins/sensors/sensortag/sensortag.pro
new file mode 100644
index 00000000..42252970
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortag.pro
@@ -0,0 +1,11 @@
+TARGET = qtsensors_sensortag
+QT = core sensors-private bluetooth
+CONFIG += c++11
+
+include(sensortag.pri)
+
+OTHER_FILES = plugin.json
+
+PLUGIN_TYPE = sensors
+PLUGIN_CLASS_NAME = SensortagSensorPlugin
+load(qt_plugin)
diff --git a/src/plugins/sensors/sensortag/sensortagaccelerometer.cpp b/src/plugins/sensors/sensortag/sensortagaccelerometer.cpp
new file mode 100644
index 00000000..b5b582a9
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagaccelerometer.cpp
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "sensortagaccelerometer.h"
+#include <QtSensors/qsensorbackend.h>
+
+char const * const SensorTagAccelerometer::id("sensortag.accelerometer");
+
+SensorTagAccelerometer::SensorTagAccelerometer(QSensor *sensor)
+ : SensorTagBase(sensor)
+{
+ init();
+ setDescription(QLatin1String("x, y, and z axes accelerations in m/s^2"));
+ setReading<QAccelerometerReading>(&m_reading);
+ sensor->setDataRate(50);//set a default rate
+}
+
+void SensorTagAccelerometer::slotDataAvailable(const QAccelerometerReading &data)
+{
+ m_reading.setX(data.x());
+ m_reading.setY(data.y());
+ m_reading.setZ(data.z());
+ m_reading.setTimestamp(produceTimestamp());
+ newReadingAvailable();
+}
+
+void SensorTagAccelerometer::init()
+{
+ m_initDone = false;
+}
+
+void SensorTagAccelerometer::start()
+{
+ QObject::connect(this, &SensorTagBase::accelDataAvailable,
+ this, &SensorTagAccelerometer::slotDataAvailable);
+ d_ptr->enableService(TI_SENSORTAG_ACCELEROMETER_SERVICE);
+}
+
+void SensorTagAccelerometer::stop()
+{
+ QObject::disconnect(this, &SensorTagBase::accelDataAvailable,
+ this, &SensorTagAccelerometer::slotDataAvailable);
+ d_ptr->disableService(TI_SENSORTAG_ACCELEROMETER_SERVICE);
+}
+
diff --git a/src/plugins/sensors/sensortag/sensortagaccelerometer.h b/src/plugins/sensors/sensortag/sensortagaccelerometer.h
new file mode 100644
index 00000000..39ad47f6
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagaccelerometer.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SENSORTAGACCELEROMETER_H
+#define SENSORTAGACCELEROMETER_H
+
+#include "sensortagbase.h"
+#include <QtSensors/qaccelerometer.h>
+
+class SensorTagAccelerometer : public SensorTagBase
+{
+ Q_OBJECT
+
+public:
+ static char const * const id;
+ SensorTagAccelerometer(QSensor *sensor);
+protected:
+ void start() override;
+ void stop() override;
+ virtual void init();
+
+private:
+ QAccelerometerReading m_reading;
+ bool m_initDone = false;
+
+private slots:
+ void slotDataAvailable(const QAccelerometerReading &data);
+};
+
+#endif
+// SENSORTAGACCELEROMETER_H
diff --git a/src/plugins/sensors/sensortag/sensortagals.cpp b/src/plugins/sensors/sensortag/sensortagals.cpp
new file mode 100644
index 00000000..3fe2de4c
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagals.cpp
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2016 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "sensortagals.h"
+#include "sensortagbase.h"
+#include <QDebug>
+
+char const * const SensorTagAls::id("sensortag.als");
+
+SensorTagAls::SensorTagAls(QSensor *sensor)
+ : SensorTagBase(sensor)
+ , m_initDone(false)
+{
+ init();
+ setReading<QAmbientLightReading>(&m_reading);
+ setDescription(QLatin1String("ambient light intensity given as 5 pre-defined levels"));
+}
+
+void SensorTagAls::start()
+{
+ QObject::connect(this, &SensorTagBase::luxDataAvailable, this, &SensorTagAls::slotDataAvailable);
+ d_ptr->enableService(TI_SENSORTAG_LIGHT_SERVICE);
+}
+
+void SensorTagAls::stop()
+{
+ QObject::disconnect(this, &SensorTagBase::luxDataAvailable, this, &SensorTagAls::slotDataAvailable);
+ d_ptr->disableService(TI_SENSORTAG_LIGHT_SERVICE);
+}
+
+void SensorTagAls::slotDataAvailable(qreal data)
+{
+ QAmbientLightReading::LightLevel level = getLightLevel(data);
+ if (level != m_reading.lightLevel()) {
+ m_reading.setLightLevel(level);
+ m_reading.setTimestamp(produceTimestamp());
+ newReadingAvailable();
+ }
+}
+
+QAmbientLightReading::LightLevel SensorTagAls::getLightLevel(int lux)
+{
+ if (lux < 0)
+ return QAmbientLightReading::Undefined;
+ if (lux < 10)
+ return QAmbientLightReading::Dark;
+ if (lux < 80)
+ return QAmbientLightReading::Twilight;
+ if (lux < 400)
+ return QAmbientLightReading::Light;
+ if (lux < 2500)
+ return QAmbientLightReading::Bright;
+ return QAmbientLightReading::Sunny;
+}
+
+void SensorTagAls::init()
+{
+ m_initDone = false;
+}
diff --git a/src/plugins/sensors/sensortag/sensortagals.h b/src/plugins/sensors/sensortag/sensortagals.h
new file mode 100644
index 00000000..3ef1b928
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagals.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SENSORTAGALS_H
+#define SENSORTAGALS_H
+
+#include "sensortagbase.h"
+#include <QtSensors/qambientlightsensor.h>
+
+class SensorTagAls : public SensorTagBase
+{
+ Q_OBJECT
+
+public:
+ static char const * const id;
+ SensorTagAls(QSensor *sensor);
+protected:
+ void start() override;
+ void stop() override;
+ virtual void init();
+
+private:
+ QAmbientLightReading m_reading;
+ bool m_initDone = false;
+private slots:
+ void slotDataAvailable(qreal data);
+ static QAmbientLightReading::LightLevel getLightLevel(int lux);
+};
+
+#endif
+//SENSORTAGALS_H
diff --git a/src/plugins/sensors/sensortag/sensortagbase.cpp b/src/plugins/sensors/sensortag/sensortagbase.cpp
new file mode 100644
index 00000000..322a86d7
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagbase.cpp
@@ -0,0 +1,600 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2016 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "sensortagbase.h"
+
+#include <QLowEnergyCharacteristic>
+#include <QtMath>
+#include <QTimer>
+#include <QDeadlineTimer>
+
+Q_GLOBAL_STATIC(SensorTagBasePrivate, sensortagBasePrivate)
+
+SensorTagBasePrivate::SensorTagBasePrivate(QObject *parent)
+ : QObject(parent)
+{
+ QTimer::singleShot(50, this, &SensorTagBasePrivate::deviceSearch);
+}
+
+void SensorTagBasePrivate::deviceSearch()
+{
+ m_deviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
+
+ connect(m_deviceDiscoveryAgent, &QBluetoothDeviceDiscoveryAgent::deviceDiscovered,
+ this, &SensorTagBasePrivate::deviceFound);
+ connect(m_deviceDiscoveryAgent, QOverload<QBluetoothDeviceDiscoveryAgent::Error>::of(&QBluetoothDeviceDiscoveryAgent::error),
+ this, &SensorTagBasePrivate::deviceScanError);
+ connect(m_deviceDiscoveryAgent, &QBluetoothDeviceDiscoveryAgent::finished,
+ this, &SensorTagBasePrivate::scanFinished);
+
+ QTimer::singleShot(20000, this, &SensorTagBasePrivate::deviceSearchTimeout); //make sure to timeout
+ m_deviceDiscoveryAgent->start(QBluetoothDeviceDiscoveryAgent::LowEnergyMethod);
+}
+
+void SensorTagBasePrivate::deviceSearchTimeout()
+{
+ if (m_deviceDiscoveryAgent->isActive() && m_control == nullptr) {
+ m_deviceDiscoveryAgent->stop();
+ qWarning("No Sensor Tag devices found");
+ }
+}
+
+void SensorTagBasePrivate::deviceFound(const QBluetoothDeviceInfo &device)
+{
+ if (device.coreConfigurations() & QBluetoothDeviceInfo::LowEnergyCoreConfiguration) {
+ const QString idString = QString::fromLatin1(qgetenv("QT_SENSORTAG_ID"));
+
+ const QBluetoothAddress watchForAddress(idString);
+ //mac uses deviceUuid
+ const QUuid watchForId(idString);
+
+ bool ok;
+
+ if ((!watchForAddress.isNull() && watchForAddress == device.address()) ||
+ (!watchForId.isNull() && watchForId == device.deviceUuid())) {
+ ok = true;
+ }
+ if (ok || device.name().contains("SensorTag")) {
+
+ m_deviceDiscoveryAgent->stop();
+
+ m_control = new QLowEnergyController(device.address(), this);
+
+ connect(m_control, &QLowEnergyController::discoveryFinished,
+ this, &SensorTagBasePrivate::serviceDiscoveryFinished);
+ connect(m_control, &QLowEnergyController::serviceDiscovered,
+ this, &SensorTagBasePrivate::serviceDiscovered);
+ connect(m_control, QOverload<QLowEnergyController::Error>::of(&QLowEnergyController::error),
+ this, &SensorTagBasePrivate::controllerError);
+ connect(m_control, &QLowEnergyController::connected,
+ this, &SensorTagBasePrivate::sensortagDeviceConnected);
+ connect(m_control, &QLowEnergyController::disconnected,
+ this, &SensorTagBasePrivate::deviceDisconnected);
+
+ m_control->connectToDevice();
+ }
+ }
+}
+
+void SensorTagBasePrivate::serviceDiscoveryFinished()
+{
+ discoveryDone = true;
+}
+
+void SensorTagBasePrivate::scanFinished()
+{
+ if (m_control == nullptr)
+ qWarning("No Sensor Tag devices found");
+}
+
+void SensorTagBasePrivate::deviceScanError(QBluetoothDeviceDiscoveryAgent::Error error)
+{
+ switch (error) {
+ case QBluetoothDeviceDiscoveryAgent::PoweredOffError:
+ qWarning("The Bluetooth adaptor is powered off, power it on before doing discovery.");
+ break;
+ case QBluetoothDeviceDiscoveryAgent::InputOutputError:
+ qWarning("Writing or reading from the device resulted in an error.");
+ break;
+ default:
+ qWarning("An unknown error has occurred.");
+ break;
+ };
+}
+
+void SensorTagBasePrivate::serviceError(QLowEnergyService::ServiceError e)
+{
+ switch (e) {
+ case QLowEnergyService::DescriptorWriteError:
+ qWarning("Cannot obtain SensorTag notifications");
+ break;
+ default:
+ case QLowEnergyService::CharacteristicWriteError:
+ qWarning() << "SensorTag service error:" << e;
+ break;
+ };
+}
+
+void SensorTagBasePrivate::controllerError(QLowEnergyController::Error error)
+{
+ qWarning("Cannot connect to remote device.");
+ qWarning() << "Controller Error:" << error;
+}
+
+void SensorTagBasePrivate::sensortagDeviceConnected()
+{
+ m_control->discoverServices();
+}
+
+void SensorTagBasePrivate::deviceDisconnected()
+{
+ if (q_ptr && q_ptr->sensor()->isActive())
+ q_ptr->sensorStopped();
+}
+
+void SensorTagBasePrivate::serviceDiscovered(const QBluetoothUuid &gatt)
+{
+ if (enabledServiceUuids.contains(gatt)) {
+
+ if (gatt == TI_SENSORTAG_LIGHT_SERVICE) {
+ lightService = m_control->createServiceObject(gatt, this);
+ doConnections(lightService);
+ } else if (gatt == TI_SENSORTAG_TEMPERATURE_SERVICE) {
+ temperatureService = m_control->createServiceObject(gatt, this);
+ doConnections(temperatureService);
+ } else if (gatt == TI_SENSORTAG_BAROMETER_SERVICE) {
+ barometerService = m_control->createServiceObject(gatt, this);
+ doConnections(barometerService);
+ } else if (gatt == TI_SENSORTAG_HUMIDTIY_SERVICE) {
+ humidityService = m_control->createServiceObject(gatt, this);
+ doConnections(humidityService);
+ } else if (gatt == TI_SENSORTAG_INFO_SERVICE) {
+ infoService = m_control->createServiceObject(gatt, this);
+ doConnections(infoService);
+ } else if (gatt == TI_SENSORTAG_ACCELEROMETER_SERVICE) {
+ acceleratorService = m_control->createServiceObject(gatt, this);
+ doConnections(acceleratorService);
+ } else if (gatt == TI_SENSORTAG_GYROSCOPE_SERVICE) {
+ gyroscopeService = m_control->createServiceObject(gatt, this);
+ doConnections(gyroscopeService);
+ } else if (gatt == TI_SENSORTAG_MAGNETOMETER_SERVICE) {
+ magnetometerService = m_control->createServiceObject(gatt, this);
+ doConnections(magnetometerService);
+ } else if (movementService == nullptr) {
+ if (gatt == TI_SENSORTAG_MOVEMENT_SERVICE) {
+ movementService = m_control->createServiceObject(gatt, this);
+ doConnections(movementService);
+ }
+ }
+ }
+}
+
+void SensorTagBasePrivate::doConnections(QLowEnergyService *service)
+{
+ if (service) {
+ connect(service, &QLowEnergyService::stateChanged,
+ this, &SensorTagBasePrivate::serviceStateChanged);
+
+ connect(service, &QLowEnergyService::characteristicChanged,
+ this, &SensorTagBasePrivate::updateCharacteristic);
+
+ connect(service,SIGNAL(error(QLowEnergyService::ServiceError)),
+ this,SLOT(serviceError(QLowEnergyService::ServiceError)));
+
+ if (service->state() == QLowEnergyService::DiscoveryRequired) {
+ service->discoverDetails();
+ } else if (!enabledServiceUuids.isEmpty()
+ && enabledServiceUuids.contains(service->serviceUuid())) {
+ enableService(service->serviceUuid());
+ }
+ }
+}
+
+void SensorTagBasePrivate::serviceStateChanged(QLowEnergyService::ServiceState newState)
+{
+ if (newState != QLowEnergyService::ServiceDiscovered)
+ return;
+
+ QLowEnergyService *m_service = qobject_cast<QLowEnergyService *>(sender());
+
+ if (!m_service)
+ return;
+
+ if (!enabledServiceUuids.isEmpty()
+ && enabledServiceUuids.contains(m_service->serviceUuid())) {
+ enableService(m_service->serviceUuid());
+ }
+}
+
+void SensorTagBasePrivate::enableLight(bool on)
+{
+ if (!lightService && discoveryDone)
+ serviceDiscovered(TI_SENSORTAG_LIGHT_SERVICE);
+ if (!lightService)
+ return;
+
+ const QLowEnergyCharacteristic hrChar = lightService->characteristic(TI_SENSORTAG_LIGHT_CONTROL);
+ lightService->writeCharacteristic(hrChar, on ? enableSensorCharacteristic : disableSensorCharacteristic);
+
+ const QLowEnergyCharacteristic hrChar2 = lightService->characteristic(TI_SENSORTAG_LIGHT_DATA);
+
+ if (hrChar2.descriptors().count() > 0) {
+ const QLowEnergyDescriptor m_notificationDesc = hrChar2.descriptors().at(0);
+ lightService->writeDescriptor(m_notificationDesc,
+ on ? enableNotificationsCharacteristic : disableNotificationsCharacteristic);
+ }
+}
+
+void SensorTagBasePrivate::enableTemp(bool on)
+{
+ if (!temperatureService && discoveryDone)
+ serviceDiscovered(TI_SENSORTAG_TEMPERATURE_SERVICE);
+
+ if (!temperatureService)
+ return;
+
+ const QLowEnergyCharacteristic hrChar = temperatureService->characteristic(TI_SENSORTAG_IR_TEMPERATURE_CONTROL);
+ temperatureService->writeCharacteristic(hrChar,on ? enableSensorCharacteristic : disableSensorCharacteristic);
+
+ const QLowEnergyCharacteristic hrChar2 = temperatureService->characteristic(TI_SENSORTAG_IR_TEMPERATURE_DATA);
+
+ if (hrChar2.descriptors().count() > 0) {
+ const QLowEnergyDescriptor m_notificationDesc = hrChar2.descriptors().at(0);
+ temperatureService->writeDescriptor(m_notificationDesc,
+ on ? enableNotificationsCharacteristic : disableNotificationsCharacteristic);
+ }
+}
+
+void SensorTagBasePrivate::enablePressure(bool on)
+{
+ if (!barometerService && discoveryDone)
+ serviceDiscovered(TI_SENSORTAG_BAROMETER_SERVICE);
+ if (!barometerService)
+ return;
+
+ const QLowEnergyCharacteristic hrChar = barometerService->characteristic(TI_SENSORTAG_BAROMETER_CONTROL);
+ barometerService->writeCharacteristic(hrChar, on ? enableSensorCharacteristic : disableSensorCharacteristic);
+
+ const QLowEnergyCharacteristic hrChar2 = barometerService->characteristic(TI_SENSORTAG_BAROMETER_DATA);
+ if (hrChar2.descriptors().count() > 0) {
+ const QLowEnergyDescriptor m_notificationDesc = hrChar2.descriptors().at(0);
+
+ barometerService->writeDescriptor(m_notificationDesc,
+ on ? enableNotificationsCharacteristic : disableNotificationsCharacteristic);
+ }
+}
+
+void SensorTagBasePrivate::enableHumidity(bool on)
+{
+ if (!humidityService && discoveryDone)
+ serviceDiscovered(TI_SENSORTAG_HUMIDTIY_SERVICE);
+ if (!humidityService)
+ return;
+
+ const QLowEnergyCharacteristic hrChar = humidityService->characteristic(TI_SENSORTAG_HUMIDTIY_CONTROL);
+ humidityService->writeCharacteristic(hrChar, on ? enableSensorCharacteristic : disableSensorCharacteristic);
+ const QLowEnergyCharacteristic hrChar2 = humidityService->characteristic(TI_SENSORTAG_HUMIDTIY_DATA);
+ if (hrChar2.descriptors().count() > 0) {
+ const QLowEnergyDescriptor m_notificationDesc = hrChar2.descriptors().at(0);
+ humidityService->writeDescriptor(m_notificationDesc,
+ on ? enableNotificationsCharacteristic : disableNotificationsCharacteristic);
+ }
+}
+
+void SensorTagBasePrivate::enableMovement(bool on)
+{
+ if (!movementService && discoveryDone)
+ serviceDiscovered(TI_SENSORTAG_MOVEMENT_SERVICE);
+ if (!movementService)
+ return;
+
+ QByteArray controlCharacteristic;
+
+ int movementControl = 0;
+ //movement service has different syntax here
+ if (on) {
+ if (gyroscopeEnabled)
+ movementControl += 7;
+ if (accelerometerEnabled)
+ movementControl += 56;
+ if (magnetometerEnabled)
+ movementControl += 64;
+
+ controlCharacteristic = QByteArray::number(movementControl, 16);
+ controlCharacteristic.append("04");
+
+ } else {
+ controlCharacteristic = "00";
+ }
+
+ const QLowEnergyCharacteristic hrChar = movementService->characteristic(TI_SENSORTAG_MOVEMENT_CONTROL);
+ movementService->writeCharacteristic(hrChar, QByteArray::fromHex(controlCharacteristic));
+
+ const QLowEnergyCharacteristic hrChar2 = movementService->characteristic(TI_SENSORTAG_MOVEMENT_DATA);
+ if (hrChar2.descriptors().count() > 0) {
+ QLowEnergyDescriptor m_notificationDesc = hrChar2.descriptors().at(0);
+
+ movementService->writeDescriptor(m_notificationDesc,
+ on ? enableNotificationsCharacteristic : disableNotificationsCharacteristic);
+ }
+}
+
+void SensorTagBasePrivate::enableService(const QBluetoothUuid &uuid)
+{
+ if (uuid == TI_SENSORTAG_ACCELEROMETER_SERVICE
+ || uuid == TI_SENSORTAG_MAGNETOMETER_SERVICE
+ || uuid == TI_SENSORTAG_GYROSCOPE_SERVICE) {
+
+ if ((uuid != TI_SENSORTAG_MOVEMENT_SERVICE)
+ && (accelerometerEnabled || magnetometerEnabled || gyroscopeEnabled))
+ return;
+
+ if (!enabledServiceUuids.contains(TI_SENSORTAG_MOVEMENT_SERVICE))
+ enabledServiceUuids.append(TI_SENSORTAG_MOVEMENT_SERVICE);
+
+ if (uuid == TI_SENSORTAG_ACCELEROMETER_SERVICE)
+ accelerometerEnabled = true;
+ else if (uuid == TI_SENSORTAG_MAGNETOMETER_SERVICE)
+ magnetometerEnabled = true;
+ else if (uuid == TI_SENSORTAG_GYROSCOPE_SERVICE)
+ gyroscopeEnabled = true;
+
+ } else if (!enabledServiceUuids.contains(uuid))
+ enabledServiceUuids.append(uuid);
+
+ if (discoveryDone) {
+
+ if (uuid == TI_SENSORTAG_LIGHT_SERVICE)
+ enableLight(true);
+ else if (uuid == TI_SENSORTAG_TEMPERATURE_SERVICE)
+ enableTemp(true);
+ else if (uuid == TI_SENSORTAG_BAROMETER_SERVICE)
+ enablePressure(true);
+ else if (uuid == TI_SENSORTAG_HUMIDTIY_SERVICE)
+ enableHumidity(true);
+ else if (uuid == TI_SENSORTAG_MOVEMENT_SERVICE)
+ enableMovement(true);
+ else if (uuid == TI_SENSORTAG_ACCELEROMETER_SERVICE)
+ enableMovement(true);
+ else if (uuid == TI_SENSORTAG_MAGNETOMETER_SERVICE)
+ enableMovement(true);
+ else if (uuid == TI_SENSORTAG_GYROSCOPE_SERVICE)
+ enableMovement(true);
+ }
+}
+
+void SensorTagBasePrivate::disableService(const QBluetoothUuid &uuid)
+{
+ enabledServiceUuids.removeOne(uuid);
+
+ if (uuid == TI_SENSORTAG_LIGHT_SERVICE) {
+ enableLight(false);
+ } else if (uuid == TI_SENSORTAG_TEMPERATURE_SERVICE) {
+ enableTemp(false);
+ } else if (uuid == TI_SENSORTAG_BAROMETER_SERVICE) {
+ enablePressure(false);
+ } else if (uuid == TI_SENSORTAG_HUMIDTIY_SERVICE) {
+ enableHumidity(false);
+ } else if (uuid == TI_SENSORTAG_MOVEMENT_SERVICE) {
+ enableMovement(false);
+ } else if (uuid == TI_SENSORTAG_ACCELEROMETER_SERVICE) {
+ enableMovement(false);
+ accelerometerEnabled = false;
+ } else if (uuid == TI_SENSORTAG_MAGNETOMETER_SERVICE) {
+ enableMovement(false);
+ magnetometerEnabled = false;
+ } else if (uuid == TI_SENSORTAG_GYROSCOPE_SERVICE) {
+ enableMovement(false);
+ gyroscopeEnabled = false;
+ }
+}
+
+void SensorTagBasePrivate::updateCharacteristic(const QLowEnergyCharacteristic &c,
+ const QByteArray &value)
+{
+ if (c.uuid() == TI_SENSORTAG_LIGHT_DATA) {
+ convertLux(value);
+ } else if (c.uuid()== TI_SENSORTAG_IR_TEMPERATURE_DATA) {
+ convertTemperature(value);
+ } else if (c.uuid() == TI_SENSORTAG_BAROMETER_DATA) {
+ convertBarometer(value);
+ } else if (c.uuid()== TI_SENSORTAG_HUMIDTIY_DATA) {
+ convertHumidity(value);
+ } else if (c.uuid()== TI_SENSORTAG_BAROMETER_DATA) {
+ convertBarometer(value);
+ } else if ((c.uuid() == TI_SENSORTAG_ACCELEROMETER_DATA
+ || c.uuid() == TI_SENSORTAG_MOVEMENT_DATA) && accelerometerEnabled) {
+ convertAccelerometer(value);
+ } else if ((c.uuid() == TI_SENSORTAG_MAGNETOMETER_DATA
+ || c.uuid()== TI_SENSORTAG_MOVEMENT_DATA) && magnetometerEnabled) {
+ convertMagnetometer(value);
+ } else if ((c.uuid() == TI_SENSORTAG_GYROSCOPE_DATA
+ || c.uuid() == TI_SENSORTAG_MOVEMENT_DATA) && gyroscopeEnabled) {
+ convertGyroscope(value);
+ }
+}
+
+void SensorTagBasePrivate::convertLux(const QByteArray &bytes)
+{
+ if (bytes.size() < 1)
+ return;
+
+ quint16 dat = ((quint16)bytes[1] & 0xFF) << 8;
+ dat |= (quint16)(bytes[0] & 0xFF);
+
+ qreal lux = dat * .01;
+
+ emit luxDataAvailable(lux);
+}
+
+void SensorTagBasePrivate::convertTemperature(const QByteArray &bytes)
+{
+ if (bytes.size() < 3)
+ return;
+
+ qint16 objTemp = ((bytes[0] & 0xff) | ((bytes[1] << 8) & 0xff00));
+ objTemp >>= 2;
+ qreal objectTemperature = objTemp * 0.03125;
+ // change to this if you want to use the ambient/die temp sensor
+ // qreal ambientTemperature = ambTemp / 128.0;
+
+ emit tempDataAvailable(objectTemperature);
+}
+
+void SensorTagBasePrivate::convertHumidity(const QByteArray &bytes)
+{
+ if (bytes.size() < 3)
+ return;
+ quint16 rawH = (bytes[2] & 0xff) | ((bytes[3] << 8) & 0xff00);
+ qreal rHumidity = (qreal)(rawH / 65535) * 100.0;
+
+ emit humidityDataAvailable(rHumidity);
+}
+
+void SensorTagBasePrivate::convertBarometer(const QByteArray &bytes)
+{
+ if (bytes.size() < 5)
+ return;
+ quint32 pressure = (bytes[3] & 0xff) | ((bytes[4] << 8) & 0xff00) | ((bytes[5] << 16) & 0xff0000);
+
+ qreal mbars = (qreal)pressure / 100.0;
+ emit pressureDataAvailable(mbars);
+}
+
+void SensorTagBasePrivate::convertAccelerometer(const QByteArray &bytes)
+{
+ if (bytes.size() < 3)
+ return;
+
+ int range = 8;
+
+ qint16 X = (qint16)((bytes[8]) + ((bytes[9] << 8)));
+ qint16 Y = (qint16)((bytes[6]) + ((bytes[7] << 8)));
+ qint16 Z = (qint16)((bytes[10]) + ((bytes[11] << 8)));
+
+ accelReading.setX((qreal)(X * 1.0) / (32768 / range) * 9.80665);
+ accelReading.setY(-(qreal)(Y * 1.0) / (32768 / range) * 9.80665);
+ accelReading.setZ((qreal)(Z * 1.0) / (32768 / range) * 9.80665);
+ // TODO needs calibration
+
+ emit accelDataAvailable(accelReading);
+}
+
+void SensorTagBasePrivate::convertMagnetometer(const QByteArray &bytes)
+{
+ if (bytes.size() < 3)
+ return;
+
+ qreal scale = 6.67100977199; // 32768 / 4912;
+ qint16 X = (qint16)((bytes[12]) + ((bytes[13] << 8)));
+ qint16 Y = (qint16)((bytes[14]) + ((bytes[15] << 8)));
+ qint16 Z = (qint16)((bytes[16]) + ((bytes[17] << 8)));
+ // TODO needs calibration
+
+ magReading.setX((qreal)(X / scale));
+ magReading.setY((qreal)(Y / scale));
+ magReading.setZ((qreal)(Z / scale));
+
+ emit magDataAvailable(magReading);
+}
+
+void SensorTagBasePrivate::convertGyroscope(const QByteArray &bytes)
+{
+ if (bytes.size() < 3)
+ return;
+
+ qreal scale = 128.0;
+ qint16 X = (qint16)((bytes[2]) + ((bytes[3] << 8)));
+ qint16 Y = (qint16)((bytes[0]) + ((bytes[1] << 8)));
+ qint16 Z = (qint16)((bytes[4]) + ((bytes[5] << 8)));
+
+ gyroReading.setX((qreal)(X / scale));
+ gyroReading.setY((qreal)(Y / scale));
+ gyroReading.setZ((qreal)(Z / scale));
+
+ emit gyroDataAvailable(gyroReading);
+}
+
+SensorTagBasePrivate * SensorTagBasePrivate::instance()
+{
+ SensorTagBasePrivate *priv = sensortagBasePrivate();
+ return priv;
+}
+
+SensorTagBase::SensorTagBase(QSensor *sensor)
+ : QSensorBackend(sensor),
+ leService(nullptr),
+ serviceId(nullptr),
+ d_ptr(SensorTagBasePrivate::instance())
+{
+ connect(d_ptr, &SensorTagBasePrivate::luxDataAvailable,
+ this, &SensorTagBase::luxDataAvailable);
+ connect(d_ptr, &SensorTagBasePrivate::tempDataAvailable,
+ this, &SensorTagBase::tempDataAvailable);
+ connect(d_ptr, &SensorTagBasePrivate::humidityDataAvailable,
+ this, &SensorTagBase::humidityDataAvailable);
+ connect(d_ptr, &SensorTagBasePrivate::pressureDataAvailable,
+ this, &SensorTagBase::pressureDataAvailable);
+ connect(d_ptr, &SensorTagBasePrivate::accelDataAvailable,
+ this, &SensorTagBase::accelDataAvailable);
+ connect(d_ptr, &SensorTagBasePrivate::gyroDataAvailable,
+ this, &SensorTagBase::gyroDataAvailable);
+ connect(d_ptr, &SensorTagBasePrivate::magDataAvailable,
+ this, &SensorTagBase::magDataAvailable);
+}
+
+SensorTagBase::~SensorTagBase()
+{
+}
+
+void SensorTagBase::start()
+{
+}
+
+void SensorTagBase::stop()
+{
+}
+
+quint64 SensorTagBase::produceTimestamp()
+{
+ return QDeadlineTimer::current().deadlineNSecs() / 1000;
+}
+
+
diff --git a/src/plugins/sensors/sensortag/sensortagbase.h b/src/plugins/sensors/sensortag/sensortagbase.h
new file mode 100644
index 00000000..5d61aacf
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagbase.h
@@ -0,0 +1,252 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SENSORTAGBASEPRIVATE_H
+#define SENSORTAGBASEPRIVATE_H
+
+#include <QObject>
+#include <QSensorBackend>
+
+#include <QBluetoothDeviceDiscoveryAgent>
+#include <QBluetoothDeviceInfo>
+#include <QLowEnergyController>
+#include <QLowEnergyService>
+
+#include <QAccelerometerReading>
+#include <QGyroscopeReading>
+#include <QMagnetometerReading>
+
+class SensorTagBase;
+
+class SensorTagBasePrivate : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PUBLIC(SensorTagBase)
+public:
+ explicit SensorTagBasePrivate(QObject *parent = 0);
+
+ QLowEnergyService *lightService = nullptr;
+ QLowEnergyService *temperatureService = nullptr;
+ QLowEnergyService *barometerService = nullptr;
+ QLowEnergyService *humidityService = nullptr;
+ QLowEnergyService *movementService = nullptr;
+ QLowEnergyService *acceleratorService = nullptr;
+ QLowEnergyService *magnetometerService = nullptr;
+ QLowEnergyService *gyroscopeService = nullptr;
+
+ void enableService(const QBluetoothUuid &uuid);
+ void disableService(const QBluetoothUuid &uuid);
+
+ static SensorTagBasePrivate *instance();
+
+signals:
+ void accelDataAvailable(const QAccelerometerReading &);
+ void gyroDataAvailable(const QGyroscopeReading &);
+ void magDataAvailable(const QMagnetometerReading &);
+
+ void luxDataAvailable(qreal);
+ void tempDataAvailable(qreal);
+ void humidityDataAvailable(qreal);
+ void pressureDataAvailable(qreal);
+ void compassDataAvailable(qreal);
+
+public slots:
+ void enableLight(bool);
+ void enableTemp(bool);
+ void enablePressure(bool);
+ void enableHumidity(bool);
+ void enableMovement(bool);
+
+ void deviceFound(const QBluetoothDeviceInfo&);
+ void scanFinished();
+
+ void deviceScanError(QBluetoothDeviceDiscoveryAgent::Error);
+ void serviceDiscovered(const QBluetoothUuid &);
+
+ void controllerError(QLowEnergyController::Error);
+
+ void sensortagDeviceConnected();
+ void deviceDisconnected();
+
+ void serviceStateChanged(QLowEnergyService::ServiceState s);
+ void updateCharacteristic(const QLowEnergyCharacteristic &c,
+ const QByteArray &value);
+ void serviceError(QLowEnergyService::ServiceError e);
+ void doConnections(QLowEnergyService *service);
+
+private slots:
+ void deviceSearch();
+ void serviceDiscoveryFinished();
+ void deviceSearchTimeout();
+
+private:
+
+ void convertLux(const QByteArray &value);
+ void convertTemperature(const QByteArray &value);
+ void convertBarometer(const QByteArray &value);
+ void convertHumidity(const QByteArray &value);
+ void convertAccelerometer(const QByteArray &value);
+ void convertMagnetometer(const QByteArray &value);
+ void convertGyroscope(const QByteArray &value);
+
+ QBluetoothDeviceDiscoveryAgent *m_deviceDiscoveryAgent = nullptr;
+ QLowEnergyDescriptor m_notificationDesc;
+
+ QLowEnergyController *m_control = nullptr;
+ QLowEnergyService *infoService = nullptr;
+
+ QAccelerometerReading accelReading;
+ QGyroscopeReading gyroReading;
+ QMagnetometerReading magReading;
+
+ bool discoveryDone = false;
+ QList <QBluetoothUuid> enabledServiceUuids;
+ SensorTagBase *q_ptr;
+
+ bool accelerometerEnabled = false;
+ bool gyroscopeEnabled = false;
+ bool magnetometerEnabled = false;
+
+ const QByteArray enableSensorCharacteristic = QByteArrayLiteral("\x01");
+ const QByteArray disableSensorCharacteristic = QByteArrayLiteral("\x00");
+
+ const QByteArray enableNotificationsCharacteristic = QByteArrayLiteral("\x01\x00");
+ const QByteArray disableNotificationsCharacteristic = QByteArrayLiteral("\x00\x00");
+};
+
+const QBluetoothUuid TI_SENSORTAG_TEMPERATURE_SERVICE(QUuid("{f000aa00-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_IR_TEMPERATURE_DATA(QUuid("{f000aa01-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_IR_TEMPERATURE_CONTROL(QUuid("{f000aa02-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_IR_TEMPERATURE_PERIOD(QUuid("{f000aa03-0451-4000-b000-000000000000}"));
+
+const QBluetoothUuid TI_SENSORTAG_ACCELEROMETER_SERVICE(QUuid("{f000aa10-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_ACCELEROMETER_DATA(QUuid("{f000aa11-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_ACCELEROMETER_CONTROL(QUuid("{f000aa12-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_ACCELEROMETER_PERIOD(QUuid("{f000aa13-0451-4000-b000-000000000000}"));
+
+const QBluetoothUuid TI_SENSORTAG_HUMIDTIY_SERVICE(QUuid("{f000aa20-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_HUMIDTIY_DATA(QUuid("{f000aa21-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_HUMIDTIY_CONTROL(QUuid("{f000aa22-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_HUMIDTIY_PERIOD(QUuid("{f000aa23-0451-4000-b000-000000000000}"));
+
+const QBluetoothUuid TI_SENSORTAG_MAGNETOMETER_SERVICE(QUuid("{f000aa30-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_MAGNETOMETER_DATA(QUuid("{f000aa31-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_MAGNETOMETER_CONTROL(QUuid("{f000aa32-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_MAGNETOMETER_PERIOD(QUuid("{f000aa33-0451-4000-b000-000000000000}"));
+
+const QBluetoothUuid TI_SENSORTAG_BAROMETER_SERVICE(QUuid("{f000aa40-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_BAROMETER_DATA(QUuid("{f000aa41-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_BAROMETER_CONTROL(QUuid("{f000aa42-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_BAROMETER_CALIBRATION(QUuid("{f000aa43-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_BAROMETER_PERIOD(QUuid("{f000aa44-0451-4000-b000-000000000000}"));
+
+const QBluetoothUuid TI_SENSORTAG_GYROSCOPE_SERVICE(QUuid("{f000aa50-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_GYROSCOPE_DATA(QUuid("{f000aa51-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_GYROSCOPE_CONTROL(QUuid("{f000aa52-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_GYROSCOPE_PERIOD(QUuid("{f000aa53-0451-4000-b000-000000000000}"));
+
+// test service "{f000aa60-0451-4000-b000-000000000000}"
+
+const QBluetoothUuid TI_SENSORTAG_IO_SERVICE(QUuid("{f000aa64-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_IO_DATA(QUuid("{f000aa65-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_IO_CONTROL(QUuid("{f000aa66-0451-4000-b000-000000000000}"));
+
+const QBluetoothUuid TI_SENSORTAG_LIGHT_SERVICE(QUuid("{f000aa70-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_LIGHT_DATA(QUuid("{f000aa71-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_LIGHT_CONTROL(QUuid("{f000aa72-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_LIGHT_PERIOD(QUuid("{f000aa73-0451-4000-b000-000000000000}"));
+
+const QBluetoothUuid TI_SENSORTAG_MOVEMENT_SERVICE(QUuid("{f000aa80-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_MOVEMENT_DATA(QUuid("{f000aa81-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_MOVEMENT_CONTROL(QUuid("{f000aa82-0451-4000-b000-000000000000}"));
+const QBluetoothUuid TI_SENSORTAG_MOVEMENT_PERIOD(QUuid("{f000aa83-0451-4000-b000-000000000000}"));
+
+// keypress "{f000ffe0-0000-1000-8000-00805f9b34fb"
+
+// Connection Control Service "{f000ccc0-0451-4000-b000-000000000000}"
+// OAD (over air download) Service "{f000ffc0-0451-4000-b000-000000000000}"
+
+const QBluetoothUuid TI_SENSORTAG_INFO_SERVICE(QUuid("{0000180a-0000-1000-8000-00805f9b34fb}"));
+//we might want to use these somehow
+//const QBluetoothUuid TI_SENSORTAG_BATTERY_SERVICE "180F"
+//const QBluetoothUuid TI_SENSORTAG_BATTERY_BATTERY_LEVEL "2A19"
+
+// {00001800-0000-1000-8000-00805f9b34fb} //Generic Access Service
+// {00001801-0000-1000-8000-00805f9b34fb} //Generic Attribute Service
+
+class SensorTagBase : public QSensorBackend
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(SensorTagBase)
+public:
+ SensorTagBase(QSensor *sensor);
+ virtual ~SensorTagBase();
+
+ quint64 produceTimestamp();
+signals:
+ void accelDataAvailable(const QAccelerometerReading &);
+ void luxDataAvailable(qreal);
+ void tempDataAvailable(qreal);
+ void humidityDataAvailable(qreal);
+ void pressureDataAvailable(qreal);
+ void gyroDataAvailable(const QGyroscopeReading &);
+ void magDataAvailable(const QMagnetometerReading &);
+
+protected:
+ void start() override;
+ void stop() override;
+ QLowEnergyService *leService;
+ QBluetoothUuid *serviceId;
+
+private:
+ SensorTagBasePrivate *d_ptr;
+ friend class SensorTagTemperatureSensor;
+ friend class SensorTagAls;
+ friend class SensorTagHumiditySensor;
+ friend class SensorTagLightSensor;
+
+ friend class SensorTagPressureSensor;
+ friend class SensorTagAccelerometer;
+
+ friend class SensorTagGyroscope;
+ friend class SensorTagMagnetometer;
+};
+
+#endif // SENSORTAGBASEPRIVATE_H
diff --git a/src/plugins/sensors/sensortag/sensortaggyroscope.cpp b/src/plugins/sensors/sensortag/sensortaggyroscope.cpp
new file mode 100644
index 00000000..136d1433
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortaggyroscope.cpp
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2016 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "sensortaggyroscope.h"
+
+char const * const SensorTagGyroscope::id("sensortag.gyroscope");
+const float SensorTagGyroscope::MILLI = 0.001;
+
+SensorTagGyroscope::SensorTagGyroscope(QSensor *sensor)
+ : SensorTagBase(sensor)
+{
+ init();
+ setDescription(QLatin1String("angular velocities around x, y, and z axis in degrees per second"));
+ setReading<QGyroscopeReading>(&m_reading);
+ sensor->setDataRate(50);//set a default rate
+}
+
+void SensorTagGyroscope::slotDataAvailable(const QGyroscopeReading& data)
+{
+ m_reading.setX(data.x());
+ m_reading.setY(data.y());
+ m_reading.setZ(data.z());
+ m_reading.setTimestamp(produceTimestamp());
+ newReadingAvailable();
+}
+
+void SensorTagGyroscope::init()
+{
+ m_initDone = false;
+}
+
+void SensorTagGyroscope::start()
+{
+ QObject::connect(this, &SensorTagBase::gyroDataAvailable,
+ this, &SensorTagGyroscope::slotDataAvailable);
+ d_ptr->enableService(TI_SENSORTAG_GYROSCOPE_SERVICE);
+}
+
+
+void SensorTagGyroscope::stop()
+{
+ QObject::disconnect(this, &SensorTagBase::gyroDataAvailable,
+ this, &SensorTagGyroscope::slotDataAvailable);
+ d_ptr->disableService(TI_SENSORTAG_GYROSCOPE_SERVICE);
+}
+
diff --git a/src/plugins/sensors/sensortag/sensortaggyroscope.h b/src/plugins/sensors/sensortag/sensortaggyroscope.h
new file mode 100644
index 00000000..af3cfe41
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortaggyroscope.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SENSORTAGGYROSCOPE_H
+#define SENSORTAGGYROSCOPE_H
+
+#include "sensortagbase.h"
+#include <QtSensors/qgyroscope.h>
+
+class SensorTagGyroscope : public SensorTagBase
+{
+ Q_OBJECT
+
+public:
+ static char const * const id;
+ SensorTagGyroscope(QSensor *sensor);
+protected:
+ void start() override;
+ void stop() override;
+ virtual void init();
+
+private:
+ QGyroscopeReading m_reading;
+ bool m_initDone = false;
+ static const float MILLI;
+private slots:
+ void slotDataAvailable(const QGyroscopeReading &data);
+};
+
+#endif // SENSORTAGGYROSCOPE_H
diff --git a/src/plugins/sensors/sensortag/sensortaghumiditysensor.cpp b/src/plugins/sensors/sensortag/sensortaghumiditysensor.cpp
new file mode 100644
index 00000000..77b4585c
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortaghumiditysensor.cpp
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2016 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "sensortaghumiditysensor.h"
+#include "sensortagbase.h"
+
+char const * const SensorTagHumiditySensor::id("sensortag.humidity");
+
+SensorTagHumiditySensor::SensorTagHumiditySensor(QSensor *sensor)
+ : SensorTagBase(sensor)
+{
+ setReading<QHumidityReading>(&m_reading);
+}
+
+
+void SensorTagHumiditySensor::humidityChanged(qreal value)
+{
+ m_reading.setRelativeHumidity(value);
+
+ m_reading.setTimestamp(produceTimestamp());
+ newReadingAvailable();
+}
+
+void SensorTagHumiditySensor::start()
+{
+ QObject::connect(this, &SensorTagBase::humidityDataAvailable,
+ this, &SensorTagHumiditySensor::humidityChanged);
+ d_ptr->enableService(TI_SENSORTAG_HUMIDTIY_SERVICE);
+}
+
+void SensorTagHumiditySensor::stop()
+{
+ QObject::disconnect(this, &SensorTagBase::humidityDataAvailable,
+ this, &SensorTagHumiditySensor::humidityChanged);
+ d_ptr->disableService(TI_SENSORTAG_HUMIDTIY_SERVICE);
+}
+
diff --git a/src/plugins/sensors/sensortag/sensortaghumiditysensor.h b/src/plugins/sensors/sensortag/sensortaghumiditysensor.h
new file mode 100644
index 00000000..5511bf05
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortaghumiditysensor.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SENSORTAGHUMIDITYSENSOR_H
+#define SENSORTAGHUMIDITYSENSOR_H
+
+#include "sensortagbase.h"
+#include <QHumidityReading>
+
+class SensorTagHumiditySensor : public SensorTagBase
+{
+ Q_OBJECT
+public:
+ SensorTagHumiditySensor(QSensor *sensor);
+ static char const * const id;
+protected:
+ void start() override;
+ void stop() override;
+private slots:
+ void humidityChanged(qreal value);
+private:
+ QHumidityReading m_reading;
+};
+
+#endif // SENSORTAGHUMIDITYSENSOR_H
diff --git a/src/plugins/sensors/sensortag/sensortaglightsensor.cpp b/src/plugins/sensors/sensortag/sensortaglightsensor.cpp
new file mode 100644
index 00000000..9e4038b3
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortaglightsensor.cpp
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2016 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "sensortaglightsensor.h"
+
+char const * const SensorTagLightSensor::id("sensortag.lightsensor");
+
+SensorTagLightSensor::SensorTagLightSensor(QSensor *sensor)
+ : SensorTagBase(sensor)
+{
+ init();
+ setReading<QLightReading>(&m_reading);
+ sensor->setDataRate(10);//set a default rate
+}
+
+void SensorTagLightSensor::slotDataAvailable(qreal data)
+{
+ m_reading.setLux(data);
+ m_reading.setTimestamp(produceTimestamp());
+ newReadingAvailable();
+}
+
+void SensorTagLightSensor::init()
+{
+ m_initDone = false;
+}
+
+void SensorTagLightSensor::start()
+{
+ QObject::connect(this, &SensorTagBase::luxDataAvailable,
+ this, &SensorTagLightSensor::slotDataAvailable);
+ d_ptr->enableService(TI_SENSORTAG_LIGHT_SERVICE);
+}
+
+void SensorTagLightSensor::stop()
+{
+ QObject::disconnect(this, &SensorTagBase::luxDataAvailable,
+ this, &SensorTagLightSensor::slotDataAvailable);
+ d_ptr->disableService(TI_SENSORTAG_LIGHT_SERVICE);
+}
diff --git a/src/plugins/sensors/sensortag/sensortaglightsensor.h b/src/plugins/sensors/sensortag/sensortaglightsensor.h
new file mode 100644
index 00000000..edff8263
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortaglightsensor.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SENSORTAGLIGHTSENSOR_H
+#define SENSORTAGLIGHTSENSOR_H
+
+#include "sensortagbase.h"
+#include <QtSensors/qlightsensor.h>
+
+class SensorTagLightSensor : public SensorTagBase
+{
+ Q_OBJECT
+
+public:
+ static char const * const id;
+ SensorTagLightSensor(QSensor *sensor);
+protected:
+ void start() override;
+ void stop() override;
+ virtual void init();
+private:
+ QLightReading m_reading;
+ bool m_initDone = false;
+private slots:
+ void slotDataAvailable(qreal data);
+};
+
+#endif
+//SENSORTAGLIGHTSENSOR_H
diff --git a/src/plugins/sensors/sensortag/sensortagmagnetometer.cpp b/src/plugins/sensors/sensortag/sensortagmagnetometer.cpp
new file mode 100644
index 00000000..d5d46221
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagmagnetometer.cpp
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2016 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "sensortagmagnetometer.h"
+
+char const * const SensorTagMagnetometer::id("sensortag.magnetometer");
+const float SensorTagMagnetometer::NANO = 0.000000001;
+
+SensorTagMagnetometer::SensorTagMagnetometer(QSensor *sensor)
+ : SensorTagBase(sensor)
+{
+ init();
+ setDescription(QLatin1String("magnetic flux density in teslas (T)"));
+ setReading<QMagnetometerReading>(&m_reading);
+}
+
+void SensorTagMagnetometer::start()
+{
+ QObject::connect(this, &SensorTagBase::magDataAvailable,
+ this, &SensorTagMagnetometer::slotDataAvailable);
+ d_ptr->enableService(TI_SENSORTAG_MAGNETOMETER_SERVICE);
+}
+
+void SensorTagMagnetometer::stop()
+{
+ QObject::disconnect(this, &SensorTagBase::magDataAvailable,
+ this, &SensorTagMagnetometer::slotDataAvailable);
+ d_ptr->disableService(TI_SENSORTAG_MAGNETOMETER_SERVICE);
+}
+
+void SensorTagMagnetometer::slotDataAvailable(const QMagnetometerReading &data)
+{
+ m_reading.setX(data.x());
+ m_reading.setY(data.y());
+ m_reading.setZ(data.z());
+ m_reading.setTimestamp(produceTimestamp());
+ newReadingAvailable();
+}
+
+void SensorTagMagnetometer::init()
+{
+ m_initDone = false;
+}
diff --git a/src/plugins/sensors/sensortag/sensortagmagnetometer.h b/src/plugins/sensors/sensortag/sensortagmagnetometer.h
new file mode 100644
index 00000000..424727a2
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagmagnetometer.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SENSORTAGMAGNETOMETER_H
+#define SENSORTAGMAGNETOMETER_H
+
+#include "sensortagbase.h"
+#include <QtSensors/qmagnetometer.h>
+
+class SensorTagMagnetometer : public SensorTagBase
+{
+ Q_OBJECT
+
+public:
+ static char const * const id;
+ SensorTagMagnetometer(QSensor *sensor);
+protected:
+ void start() override;
+ void stop() override;
+ virtual void init();
+
+private:
+ static const float NANO;
+ QMagnetometerReading m_reading;
+ bool m_initDone = false;
+
+private slots:
+ void slotDataAvailable(const QMagnetometerReading &data);
+};
+
+#endif
+//SENSORTAGMAGNETOMETER_H
diff --git a/src/plugins/sensors/sensortag/sensortagpressuresensor.cpp b/src/plugins/sensors/sensortag/sensortagpressuresensor.cpp
new file mode 100644
index 00000000..7d2c8f93
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagpressuresensor.cpp
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2016 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "sensortagpressuresensor.h"
+#include "sensortagbase.h"
+
+char const * const SensorTagPressureSensor::id("sensortag.pressure");
+
+SensorTagPressureSensor::SensorTagPressureSensor(QSensor *sensor)
+ : SensorTagBase(sensor)
+{
+ setReading<QPressureReading>(&m_reading);
+}
+
+void SensorTagPressureSensor::pressureChanged(qreal value)
+{
+ m_reading.setPressure(value);
+ m_reading.setTimestamp(produceTimestamp());
+ newReadingAvailable();
+}
+
+void SensorTagPressureSensor::start()
+{
+ QObject::connect(this, &SensorTagBase::pressureDataAvailable,
+ this, &SensorTagPressureSensor::pressureChanged);
+ d_ptr->enableService(TI_SENSORTAG_BAROMETER_SERVICE);
+}
+
+void SensorTagPressureSensor::stop()
+{
+ QObject::disconnect(this, &SensorTagBase::pressureDataAvailable,
+ this, &SensorTagPressureSensor::pressureChanged);
+ d_ptr->disableService(TI_SENSORTAG_BAROMETER_SERVICE);
+}
+
diff --git a/src/plugins/sensors/sensortag/sensortagpressuresensor.h b/src/plugins/sensors/sensortag/sensortagpressuresensor.h
new file mode 100644
index 00000000..5f8b0cfd
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagpressuresensor.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SENSORTAGPRESSURESENSOR_H
+#define SENSORTAGPRESSURESENSOR_H
+
+#include "sensortagbase.h"
+#include <QObject>
+#include <QPressureReading>
+
+class SensorTagPressureSensor : public SensorTagBase
+{
+ Q_OBJECT
+public:
+ SensorTagPressureSensor(QSensor *sensor);
+ static char const * const id;
+
+protected:
+ void start() override;
+ void stop() override;
+
+private slots:
+ void pressureChanged(qreal value);
+private:
+ QPressureReading m_reading;
+};
+
+#endif // SENSORTAGPRESSURESENSOR_H
diff --git a/src/plugins/sensors/sensortag/sensortagtemperaturesensor.cpp b/src/plugins/sensors/sensortag/sensortagtemperaturesensor.cpp
new file mode 100644
index 00000000..ab8c4a2f
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagtemperaturesensor.cpp
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2016 Canonical, Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "sensortagtemperaturesensor.h"
+#include "sensortagbase.h"
+
+char const * const SensorTagTemperatureSensor::id("sensortag.temperature");
+
+SensorTagTemperatureSensor::SensorTagTemperatureSensor(QSensor *sensor)
+ : SensorTagBase(sensor)
+{
+ setReading<QAmbientTemperatureReading>(&m_reading);
+}
+
+void SensorTagTemperatureSensor::temperatureChanged(qreal value)
+{
+ m_reading.setTemperature(value);
+ m_reading.setTimestamp(produceTimestamp());
+ newReadingAvailable();
+}
+
+void SensorTagTemperatureSensor::start()
+{
+ QObject::connect(this, &SensorTagBase::tempDataAvailable,
+ this, &SensorTagTemperatureSensor::temperatureChanged);
+ d_ptr->enableService(TI_SENSORTAG_TEMPERATURE_SERVICE);
+}
+
+void SensorTagTemperatureSensor::stop()
+{
+ QObject::disconnect(this, &SensorTagBase::tempDataAvailable,
+ this, &SensorTagTemperatureSensor::temperatureChanged);
+ d_ptr->disableService(TI_SENSORTAG_TEMPERATURE_SERVICE);
+}
+
diff --git a/src/plugins/sensors/sensortag/sensortagtemperaturesensor.h b/src/plugins/sensors/sensortag/sensortagtemperaturesensor.h
new file mode 100644
index 00000000..c4c45d58
--- /dev/null
+++ b/src/plugins/sensors/sensortag/sensortagtemperaturesensor.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Lorn Potter
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** 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 Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** 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-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SENSORTAGTEMPERATURESENSOR_H
+#define SENSORTAGTEMPERATURESENSOR_H
+
+#include "sensortagbase.h"
+#include <QAmbientTemperatureReading>
+
+class SensorTagTemperatureSensor : public SensorTagBase
+{
+ Q_OBJECT
+public:
+ SensorTagTemperatureSensor(QSensor *sensor);
+ static char const * const id;
+protected:
+ void start() override;
+ void stop() override;
+private slots:
+ void temperatureChanged(qreal value);
+private:
+ QAmbientTemperatureReading m_reading;
+};
+
+#endif // SENSORTAGTEMPERATURESENSOR_H
diff --git a/src/plugins/sensors/simulator/main.cpp b/src/plugins/sensors/simulator/main.cpp
index a1b00256..167711a9 100644
--- a/src/plugins/sensors/simulator/main.cpp
+++ b/src/plugins/sensors/simulator/main.cpp
@@ -61,7 +61,7 @@ public:
connect(connection, SIGNAL(setAvailableFeatures(quint32)), this, SLOT(setAvailableFeatures(quint32)));
}
- void registerSensors()
+ void registerSensors() override
{
QSensorManager::registerBackend(QAccelerometer::type, SimulatorAccelerometer::id, this);
QSensorManager::registerBackend(QAmbientLightSensor::type, SimulatorAmbientLightSensor::id, this);
@@ -72,7 +72,7 @@ public:
QSensorManager::registerBackend(QMagnetometer::type, SimulatorMagnetometer::id, this);
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == SimulatorAccelerometer::id) {
return new SimulatorAccelerometer(sensor);
diff --git a/src/plugins/sensors/winrt/main.cpp b/src/plugins/sensors/winrt/main.cpp
index 565d8fec..ecf2a41b 100644
--- a/src/plugins/sensors/winrt/main.cpp
+++ b/src/plugins/sensors/winrt/main.cpp
@@ -59,7 +59,7 @@ class WinRtSensorPlugin : public QObject, public QSensorPluginInterface, public
Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
QSensorManager::registerBackend(QAccelerometer::type, QByteArrayLiteral("WinRtAccelerometer"), this);
QSensorManager::registerBackend(QCompass::type, QByteArrayLiteral("WinRtCompass"), this);
@@ -69,7 +69,7 @@ public:
QSensorManager::registerBackend(QOrientationSensor::type, QByteArrayLiteral("WinRtOrientationSensor"), this);
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == QByteArrayLiteral("WinRtAccelerometer"))
return new WinRtAccelerometer(sensor);
diff --git a/src/sensors/doc/snippets/sensorgestures/myplugin.h b/src/sensors/doc/snippets/sensorgestures/myplugin.h
index c03966d0..0cf1a92b 100644
--- a/src/sensors/doc/snippets/sensorgestures/myplugin.h
+++ b/src/sensors/doc/snippets/sensorgestures/myplugin.h
@@ -52,12 +52,12 @@ class MySensorGestureRecognizer : public QSensorGestureRecognizer
MySensorGestureRecognizer(QObject *parent = 0);
~MySensorGestureRecognizer();
- void create();
+ void create() override;
- QString id() const;
- bool start();
- bool stop();
- bool isActive();
+ QString id() const override;
+ bool start() override;
+ bool stop() override;
+ bool isActive() override;
Q_SIGNALS:
// all signals will get exported to QSensorGesture
@@ -74,9 +74,9 @@ public:
explicit MySensorGesturePlugin();
~MySensorGesturePlugin();
- QList <QSensorGestureRecognizer *> createRecognizers();
- QStringList supportedIds() const;
- QString name() const { return "MyGestures"; }
+ QList<QSensorGestureRecognizer *> createRecognizers() override;
+ QStringList supportedIds() const override;
+ QString name() const override { return "MyGestures"; }
};
#endif
diff --git a/src/sensors/doc/snippets/sensors/mybackend.h b/src/sensors/doc/snippets/sensors/mybackend.h
index 2c026dcd..59c54069 100644
--- a/src/sensors/doc/snippets/sensors/mybackend.h
+++ b/src/sensors/doc/snippets/sensors/mybackend.h
@@ -47,8 +47,8 @@ class MyBackend : public QSensorBackend
{
public:
MyBackend(QSensor *sensor) : QSensorBackend(sensor) {}
- void stop() {}
- void start() {}
+ void stop() override {}
+ void start() override {}
void poll() {}
static const char *id;
diff --git a/src/sensors/doc/snippets/sensors/plugin.cpp b/src/sensors/doc/snippets/sensors/plugin.cpp
index d1c30534..1eef5966 100644
--- a/src/sensors/doc/snippets/sensors/plugin.cpp
+++ b/src/sensors/doc/snippets/sensors/plugin.cpp
@@ -50,12 +50,12 @@ class MyPluginClass : public QObject, public QSensorPluginInterface, public QSen
//Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
QSensorManager::registerBackend(QAccelerometer::type, MyBackend::id, this);
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == MyBackend::id)
return new MyBackend(sensor);
diff --git a/src/sensors/doc/src/compatmap.qdoc b/src/sensors/doc/src/compatmap.qdoc
index be199602..d91c0c55 100644
--- a/src/sensors/doc/src/compatmap.qdoc
+++ b/src/sensors/doc/src/compatmap.qdoc
@@ -59,6 +59,7 @@
<td><b>Universal Windows Platform</b></td>
<td><b>Generic</b></td>
<td><b>Sensorfw</b></td>
+ <td><b>TI Sensor Tag</b></td>
</tr>
<tr>
<td nowrap="nowrap">Accelerometer</td>
@@ -68,6 +69,7 @@
<td bgcolor="green"></td>
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
+ <td bgcolor="green"></td>
</tr>
<tr>
<td nowrap="nowrap">Altimeter</td>
@@ -77,6 +79,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Ambient Light Sensor</td>
@@ -86,6 +89,7 @@
<td bgcolor="green"></td>
<td bgcolor="green"></td>
<td bgcolor="green"></td>
+ <td bgcolor="green"></td>
</tr>
<tr>
<td nowrap="nowrap">Ambient Temperature Sensor</td>
@@ -95,6 +99,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
+ <td bgcolor="green"></td>
</tr>
<tr>
<td nowrap="nowrap">Compass</td>
@@ -104,6 +109,7 @@
<td bgcolor="green"></td>
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Distance</td>
@@ -113,6 +119,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Gyroscope</td>
@@ -122,6 +129,7 @@
<td bgcolor="green"></td>
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
+ <td bgcolor="green"></td>
</tr>
<tr>
<td nowrap="nowrap">Holster Sensor</td>
@@ -131,6 +139,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Humidity Sensor</td>
@@ -140,6 +149,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
+ <td bgcolor="green"></td>
</tr>
<tr>
<td nowrap="nowrap">IR Proximity Sensor</td>
@@ -149,6 +159,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Lid Sensor</td>
@@ -158,6 +169,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Light Sensor</td>
@@ -167,6 +179,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
+ <td bgcolor="green"></td>
</tr>
<tr>
<td nowrap="nowrap">Magnetometer</td>
@@ -176,6 +189,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
+ <td bgcolor="green"></td>
</tr>
<tr>
<td nowrap="nowrap">Orientation Sensor</td>
@@ -185,6 +199,7 @@
<td bgcolor="green"></td>
<td bgcolor="green"></td>
<td bgcolor="green"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Pressure Sensor</td>
@@ -194,6 +209,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
+ <td bgcolor="green"></td>
</tr>
<tr>
<td nowrap="nowrap">Proximity Sensor</td>
@@ -203,6 +219,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Rotation Sensor</td>
@@ -212,6 +229,7 @@
<td bgcolor="green"></td>
<td bgcolor="green"></td>
<td bgcolor="green"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Tap Sensor</td>
@@ -221,6 +239,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Tilt Sensor</td>
@@ -230,6 +249,7 @@
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
<td bgcolor="gray"></td>
+ <td bgcolor="gray"></td>
</tr>
<tr>
<td nowrap="nowrap">Sensor Gestures</td>
@@ -239,6 +259,7 @@
<td bgcolor="gray"></td>
<td bgcolor="gray"></td>
<td bgcolor="green"></td>
+ <td bgcolor="gray"></td>
</tr>
</table>
diff --git a/src/sensors/gestures/qsensorgesture.h b/src/sensors/gestures/qsensorgesture.h
index 880be69b..dd95b3bd 100644
--- a/src/sensors/gestures/qsensorgesture.h
+++ b/src/sensors/gestures/qsensorgesture.h
@@ -76,8 +76,8 @@ private:
private:
// Pretend to be a Q_OBJECT
- const QMetaObject *metaObject() const;
- int qt_metacall(QMetaObject::Call, int, void **);
+ const QMetaObject *metaObject() const override;
+ int qt_metacall(QMetaObject::Call, int, void **) override;
#ifdef Q_QDOC
Q_SIGNALS:
diff --git a/src/sensors/qaccelerometer.h b/src/sensors/qaccelerometer.h
index 1911e5fb..a44971f2 100644
--- a/src/sensors/qaccelerometer.h
+++ b/src/sensors/qaccelerometer.h
@@ -69,7 +69,7 @@ class Q_SENSORS_EXPORT QAccelerometerFilter : public QSensorFilter
public:
virtual bool filter(QAccelerometerReading *reading) = 0;
private:
- bool filter(QSensorReading *reading);
+ bool filter(QSensorReading *reading) override;
};
class QAccelerometerPrivate;
diff --git a/src/sensors/qambientlightsensor.h b/src/sensors/qambientlightsensor.h
index f9f7d1b1..9d1acec9 100644
--- a/src/sensors/qambientlightsensor.h
+++ b/src/sensors/qambientlightsensor.h
@@ -71,7 +71,7 @@ class Q_SENSORS_EXPORT QAmbientLightFilter : public QSensorFilter
public:
virtual bool filter(QAmbientLightReading *reading) = 0;
private:
- bool filter(QSensorReading *reading);
+ bool filter(QSensorReading *reading) override;
};
class Q_SENSORS_EXPORT QAmbientLightSensor : public QSensor
diff --git a/src/sensors/qhumiditysensor.h b/src/sensors/qhumiditysensor.h
index d916fb73..f24d2be2 100644
--- a/src/sensors/qhumiditysensor.h
+++ b/src/sensors/qhumiditysensor.h
@@ -66,7 +66,7 @@ class Q_SENSORS_EXPORT QHumidityFilter : public QSensorFilter
public:
virtual bool filter(QHumidityReading *reading) = 0;
private:
- bool filter(QSensorReading *reading) Q_DECL_OVERRIDE;
+ bool filter(QSensorReading *reading) override;
};
class QHumiditySensorPrivate;
diff --git a/src/sensors/qlidsensor.h b/src/sensors/qlidsensor.h
index c0f88a79..f7992cac 100644
--- a/src/sensors/qlidsensor.h
+++ b/src/sensors/qlidsensor.h
@@ -69,7 +69,7 @@ class Q_SENSORS_EXPORT QLidFilter : public QSensorFilter
public:
virtual bool filter(QLidReading *reading) = 0;
private:
- bool filter(QSensorReading *reading) Q_DECL_OVERRIDE;
+ bool filter(QSensorReading *reading) override;
};
class Q_SENSORS_EXPORT QLidSensor : public QSensor
diff --git a/src/sensors/qsensor.h b/src/sensors/qsensor.h
index cf8de767..7dd7ea19 100644
--- a/src/sensors/qsensor.h
+++ b/src/sensors/qsensor.h
@@ -263,7 +263,7 @@ private:
public:\
classname(QObject *parent = Q_NULLPTR);\
virtual ~classname();\
- void copyValuesFrom(QSensorReading *other);\
+ void copyValuesFrom(QSensorReading *other) override;\
private:\
QScopedPointer<pclassname> d;
diff --git a/src/sensors/qsensorbackend.cpp b/src/sensors/qsensorbackend.cpp
index c17e6383..57679a55 100644
--- a/src/sensors/qsensorbackend.cpp
+++ b/src/sensors/qsensorbackend.cpp
@@ -147,7 +147,7 @@ QSensor *QSensorBackend::sensor() const
}
/*!
- \fn QSensorBackend::setReading(T *reading)
+ \fn QSensorBackend<T>::setReading(T *reading)
This function is called to initialize the \a reading
classes used for a sensor.
diff --git a/src/sensors/sensors.pro b/src/sensors/sensors.pro
index e66d427f..eaaa73fd 100644
--- a/src/sensors/sensors.pro
+++ b/src/sensors/sensors.pro
@@ -13,8 +13,6 @@ qtHaveModule(simulator) {
QMAKE_DOCS = $$PWD/doc/qtsensors.qdocconf
ANDROID_BUNDLED_JAR_DEPENDENCIES = \
- jar/QtSensors-bundled.jar:org.qtproject.qt5.android.sensors.QtSensors
-ANDROID_JAR_DEPENDENCIES = \
jar/QtSensors.jar:org.qtproject.qt5.android.sensors.QtSensors
ANDROID_LIB_DEPENDENCIES = \
plugins/sensors/libqtsensors_android.so
diff --git a/tests/auto/bic/data/QtSensors.5.10.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtSensors.5.10.0.linux-gcc-amd64.txt
new file mode 100644
index 00000000..d9e83226
--- /dev/null
+++ b/tests/auto/bic/data/QtSensors.5.10.0.linux-gcc-amd64.txt
@@ -0,0 +1,6386 @@
+Class std::__failure_type
+ size=1 align=1
+ base size=0 base align=1
+std::__failure_type (0x0x7f7bad9498a0) 0 empty
+
+Class std::__do_is_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_destructible_impl (0x0x7f7bada3c060) 0 empty
+
+Class std::__do_is_nt_destructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nt_destructible_impl (0x0x7f7bada3c2a0) 0 empty
+
+Class std::__do_is_default_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_default_constructible_impl (0x0x7f7bada3c4e0) 0 empty
+
+Class std::__do_is_static_castable_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_static_castable_impl (0x0x7f7bada3c720) 0 empty
+
+Class std::__do_is_direct_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_direct_constructible_impl (0x0x7f7bada3c8a0) 0 empty
+
+Class std::__do_is_nary_constructible_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_is_nary_constructible_impl (0x0x7f7bada3cc60) 0 empty
+
+Class std::__do_common_type_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__do_common_type_impl (0x0x7f7bab6f8420) 0 empty
+
+Class std::__do_member_type_wrapper
+ size=1 align=1
+ base size=0 base align=1
+std::__do_member_type_wrapper (0x0x7f7bab6f84e0) 0 empty
+
+Class std::__result_of_memfun_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_ref_impl (0x0x7f7bab6f8840) 0 empty
+
+Class std::__result_of_memfun_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memfun_deref_impl (0x0x7f7bab6f8900) 0 empty
+
+Class std::__result_of_memobj_ref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_ref_impl (0x0x7f7bab6f89c0) 0 empty
+
+Class std::__result_of_memobj_deref_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_memobj_deref_impl (0x0x7f7bab6f8a80) 0 empty
+
+Class std::__result_of_other_impl
+ size=1 align=1
+ base size=0 base align=1
+std::__result_of_other_impl (0x0x7f7bab6f8d20) 0 empty
+
+Class std::piecewise_construct_t
+ size=1 align=1
+ base size=0 base align=1
+std::piecewise_construct_t (0x0x7f7bab6f8f00) 0 empty
+
+Class std::__true_type
+ size=1 align=1
+ base size=0 base align=1
+std::__true_type (0x0x7f7bab76c3c0) 0 empty
+
+Class std::__false_type
+ size=1 align=1
+ base size=0 base align=1
+std::__false_type (0x0x7f7bab76c420) 0 empty
+
+Class std::input_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::input_iterator_tag (0x0x7f7bab7de0c0) 0 empty
+
+Class std::output_iterator_tag
+ size=1 align=1
+ base size=0 base align=1
+std::output_iterator_tag (0x0x7f7bab7de120) 0 empty
+
+Class std::forward_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::forward_iterator_tag (0x0x7f7bab6b1bc8) 0 empty
+ std::input_iterator_tag (0x0x7f7bab7de180) 0 empty
+
+Class std::bidirectional_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::bidirectional_iterator_tag (0x0x7f7bab6b1c30) 0 empty
+ std::forward_iterator_tag (0x0x7f7bab6b1c98) 0 empty
+ std::input_iterator_tag (0x0x7f7bab7de1e0) 0 empty
+
+Class std::random_access_iterator_tag
+ size=1 align=1
+ base size=1 base align=1
+std::random_access_iterator_tag (0x0x7f7bab6b1d00) 0 empty
+ std::bidirectional_iterator_tag (0x0x7f7bab6b1d68) 0 empty
+ std::forward_iterator_tag (0x0x7f7bab6b1dd0) 0 empty
+ std::input_iterator_tag (0x0x7f7bab7de240) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_iter (0x0x7f7bab7deea0) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_less_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_less_val (0x0x7f7bab7def00) 0 empty
+
+Class __gnu_cxx::__ops::_Val_less_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Val_less_iter (0x0x7f7bab7def60) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_iter
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_iter (0x0x7f7bab499000) 0 empty
+
+Class __gnu_cxx::__ops::_Iter_equal_to_val
+ size=1 align=1
+ base size=0 base align=1
+__gnu_cxx::__ops::_Iter_equal_to_val (0x0x7f7bab499060) 0 empty
+
+Class wait
+ size=4 align=4
+ base size=4 base align=4
+wait (0x0x7f7bab499b40) 0
+
+Class __locale_struct
+ size=232 align=8
+ base size=232 base align=8
+__locale_struct (0x0x7f7bab499d80) 0
+
+Class timespec
+ size=16 align=8
+ base size=16 base align=8
+timespec (0x0x7f7bab499e40) 0
+
+Class timeval
+ size=16 align=8
+ base size=16 base align=8
+timeval (0x0x7f7bab499ea0) 0
+
+Class pthread_attr_t
+ size=56 align=8
+ base size=56 base align=8
+pthread_attr_t (0x0x7f7bab499f60) 0
+
+Class __pthread_internal_list
+ size=16 align=8
+ base size=16 base align=8
+__pthread_internal_list (0x0x7f7bab550000) 0
+
+Class random_data
+ size=48 align=8
+ base size=48 base align=8
+random_data (0x0x7f7bab550480) 0
+
+Class drand48_data
+ size=24 align=8
+ base size=24 base align=8
+drand48_data (0x0x7f7bab5504e0) 0
+
+Vtable for std::exception
+std::exception::_ZTVSt9exception: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9exception)
+16 (int (*)(...))std::exception::~exception
+24 (int (*)(...))std::exception::~exception
+32 (int (*)(...))std::exception::what
+
+Class std::exception
+ size=8 align=8
+ base size=8 base align=8
+std::exception (0x0x7f7bab550540) 0 nearly-empty
+ vptr=((& std::exception::_ZTVSt9exception) + 16u)
+
+Vtable for std::bad_exception
+std::bad_exception::_ZTVSt13bad_exception: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13bad_exception)
+16 (int (*)(...))std::bad_exception::~bad_exception
+24 (int (*)(...))std::bad_exception::~bad_exception
+32 (int (*)(...))std::bad_exception::what
+
+Class std::bad_exception
+ size=8 align=8
+ base size=8 base align=8
+std::bad_exception (0x0x7f7bab803340) 0 nearly-empty
+ vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16u)
+ std::exception (0x0x7f7bab5505a0) 0 nearly-empty
+ primary-for std::bad_exception (0x0x7f7bab803340)
+
+Class std::__exception_ptr::exception_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::__exception_ptr::exception_ptr (0x0x7f7bab550600) 0
+
+Vtable for std::nested_exception
+std::nested_exception::_ZTVSt16nested_exception: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16nested_exception)
+16 (int (*)(...))std::nested_exception::~nested_exception
+24 (int (*)(...))std::nested_exception::~nested_exception
+
+Class std::nested_exception
+ size=16 align=8
+ base size=16 base align=8
+std::nested_exception (0x0x7f7bab550660) 0
+ vptr=((& std::nested_exception::_ZTVSt16nested_exception) + 16u)
+
+Vtable for std::bad_alloc
+std::bad_alloc::_ZTVSt9bad_alloc: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9bad_alloc)
+16 (int (*)(...))std::bad_alloc::~bad_alloc
+24 (int (*)(...))std::bad_alloc::~bad_alloc
+32 (int (*)(...))std::bad_alloc::what
+
+Class std::bad_alloc
+ size=8 align=8
+ base size=8 base align=8
+std::bad_alloc (0x0x7f7bab803548) 0 nearly-empty
+ vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16u)
+ std::exception (0x0x7f7bab550a80) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7f7bab803548)
+
+Vtable for std::bad_array_new_length
+std::bad_array_new_length::_ZTVSt20bad_array_new_length: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt20bad_array_new_length)
+16 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+24 (int (*)(...))std::bad_array_new_length::~bad_array_new_length
+32 (int (*)(...))std::bad_array_new_length::what
+
+Class std::bad_array_new_length
+ size=8 align=8
+ base size=8 base align=8
+std::bad_array_new_length (0x0x7f7bab8035b0) 0 nearly-empty
+ vptr=((& std::bad_array_new_length::_ZTVSt20bad_array_new_length) + 16u)
+ std::bad_alloc (0x0x7f7bab803618) 0 nearly-empty
+ primary-for std::bad_array_new_length (0x0x7f7bab8035b0)
+ std::exception (0x0x7f7bab550ae0) 0 nearly-empty
+ primary-for std::bad_alloc (0x0x7f7bab803618)
+
+Class std::nothrow_t
+ size=1 align=1
+ base size=0 base align=1
+std::nothrow_t (0x0x7f7bab550b40) 0 empty
+
+Class __exception
+ size=40 align=8
+ base size=40 base align=8
+__exception (0x0x7f7bab2c7780) 0
+
+Class lconv
+ size=96 align=8
+ base size=96 base align=8
+lconv (0x0x7f7bab0cd480) 0
+
+Vtable for __cxxabiv1::__forced_unwind
+__cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN10__cxxabiv115__forced_unwindE)
+16 0u
+24 0u
+32 (int (*)(...))__cxa_pure_virtual
+
+Class __cxxabiv1::__forced_unwind
+ size=8 align=8
+ base size=8 base align=8
+__cxxabiv1::__forced_unwind (0x0x7f7bab0cd4e0) 0 nearly-empty
+ vptr=((& __cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE) + 16u)
+
+Class sched_param
+ size=4 align=4
+ base size=4 base align=4
+sched_param (0x0x7f7bab16e3c0) 0
+
+Class __sched_param
+ size=4 align=4
+ base size=4 base align=4
+__sched_param (0x0x7f7bab16e420) 0
+
+Class timex
+ size=208 align=8
+ base size=208 base align=8
+timex (0x0x7f7bab16e4e0) 0
+
+Class tm
+ size=56 align=8
+ base size=56 base align=8
+tm (0x0x7f7bab16e540) 0
+
+Class itimerspec
+ size=32 align=8
+ base size=32 base align=8
+itimerspec (0x0x7f7bab16e5a0) 0
+
+Class _pthread_cleanup_buffer
+ size=32 align=8
+ base size=32 base align=8
+_pthread_cleanup_buffer (0x0x7f7bab16e600) 0
+
+Class __pthread_cleanup_frame
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_frame (0x0x7f7bab16e720) 0
+
+Class __pthread_cleanup_class
+ size=24 align=8
+ base size=24 base align=8
+__pthread_cleanup_class (0x0x7f7bab16e780) 0
+
+Class _IO_marker
+ size=24 align=8
+ base size=24 base align=8
+_IO_marker (0x0x7f7bab16eba0) 0
+
+Class _IO_FILE
+ size=216 align=8
+ base size=216 base align=8
+_IO_FILE (0x0x7f7bab16ec00) 0
+
+Class std::_Hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Hash_impl (0x0x7f7baacab420) 0 empty
+
+Class std::_Fnv_hash_impl
+ size=1 align=1
+ base size=0 base align=1
+std::_Fnv_hash_impl (0x0x7f7baacab480) 0 empty
+
+Class std::__numeric_limits_base
+ size=1 align=1
+ base size=0 base align=1
+std::__numeric_limits_base (0x0x7f7baad64420) 0 empty
+
+Class std::_Bit_reference
+ size=16 align=8
+ base size=16 base align=8
+std::_Bit_reference (0x0x7f7baab1a240) 0
+
+Class std::_Bit_iterator_base
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator_base (0x0x7f7baaa61208) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f7baab1a300) 0 empty
+
+Class std::_Bit_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_iterator (0x0x7f7baaa61270) 0
+ std::_Bit_iterator_base (0x0x7f7baaa612d8) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f7baab1a360) 0 empty
+
+Class std::_Bit_const_iterator
+ size=16 align=8
+ base size=12 base align=8
+std::_Bit_const_iterator (0x0x7f7baaa61340) 0
+ std::_Bit_iterator_base (0x0x7f7baaa613a8) 0
+ std::iterator<std::random_access_iterator_tag, bool> (0x0x7f7baab1a3c0) 0 empty
+
+Class std::random_device
+ size=5000 align=8
+ base size=5000 base align=8
+std::random_device (0x0x7f7baa92a1e0) 0
+
+Class std::bernoulli_distribution::param_type
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution::param_type (0x0x7f7baa92af60) 0
+
+Class std::bernoulli_distribution
+ size=8 align=8
+ base size=8 base align=8
+std::bernoulli_distribution (0x0x7f7baa92af00) 0
+
+Class std::seed_seq
+ size=24 align=8
+ base size=24 base align=8
+std::seed_seq (0x0x7f7baa692f00) 0
+
+Class qIsNull(double)::U
+ size=8 align=8
+ base size=8 base align=8
+qIsNull(double)::U (0x0x7f7ba925ea20) 0
+
+Class qIsNull(float)::U
+ size=4 align=4
+ base size=4 base align=4
+qIsNull(float)::U (0x0x7f7ba925ea80) 0
+
+Class QSysInfo
+ size=1 align=1
+ base size=0 base align=1
+QSysInfo (0x0x7f7ba939d540) 0 empty
+
+Class QMessageLogContext
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogContext (0x0x7f7ba939d5a0) 0
+
+Class QMessageLogger
+ size=32 align=8
+ base size=32 base align=8
+QMessageLogger (0x0x7f7ba939d600) 0
+
+Class QFlag
+ size=4 align=4
+ base size=4 base align=4
+QFlag (0x0x7f7ba939d660) 0
+
+Class QIncompatibleFlag
+ size=4 align=4
+ base size=4 base align=4
+QIncompatibleFlag (0x0x7f7ba939d900) 0
+
+Class std::__atomic_flag_base
+ size=1 align=1
+ base size=1 base align=1
+std::__atomic_flag_base (0x0x7f7ba939de40) 0
+
+Class std::atomic_flag
+ size=1 align=1
+ base size=1 base align=1
+std::atomic_flag (0x0x7f7ba93ee270) 0
+ std::__atomic_flag_base (0x0x7f7ba939dea0) 0
+
+Class QAtomicInt
+ size=4 align=4
+ base size=4 base align=4
+QAtomicInt (0x0x7f7ba93ee9c0) 0
+ QAtomicInteger<int> (0x0x7f7ba93eea28) 0
+ QBasicAtomicInteger<int> (0x0x7f7ba8f46600) 0
+
+Class QInternal
+ size=1 align=1
+ base size=0 base align=1
+QInternal (0x0x7f7ba8deeba0) 0 empty
+
+Class QtPrivate::QSlotObjectBase
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::QSlotObjectBase (0x0x7f7ba8c0dc00) 0
+
+Class QGenericArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericArgument (0x0x7f7ba8c0dd20) 0
+
+Class QGenericReturnArgument
+ size=16 align=8
+ base size=16 base align=8
+QGenericReturnArgument (0x0x7f7ba8c37478) 0
+ QGenericArgument (0x0x7f7ba8c0dd80) 0
+
+Class QMetaObject
+ size=48 align=8
+ base size=48 base align=8
+QMetaObject (0x0x7f7ba8c0df00) 0
+
+Class QMetaObject::Connection
+ size=8 align=8
+ base size=8 base align=8
+QMetaObject::Connection (0x0x7f7ba88b2000) 0
+
+Class QLatin1Char
+ size=1 align=1
+ base size=1 base align=1
+QLatin1Char (0x0x7f7ba8931060) 0
+
+Class QChar
+ size=2 align=2
+ base size=2 base align=2
+QChar (0x0x7f7ba89310c0) 0
+
+Class QtPrivate::RefCount
+ size=4 align=4
+ base size=4 base align=4
+QtPrivate::RefCount (0x0x7f7ba8931360) 0
+
+Class QArrayData
+ size=24 align=8
+ base size=24 base align=8
+QArrayData (0x0x7f7ba89313c0) 0
+
+Class QtPrivate::QContainerImplHelper
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QContainerImplHelper (0x0x7f7ba8931720) 0 empty
+
+Class std::locale
+ size=8 align=8
+ base size=8 base align=8
+std::locale (0x0x7f7ba8931780) 0
+
+Vtable for std::locale::facet
+std::locale::facet::_ZTVNSt6locale5facetE: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6locale5facetE)
+16 (int (*)(...))std::locale::facet::~facet
+24 (int (*)(...))std::locale::facet::~facet
+
+Class std::locale::facet
+ size=16 align=8
+ base size=12 base align=8
+std::locale::facet (0x0x7f7ba89317e0) 0
+ vptr=((& std::locale::facet::_ZTVNSt6locale5facetE) + 16u)
+
+Class std::locale::id
+ size=8 align=8
+ base size=8 base align=8
+std::locale::id (0x0x7f7ba8931840) 0
+
+Class std::locale::_Impl
+ size=40 align=8
+ base size=40 base align=8
+std::locale::_Impl (0x0x7f7ba89318a0) 0
+
+Class std::__cow_string
+ size=8 align=8
+ base size=8 base align=8
+std::__cow_string (0x0x7f7ba8931c60) 0
+
+Vtable for std::logic_error
+std::logic_error::_ZTVSt11logic_error: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11logic_error)
+16 (int (*)(...))std::logic_error::~logic_error
+24 (int (*)(...))std::logic_error::~logic_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::logic_error
+ size=16 align=8
+ base size=16 base align=8
+std::logic_error (0x0x7f7ba8a06a90) 0
+ vptr=((& std::logic_error::_ZTVSt11logic_error) + 16u)
+ std::exception (0x0x7f7ba8931d20) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f7ba8a06a90)
+
+Vtable for std::domain_error
+std::domain_error::_ZTVSt12domain_error: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12domain_error)
+16 (int (*)(...))std::domain_error::~domain_error
+24 (int (*)(...))std::domain_error::~domain_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::domain_error
+ size=16 align=8
+ base size=16 base align=8
+std::domain_error (0x0x7f7ba8a06af8) 0
+ vptr=((& std::domain_error::_ZTVSt12domain_error) + 16u)
+ std::logic_error (0x0x7f7ba8a06b60) 0
+ primary-for std::domain_error (0x0x7f7ba8a06af8)
+ std::exception (0x0x7f7ba8931d80) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f7ba8a06b60)
+
+Vtable for std::invalid_argument
+std::invalid_argument::_ZTVSt16invalid_argument: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt16invalid_argument)
+16 (int (*)(...))std::invalid_argument::~invalid_argument
+24 (int (*)(...))std::invalid_argument::~invalid_argument
+32 (int (*)(...))std::logic_error::what
+
+Class std::invalid_argument
+ size=16 align=8
+ base size=16 base align=8
+std::invalid_argument (0x0x7f7ba8a06bc8) 0
+ vptr=((& std::invalid_argument::_ZTVSt16invalid_argument) + 16u)
+ std::logic_error (0x0x7f7ba8a06c30) 0
+ primary-for std::invalid_argument (0x0x7f7ba8a06bc8)
+ std::exception (0x0x7f7ba8931de0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f7ba8a06c30)
+
+Vtable for std::length_error
+std::length_error::_ZTVSt12length_error: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12length_error)
+16 (int (*)(...))std::length_error::~length_error
+24 (int (*)(...))std::length_error::~length_error
+32 (int (*)(...))std::logic_error::what
+
+Class std::length_error
+ size=16 align=8
+ base size=16 base align=8
+std::length_error (0x0x7f7ba8a06c98) 0
+ vptr=((& std::length_error::_ZTVSt12length_error) + 16u)
+ std::logic_error (0x0x7f7ba8a06d00) 0
+ primary-for std::length_error (0x0x7f7ba8a06c98)
+ std::exception (0x0x7f7ba8931e40) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f7ba8a06d00)
+
+Vtable for std::out_of_range
+std::out_of_range::_ZTVSt12out_of_range: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12out_of_range)
+16 (int (*)(...))std::out_of_range::~out_of_range
+24 (int (*)(...))std::out_of_range::~out_of_range
+32 (int (*)(...))std::logic_error::what
+
+Class std::out_of_range
+ size=16 align=8
+ base size=16 base align=8
+std::out_of_range (0x0x7f7ba8a06d68) 0
+ vptr=((& std::out_of_range::_ZTVSt12out_of_range) + 16u)
+ std::logic_error (0x0x7f7ba8a06dd0) 0
+ primary-for std::out_of_range (0x0x7f7ba8a06d68)
+ std::exception (0x0x7f7ba8931ea0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f7ba8a06dd0)
+
+Vtable for std::runtime_error
+std::runtime_error::_ZTVSt13runtime_error: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt13runtime_error)
+16 (int (*)(...))std::runtime_error::~runtime_error
+24 (int (*)(...))std::runtime_error::~runtime_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::runtime_error
+ size=16 align=8
+ base size=16 base align=8
+std::runtime_error (0x0x7f7ba8a06e38) 0
+ vptr=((& std::runtime_error::_ZTVSt13runtime_error) + 16u)
+ std::exception (0x0x7f7ba8931f00) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f7ba8a06e38)
+
+Vtable for std::range_error
+std::range_error::_ZTVSt11range_error: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt11range_error)
+16 (int (*)(...))std::range_error::~range_error
+24 (int (*)(...))std::range_error::~range_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::range_error
+ size=16 align=8
+ base size=16 base align=8
+std::range_error (0x0x7f7ba8a06ea0) 0
+ vptr=((& std::range_error::_ZTVSt11range_error) + 16u)
+ std::runtime_error (0x0x7f7ba8a06f08) 0
+ primary-for std::range_error (0x0x7f7ba8a06ea0)
+ std::exception (0x0x7f7ba8931f60) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f7ba8a06f08)
+
+Vtable for std::overflow_error
+std::overflow_error::_ZTVSt14overflow_error: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt14overflow_error)
+16 (int (*)(...))std::overflow_error::~overflow_error
+24 (int (*)(...))std::overflow_error::~overflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::overflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::overflow_error (0x0x7f7ba8a06f70) 0
+ vptr=((& std::overflow_error::_ZTVSt14overflow_error) + 16u)
+ std::runtime_error (0x0x7f7ba8a067b8) 0
+ primary-for std::overflow_error (0x0x7f7ba8a06f70)
+ std::exception (0x0x7f7ba86f6000) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f7ba8a067b8)
+
+Vtable for std::underflow_error
+std::underflow_error::_ZTVSt15underflow_error: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt15underflow_error)
+16 (int (*)(...))std::underflow_error::~underflow_error
+24 (int (*)(...))std::underflow_error::~underflow_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::underflow_error
+ size=16 align=8
+ base size=16 base align=8
+std::underflow_error (0x0x7f7ba8a06888) 0
+ vptr=((& std::underflow_error::_ZTVSt15underflow_error) + 16u)
+ std::runtime_error (0x0x7f7ba86f9000) 0
+ primary-for std::underflow_error (0x0x7f7ba8a06888)
+ std::exception (0x0x7f7ba86f6060) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f7ba86f9000)
+
+Vtable for std::_V2::error_category
+std::_V2::error_category::_ZTVNSt3_V214error_categoryE: 10u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt3_V214error_categoryE)
+16 0u
+24 0u
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))std::_V2::error_category::_M_message
+48 (int (*)(...))__cxa_pure_virtual
+56 (int (*)(...))std::_V2::error_category::default_error_condition
+64 (int (*)(...))std::_V2::error_category::equivalent
+72 (int (*)(...))std::_V2::error_category::equivalent
+
+Class std::_V2::error_category
+ size=8 align=8
+ base size=8 base align=8
+std::_V2::error_category (0x0x7f7ba86f61e0) 0 nearly-empty
+ vptr=((& std::_V2::error_category::_ZTVNSt3_V214error_categoryE) + 16u)
+
+Class std::error_code
+ size=16 align=8
+ base size=16 base align=8
+std::error_code (0x0x7f7ba86f6420) 0
+
+Class std::error_condition
+ size=16 align=8
+ base size=16 base align=8
+std::error_condition (0x0x7f7ba86f65a0) 0
+
+Vtable for std::system_error
+std::system_error::_ZTVSt12system_error: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12system_error)
+16 (int (*)(...))std::system_error::~system_error
+24 (int (*)(...))std::system_error::~system_error
+32 (int (*)(...))std::runtime_error::what
+
+Class std::system_error
+ size=32 align=8
+ base size=32 base align=8
+std::system_error (0x0x7f7ba86f94e0) 0
+ vptr=((& std::system_error::_ZTVSt12system_error) + 16u)
+ std::runtime_error (0x0x7f7ba86f9548) 0
+ primary-for std::system_error (0x0x7f7ba86f94e0)
+ std::exception (0x0x7f7ba86f67e0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f7ba86f9548)
+
+Vtable for std::ios_base::failure
+std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt8ios_base7failureB5cxx11E)
+16 (int (*)(...))std::ios_base::failure::~failure
+24 (int (*)(...))std::ios_base::failure::~failure
+32 (int (*)(...))std::ios_base::failure::what
+
+Class std::ios_base::failure
+ size=32 align=8
+ base size=32 base align=8
+std::ios_base::failure (0x0x7f7ba8773138) 0
+ vptr=((& std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E) + 16u)
+ std::system_error (0x0x7f7ba87731a0) 0
+ primary-for std::ios_base::failure (0x0x7f7ba8773138)
+ std::runtime_error (0x0x7f7ba8773208) 0
+ primary-for std::system_error (0x0x7f7ba87731a0)
+ std::exception (0x0x7f7ba86f6ae0) 0 nearly-empty
+ primary-for std::runtime_error (0x0x7f7ba8773208)
+
+Class std::ios_base::_Callback_list
+ size=24 align=8
+ base size=24 base align=8
+std::ios_base::_Callback_list (0x0x7f7ba86f6b40) 0
+
+Class std::ios_base::_Words
+ size=16 align=8
+ base size=16 base align=8
+std::ios_base::_Words (0x0x7f7ba86f6ba0) 0
+
+Class std::ios_base::Init
+ size=1 align=1
+ base size=0 base align=1
+std::ios_base::Init (0x0x7f7ba86f6c00) 0 empty
+
+Vtable for std::ios_base
+std::ios_base::_ZTVSt8ios_base: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8ios_base)
+16 (int (*)(...))std::ios_base::~ios_base
+24 (int (*)(...))std::ios_base::~ios_base
+
+Class std::ios_base
+ size=216 align=8
+ base size=216 base align=8
+std::ios_base (0x0x7f7ba86f6a80) 0
+ vptr=((& std::ios_base::_ZTVSt8ios_base) + 16u)
+
+Class std::ctype_base
+ size=1 align=1
+ base size=0 base align=1
+std::ctype_base (0x0x7f7ba88343c0) 0 empty
+
+Class std::__num_base
+ size=1 align=1
+ base size=0 base align=1
+std::__num_base (0x0x7f7ba8834a80) 0 empty
+
+VTT for std::basic_ostream<char>
+std::basic_ostream<char>::_ZTTSo: 2u entries
+0 ((& std::basic_ostream<char>::_ZTVSo) + 24u)
+8 ((& std::basic_ostream<char>::_ZTVSo) + 64u)
+
+VTT for std::basic_ostream<wchar_t>
+std::basic_ostream<wchar_t>::_ZTTSt13basic_ostreamIwSt11char_traitsIwEE: 2u entries
+0 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 24u)
+8 ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 64u)
+
+VTT for std::basic_istream<char>
+std::basic_istream<char>::_ZTTSi: 2u entries
+0 ((& std::basic_istream<char>::_ZTVSi) + 24u)
+8 ((& std::basic_istream<char>::_ZTVSi) + 64u)
+
+VTT for std::basic_istream<wchar_t>
+std::basic_istream<wchar_t>::_ZTTSt13basic_istreamIwSt11char_traitsIwEE: 2u entries
+0 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 24u)
+8 ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 64u)
+
+Construction vtable for std::basic_istream<char> (0x0x7f7ba83dad00 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd0_Si: 10u entries
+0 24u
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISi)
+24 0u
+32 0u
+40 18446744073709551592u
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISi)
+64 0u
+72 0u
+
+Construction vtable for std::basic_ostream<char> (0x0x7f7ba83dadd0 instance) in std::basic_iostream<char>
+std::basic_iostream<char>::_ZTCSd16_So: 10u entries
+0 8u
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISo)
+24 0u
+32 0u
+40 18446744073709551608u
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISo)
+64 0u
+72 0u
+
+VTT for std::basic_iostream<char>
+std::basic_iostream<char>::_ZTTSd: 7u entries
+0 ((& std::basic_iostream<char>::_ZTVSd) + 24u)
+8 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 24u)
+16 ((& std::basic_iostream<char>::_ZTCSd0_Si) + 64u)
+24 ((& std::basic_iostream<char>::_ZTCSd16_So) + 24u)
+32 ((& std::basic_iostream<char>::_ZTCSd16_So) + 64u)
+40 ((& std::basic_iostream<char>::_ZTVSd) + 104u)
+48 ((& std::basic_iostream<char>::_ZTVSd) + 64u)
+
+Construction vtable for std::basic_istream<wchar_t> (0x0x7f7ba83da270 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E: 10u entries
+0 24u
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+24 0u
+32 0u
+40 18446744073709551592u
+48 (int (*)(...))-24
+56 (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
+64 0u
+72 0u
+
+Construction vtable for std::basic_ostream<wchar_t> (0x0x7f7ba83da3a8 instance) in std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E: 10u entries
+0 8u
+8 (int (*)(...))0
+16 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+24 0u
+32 0u
+40 18446744073709551608u
+48 (int (*)(...))-8
+56 (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
+64 0u
+72 0u
+
+VTT for std::basic_iostream<wchar_t>
+std::basic_iostream<wchar_t>::_ZTTSt14basic_iostreamIwSt11char_traitsIwEE: 7u entries
+0 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 24u)
+8 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 24u)
+16 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 64u)
+24 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 24u)
+32 ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 64u)
+40 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 104u)
+48 ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 64u)
+
+Class QByteArrayDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QByteArrayDataPtr (0x0x7f7ba83e4300) 0
+
+Class QByteArray
+ size=8 align=8
+ base size=8 base align=8
+QByteArray (0x0x7f7ba83e4360) 0
+
+Class QByteRef
+ size=16 align=8
+ base size=12 base align=8
+QByteRef (0x0x7f7ba816a6c0) 0
+
+Class QStringDataPtr
+ size=8 align=8
+ base size=8 base align=8
+QStringDataPtr (0x0x7f7ba816aa20) 0
+
+Class QStringView
+ size=16 align=8
+ base size=16 base align=8
+QStringView (0x0x7f7ba816aea0) 0
+
+Class QLatin1String
+ size=16 align=8
+ base size=16 base align=8
+QLatin1String (0x0x7f7ba7e9dd20) 0
+
+Class QString::Null
+ size=1 align=1
+ base size=0 base align=1
+QString::Null (0x0x7f7ba7f283c0) 0 empty
+
+Class QString
+ size=8 align=8
+ base size=8 base align=8
+QString (0x0x7f7ba7f28360) 0
+
+Class QCharRef
+ size=16 align=8
+ base size=12 base align=8
+QCharRef (0x0x7f7ba7cce480) 0
+
+Class QStringRef
+ size=16 align=8
+ base size=16 base align=8
+QStringRef (0x0x7f7ba7a7e0c0) 0
+
+Class QtPrivate::QHashCombine
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombine (0x0x7f7ba7a7ecc0) 0 empty
+
+Class QtPrivate::QHashCombineCommutative
+ size=1 align=1
+ base size=0 base align=1
+QtPrivate::QHashCombineCommutative (0x0x7f7ba7a7ed20) 0 empty
+
+Class std::__detail::_List_node_base
+ size=16 align=8
+ base size=16 base align=8
+std::__detail::_List_node_base (0x0x7f7ba7a7ed80) 0
+
+Class QListData::NotArrayCompatibleLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotArrayCompatibleLayout (0x0x7f7ba786e180) 0 empty
+
+Class QListData::NotIndirectLayout
+ size=1 align=1
+ base size=0 base align=1
+QListData::NotIndirectLayout (0x0x7f7ba786e1e0) 0 empty
+
+Class QListData::ArrayCompatibleLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::ArrayCompatibleLayout (0x0x7f7ba7ad9a28) 0 empty
+ QListData::NotIndirectLayout (0x0x7f7ba786e240) 0 empty
+
+Class QListData::InlineWithPaddingLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::InlineWithPaddingLayout (0x0x7f7ba7906690) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7f7ba786e2a0) 0 empty
+ QListData::NotIndirectLayout (0x0x7f7ba786e300) 0 empty
+
+Class QListData::IndirectLayout
+ size=1 align=1
+ base size=1 base align=1
+QListData::IndirectLayout (0x0x7f7ba7ad9a90) 0 empty
+ QListData::NotArrayCompatibleLayout (0x0x7f7ba786e360) 0 empty
+
+Class QListData::Data
+ size=24 align=8
+ base size=24 base align=8
+QListData::Data (0x0x7f7ba786e3c0) 0
+
+Class QListData
+ size=8 align=8
+ base size=8 base align=8
+QListData (0x0x7f7ba786e120) 0
+
+Class QRegExp
+ size=8 align=8
+ base size=8 base align=8
+QRegExp (0x0x7f7ba786e840) 0
+
+Class QStringMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QStringMatcher::Data (0x0x7f7ba76b2a80) 0
+
+Class QStringMatcher
+ size=1048 align=8
+ base size=1048 base align=8
+QStringMatcher (0x0x7f7ba76b2a20) 0
+
+Class QStringList
+ size=8 align=8
+ base size=8 base align=8
+QStringList (0x0x7f7ba76bd4e0) 0
+ QList<QString> (0x0x7f7ba76bd548) 0
+ QListSpecialMethods<QString> (0x0x7f7ba76b2c60) 0 empty
+
+Class QScopedPointerPodDeleter
+ size=1 align=1
+ base size=0 base align=1
+QScopedPointerPodDeleter (0x0x7f7ba774f0c0) 0 empty
+
+Class std::_Rb_tree_node_base
+ size=32 align=8
+ base size=32 base align=8
+std::_Rb_tree_node_base (0x0x7f7ba774fba0) 0
+
+Class std::allocator_arg_t
+ size=1 align=1
+ base size=0 base align=1
+std::allocator_arg_t (0x0x7f7ba752b240) 0 empty
+
+Class std::__uses_alloc_base
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc_base (0x0x7f7ba752b3c0) 0 empty
+
+Class std::__uses_alloc0::_Sink
+ size=1 align=1
+ base size=0 base align=1
+std::__uses_alloc0::_Sink (0x0x7f7ba752b480) 0 empty
+
+Class std::__uses_alloc0
+ size=1 align=1
+ base size=1 base align=1
+std::__uses_alloc0 (0x0x7f7ba76bde38) 0
+ std::__uses_alloc_base (0x0x7f7ba752b420) 0 empty
+
+Class std::_Swallow_assign
+ size=1 align=1
+ base size=0 base align=1
+std::_Swallow_assign (0x0x7f7ba72424e0) 0 empty
+
+Class QtPrivate::AbstractDebugStreamFunction
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::AbstractDebugStreamFunction (0x0x7f7ba7242720) 0
+
+Class QtPrivate::AbstractComparatorFunction
+ size=24 align=8
+ base size=24 base align=8
+QtPrivate::AbstractComparatorFunction (0x0x7f7ba72427e0) 0
+
+Class QtPrivate::AbstractConverterFunction
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::AbstractConverterFunction (0x0x7f7ba7242900) 0
+
+Class QMetaType
+ size=80 align=8
+ base size=80 base align=8
+QMetaType (0x0x7f7ba7242a80) 0
+
+Class QtMetaTypePrivate::VariantData
+ size=24 align=8
+ base size=20 base align=8
+QtMetaTypePrivate::VariantData (0x0x7f7ba7242ea0) 0
+
+Class QtMetaTypePrivate::VectorBoolElements
+ size=1 align=1
+ base size=0 base align=1
+QtMetaTypePrivate::VectorBoolElements (0x0x7f7ba7399000) 0 empty
+
+Class QtMetaTypePrivate::QSequentialIterableImpl
+ size=104 align=8
+ base size=104 base align=8
+QtMetaTypePrivate::QSequentialIterableImpl (0x0x7f7ba7399960) 0
+
+Class QtMetaTypePrivate::QAssociativeIterableImpl
+ size=112 align=8
+ base size=112 base align=8
+QtMetaTypePrivate::QAssociativeIterableImpl (0x0x7f7ba7399d80) 0
+
+Class QtMetaTypePrivate::QPairVariantInterfaceImpl
+ size=40 align=8
+ base size=40 base align=8
+QtMetaTypePrivate::QPairVariantInterfaceImpl (0x0x7f7ba70740c0) 0
+
+Class std::chrono::_V2::system_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::system_clock (0x0x7f7ba6e88900) 0 empty
+
+Class std::chrono::_V2::steady_clock
+ size=1 align=1
+ base size=0 base align=1
+std::chrono::_V2::steady_clock (0x0x7f7ba6fe9780) 0 empty
+
+Vtable for QObjectData
+QObjectData::_ZTV11QObjectData: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QObjectData)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))__cxa_pure_virtual
+
+Class QObjectData
+ size=48 align=8
+ base size=48 base align=8
+QObjectData (0x0x7f7ba6fe97e0) 0
+ vptr=((& QObjectData::_ZTV11QObjectData) + 16u)
+
+Class QObject::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObject::QPrivateSignal (0x0x7f7ba6fe99c0) 0 empty
+
+Vtable for QObject
+QObject::_ZTV7QObject: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QObject)
+16 (int (*)(...))QObject::metaObject
+24 (int (*)(...))QObject::qt_metacast
+32 (int (*)(...))QObject::qt_metacall
+40 (int (*)(...))QObject::~QObject
+48 (int (*)(...))QObject::~QObject
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObject
+ size=16 align=8
+ base size=16 base align=8
+QObject (0x0x7f7ba6fe9960) 0
+ vptr=((& QObject::_ZTV7QObject) + 16u)
+
+Vtable for QObjectUserData
+QObjectUserData::_ZTV15QObjectUserData: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QObjectUserData)
+16 (int (*)(...))QObjectUserData::~QObjectUserData
+24 (int (*)(...))QObjectUserData::~QObjectUserData
+
+Class QObjectUserData
+ size=8 align=8
+ base size=8 base align=8
+QObjectUserData (0x0x7f7ba6cb0c60) 0 nearly-empty
+ vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16u)
+
+Class QSignalBlocker
+ size=16 align=8
+ base size=10 base align=8
+QSignalBlocker (0x0x7f7ba6cb0cc0) 0
+
+Class QAbstractAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractAnimation::QPrivateSignal (0x0x7f7ba6cb0d80) 0 empty
+
+Vtable for QAbstractAnimation
+QAbstractAnimation::_ZTV18QAbstractAnimation: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractAnimation)
+16 (int (*)(...))QAbstractAnimation::metaObject
+24 (int (*)(...))QAbstractAnimation::qt_metacast
+32 (int (*)(...))QAbstractAnimation::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QAbstractAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAbstractAnimation
+ size=16 align=8
+ base size=16 base align=8
+QAbstractAnimation (0x0x7f7ba6cdf068) 0
+ vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16u)
+ QObject (0x0x7f7ba6cb0d20) 0
+ primary-for QAbstractAnimation (0x0x7f7ba6cdf068)
+
+Class QAnimationDriver::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationDriver::QPrivateSignal (0x0x7f7ba6cb0e40) 0 empty
+
+Vtable for QAnimationDriver
+QAnimationDriver::_ZTV16QAnimationDriver: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAnimationDriver)
+16 (int (*)(...))QAnimationDriver::metaObject
+24 (int (*)(...))QAnimationDriver::qt_metacast
+32 (int (*)(...))QAnimationDriver::qt_metacall
+40 (int (*)(...))QAnimationDriver::~QAnimationDriver
+48 (int (*)(...))QAnimationDriver::~QAnimationDriver
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAnimationDriver::advance
+120 (int (*)(...))QAnimationDriver::elapsed
+128 (int (*)(...))QAnimationDriver::start
+136 (int (*)(...))QAnimationDriver::stop
+
+Class QAnimationDriver
+ size=16 align=8
+ base size=16 base align=8
+QAnimationDriver (0x0x7f7ba6cdf0d0) 0
+ vptr=((& QAnimationDriver::_ZTV16QAnimationDriver) + 16u)
+ QObject (0x0x7f7ba6cb0de0) 0
+ primary-for QAnimationDriver (0x0x7f7ba6cdf0d0)
+
+Class QEventLoop::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventLoop::QPrivateSignal (0x0x7f7ba6cb0f00) 0 empty
+
+Vtable for QEventLoop
+QEventLoop::_ZTV10QEventLoop: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QEventLoop)
+16 (int (*)(...))QEventLoop::metaObject
+24 (int (*)(...))QEventLoop::qt_metacast
+32 (int (*)(...))QEventLoop::qt_metacall
+40 (int (*)(...))QEventLoop::~QEventLoop
+48 (int (*)(...))QEventLoop::~QEventLoop
+56 (int (*)(...))QEventLoop::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QEventLoop
+ size=16 align=8
+ base size=16 base align=8
+QEventLoop (0x0x7f7ba6cdf138) 0
+ vptr=((& QEventLoop::_ZTV10QEventLoop) + 16u)
+ QObject (0x0x7f7ba6cb0ea0) 0
+ primary-for QEventLoop (0x0x7f7ba6cdf138)
+
+Class QEventLoopLocker
+ size=8 align=8
+ base size=8 base align=8
+QEventLoopLocker (0x0x7f7ba6d38120) 0
+
+Class QAbstractEventDispatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractEventDispatcher::QPrivateSignal (0x0x7f7ba6d381e0) 0 empty
+
+Class QAbstractEventDispatcher::TimerInfo
+ size=12 align=4
+ base size=12 base align=4
+QAbstractEventDispatcher::TimerInfo (0x0x7f7ba6d38240) 0
+
+Vtable for QAbstractEventDispatcher
+QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 28u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
+16 (int (*)(...))QAbstractEventDispatcher::metaObject
+24 (int (*)(...))QAbstractEventDispatcher::qt_metacast
+32 (int (*)(...))QAbstractEventDispatcher::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))__cxa_pure_virtual
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))__cxa_pure_virtual
+176 (int (*)(...))__cxa_pure_virtual
+184 (int (*)(...))__cxa_pure_virtual
+192 (int (*)(...))__cxa_pure_virtual
+200 (int (*)(...))__cxa_pure_virtual
+208 (int (*)(...))QAbstractEventDispatcher::startingUp
+216 (int (*)(...))QAbstractEventDispatcher::closingDown
+
+Class QAbstractEventDispatcher
+ size=16 align=8
+ base size=16 base align=8
+QAbstractEventDispatcher (0x0x7f7ba6cdf270) 0
+ vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16u)
+ QObject (0x0x7f7ba6d38180) 0
+ primary-for QAbstractEventDispatcher (0x0x7f7ba6cdf270)
+
+Vtable for std::type_info
+std::type_info::_ZTVSt9type_info: 8u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt9type_info)
+16 (int (*)(...))std::type_info::~type_info
+24 (int (*)(...))std::type_info::~type_info
+32 (int (*)(...))std::type_info::__is_pointer_p
+40 (int (*)(...))std::type_info::__is_function_p
+48 (int (*)(...))std::type_info::__do_catch
+56 (int (*)(...))std::type_info::__do_upcast
+
+Class std::type_info
+ size=16 align=8
+ base size=16 base align=8
+std::type_info (0x0x7f7ba6d384e0) 0
+ vptr=((& std::type_info::_ZTVSt9type_info) + 16u)
+
+Vtable for std::bad_cast
+std::bad_cast::_ZTVSt8bad_cast: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt8bad_cast)
+16 (int (*)(...))std::bad_cast::~bad_cast
+24 (int (*)(...))std::bad_cast::~bad_cast
+32 (int (*)(...))std::bad_cast::what
+
+Class std::bad_cast
+ size=8 align=8
+ base size=8 base align=8
+std::bad_cast (0x0x7f7ba6cdf478) 0 nearly-empty
+ vptr=((& std::bad_cast::_ZTVSt8bad_cast) + 16u)
+ std::exception (0x0x7f7ba6d38540) 0 nearly-empty
+ primary-for std::bad_cast (0x0x7f7ba6cdf478)
+
+Vtable for std::bad_typeid
+std::bad_typeid::_ZTVSt10bad_typeid: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt10bad_typeid)
+16 (int (*)(...))std::bad_typeid::~bad_typeid
+24 (int (*)(...))std::bad_typeid::~bad_typeid
+32 (int (*)(...))std::bad_typeid::what
+
+Class std::bad_typeid
+ size=8 align=8
+ base size=8 base align=8
+std::bad_typeid (0x0x7f7ba6cdf4e0) 0 nearly-empty
+ vptr=((& std::bad_typeid::_ZTVSt10bad_typeid) + 16u)
+ std::exception (0x0x7f7ba6d385a0) 0 nearly-empty
+ primary-for std::bad_typeid (0x0x7f7ba6cdf4e0)
+
+Vtable for std::bad_function_call
+std::bad_function_call::_ZTVSt17bad_function_call: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt17bad_function_call)
+16 (int (*)(...))std::bad_function_call::~bad_function_call
+24 (int (*)(...))std::bad_function_call::~bad_function_call
+32 (int (*)(...))std::bad_function_call::what
+
+Class std::bad_function_call
+ size=8 align=8
+ base size=8 base align=8
+std::bad_function_call (0x0x7f7ba6a9b750) 0 nearly-empty
+ vptr=((& std::bad_function_call::_ZTVSt17bad_function_call) + 16u)
+ std::exception (0x0x7f7ba6afe660) 0 nearly-empty
+ primary-for std::bad_function_call (0x0x7f7ba6a9b750)
+
+Class std::_Nocopy_types
+ size=16 align=8
+ base size=16 base align=8
+std::_Nocopy_types (0x0x7f7ba6afe720) 0
+
+Class std::_Any_data
+ size=16 align=8
+ base size=16 base align=8
+std::_Any_data (0x0x7f7ba6afe780) 0
+
+Class std::_Function_base
+ size=24 align=8
+ base size=24 base align=8
+std::_Function_base (0x0x7f7ba6afe8a0) 0
+
+Class QMapNodeBase
+ size=24 align=8
+ base size=24 base align=8
+QMapNodeBase (0x0x7f7ba6afed80) 0
+
+Class QMapDataBase
+ size=40 align=8
+ base size=40 base align=8
+QMapDataBase (0x0x7f7ba6bb0300) 0
+
+Class QHashData::Node
+ size=16 align=8
+ base size=16 base align=8
+QHashData::Node (0x0x7f7ba6bb06c0) 0
+
+Class QHashData
+ size=48 align=8
+ base size=44 base align=8
+QHashData (0x0x7f7ba6bb0660) 0
+
+Class QHashDummyValue
+ size=1 align=1
+ base size=0 base align=1
+QHashDummyValue (0x0x7f7ba6bb0720) 0 empty
+
+Class QVariant::PrivateShared
+ size=16 align=8
+ base size=12 base align=8
+QVariant::PrivateShared (0x0x7f7ba69ea000) 0
+
+Class QVariant::Private::Data
+ size=8 align=8
+ base size=8 base align=8
+QVariant::Private::Data (0x0x7f7ba69ea0c0) 0
+
+Class QVariant::Private
+ size=16 align=8
+ base size=12 base align=8
+QVariant::Private (0x0x7f7ba69ea060) 0
+
+Class QVariant::Handler
+ size=72 align=8
+ base size=72 base align=8
+QVariant::Handler (0x0x7f7ba69ea120) 0
+
+Class QVariant
+ size=16 align=8
+ base size=16 base align=8
+QVariant (0x0x7f7ba6bb0f60) 0
+
+Class QVariantComparisonHelper
+ size=8 align=8
+ base size=8 base align=8
+QVariantComparisonHelper (0x0x7f7ba668dc00) 0
+
+Class QSequentialIterable::const_iterator
+ size=112 align=8
+ base size=112 base align=8
+QSequentialIterable::const_iterator (0x0x7f7ba67322a0) 0
+
+Class QSequentialIterable
+ size=104 align=8
+ base size=104 base align=8
+QSequentialIterable (0x0x7f7ba6732240) 0
+
+Class QAssociativeIterable::const_iterator
+ size=120 align=8
+ base size=120 base align=8
+QAssociativeIterable::const_iterator (0x0x7f7ba6732360) 0
+
+Class QAssociativeIterable
+ size=112 align=8
+ base size=112 base align=8
+QAssociativeIterable (0x0x7f7ba6732300) 0
+
+Class QModelIndex
+ size=24 align=8
+ base size=24 base align=8
+QModelIndex (0x0x7f7ba6453660) 0
+
+Class QPersistentModelIndex
+ size=8 align=8
+ base size=8 base align=8
+QPersistentModelIndex (0x0x7f7ba6453d20) 0
+
+Class QAbstractItemModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractItemModel::QPrivateSignal (0x0x7f7ba6226480) 0 empty
+
+Vtable for QAbstractItemModel
+QAbstractItemModel::_ZTV18QAbstractItemModel: 48u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractItemModel)
+16 (int (*)(...))QAbstractItemModel::metaObject
+24 (int (*)(...))QAbstractItemModel::qt_metacast
+32 (int (*)(...))QAbstractItemModel::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractItemModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractItemModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractItemModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractItemModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractItemModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractItemModel (0x0x7f7ba62284e0) 0
+ vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16u)
+ QObject (0x0x7f7ba6226420) 0
+ primary-for QAbstractItemModel (0x0x7f7ba62284e0)
+
+Class QAbstractTableModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTableModel::QPrivateSignal (0x0x7f7ba62267e0) 0 empty
+
+Vtable for QAbstractTableModel
+QAbstractTableModel::_ZTV19QAbstractTableModel: 48u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTableModel)
+16 (int (*)(...))QAbstractTableModel::metaObject
+24 (int (*)(...))QAbstractTableModel::qt_metacast
+32 (int (*)(...))QAbstractTableModel::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractTableModel::index
+120 (int (*)(...))QAbstractTableModel::parent
+128 (int (*)(...))QAbstractTableModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractTableModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractTableModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractTableModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractTableModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTableModel (0x0x7f7ba62286e8) 0
+ vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16u)
+ QAbstractItemModel (0x0x7f7ba6228750) 0
+ primary-for QAbstractTableModel (0x0x7f7ba62286e8)
+ QObject (0x0x7f7ba6226780) 0
+ primary-for QAbstractItemModel (0x0x7f7ba6228750)
+
+Class QAbstractListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractListModel::QPrivateSignal (0x0x7f7ba62268a0) 0 empty
+
+Vtable for QAbstractListModel
+QAbstractListModel::_ZTV18QAbstractListModel: 48u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QAbstractListModel)
+16 (int (*)(...))QAbstractListModel::metaObject
+24 (int (*)(...))QAbstractListModel::qt_metacast
+32 (int (*)(...))QAbstractListModel::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QAbstractListModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))__cxa_pure_virtual
+168 (int (*)(...))QAbstractItemModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QAbstractItemModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QAbstractListModel::flags
+328 (int (*)(...))QAbstractItemModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QAbstractListModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractListModel (0x0x7f7ba62287b8) 0
+ vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16u)
+ QAbstractItemModel (0x0x7f7ba6228820) 0
+ primary-for QAbstractListModel (0x0x7f7ba62287b8)
+ QObject (0x0x7f7ba6226840) 0
+ primary-for QAbstractItemModel (0x0x7f7ba6228820)
+
+Vtable for QAbstractNativeEventFilter
+QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAbstractNativeEventFilter)
+16 0u
+24 0u
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractNativeEventFilter
+ size=16 align=8
+ base size=16 base align=8
+QAbstractNativeEventFilter (0x0x7f7ba6226b40) 0
+ vptr=((& QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter) + 16u)
+
+Class QAbstractProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractProxyModel::QPrivateSignal (0x0x7f7ba6226c00) 0 empty
+
+Vtable for QAbstractProxyModel
+QAbstractProxyModel::_ZTV19QAbstractProxyModel: 53u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractProxyModel)
+16 (int (*)(...))QAbstractProxyModel::metaObject
+24 (int (*)(...))QAbstractProxyModel::qt_metacast
+32 (int (*)(...))QAbstractProxyModel::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractProxyModel::sibling
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QAbstractProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QAbstractProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QAbstractItemModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QAbstractItemModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QAbstractProxyModel::setSourceModel
+392 (int (*)(...))__cxa_pure_virtual
+400 (int (*)(...))__cxa_pure_virtual
+408 (int (*)(...))QAbstractProxyModel::mapSelectionToSource
+416 (int (*)(...))QAbstractProxyModel::mapSelectionFromSource
+
+Class QAbstractProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QAbstractProxyModel (0x0x7f7ba6228958) 0
+ vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16u)
+ QAbstractItemModel (0x0x7f7ba62289c0) 0
+ primary-for QAbstractProxyModel (0x0x7f7ba6228958)
+ QObject (0x0x7f7ba6226ba0) 0
+ primary-for QAbstractItemModel (0x0x7f7ba62289c0)
+
+Class QAbstractState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractState::QPrivateSignal (0x0x7f7ba6226cc0) 0 empty
+
+Vtable for QAbstractState
+QAbstractState::_ZTV14QAbstractState: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QAbstractState)
+16 (int (*)(...))QAbstractState::metaObject
+24 (int (*)(...))QAbstractState::qt_metacast
+32 (int (*)(...))QAbstractState::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QAbstractState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractState
+ size=16 align=8
+ base size=16 base align=8
+QAbstractState (0x0x7f7ba6228a28) 0
+ vptr=((& QAbstractState::_ZTV14QAbstractState) + 16u)
+ QObject (0x0x7f7ba6226c60) 0
+ primary-for QAbstractState (0x0x7f7ba6228a28)
+
+Class QAbstractTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAbstractTransition::QPrivateSignal (0x0x7f7ba6226d80) 0 empty
+
+Vtable for QAbstractTransition
+QAbstractTransition::_ZTV19QAbstractTransition: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAbstractTransition)
+16 (int (*)(...))QAbstractTransition::metaObject
+24 (int (*)(...))QAbstractTransition::qt_metacast
+32 (int (*)(...))QAbstractTransition::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QAbstractTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QAbstractTransition
+ size=16 align=8
+ base size=16 base align=8
+QAbstractTransition (0x0x7f7ba6228a90) 0
+ vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16u)
+ QObject (0x0x7f7ba6226d20) 0
+ primary-for QAbstractTransition (0x0x7f7ba6228a90)
+
+Class QAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAnimationGroup::QPrivateSignal (0x0x7f7ba6226e40) 0 empty
+
+Vtable for QAnimationGroup
+QAnimationGroup::_ZTV15QAnimationGroup: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QAnimationGroup)
+16 (int (*)(...))QAnimationGroup::metaObject
+24 (int (*)(...))QAnimationGroup::qt_metacast
+32 (int (*)(...))QAnimationGroup::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QAnimationGroup (0x0x7f7ba6228af8) 0
+ vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16u)
+ QAbstractAnimation (0x0x7f7ba6228b60) 0
+ primary-for QAnimationGroup (0x0x7f7ba6228af8)
+ QObject (0x0x7f7ba6226de0) 0
+ primary-for QAbstractAnimation (0x0x7f7ba6228b60)
+
+Class QBasicTimer
+ size=4 align=4
+ base size=4 base align=4
+QBasicTimer (0x0x7f7ba639cba0) 0
+
+Class QBitArray
+ size=8 align=8
+ base size=8 base align=8
+QBitArray (0x0x7f7ba639ce40) 0
+
+Class QBitRef
+ size=16 align=8
+ base size=12 base align=8
+QBitRef (0x0x7f7ba639cf00) 0
+
+Class QIODevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIODevice::QPrivateSignal (0x0x7f7ba6033240) 0 empty
+
+Vtable for QIODevice
+QIODevice::_ZTV9QIODevice: 30u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QIODevice)
+16 (int (*)(...))QIODevice::metaObject
+24 (int (*)(...))QIODevice::qt_metacast
+32 (int (*)(...))QIODevice::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QIODevice::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QIODevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))__cxa_pure_virtual
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))__cxa_pure_virtual
+
+Class QIODevice
+ size=16 align=8
+ base size=16 base align=8
+QIODevice (0x0x7f7ba6017208) 0
+ vptr=((& QIODevice::_ZTV9QIODevice) + 16u)
+ QObject (0x0x7f7ba60331e0) 0
+ primary-for QIODevice (0x0x7f7ba6017208)
+
+Class QBuffer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QBuffer::QPrivateSignal (0x0x7f7ba6033480) 0 empty
+
+Vtable for QBuffer
+QBuffer::_ZTV7QBuffer: 30u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QBuffer)
+16 (int (*)(...))QBuffer::metaObject
+24 (int (*)(...))QBuffer::qt_metacast
+32 (int (*)(...))QBuffer::qt_metacall
+40 (int (*)(...))QBuffer::~QBuffer
+48 (int (*)(...))QBuffer::~QBuffer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QBuffer::connectNotify
+104 (int (*)(...))QBuffer::disconnectNotify
+112 (int (*)(...))QIODevice::isSequential
+120 (int (*)(...))QBuffer::open
+128 (int (*)(...))QBuffer::close
+136 (int (*)(...))QBuffer::pos
+144 (int (*)(...))QBuffer::size
+152 (int (*)(...))QBuffer::seek
+160 (int (*)(...))QBuffer::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QBuffer::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QBuffer::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QBuffer::writeData
+
+Class QBuffer
+ size=16 align=8
+ base size=16 base align=8
+QBuffer (0x0x7f7ba6017340) 0
+ vptr=((& QBuffer::_ZTV7QBuffer) + 16u)
+ QIODevice (0x0x7f7ba60173a8) 0
+ primary-for QBuffer (0x0x7f7ba6017340)
+ QObject (0x0x7f7ba6033420) 0
+ primary-for QIODevice (0x0x7f7ba60173a8)
+
+Class QByteArrayMatcher::Data
+ size=272 align=8
+ base size=272 base align=8
+QByteArrayMatcher::Data (0x0x7f7ba6033540) 0
+
+Class QByteArrayMatcher
+ size=1040 align=8
+ base size=1040 base align=8
+QByteArrayMatcher (0x0x7f7ba60334e0) 0
+
+Class QStaticByteArrayMatcherBase::Skiptable
+ size=256 align=1
+ base size=256 base align=1
+QStaticByteArrayMatcherBase::Skiptable (0x0x7f7ba6033660) 0
+
+Class QStaticByteArrayMatcherBase
+ size=256 align=16
+ base size=256 base align=16
+QStaticByteArrayMatcherBase (0x0x7f7ba6033600) 0
+
+Class QSharedData
+ size=4 align=4
+ base size=4 base align=4
+QSharedData (0x0x7f7ba6033840) 0
+
+Class QLocale
+ size=8 align=8
+ base size=8 base align=8
+QLocale (0x0x7f7ba6033a20) 0
+
+Class QCollatorSortKey
+ size=8 align=8
+ base size=8 base align=8
+QCollatorSortKey (0x0x7f7ba61cc060) 0
+
+Class QCollator
+ size=8 align=8
+ base size=8 base align=8
+QCollator (0x0x7f7ba61cc120) 0
+
+Class QCommandLineOption
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineOption (0x0x7f7ba5e4c120) 0
+
+Vtable for QEvent
+QEvent::_ZTV6QEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QEvent)
+16 (int (*)(...))QEvent::~QEvent
+24 (int (*)(...))QEvent::~QEvent
+
+Class QEvent
+ size=24 align=8
+ base size=20 base align=8
+QEvent (0x0x7f7ba5e4c5a0) 0
+ vptr=((& QEvent::_ZTV6QEvent) + 16u)
+
+Vtable for QTimerEvent
+QTimerEvent::_ZTV11QTimerEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTimerEvent)
+16 (int (*)(...))QTimerEvent::~QTimerEvent
+24 (int (*)(...))QTimerEvent::~QTimerEvent
+
+Class QTimerEvent
+ size=24 align=8
+ base size=24 base align=8
+QTimerEvent (0x0x7f7ba5e3e888) 0
+ vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16u)
+ QEvent (0x0x7f7ba5e4c600) 0
+ primary-for QTimerEvent (0x0x7f7ba5e3e888)
+
+Vtable for QChildEvent
+QChildEvent::_ZTV11QChildEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QChildEvent)
+16 (int (*)(...))QChildEvent::~QChildEvent
+24 (int (*)(...))QChildEvent::~QChildEvent
+
+Class QChildEvent
+ size=32 align=8
+ base size=32 base align=8
+QChildEvent (0x0x7f7ba5e3e8f0) 0
+ vptr=((& QChildEvent::_ZTV11QChildEvent) + 16u)
+ QEvent (0x0x7f7ba5e4c660) 0
+ primary-for QChildEvent (0x0x7f7ba5e3e8f0)
+
+Vtable for QDynamicPropertyChangeEvent
+QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
+16 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+24 (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
+
+Class QDynamicPropertyChangeEvent
+ size=32 align=8
+ base size=32 base align=8
+QDynamicPropertyChangeEvent (0x0x7f7ba5e3ee38) 0
+ vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16u)
+ QEvent (0x0x7f7ba5e4cb40) 0
+ primary-for QDynamicPropertyChangeEvent (0x0x7f7ba5e3ee38)
+
+Vtable for QDeferredDeleteEvent
+QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QDeferredDeleteEvent)
+16 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+24 (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
+
+Class QDeferredDeleteEvent
+ size=24 align=8
+ base size=24 base align=8
+QDeferredDeleteEvent (0x0x7f7ba5e3eea0) 0
+ vptr=((& QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent) + 16u)
+ QEvent (0x0x7f7ba5e4cba0) 0
+ primary-for QDeferredDeleteEvent (0x0x7f7ba5e3eea0)
+
+Class QCoreApplication::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCoreApplication::QPrivateSignal (0x0x7f7ba5e4cc60) 0 empty
+
+Vtable for QCoreApplication
+QCoreApplication::_ZTV16QCoreApplication: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QCoreApplication)
+16 (int (*)(...))QCoreApplication::metaObject
+24 (int (*)(...))QCoreApplication::qt_metacast
+32 (int (*)(...))QCoreApplication::qt_metacall
+40 (int (*)(...))QCoreApplication::~QCoreApplication
+48 (int (*)(...))QCoreApplication::~QCoreApplication
+56 (int (*)(...))QCoreApplication::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCoreApplication::notify
+120 (int (*)(...))QCoreApplication::compressEvent
+
+Class QCoreApplication
+ size=16 align=8
+ base size=16 base align=8
+QCoreApplication (0x0x7f7ba5e3ef08) 0
+ vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16u)
+ QObject (0x0x7f7ba5e4cc00) 0
+ primary-for QCoreApplication (0x0x7f7ba5e3ef08)
+
+Class QCommandLineParser
+ size=8 align=8
+ base size=8 base align=8
+QCommandLineParser (0x0x7f7ba5e4ccc0) 0
+
+Class QContiguousCacheData
+ size=24 align=4
+ base size=24 base align=4
+QContiguousCacheData (0x0x7f7ba5e4cd20) 0
+
+Class QCryptographicHash
+ size=8 align=8
+ base size=8 base align=8
+QCryptographicHash (0x0x7f7ba5f21360) 0
+
+Class QDataStream
+ size=32 align=8
+ base size=32 base align=8
+QDataStream (0x0x7f7ba5f213c0) 0
+
+Class QtPrivate::StreamStateSaver
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::StreamStateSaver (0x0x7f7ba5f21480) 0
+
+Class QDate
+ size=8 align=8
+ base size=8 base align=8
+QDate (0x0x7f7ba5f21960) 0
+
+Class QTime
+ size=4 align=4
+ base size=4 base align=4
+QTime (0x0x7f7ba5f21c00) 0
+
+Class QDateTime::ShortData
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::ShortData (0x0x7f7ba5c023c0) 0
+
+Class QDateTime::Data
+ size=8 align=8
+ base size=8 base align=8
+QDateTime::Data (0x0x7f7ba5c02420) 0
+
+Class QDateTime
+ size=8 align=8
+ base size=8 base align=8
+QDateTime (0x0x7f7ba5c02360) 0
+
+Class QElapsedTimer
+ size=16 align=8
+ base size=16 base align=8
+QElapsedTimer (0x0x7f7ba5cb8540) 0
+
+Class QDeadlineTimer
+ size=16 align=8
+ base size=16 base align=8
+QDeadlineTimer (0x0x7f7ba5cb8a20) 0
+
+Vtable for QTextStream
+QTextStream::_ZTV11QTextStream: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTextStream)
+16 (int (*)(...))QTextStream::~QTextStream
+24 (int (*)(...))QTextStream::~QTextStream
+
+Class QTextStream
+ size=16 align=8
+ base size=16 base align=8
+QTextStream (0x0x7f7ba59d89c0) 0
+ vptr=((& QTextStream::_ZTV11QTextStream) + 16u)
+
+Class QTextStreamManipulator
+ size=40 align=8
+ base size=38 base align=8
+QTextStreamManipulator (0x0x7f7ba59d8c60) 0
+
+Class QtSharedPointer::NormalDeleter
+ size=1 align=1
+ base size=0 base align=1
+QtSharedPointer::NormalDeleter (0x0x7f7ba59d8ea0) 0 empty
+
+Class QtSharedPointer::ExternalRefCountData
+ size=16 align=8
+ base size=16 base align=8
+QtSharedPointer::ExternalRefCountData (0x0x7f7ba5b0e060) 0
+
+Class QDebug::Stream
+ size=80 align=8
+ base size=76 base align=8
+QDebug::Stream (0x0x7f7ba5b0e5a0) 0
+
+Class QDebug
+ size=8 align=8
+ base size=8 base align=8
+QDebug (0x0x7f7ba5b0e540) 0
+
+Class QDebugStateSaver
+ size=8 align=8
+ base size=8 base align=8
+QDebugStateSaver (0x0x7f7ba5876a80) 0
+
+Class QNoDebug
+ size=1 align=1
+ base size=0 base align=1
+QNoDebug (0x0x7f7ba5876b40) 0 empty
+
+Class QFileDevice::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileDevice::QPrivateSignal (0x0x7f7ba5947cc0) 0 empty
+
+Vtable for QFileDevice
+QFileDevice::_ZTV11QFileDevice: 34u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFileDevice)
+16 (int (*)(...))QFileDevice::metaObject
+24 (int (*)(...))QFileDevice::qt_metacast
+32 (int (*)(...))QFileDevice::qt_metacall
+40 (int (*)(...))QFileDevice::~QFileDevice
+48 (int (*)(...))QFileDevice::~QFileDevice
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QIODevice::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFileDevice::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QFileDevice
+ size=16 align=8
+ base size=16 base align=8
+QFileDevice (0x0x7f7ba594e680) 0
+ vptr=((& QFileDevice::_ZTV11QFileDevice) + 16u)
+ QIODevice (0x0x7f7ba594e750) 0
+ primary-for QFileDevice (0x0x7f7ba594e680)
+ QObject (0x0x7f7ba5947c60) 0
+ primary-for QIODevice (0x0x7f7ba594e750)
+
+Class QFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFile::QPrivateSignal (0x0x7f7ba5947f00) 0 empty
+
+Vtable for QFile
+QFile::_ZTV5QFile: 34u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI5QFile)
+16 (int (*)(...))QFile::metaObject
+24 (int (*)(...))QFile::qt_metacast
+32 (int (*)(...))QFile::qt_metacall
+40 (int (*)(...))QFile::~QFile
+48 (int (*)(...))QFile::~QFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QFile
+ size=16 align=8
+ base size=16 base align=8
+QFile (0x0x7f7ba594ebc8) 0
+ vptr=((& QFile::_ZTV5QFile) + 16u)
+ QFileDevice (0x0x7f7ba594ed68) 0
+ primary-for QFile (0x0x7f7ba594ebc8)
+ QIODevice (0x0x7f7ba594ee38) 0
+ primary-for QFileDevice (0x0x7f7ba594ed68)
+ QObject (0x0x7f7ba5947ea0) 0
+ primary-for QIODevice (0x0x7f7ba594ee38)
+
+Class QFileInfo
+ size=8 align=8
+ base size=8 base align=8
+QFileInfo (0x0x7f7ba55cc120) 0
+
+Class QDir
+ size=8 align=8
+ base size=8 base align=8
+QDir (0x0x7f7ba55cc540) 0
+
+Class QDirIterator
+ size=8 align=8
+ base size=8 base align=8
+QDirIterator (0x0x7f7ba55ccf00) 0
+
+Class QEasingCurve
+ size=8 align=8
+ base size=8 base align=8
+QEasingCurve (0x0x7f7ba56c3180) 0
+
+Class QEventTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QEventTransition::QPrivateSignal (0x0x7f7ba577a5a0) 0 empty
+
+Vtable for QEventTransition
+QEventTransition::_ZTV16QEventTransition: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QEventTransition)
+16 (int (*)(...))QEventTransition::metaObject
+24 (int (*)(...))QEventTransition::qt_metacast
+32 (int (*)(...))QEventTransition::qt_metacall
+40 (int (*)(...))QEventTransition::~QEventTransition
+48 (int (*)(...))QEventTransition::~QEventTransition
+56 (int (*)(...))QEventTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QEventTransition::eventTest
+120 (int (*)(...))QEventTransition::onTransition
+
+Class QEventTransition
+ size=16 align=8
+ base size=16 base align=8
+QEventTransition (0x0x7f7ba577b2d8) 0
+ vptr=((& QEventTransition::_ZTV16QEventTransition) + 16u)
+ QAbstractTransition (0x0x7f7ba577b340) 0
+ primary-for QEventTransition (0x0x7f7ba577b2d8)
+ QObject (0x0x7f7ba577a540) 0
+ primary-for QAbstractTransition (0x0x7f7ba577b340)
+
+Vtable for QException
+QException::_ZTV10QException: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QException)
+16 (int (*)(...))QException::~QException
+24 (int (*)(...))QException::~QException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QException::raise
+48 (int (*)(...))QException::clone
+
+Class QException
+ size=8 align=8
+ base size=8 base align=8
+QException (0x0x7f7ba577b3a8) 0 nearly-empty
+ vptr=((& QException::_ZTV10QException) + 16u)
+ std::exception (0x0x7f7ba577a600) 0 nearly-empty
+ primary-for QException (0x0x7f7ba577b3a8)
+
+Vtable for QUnhandledException
+QUnhandledException::_ZTV19QUnhandledException: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QUnhandledException)
+16 (int (*)(...))QUnhandledException::~QUnhandledException
+24 (int (*)(...))QUnhandledException::~QUnhandledException
+32 (int (*)(...))std::exception::what
+40 (int (*)(...))QUnhandledException::raise
+48 (int (*)(...))QUnhandledException::clone
+
+Class QUnhandledException
+ size=8 align=8
+ base size=8 base align=8
+QUnhandledException (0x0x7f7ba577b410) 0 nearly-empty
+ vptr=((& QUnhandledException::_ZTV19QUnhandledException) + 16u)
+ QException (0x0x7f7ba577b478) 0 nearly-empty
+ primary-for QUnhandledException (0x0x7f7ba577b410)
+ std::exception (0x0x7f7ba577a660) 0 nearly-empty
+ primary-for QException (0x0x7f7ba577b478)
+
+Class QtPrivate::ExceptionHolder
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionHolder (0x0x7f7ba577a6c0) 0
+
+Class QtPrivate::ExceptionStore
+ size=8 align=8
+ base size=8 base align=8
+QtPrivate::ExceptionStore (0x0x7f7ba577a780) 0
+
+Vtable for QFactoryInterface
+QFactoryInterface::_ZTV17QFactoryInterface: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QFactoryInterface)
+16 0u
+24 0u
+32 (int (*)(...))__cxa_pure_virtual
+
+Class QFactoryInterface
+ size=8 align=8
+ base size=8 base align=8
+QFactoryInterface (0x0x7f7ba577a7e0) 0 nearly-empty
+ vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 16u)
+
+Class QFileSelector::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSelector::QPrivateSignal (0x0x7f7ba577a900) 0 empty
+
+Vtable for QFileSelector
+QFileSelector::_ZTV13QFileSelector: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QFileSelector)
+16 (int (*)(...))QFileSelector::metaObject
+24 (int (*)(...))QFileSelector::qt_metacast
+32 (int (*)(...))QFileSelector::qt_metacall
+40 (int (*)(...))QFileSelector::~QFileSelector
+48 (int (*)(...))QFileSelector::~QFileSelector
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSelector
+ size=16 align=8
+ base size=16 base align=8
+QFileSelector (0x0x7f7ba577b4e0) 0
+ vptr=((& QFileSelector::_ZTV13QFileSelector) + 16u)
+ QObject (0x0x7f7ba577a8a0) 0
+ primary-for QFileSelector (0x0x7f7ba577b4e0)
+
+Class QFileSystemWatcher::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFileSystemWatcher::QPrivateSignal (0x0x7f7ba577a9c0) 0 empty
+
+Vtable for QFileSystemWatcher
+QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFileSystemWatcher)
+16 (int (*)(...))QFileSystemWatcher::metaObject
+24 (int (*)(...))QFileSystemWatcher::qt_metacast
+32 (int (*)(...))QFileSystemWatcher::qt_metacall
+40 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+48 (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QFileSystemWatcher
+ size=16 align=8
+ base size=16 base align=8
+QFileSystemWatcher (0x0x7f7ba577b548) 0
+ vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16u)
+ QObject (0x0x7f7ba577a960) 0
+ primary-for QFileSystemWatcher (0x0x7f7ba577b548)
+
+Class QFinalState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFinalState::QPrivateSignal (0x0x7f7ba577aa80) 0 empty
+
+Vtable for QFinalState
+QFinalState::_ZTV11QFinalState: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QFinalState)
+16 (int (*)(...))QFinalState::metaObject
+24 (int (*)(...))QFinalState::qt_metacast
+32 (int (*)(...))QFinalState::qt_metacall
+40 (int (*)(...))QFinalState::~QFinalState
+48 (int (*)(...))QFinalState::~QFinalState
+56 (int (*)(...))QFinalState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFinalState::onEntry
+120 (int (*)(...))QFinalState::onExit
+
+Class QFinalState
+ size=16 align=8
+ base size=16 base align=8
+QFinalState (0x0x7f7ba577b5b0) 0
+ vptr=((& QFinalState::_ZTV11QFinalState) + 16u)
+ QAbstractState (0x0x7f7ba577b618) 0
+ primary-for QFinalState (0x0x7f7ba577b5b0)
+ QObject (0x0x7f7ba577aa20) 0
+ primary-for QAbstractState (0x0x7f7ba577b618)
+
+Vtable for QRunnable
+QRunnable::_ZTV9QRunnable: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QRunnable)
+16 (int (*)(...))__cxa_pure_virtual
+24 0u
+32 0u
+
+Class QRunnable
+ size=16 align=8
+ base size=12 base align=8
+QRunnable (0x0x7f7ba577aae0) 0
+ vptr=((& QRunnable::_ZTV9QRunnable) + 16u)
+
+Class QBasicMutex
+ size=8 align=8
+ base size=8 base align=8
+QBasicMutex (0x0x7f7ba577ab40) 0
+
+Class QMutex
+ size=8 align=8
+ base size=8 base align=8
+QMutex (0x0x7f7ba577b750) 0
+ QBasicMutex (0x0x7f7ba577ad20) 0
+
+Class QMutexLocker
+ size=8 align=8
+ base size=8 base align=8
+QMutexLocker (0x0x7f7ba577ad80) 0
+
+Class QtPrivate::ResultItem
+ size=16 align=8
+ base size=16 base align=8
+QtPrivate::ResultItem (0x0x7f7ba577ade0) 0
+
+Class QtPrivate::ResultIteratorBase
+ size=16 align=8
+ base size=12 base align=8
+QtPrivate::ResultIteratorBase (0x0x7f7ba577ae40) 0
+
+Vtable for QtPrivate::ResultStoreBase
+QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9QtPrivate15ResultStoreBaseE)
+16 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+24 (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
+
+Class QtPrivate::ResultStoreBase
+ size=48 align=8
+ base size=44 base align=8
+QtPrivate::ResultStoreBase (0x0x7f7ba577af60) 0
+ vptr=((& QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE) + 16u)
+
+Vtable for QFutureInterfaceBase
+QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QFutureInterfaceBase)
+16 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+24 (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
+
+Class QFutureInterfaceBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureInterfaceBase (0x0x7f7ba54fd7e0) 0
+ vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16u)
+
+Class QFutureWatcherBase::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QFutureWatcherBase::QPrivateSignal (0x0x7f7ba55af000) 0 empty
+
+Vtable for QFutureWatcherBase
+QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QFutureWatcherBase)
+16 (int (*)(...))QFutureWatcherBase::metaObject
+24 (int (*)(...))QFutureWatcherBase::qt_metacast
+32 (int (*)(...))QFutureWatcherBase::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QFutureWatcherBase::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QFutureWatcherBase::connectNotify
+104 (int (*)(...))QFutureWatcherBase::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+
+Class QFutureWatcherBase
+ size=16 align=8
+ base size=16 base align=8
+QFutureWatcherBase (0x0x7f7ba550d888) 0
+ vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16u)
+ QObject (0x0x7f7ba54fdf60) 0
+ primary-for QFutureWatcherBase (0x0x7f7ba550d888)
+
+Class QHistoryState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHistoryState::QPrivateSignal (0x0x7f7ba55af600) 0 empty
+
+Vtable for QHistoryState
+QHistoryState::_ZTV13QHistoryState: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QHistoryState)
+16 (int (*)(...))QHistoryState::metaObject
+24 (int (*)(...))QHistoryState::qt_metacast
+32 (int (*)(...))QHistoryState::qt_metacall
+40 (int (*)(...))QHistoryState::~QHistoryState
+48 (int (*)(...))QHistoryState::~QHistoryState
+56 (int (*)(...))QHistoryState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QHistoryState::onEntry
+120 (int (*)(...))QHistoryState::onExit
+
+Class QHistoryState
+ size=16 align=8
+ base size=16 base align=8
+QHistoryState (0x0x7f7ba51e41a0) 0
+ vptr=((& QHistoryState::_ZTV13QHistoryState) + 16u)
+ QAbstractState (0x0x7f7ba51e4208) 0
+ primary-for QHistoryState (0x0x7f7ba51e41a0)
+ QObject (0x0x7f7ba55af5a0) 0
+ primary-for QAbstractState (0x0x7f7ba51e4208)
+
+Class QIdentityProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIdentityProxyModel::QPrivateSignal (0x0x7f7ba55af6c0) 0 empty
+
+Vtable for QIdentityProxyModel
+QIdentityProxyModel::_ZTV19QIdentityProxyModel: 53u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QIdentityProxyModel)
+16 (int (*)(...))QIdentityProxyModel::metaObject
+24 (int (*)(...))QIdentityProxyModel::qt_metacast
+32 (int (*)(...))QIdentityProxyModel::qt_metacall
+40 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+48 (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIdentityProxyModel::index
+120 (int (*)(...))QIdentityProxyModel::parent
+128 (int (*)(...))QIdentityProxyModel::sibling
+136 (int (*)(...))QIdentityProxyModel::rowCount
+144 (int (*)(...))QIdentityProxyModel::columnCount
+152 (int (*)(...))QAbstractProxyModel::hasChildren
+160 (int (*)(...))QAbstractProxyModel::data
+168 (int (*)(...))QAbstractProxyModel::setData
+176 (int (*)(...))QIdentityProxyModel::headerData
+184 (int (*)(...))QAbstractProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QAbstractProxyModel::mimeTypes
+216 (int (*)(...))QAbstractProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QIdentityProxyModel::dropMimeData
+240 (int (*)(...))QAbstractProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QIdentityProxyModel::insertRows
+264 (int (*)(...))QIdentityProxyModel::insertColumns
+272 (int (*)(...))QIdentityProxyModel::removeRows
+280 (int (*)(...))QIdentityProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractProxyModel::fetchMore
+312 (int (*)(...))QAbstractProxyModel::canFetchMore
+320 (int (*)(...))QAbstractProxyModel::flags
+328 (int (*)(...))QAbstractProxyModel::sort
+336 (int (*)(...))QAbstractProxyModel::buddy
+344 (int (*)(...))QIdentityProxyModel::match
+352 (int (*)(...))QAbstractProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QIdentityProxyModel::setSourceModel
+392 (int (*)(...))QIdentityProxyModel::mapToSource
+400 (int (*)(...))QIdentityProxyModel::mapFromSource
+408 (int (*)(...))QIdentityProxyModel::mapSelectionToSource
+416 (int (*)(...))QIdentityProxyModel::mapSelectionFromSource
+
+Class QIdentityProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QIdentityProxyModel (0x0x7f7ba51e4270) 0
+ vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16u)
+ QAbstractProxyModel (0x0x7f7ba51e42d8) 0
+ primary-for QIdentityProxyModel (0x0x7f7ba51e4270)
+ QAbstractItemModel (0x0x7f7ba51e4340) 0
+ primary-for QAbstractProxyModel (0x0x7f7ba51e42d8)
+ QObject (0x0x7f7ba55af660) 0
+ primary-for QAbstractItemModel (0x0x7f7ba51e4340)
+
+Class QItemSelectionRange
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionRange (0x0x7f7ba55af720) 0
+
+Class QItemSelectionModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QItemSelectionModel::QPrivateSignal (0x0x7f7ba55afde0) 0 empty
+
+Vtable for QItemSelectionModel
+QItemSelectionModel::_ZTV19QItemSelectionModel: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QItemSelectionModel)
+16 (int (*)(...))QItemSelectionModel::metaObject
+24 (int (*)(...))QItemSelectionModel::qt_metacast
+32 (int (*)(...))QItemSelectionModel::qt_metacall
+40 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+48 (int (*)(...))QItemSelectionModel::~QItemSelectionModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QItemSelectionModel::setCurrentIndex
+120 (int (*)(...))QItemSelectionModel::select
+128 (int (*)(...))QItemSelectionModel::select
+136 (int (*)(...))QItemSelectionModel::clear
+144 (int (*)(...))QItemSelectionModel::reset
+152 (int (*)(...))QItemSelectionModel::clearCurrentIndex
+
+Class QItemSelectionModel
+ size=16 align=8
+ base size=16 base align=8
+QItemSelectionModel (0x0x7f7ba51e4b60) 0
+ vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16u)
+ QObject (0x0x7f7ba55afd80) 0
+ primary-for QItemSelectionModel (0x0x7f7ba51e4b60)
+
+Class QItemSelection
+ size=8 align=8
+ base size=8 base align=8
+QItemSelection (0x0x7f7ba51e4d68) 0
+ QList<QItemSelectionRange> (0x0x7f7ba51e4dd0) 0
+ QListSpecialMethods<QItemSelectionRange> (0x0x7f7ba52a7120) 0 empty
+
+Class QJsonValue
+ size=24 align=8
+ base size=20 base align=8
+QJsonValue (0x0x7f7ba52a7600) 0
+
+Class QJsonValueRef
+ size=16 align=8
+ base size=12 base align=8
+QJsonValueRef (0x0x7f7ba5044d20) 0
+
+Class QJsonValuePtr
+ size=24 align=8
+ base size=24 base align=8
+QJsonValuePtr (0x0x7f7ba50ab2a0) 0
+
+Class QJsonValueRefPtr
+ size=16 align=8
+ base size=16 base align=8
+QJsonValueRefPtr (0x0x7f7ba50ab300) 0
+
+Class QJsonArray::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::iterator (0x0x7f7ba50ab4e0) 0
+
+Class QJsonArray::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonArray::const_iterator (0x0x7f7ba50ab540) 0
+
+Class QJsonArray
+ size=16 align=8
+ base size=16 base align=8
+QJsonArray (0x0x7f7ba50ab480) 0
+
+Class QJsonParseError
+ size=8 align=4
+ base size=8 base align=4
+QJsonParseError (0x0x7f7ba516d780) 0
+
+Class QJsonDocument
+ size=8 align=8
+ base size=8 base align=8
+QJsonDocument (0x0x7f7ba516d7e0) 0
+
+Class QJsonObject::iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::iterator (0x0x7f7ba516de40) 0
+
+Class QJsonObject::const_iterator
+ size=16 align=8
+ base size=12 base align=8
+QJsonObject::const_iterator (0x0x7f7ba516dea0) 0
+
+Class QJsonObject
+ size=16 align=8
+ base size=16 base align=8
+QJsonObject (0x0x7f7ba516dde0) 0
+
+Class QLibrary::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLibrary::QPrivateSignal (0x0x7f7ba4eae180) 0 empty
+
+Vtable for QLibrary
+QLibrary::_ZTV8QLibrary: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QLibrary)
+16 (int (*)(...))QLibrary::metaObject
+24 (int (*)(...))QLibrary::qt_metacast
+32 (int (*)(...))QLibrary::qt_metacall
+40 (int (*)(...))QLibrary::~QLibrary
+48 (int (*)(...))QLibrary::~QLibrary
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QLibrary
+ size=32 align=8
+ base size=25 base align=8
+QLibrary (0x0x7f7ba4eaf138) 0
+ vptr=((& QLibrary::_ZTV8QLibrary) + 16u)
+ QObject (0x0x7f7ba4eae120) 0
+ primary-for QLibrary (0x0x7f7ba4eaf138)
+
+Class QVersionNumber::SegmentStorage
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber::SegmentStorage (0x0x7f7ba4eae840) 0
+
+Class QVersionNumber
+ size=8 align=8
+ base size=8 base align=8
+QVersionNumber (0x0x7f7ba4eae360) 0
+
+Class QLibraryInfo
+ size=1 align=1
+ base size=0 base align=1
+QLibraryInfo (0x0x7f7ba4eaed20) 0 empty
+
+Class QPoint
+ size=8 align=4
+ base size=8 base align=4
+QPoint (0x0x7f7ba4eaed80) 0
+
+Class QPointF
+ size=16 align=8
+ base size=16 base align=8
+QPointF (0x0x7f7ba4f88060) 0
+
+Class QLine
+ size=16 align=4
+ base size=16 base align=4
+QLine (0x0x7f7ba4f88300) 0
+
+Class QLineF
+ size=32 align=8
+ base size=32 base align=8
+QLineF (0x0x7f7ba4f88c60) 0
+
+Class QLinkedListData
+ size=32 align=8
+ base size=25 base align=8
+QLinkedListData (0x0x7f7ba4c43600) 0
+
+Class QLockFile
+ size=8 align=8
+ base size=8 base align=8
+QLockFile (0x0x7f7ba4c43960) 0
+
+Class QLoggingCategory::AtomicBools
+ size=4 align=1
+ base size=4 base align=1
+QLoggingCategory::AtomicBools (0x0x7f7ba4c43ae0) 0
+
+Class QLoggingCategory
+ size=24 align=8
+ base size=24 base align=8
+QLoggingCategory (0x0x7f7ba4c43a80) 0
+
+Class QMargins
+ size=16 align=4
+ base size=16 base align=4
+QMargins (0x0x7f7ba4c43c60) 0
+
+Class QMarginsF
+ size=32 align=8
+ base size=32 base align=8
+QMarginsF (0x0x7f7ba4c43f00) 0
+
+Class QMessageAuthenticationCode
+ size=8 align=8
+ base size=8 base align=8
+QMessageAuthenticationCode (0x0x7f7ba49cd5a0) 0
+
+Class QMetaMethod
+ size=16 align=8
+ base size=12 base align=8
+QMetaMethod (0x0x7f7ba49cd600) 0
+
+Class QMetaEnum
+ size=16 align=8
+ base size=12 base align=8
+QMetaEnum (0x0x7f7ba49cdc00) 0
+
+Class QMetaProperty
+ size=32 align=8
+ base size=32 base align=8
+QMetaProperty (0x0x7f7ba49cdf00) 0
+
+Class QMetaClassInfo
+ size=16 align=8
+ base size=12 base align=8
+QMetaClassInfo (0x0x7f7ba49cdf60) 0
+
+Class QMimeData::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMimeData::QPrivateSignal (0x0x7f7ba4a832a0) 0 empty
+
+Vtable for QMimeData
+QMimeData::_ZTV9QMimeData: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QMimeData)
+16 (int (*)(...))QMimeData::metaObject
+24 (int (*)(...))QMimeData::qt_metacast
+32 (int (*)(...))QMimeData::qt_metacall
+40 (int (*)(...))QMimeData::~QMimeData
+48 (int (*)(...))QMimeData::~QMimeData
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QMimeData::hasFormat
+120 (int (*)(...))QMimeData::formats
+128 (int (*)(...))QMimeData::retrieveData
+
+Class QMimeData
+ size=16 align=8
+ base size=16 base align=8
+QMimeData (0x0x7f7ba4a613a8) 0
+ vptr=((& QMimeData::_ZTV9QMimeData) + 16u)
+ QObject (0x0x7f7ba4a83240) 0
+ primary-for QMimeData (0x0x7f7ba4a613a8)
+
+Class QMimeType
+ size=8 align=8
+ base size=8 base align=8
+QMimeType (0x0x7f7ba4a83300) 0
+
+Class QMimeDatabase
+ size=8 align=8
+ base size=8 base align=8
+QMimeDatabase (0x0x7f7ba4a83600) 0
+
+Class QObjectCleanupHandler::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QObjectCleanupHandler::QPrivateSignal (0x0x7f7ba4a836c0) 0 empty
+
+Vtable for QObjectCleanupHandler
+QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QObjectCleanupHandler)
+16 (int (*)(...))QObjectCleanupHandler::metaObject
+24 (int (*)(...))QObjectCleanupHandler::qt_metacast
+32 (int (*)(...))QObjectCleanupHandler::qt_metacall
+40 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+48 (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QObjectCleanupHandler
+ size=24 align=8
+ base size=24 base align=8
+QObjectCleanupHandler (0x0x7f7ba4a615b0) 0
+ vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16u)
+ QObject (0x0x7f7ba4a83660) 0
+ primary-for QObjectCleanupHandler (0x0x7f7ba4a615b0)
+
+Class QOperatingSystemVersion
+ size=16 align=4
+ base size=16 base align=4
+QOperatingSystemVersion (0x0x7f7ba4a83720) 0
+
+Class QParallelAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QParallelAnimationGroup::QPrivateSignal (0x0x7f7ba4a83ea0) 0 empty
+
+Vtable for QParallelAnimationGroup
+QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QParallelAnimationGroup)
+16 (int (*)(...))QParallelAnimationGroup::metaObject
+24 (int (*)(...))QParallelAnimationGroup::qt_metacast
+32 (int (*)(...))QParallelAnimationGroup::qt_metacall
+40 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+48 (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
+56 (int (*)(...))QParallelAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QParallelAnimationGroup::duration
+120 (int (*)(...))QParallelAnimationGroup::updateCurrentTime
+128 (int (*)(...))QParallelAnimationGroup::updateState
+136 (int (*)(...))QParallelAnimationGroup::updateDirection
+
+Class QParallelAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QParallelAnimationGroup (0x0x7f7ba4a61d00) 0
+ vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16u)
+ QAnimationGroup (0x0x7f7ba4a61d68) 0
+ primary-for QParallelAnimationGroup (0x0x7f7ba4a61d00)
+ QAbstractAnimation (0x0x7f7ba4a61dd0) 0
+ primary-for QAnimationGroup (0x0x7f7ba4a61d68)
+ QObject (0x0x7f7ba4a83e40) 0
+ primary-for QAbstractAnimation (0x0x7f7ba4a61dd0)
+
+Class QPauseAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPauseAnimation::QPrivateSignal (0x0x7f7ba4a83f60) 0 empty
+
+Vtable for QPauseAnimation
+QPauseAnimation::_ZTV15QPauseAnimation: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QPauseAnimation)
+16 (int (*)(...))QPauseAnimation::metaObject
+24 (int (*)(...))QPauseAnimation::qt_metacast
+32 (int (*)(...))QPauseAnimation::qt_metacall
+40 (int (*)(...))QPauseAnimation::~QPauseAnimation
+48 (int (*)(...))QPauseAnimation::~QPauseAnimation
+56 (int (*)(...))QPauseAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPauseAnimation::duration
+120 (int (*)(...))QPauseAnimation::updateCurrentTime
+128 (int (*)(...))QAbstractAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+
+Class QPauseAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPauseAnimation (0x0x7f7ba4a61e38) 0
+ vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16u)
+ QAbstractAnimation (0x0x7f7ba4a61ea0) 0
+ primary-for QPauseAnimation (0x0x7f7ba4a61e38)
+ QObject (0x0x7f7ba4a83f00) 0
+ primary-for QAbstractAnimation (0x0x7f7ba4a61ea0)
+
+Class QStaticPlugin
+ size=16 align=8
+ base size=16 base align=8
+QStaticPlugin (0x0x7f7ba4b20180) 0
+
+Class QPluginLoader::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPluginLoader::QPrivateSignal (0x0x7f7ba4b20480) 0 empty
+
+Vtable for QPluginLoader
+QPluginLoader::_ZTV13QPluginLoader: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QPluginLoader)
+16 (int (*)(...))QPluginLoader::metaObject
+24 (int (*)(...))QPluginLoader::qt_metacast
+32 (int (*)(...))QPluginLoader::qt_metacall
+40 (int (*)(...))QPluginLoader::~QPluginLoader
+48 (int (*)(...))QPluginLoader::~QPluginLoader
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPluginLoader
+ size=32 align=8
+ base size=25 base align=8
+QPluginLoader (0x0x7f7ba4b3f068) 0
+ vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16u)
+ QObject (0x0x7f7ba4b20420) 0
+ primary-for QPluginLoader (0x0x7f7ba4b3f068)
+
+Class QProcessEnvironment
+ size=8 align=8
+ base size=8 base align=8
+QProcessEnvironment (0x0x7f7ba4b204e0) 0
+
+Class QProcess::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProcess::QPrivateSignal (0x0x7f7ba4b20ba0) 0 empty
+
+Vtable for QProcess
+QProcess::_ZTV8QProcess: 31u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QProcess)
+16 (int (*)(...))QProcess::metaObject
+24 (int (*)(...))QProcess::qt_metacast
+32 (int (*)(...))QProcess::qt_metacall
+40 (int (*)(...))QProcess::~QProcess
+48 (int (*)(...))QProcess::~QProcess
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QProcess::isSequential
+120 (int (*)(...))QProcess::open
+128 (int (*)(...))QProcess::close
+136 (int (*)(...))QIODevice::pos
+144 (int (*)(...))QIODevice::size
+152 (int (*)(...))QIODevice::seek
+160 (int (*)(...))QProcess::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QProcess::bytesAvailable
+184 (int (*)(...))QProcess::bytesToWrite
+192 (int (*)(...))QProcess::canReadLine
+200 (int (*)(...))QProcess::waitForReadyRead
+208 (int (*)(...))QProcess::waitForBytesWritten
+216 (int (*)(...))QProcess::readData
+224 (int (*)(...))QIODevice::readLineData
+232 (int (*)(...))QProcess::writeData
+240 (int (*)(...))QProcess::setupChildProcess
+
+Class QProcess
+ size=16 align=8
+ base size=16 base align=8
+QProcess (0x0x7f7ba4b3f6e8) 0
+ vptr=((& QProcess::_ZTV8QProcess) + 16u)
+ QIODevice (0x0x7f7ba4b3f750) 0
+ primary-for QProcess (0x0x7f7ba4b3f6e8)
+ QObject (0x0x7f7ba4b20b40) 0
+ primary-for QIODevice (0x0x7f7ba4b3f750)
+
+Class QVariantAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QVariantAnimation::QPrivateSignal (0x0x7f7ba4b20c60) 0 empty
+
+Vtable for QVariantAnimation
+QVariantAnimation::_ZTV17QVariantAnimation: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QVariantAnimation)
+16 (int (*)(...))QVariantAnimation::metaObject
+24 (int (*)(...))QVariantAnimation::qt_metacast
+32 (int (*)(...))QVariantAnimation::qt_metacall
+40 (int (*)(...))QVariantAnimation::~QVariantAnimation
+48 (int (*)(...))QVariantAnimation::~QVariantAnimation
+56 (int (*)(...))QVariantAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QVariantAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QVariantAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QVariantAnimation
+ size=16 align=8
+ base size=16 base align=8
+QVariantAnimation (0x0x7f7ba4b3f7b8) 0
+ vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16u)
+ QAbstractAnimation (0x0x7f7ba4b3f820) 0
+ primary-for QVariantAnimation (0x0x7f7ba4b3f7b8)
+ QObject (0x0x7f7ba4b20c00) 0
+ primary-for QAbstractAnimation (0x0x7f7ba4b3f820)
+
+Class QPropertyAnimation::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPropertyAnimation::QPrivateSignal (0x0x7f7ba4b20d20) 0 empty
+
+Vtable for QPropertyAnimation
+QPropertyAnimation::_ZTV18QPropertyAnimation: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QPropertyAnimation)
+16 (int (*)(...))QPropertyAnimation::metaObject
+24 (int (*)(...))QPropertyAnimation::qt_metacast
+32 (int (*)(...))QPropertyAnimation::qt_metacall
+40 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+48 (int (*)(...))QPropertyAnimation::~QPropertyAnimation
+56 (int (*)(...))QPropertyAnimation::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QVariantAnimation::duration
+120 (int (*)(...))QVariantAnimation::updateCurrentTime
+128 (int (*)(...))QPropertyAnimation::updateState
+136 (int (*)(...))QAbstractAnimation::updateDirection
+144 (int (*)(...))QPropertyAnimation::updateCurrentValue
+152 (int (*)(...))QVariantAnimation::interpolated
+
+Class QPropertyAnimation
+ size=16 align=8
+ base size=16 base align=8
+QPropertyAnimation (0x0x7f7ba4b3f8f0) 0
+ vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16u)
+ QVariantAnimation (0x0x7f7ba4b3f958) 0
+ primary-for QPropertyAnimation (0x0x7f7ba4b3f8f0)
+ QAbstractAnimation (0x0x7f7ba4b3f9c0) 0
+ primary-for QVariantAnimation (0x0x7f7ba4b3f958)
+ QObject (0x0x7f7ba4b20cc0) 0
+ primary-for QAbstractAnimation (0x0x7f7ba4b3f9c0)
+
+Class QRandomGenerator::Storage
+ size=2504 align=8
+ base size=2504 base align=8
+QRandomGenerator::Storage (0x0x7f7ba4b20e40) 0
+
+Class QRandomGenerator
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator (0x0x7f7ba4b20de0) 0
+
+Class QRandomGenerator64
+ size=2512 align=8
+ base size=2512 base align=8
+QRandomGenerator64 (0x0x7f7ba4844c98) 0
+ QRandomGenerator (0x0x7f7ba4839de0) 0
+
+Class QReadWriteLock
+ size=8 align=8
+ base size=8 base align=8
+QReadWriteLock (0x0x7f7ba4839ea0) 0
+
+Class QReadLocker
+ size=8 align=8
+ base size=8 base align=8
+QReadLocker (0x0x7f7ba48c5180) 0
+
+Class QWriteLocker
+ size=8 align=8
+ base size=8 base align=8
+QWriteLocker (0x0x7f7ba48c5240) 0
+
+Class QSize
+ size=8 align=4
+ base size=8 base align=4
+QSize (0x0x7f7ba48c5300) 0
+
+Class QSizeF
+ size=16 align=8
+ base size=16 base align=8
+QSizeF (0x0x7f7ba48c55a0) 0
+
+Class QRect
+ size=16 align=4
+ base size=16 base align=4
+QRect (0x0x7f7ba48c5840) 0
+
+Class QRectF
+ size=32 align=8
+ base size=32 base align=8
+QRectF (0x0x7f7ba48c5ae0) 0
+
+Class QRegularExpression
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpression (0x0x7f7ba48c5d80) 0
+
+Class QRegularExpressionMatch
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatch (0x0x7f7ba46eb3c0) 0
+
+Class QRegularExpressionMatchIterator
+ size=8 align=8
+ base size=8 base align=8
+QRegularExpressionMatchIterator (0x0x7f7ba46eb6c0) 0
+
+Class QResource
+ size=8 align=8
+ base size=8 base align=8
+QResource (0x0x7f7ba46eb9c0) 0
+
+Class QSaveFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSaveFile::QPrivateSignal (0x0x7f7ba46ebb40) 0 empty
+
+Vtable for QSaveFile
+QSaveFile::_ZTV9QSaveFile: 34u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSaveFile)
+16 (int (*)(...))QSaveFile::metaObject
+24 (int (*)(...))QSaveFile::qt_metacast
+32 (int (*)(...))QSaveFile::qt_metacall
+40 (int (*)(...))QSaveFile::~QSaveFile
+48 (int (*)(...))QSaveFile::~QSaveFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QSaveFile::open
+128 (int (*)(...))QSaveFile::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFileDevice::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QSaveFile::writeData
+240 (int (*)(...))QSaveFile::fileName
+248 (int (*)(...))QFileDevice::resize
+256 (int (*)(...))QFileDevice::permissions
+264 (int (*)(...))QFileDevice::setPermissions
+
+Class QSaveFile
+ size=16 align=8
+ base size=16 base align=8
+QSaveFile (0x0x7f7ba492eea0) 0
+ vptr=((& QSaveFile::_ZTV9QSaveFile) + 16u)
+ QFileDevice (0x0x7f7ba492ef08) 0
+ primary-for QSaveFile (0x0x7f7ba492eea0)
+ QIODevice (0x0x7f7ba492ef70) 0
+ primary-for QFileDevice (0x0x7f7ba492ef08)
+ QObject (0x0x7f7ba46ebae0) 0
+ primary-for QIODevice (0x0x7f7ba492ef70)
+
+Class QSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSemaphore (0x0x7f7ba46ebc00) 0
+
+Class QSemaphoreReleaser
+ size=16 align=8
+ base size=12 base align=8
+QSemaphoreReleaser (0x0x7f7ba46ebc60) 0
+
+Class QSequentialAnimationGroup::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSequentialAnimationGroup::QPrivateSignal (0x0x7f7ba44832a0) 0 empty
+
+Vtable for QSequentialAnimationGroup
+QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
+16 (int (*)(...))QSequentialAnimationGroup::metaObject
+24 (int (*)(...))QSequentialAnimationGroup::qt_metacast
+32 (int (*)(...))QSequentialAnimationGroup::qt_metacall
+40 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+48 (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
+56 (int (*)(...))QSequentialAnimationGroup::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSequentialAnimationGroup::duration
+120 (int (*)(...))QSequentialAnimationGroup::updateCurrentTime
+128 (int (*)(...))QSequentialAnimationGroup::updateState
+136 (int (*)(...))QSequentialAnimationGroup::updateDirection
+
+Class QSequentialAnimationGroup
+ size=16 align=8
+ base size=16 base align=8
+QSequentialAnimationGroup (0x0x7f7ba447c7b8) 0
+ vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16u)
+ QAnimationGroup (0x0x7f7ba447c820) 0
+ primary-for QSequentialAnimationGroup (0x0x7f7ba447c7b8)
+ QAbstractAnimation (0x0x7f7ba447c888) 0
+ primary-for QAnimationGroup (0x0x7f7ba447c820)
+ QObject (0x0x7f7ba4483240) 0
+ primary-for QAbstractAnimation (0x0x7f7ba447c888)
+
+Class QSettings::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSettings::QPrivateSignal (0x0x7f7ba4483360) 0 empty
+
+Vtable for QSettings
+QSettings::_ZTV9QSettings: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QSettings)
+16 (int (*)(...))QSettings::metaObject
+24 (int (*)(...))QSettings::qt_metacast
+32 (int (*)(...))QSettings::qt_metacall
+40 (int (*)(...))QSettings::~QSettings
+48 (int (*)(...))QSettings::~QSettings
+56 (int (*)(...))QSettings::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSettings
+ size=16 align=8
+ base size=16 base align=8
+QSettings (0x0x7f7ba447c8f0) 0
+ vptr=((& QSettings::_ZTV9QSettings) + 16u)
+ QObject (0x0x7f7ba4483300) 0
+ primary-for QSettings (0x0x7f7ba447c8f0)
+
+Class QSharedMemory::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSharedMemory::QPrivateSignal (0x0x7f7ba4483420) 0 empty
+
+Vtable for QSharedMemory
+QSharedMemory::_ZTV13QSharedMemory: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSharedMemory)
+16 (int (*)(...))QSharedMemory::metaObject
+24 (int (*)(...))QSharedMemory::qt_metacast
+32 (int (*)(...))QSharedMemory::qt_metacall
+40 (int (*)(...))QSharedMemory::~QSharedMemory
+48 (int (*)(...))QSharedMemory::~QSharedMemory
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSharedMemory
+ size=16 align=8
+ base size=16 base align=8
+QSharedMemory (0x0x7f7ba447c958) 0
+ vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16u)
+ QObject (0x0x7f7ba44833c0) 0
+ primary-for QSharedMemory (0x0x7f7ba447c958)
+
+Class QSignalMapper::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalMapper::QPrivateSignal (0x0x7f7ba44834e0) 0 empty
+
+Vtable for QSignalMapper
+QSignalMapper::_ZTV13QSignalMapper: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSignalMapper)
+16 (int (*)(...))QSignalMapper::metaObject
+24 (int (*)(...))QSignalMapper::qt_metacast
+32 (int (*)(...))QSignalMapper::qt_metacall
+40 (int (*)(...))QSignalMapper::~QSignalMapper
+48 (int (*)(...))QSignalMapper::~QSignalMapper
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSignalMapper
+ size=16 align=8
+ base size=16 base align=8
+QSignalMapper (0x0x7f7ba447c9c0) 0
+ vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16u)
+ QObject (0x0x7f7ba4483480) 0
+ primary-for QSignalMapper (0x0x7f7ba447c9c0)
+
+Class QSignalTransition::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSignalTransition::QPrivateSignal (0x0x7f7ba44835a0) 0 empty
+
+Vtable for QSignalTransition
+QSignalTransition::_ZTV17QSignalTransition: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QSignalTransition)
+16 (int (*)(...))QSignalTransition::metaObject
+24 (int (*)(...))QSignalTransition::qt_metacast
+32 (int (*)(...))QSignalTransition::qt_metacall
+40 (int (*)(...))QSignalTransition::~QSignalTransition
+48 (int (*)(...))QSignalTransition::~QSignalTransition
+56 (int (*)(...))QSignalTransition::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSignalTransition::eventTest
+120 (int (*)(...))QSignalTransition::onTransition
+
+Class QSignalTransition
+ size=16 align=8
+ base size=16 base align=8
+QSignalTransition (0x0x7f7ba447ca28) 0
+ vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16u)
+ QAbstractTransition (0x0x7f7ba447ca90) 0
+ primary-for QSignalTransition (0x0x7f7ba447ca28)
+ QObject (0x0x7f7ba4483540) 0
+ primary-for QAbstractTransition (0x0x7f7ba447ca90)
+
+Class QSocketNotifier::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSocketNotifier::QPrivateSignal (0x0x7f7ba4483660) 0 empty
+
+Vtable for QSocketNotifier
+QSocketNotifier::_ZTV15QSocketNotifier: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QSocketNotifier)
+16 (int (*)(...))QSocketNotifier::metaObject
+24 (int (*)(...))QSocketNotifier::qt_metacast
+32 (int (*)(...))QSocketNotifier::qt_metacall
+40 (int (*)(...))QSocketNotifier::~QSocketNotifier
+48 (int (*)(...))QSocketNotifier::~QSocketNotifier
+56 (int (*)(...))QSocketNotifier::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSocketNotifier
+ size=16 align=8
+ base size=16 base align=8
+QSocketNotifier (0x0x7f7ba447caf8) 0
+ vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16u)
+ QObject (0x0x7f7ba4483600) 0
+ primary-for QSocketNotifier (0x0x7f7ba447caf8)
+
+Class QSortFilterProxyModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSortFilterProxyModel::QPrivateSignal (0x0x7f7ba4483720) 0 empty
+
+Vtable for QSortFilterProxyModel
+QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 56u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QSortFilterProxyModel)
+16 (int (*)(...))QSortFilterProxyModel::metaObject
+24 (int (*)(...))QSortFilterProxyModel::qt_metacast
+32 (int (*)(...))QSortFilterProxyModel::qt_metacall
+40 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+48 (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSortFilterProxyModel::index
+120 (int (*)(...))QSortFilterProxyModel::parent
+128 (int (*)(...))QSortFilterProxyModel::sibling
+136 (int (*)(...))QSortFilterProxyModel::rowCount
+144 (int (*)(...))QSortFilterProxyModel::columnCount
+152 (int (*)(...))QSortFilterProxyModel::hasChildren
+160 (int (*)(...))QSortFilterProxyModel::data
+168 (int (*)(...))QSortFilterProxyModel::setData
+176 (int (*)(...))QSortFilterProxyModel::headerData
+184 (int (*)(...))QSortFilterProxyModel::setHeaderData
+192 (int (*)(...))QAbstractProxyModel::itemData
+200 (int (*)(...))QAbstractProxyModel::setItemData
+208 (int (*)(...))QSortFilterProxyModel::mimeTypes
+216 (int (*)(...))QSortFilterProxyModel::mimeData
+224 (int (*)(...))QAbstractProxyModel::canDropMimeData
+232 (int (*)(...))QSortFilterProxyModel::dropMimeData
+240 (int (*)(...))QSortFilterProxyModel::supportedDropActions
+248 (int (*)(...))QAbstractProxyModel::supportedDragActions
+256 (int (*)(...))QSortFilterProxyModel::insertRows
+264 (int (*)(...))QSortFilterProxyModel::insertColumns
+272 (int (*)(...))QSortFilterProxyModel::removeRows
+280 (int (*)(...))QSortFilterProxyModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QSortFilterProxyModel::fetchMore
+312 (int (*)(...))QSortFilterProxyModel::canFetchMore
+320 (int (*)(...))QSortFilterProxyModel::flags
+328 (int (*)(...))QSortFilterProxyModel::sort
+336 (int (*)(...))QSortFilterProxyModel::buddy
+344 (int (*)(...))QSortFilterProxyModel::match
+352 (int (*)(...))QSortFilterProxyModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractProxyModel::submit
+376 (int (*)(...))QAbstractProxyModel::revert
+384 (int (*)(...))QSortFilterProxyModel::setSourceModel
+392 (int (*)(...))QSortFilterProxyModel::mapToSource
+400 (int (*)(...))QSortFilterProxyModel::mapFromSource
+408 (int (*)(...))QSortFilterProxyModel::mapSelectionToSource
+416 (int (*)(...))QSortFilterProxyModel::mapSelectionFromSource
+424 (int (*)(...))QSortFilterProxyModel::filterAcceptsRow
+432 (int (*)(...))QSortFilterProxyModel::filterAcceptsColumn
+440 (int (*)(...))QSortFilterProxyModel::lessThan
+
+Class QSortFilterProxyModel
+ size=16 align=8
+ base size=16 base align=8
+QSortFilterProxyModel (0x0x7f7ba447cb60) 0
+ vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16u)
+ QAbstractProxyModel (0x0x7f7ba447cbc8) 0
+ primary-for QSortFilterProxyModel (0x0x7f7ba447cb60)
+ QAbstractItemModel (0x0x7f7ba447cc30) 0
+ primary-for QAbstractProxyModel (0x0x7f7ba447cbc8)
+ QObject (0x0x7f7ba44836c0) 0
+ primary-for QAbstractItemModel (0x0x7f7ba447cc30)
+
+Class QStandardPaths
+ size=1 align=1
+ base size=0 base align=1
+QStandardPaths (0x0x7f7ba44837e0) 0 empty
+
+Class QState::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QState::QPrivateSignal (0x0x7f7ba4483a20) 0 empty
+
+Vtable for QState
+QState::_ZTV6QState: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QState)
+16 (int (*)(...))QState::metaObject
+24 (int (*)(...))QState::qt_metacast
+32 (int (*)(...))QState::qt_metacall
+40 (int (*)(...))QState::~QState
+48 (int (*)(...))QState::~QState
+56 (int (*)(...))QState::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QState::onEntry
+120 (int (*)(...))QState::onExit
+
+Class QState
+ size=16 align=8
+ base size=16 base align=8
+QState (0x0x7f7ba447cdd0) 0
+ vptr=((& QState::_ZTV6QState) + 16u)
+ QAbstractState (0x0x7f7ba447ce38) 0
+ primary-for QState (0x0x7f7ba447cdd0)
+ QObject (0x0x7f7ba44839c0) 0
+ primary-for QAbstractState (0x0x7f7ba447ce38)
+
+Class QStateMachine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStateMachine::QPrivateSignal (0x0x7f7ba4483b40) 0 empty
+
+Vtable for QStateMachine::SignalEvent
+QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
+16 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+24 (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
+
+Class QStateMachine::SignalEvent
+ size=48 align=8
+ base size=48 base align=8
+QStateMachine::SignalEvent (0x0x7f7ba4588000) 0
+ vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16u)
+ QEvent (0x0x7f7ba4483ba0) 0
+ primary-for QStateMachine::SignalEvent (0x0x7f7ba4588000)
+
+Vtable for QStateMachine::WrappedEvent
+QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
+16 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+24 (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
+
+Class QStateMachine::WrappedEvent
+ size=40 align=8
+ base size=40 base align=8
+QStateMachine::WrappedEvent (0x0x7f7ba4588068) 0
+ vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16u)
+ QEvent (0x0x7f7ba4483c00) 0
+ primary-for QStateMachine::WrappedEvent (0x0x7f7ba4588068)
+
+Vtable for QStateMachine
+QStateMachine::_ZTV13QStateMachine: 20u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QStateMachine)
+16 (int (*)(...))QStateMachine::metaObject
+24 (int (*)(...))QStateMachine::qt_metacast
+32 (int (*)(...))QStateMachine::qt_metacall
+40 (int (*)(...))QStateMachine::~QStateMachine
+48 (int (*)(...))QStateMachine::~QStateMachine
+56 (int (*)(...))QStateMachine::event
+64 (int (*)(...))QStateMachine::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QStateMachine::onEntry
+120 (int (*)(...))QStateMachine::onExit
+128 (int (*)(...))QStateMachine::beginSelectTransitions
+136 (int (*)(...))QStateMachine::endSelectTransitions
+144 (int (*)(...))QStateMachine::beginMicrostep
+152 (int (*)(...))QStateMachine::endMicrostep
+
+Class QStateMachine
+ size=16 align=8
+ base size=16 base align=8
+QStateMachine (0x0x7f7ba447cea0) 0
+ vptr=((& QStateMachine::_ZTV13QStateMachine) + 16u)
+ QState (0x0x7f7ba447cf08) 0
+ primary-for QStateMachine (0x0x7f7ba447cea0)
+ QAbstractState (0x0x7f7ba447cf70) 0
+ primary-for QState (0x0x7f7ba447cf08)
+ QObject (0x0x7f7ba4483ae0) 0
+ primary-for QAbstractState (0x0x7f7ba447cf70)
+
+Class QStorageInfo
+ size=8 align=8
+ base size=8 base align=8
+QStorageInfo (0x0x7f7ba4483c60) 0
+
+Class QAbstractConcatenable
+ size=1 align=1
+ base size=0 base align=1
+QAbstractConcatenable (0x0x7f7ba41cfba0) 0 empty
+
+Class QStringListModel::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QStringListModel::QPrivateSignal (0x0x7f7ba422c6c0) 0 empty
+
+Vtable for QStringListModel
+QStringListModel::_ZTV16QStringListModel: 48u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QStringListModel)
+16 (int (*)(...))QStringListModel::metaObject
+24 (int (*)(...))QStringListModel::qt_metacast
+32 (int (*)(...))QStringListModel::qt_metacall
+40 (int (*)(...))QStringListModel::~QStringListModel
+48 (int (*)(...))QStringListModel::~QStringListModel
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAbstractListModel::index
+120 (int (*)(...))QAbstractListModel::parent
+128 (int (*)(...))QStringListModel::sibling
+136 (int (*)(...))QStringListModel::rowCount
+144 (int (*)(...))QAbstractListModel::columnCount
+152 (int (*)(...))QAbstractListModel::hasChildren
+160 (int (*)(...))QStringListModel::data
+168 (int (*)(...))QStringListModel::setData
+176 (int (*)(...))QAbstractItemModel::headerData
+184 (int (*)(...))QAbstractItemModel::setHeaderData
+192 (int (*)(...))QAbstractItemModel::itemData
+200 (int (*)(...))QAbstractItemModel::setItemData
+208 (int (*)(...))QAbstractItemModel::mimeTypes
+216 (int (*)(...))QAbstractItemModel::mimeData
+224 (int (*)(...))QAbstractItemModel::canDropMimeData
+232 (int (*)(...))QAbstractListModel::dropMimeData
+240 (int (*)(...))QStringListModel::supportedDropActions
+248 (int (*)(...))QAbstractItemModel::supportedDragActions
+256 (int (*)(...))QStringListModel::insertRows
+264 (int (*)(...))QAbstractItemModel::insertColumns
+272 (int (*)(...))QStringListModel::removeRows
+280 (int (*)(...))QAbstractItemModel::removeColumns
+288 (int (*)(...))QAbstractItemModel::moveRows
+296 (int (*)(...))QAbstractItemModel::moveColumns
+304 (int (*)(...))QAbstractItemModel::fetchMore
+312 (int (*)(...))QAbstractItemModel::canFetchMore
+320 (int (*)(...))QStringListModel::flags
+328 (int (*)(...))QStringListModel::sort
+336 (int (*)(...))QAbstractItemModel::buddy
+344 (int (*)(...))QAbstractItemModel::match
+352 (int (*)(...))QAbstractItemModel::span
+360 (int (*)(...))QAbstractItemModel::roleNames
+368 (int (*)(...))QAbstractItemModel::submit
+376 (int (*)(...))QAbstractItemModel::revert
+
+Class QStringListModel
+ size=24 align=8
+ base size=24 base align=8
+QStringListModel (0x0x7f7ba4249548) 0
+ vptr=((& QStringListModel::_ZTV16QStringListModel) + 16u)
+ QAbstractListModel (0x0x7f7ba42495b0) 0
+ primary-for QStringListModel (0x0x7f7ba4249548)
+ QAbstractItemModel (0x0x7f7ba4249618) 0
+ primary-for QAbstractListModel (0x0x7f7ba42495b0)
+ QObject (0x0x7f7ba422c660) 0
+ primary-for QAbstractItemModel (0x0x7f7ba4249618)
+
+Class QSystemSemaphore
+ size=8 align=8
+ base size=8 base align=8
+QSystemSemaphore (0x0x7f7ba422c720) 0
+
+Class QTemporaryDir
+ size=8 align=8
+ base size=8 base align=8
+QTemporaryDir (0x0x7f7ba422c7e0) 0
+
+Class QTemporaryFile::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTemporaryFile::QPrivateSignal (0x0x7f7ba422c900) 0 empty
+
+Vtable for QTemporaryFile
+QTemporaryFile::_ZTV14QTemporaryFile: 34u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QTemporaryFile)
+16 (int (*)(...))QTemporaryFile::metaObject
+24 (int (*)(...))QTemporaryFile::qt_metacast
+32 (int (*)(...))QTemporaryFile::qt_metacall
+40 (int (*)(...))QTemporaryFile::~QTemporaryFile
+48 (int (*)(...))QTemporaryFile::~QTemporaryFile
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QFileDevice::isSequential
+120 (int (*)(...))QTemporaryFile::open
+128 (int (*)(...))QFileDevice::close
+136 (int (*)(...))QFileDevice::pos
+144 (int (*)(...))QFile::size
+152 (int (*)(...))QFileDevice::seek
+160 (int (*)(...))QFileDevice::atEnd
+168 (int (*)(...))QIODevice::reset
+176 (int (*)(...))QIODevice::bytesAvailable
+184 (int (*)(...))QIODevice::bytesToWrite
+192 (int (*)(...))QIODevice::canReadLine
+200 (int (*)(...))QIODevice::waitForReadyRead
+208 (int (*)(...))QIODevice::waitForBytesWritten
+216 (int (*)(...))QFileDevice::readData
+224 (int (*)(...))QFileDevice::readLineData
+232 (int (*)(...))QFileDevice::writeData
+240 (int (*)(...))QTemporaryFile::fileName
+248 (int (*)(...))QFile::resize
+256 (int (*)(...))QFile::permissions
+264 (int (*)(...))QFile::setPermissions
+
+Class QTemporaryFile
+ size=16 align=8
+ base size=16 base align=8
+QTemporaryFile (0x0x7f7ba4249680) 0
+ vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16u)
+ QFile (0x0x7f7ba42496e8) 0
+ primary-for QTemporaryFile (0x0x7f7ba4249680)
+ QFileDevice (0x0x7f7ba4249750) 0
+ primary-for QFile (0x0x7f7ba42496e8)
+ QIODevice (0x0x7f7ba42497b8) 0
+ primary-for QFileDevice (0x0x7f7ba4249750)
+ QObject (0x0x7f7ba422c8a0) 0
+ primary-for QIODevice (0x0x7f7ba42497b8)
+
+Class QTextBoundaryFinder
+ size=48 align=8
+ base size=48 base align=8
+QTextBoundaryFinder (0x0x7f7ba422c960) 0
+
+Class QTextCodec::ConverterState
+ size=32 align=8
+ base size=32 base align=8
+QTextCodec::ConverterState (0x0x7f7ba422cba0) 0
+
+Vtable for QTextCodec
+QTextCodec::_ZTV10QTextCodec: 9u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTextCodec)
+16 (int (*)(...))__cxa_pure_virtual
+24 (int (*)(...))QTextCodec::aliases
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+56 0u
+64 0u
+
+Class QTextCodec
+ size=8 align=8
+ base size=8 base align=8
+QTextCodec (0x0x7f7ba422cb40) 0 nearly-empty
+ vptr=((& QTextCodec::_ZTV10QTextCodec) + 16u)
+
+Class QTextEncoder
+ size=40 align=8
+ base size=40 base align=8
+QTextEncoder (0x0x7f7ba422cd80) 0
+
+Class QTextDecoder
+ size=40 align=8
+ base size=40 base align=8
+QTextDecoder (0x0x7f7ba422cde0) 0
+
+Class std::__mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__mutex_base (0x0x7f7ba422ce40) 0
+
+Class std::__recursive_mutex_base
+ size=40 align=8
+ base size=40 base align=8
+std::__recursive_mutex_base (0x0x7f7ba422cea0) 0
+
+Class std::mutex
+ size=40 align=8
+ base size=40 base align=8
+std::mutex (0x0x7f7ba42499c0) 0
+ std::__mutex_base (0x0x7f7ba422cf00) 0
+
+Class std::recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_mutex (0x0x7f7ba4249a28) 0
+ std::__recursive_mutex_base (0x0x7f7ba422cf60) 0
+
+Class std::timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::timed_mutex (0x0x7f7ba43644d0) 0
+ std::__mutex_base (0x0x7f7ba43600c0) 0
+ std::__timed_mutex_impl<std::timed_mutex> (0x0x7f7ba4360120) 0 empty
+
+Class std::recursive_timed_mutex
+ size=40 align=8
+ base size=40 base align=8
+std::recursive_timed_mutex (0x0x7f7ba437a150) 0
+ std::__recursive_mutex_base (0x0x7f7ba43601e0) 0
+ std::__timed_mutex_impl<std::recursive_timed_mutex> (0x0x7f7ba4360240) 0 empty
+
+Class std::defer_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::defer_lock_t (0x0x7f7ba43602a0) 0 empty
+
+Class std::try_to_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::try_to_lock_t (0x0x7f7ba4360300) 0 empty
+
+Class std::adopt_lock_t
+ size=1 align=1
+ base size=0 base align=1
+std::adopt_lock_t (0x0x7f7ba4360360) 0 empty
+
+Class std::once_flag
+ size=4 align=4
+ base size=4 base align=4
+std::once_flag (0x0x7f7ba43605a0) 0
+
+Vtable for __gnu_cxx::__concurrence_lock_error
+__gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_lock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_lock_error::what
+
+Class __gnu_cxx::__concurrence_lock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_lock_error (0x0x7f7ba4249b60) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE) + 16u)
+ std::exception (0x0x7f7ba4360660) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_lock_error (0x0x7f7ba4249b60)
+
+Vtable for __gnu_cxx::__concurrence_unlock_error
+__gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx26__concurrence_unlock_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+24 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
+32 (int (*)(...))__gnu_cxx::__concurrence_unlock_error::what
+
+Class __gnu_cxx::__concurrence_unlock_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_unlock_error (0x0x7f7ba4249bc8) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE) + 16u)
+ std::exception (0x0x7f7ba4360720) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_unlock_error (0x0x7f7ba4249bc8)
+
+Vtable for __gnu_cxx::__concurrence_broadcast_error
+__gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx29__concurrence_broadcast_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+24 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
+32 (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::what
+
+Class __gnu_cxx::__concurrence_broadcast_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_broadcast_error (0x0x7f7ba4249c30) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE) + 16u)
+ std::exception (0x0x7f7ba43607e0) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_broadcast_error (0x0x7f7ba4249c30)
+
+Vtable for __gnu_cxx::__concurrence_wait_error
+__gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_wait_errorE)
+16 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+24 (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
+32 (int (*)(...))__gnu_cxx::__concurrence_wait_error::what
+
+Class __gnu_cxx::__concurrence_wait_error
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__concurrence_wait_error (0x0x7f7ba4249d00) 0 nearly-empty
+ vptr=((& __gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE) + 16u)
+ std::exception (0x0x7f7ba43608a0) 0 nearly-empty
+ primary-for __gnu_cxx::__concurrence_wait_error (0x0x7f7ba4249d00)
+
+Class __gnu_cxx::__mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__mutex (0x0x7f7ba4360960) 0
+
+Class __gnu_cxx::__recursive_mutex
+ size=40 align=8
+ base size=40 base align=8
+__gnu_cxx::__recursive_mutex (0x0x7f7ba43609c0) 0
+
+Class __gnu_cxx::__scoped_lock
+ size=8 align=8
+ base size=8 base align=8
+__gnu_cxx::__scoped_lock (0x0x7f7ba4360a20) 0
+
+Class __gnu_cxx::__cond
+ size=48 align=8
+ base size=48 base align=8
+__gnu_cxx::__cond (0x0x7f7ba4360a80) 0
+
+Vtable for std::bad_weak_ptr
+std::bad_weak_ptr::_ZTVSt12bad_weak_ptr: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12bad_weak_ptr)
+16 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+24 (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
+32 (int (*)(...))std::bad_weak_ptr::what
+
+Class std::bad_weak_ptr
+ size=8 align=8
+ base size=8 base align=8
+std::bad_weak_ptr (0x0x7f7ba4249e38) 0 nearly-empty
+ vptr=((& std::bad_weak_ptr::_ZTVSt12bad_weak_ptr) + 16u)
+ std::exception (0x0x7f7ba4360de0) 0 nearly-empty
+ primary-for std::bad_weak_ptr (0x0x7f7ba4249e38)
+
+Class std::_Sp_make_shared_tag
+ size=1 align=1
+ base size=0 base align=1
+std::_Sp_make_shared_tag (0x0x7f7ba40ab660) 0 empty
+
+Class std::_Sp_locker
+ size=2 align=1
+ base size=2 base align=1
+std::_Sp_locker (0x0x7f7ba40abe40) 0
+
+Class std::thread::id
+ size=8 align=8
+ base size=8 base align=8
+std::thread::id (0x0x7f7ba3d3b060) 0
+
+Vtable for std::thread::_Impl_base
+std::thread::_Impl_base::_ZTVNSt6thread10_Impl_baseE: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt6thread10_Impl_baseE)
+16 0u
+24 0u
+32 (int (*)(...))__cxa_pure_virtual
+
+Class std::thread::_Impl_base
+ size=24 align=8
+ base size=24 base align=8
+std::thread::_Impl_base (0x0x7f7ba3d3b0c0) 0
+ vptr=((& std::thread::_Impl_base::_ZTVNSt6thread10_Impl_baseE) + 16u)
+
+Class std::thread
+ size=8 align=8
+ base size=8 base align=8
+std::thread (0x0x7f7ba3d3b000) 0
+
+Class std::condition_variable
+ size=48 align=8
+ base size=48 base align=8
+std::condition_variable (0x0x7f7ba3e72cc0) 0
+
+Class std::__at_thread_exit_elt
+ size=16 align=8
+ base size=16 base align=8
+std::__at_thread_exit_elt (0x0x7f7ba3e72d80) 0
+
+Class std::_V2::condition_variable_any
+ size=64 align=8
+ base size=64 base align=8
+std::_V2::condition_variable_any (0x0x7f7ba3e72de0) 0
+
+Class std::__atomic_futex_unsigned_base
+ size=1 align=1
+ base size=0 base align=1
+std::__atomic_futex_unsigned_base (0x0x7f7ba3b5f480) 0 empty
+
+Vtable for std::future_error
+std::future_error::_ZTVSt12future_error: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTISt12future_error)
+16 (int (*)(...))std::future_error::~future_error
+24 (int (*)(...))std::future_error::~future_error
+32 (int (*)(...))std::future_error::what
+
+Class std::future_error
+ size=32 align=8
+ base size=32 base align=8
+std::future_error (0x0x7f7ba3b65340) 0
+ vptr=((& std::future_error::_ZTVSt12future_error) + 16u)
+ std::logic_error (0x0x7f7ba3b653a8) 0
+ primary-for std::future_error (0x0x7f7ba3b65340)
+ std::exception (0x0x7f7ba3b5f5a0) 0 nearly-empty
+ primary-for std::logic_error (0x0x7f7ba3b653a8)
+
+Class std::__future_base::_Result_base::_Deleter
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_Result_base::_Deleter (0x0x7f7ba3b5f6c0) 0 empty
+
+Vtable for std::__future_base::_Result_base
+std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base12_Result_baseE)
+16 (int (*)(...))__cxa_pure_virtual
+24 0u
+32 0u
+
+Class std::__future_base::_Result_base
+ size=16 align=8
+ base size=16 base align=8
+std::__future_base::_Result_base (0x0x7f7ba3b5f660) 0
+ vptr=((& std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE) + 16u)
+
+Class std::__future_base::_State_baseV2::__exception_ptr_tag
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base::_State_baseV2::__exception_ptr_tag (0x0x7f7ba389ac00) 0 empty
+
+Class std::__future_base::_State_baseV2::_Make_ready
+ size=32 align=8
+ base size=32 base align=8
+std::__future_base::_State_baseV2::_Make_ready (0x0x7f7ba389c958) 0
+ std::__at_thread_exit_elt (0x0x7f7ba389acc0) 0
+
+Vtable for std::__future_base::_State_baseV2
+std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base13_State_baseV2E)
+16 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+24 (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
+32 (int (*)(...))std::__future_base::_State_baseV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_State_baseV2
+ size=32 align=8
+ base size=28 base align=8
+std::__future_base::_State_baseV2 (0x0x7f7ba3b5f840) 0
+ vptr=((& std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E) + 16u)
+
+Class std::__future_base
+ size=1 align=1
+ base size=0 base align=1
+std::__future_base (0x0x7f7ba3b5f600) 0 empty
+
+Vtable for std::__future_base::_Async_state_commonV2
+std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTINSt13__future_base21_Async_state_commonV2E)
+16 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+24 (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
+32 (int (*)(...))std::__future_base::_Async_state_commonV2::_M_complete_async
+40 (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future
+
+Class std::__future_base::_Async_state_commonV2
+ size=48 align=8
+ base size=44 base align=8
+std::__future_base::_Async_state_commonV2 (0x0x7f7ba3612548) 0
+ vptr=((& std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E) + 16u)
+ std::__future_base::_State_baseV2 (0x0x7f7ba3607ba0) 0
+ primary-for std::__future_base::_Async_state_commonV2 (0x0x7f7ba3612548)
+
+Class QThread::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThread::QPrivateSignal (0x0x7f7ba366c300) 0 empty
+
+Vtable for QThread
+QThread::_ZTV7QThread: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QThread)
+16 (int (*)(...))QThread::metaObject
+24 (int (*)(...))QThread::qt_metacast
+32 (int (*)(...))QThread::qt_metacall
+40 (int (*)(...))QThread::~QThread
+48 (int (*)(...))QThread::~QThread
+56 (int (*)(...))QThread::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QThread::run
+
+Class QThread
+ size=16 align=8
+ base size=16 base align=8
+QThread (0x0x7f7ba3298000) 0
+ vptr=((& QThread::_ZTV7QThread) + 16u)
+ QObject (0x0x7f7ba366c2a0) 0
+ primary-for QThread (0x0x7f7ba3298000)
+
+Class QThreadPool::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QThreadPool::QPrivateSignal (0x0x7f7ba366c420) 0 empty
+
+Vtable for QThreadPool
+QThreadPool::_ZTV11QThreadPool: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QThreadPool)
+16 (int (*)(...))QThreadPool::metaObject
+24 (int (*)(...))QThreadPool::qt_metacast
+32 (int (*)(...))QThreadPool::qt_metacall
+40 (int (*)(...))QThreadPool::~QThreadPool
+48 (int (*)(...))QThreadPool::~QThreadPool
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QThreadPool
+ size=16 align=8
+ base size=16 base align=8
+QThreadPool (0x0x7f7ba3298068) 0
+ vptr=((& QThreadPool::_ZTV11QThreadPool) + 16u)
+ QObject (0x0x7f7ba366c3c0) 0
+ primary-for QThreadPool (0x0x7f7ba3298068)
+
+Class QThreadStorageData
+ size=4 align=4
+ base size=4 base align=4
+QThreadStorageData (0x0x7f7ba366c480) 0
+
+Class QTimeLine::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimeLine::QPrivateSignal (0x0x7f7ba366c5a0) 0 empty
+
+Vtable for QTimeLine
+QTimeLine::_ZTV9QTimeLine: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI9QTimeLine)
+16 (int (*)(...))QTimeLine::metaObject
+24 (int (*)(...))QTimeLine::qt_metacast
+32 (int (*)(...))QTimeLine::qt_metacall
+40 (int (*)(...))QTimeLine::~QTimeLine
+48 (int (*)(...))QTimeLine::~QTimeLine
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimeLine::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTimeLine::valueForTime
+
+Class QTimeLine
+ size=16 align=8
+ base size=16 base align=8
+QTimeLine (0x0x7f7ba32980d0) 0
+ vptr=((& QTimeLine::_ZTV9QTimeLine) + 16u)
+ QObject (0x0x7f7ba366c540) 0
+ primary-for QTimeLine (0x0x7f7ba32980d0)
+
+Class QTimer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTimer::QPrivateSignal (0x0x7f7ba366c660) 0 empty
+
+Vtable for QTimer
+QTimer::_ZTV6QTimer: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI6QTimer)
+16 (int (*)(...))QTimer::metaObject
+24 (int (*)(...))QTimer::qt_metacast
+32 (int (*)(...))QTimer::qt_metacall
+40 (int (*)(...))QTimer::~QTimer
+48 (int (*)(...))QTimer::~QTimer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QTimer::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTimer
+ size=32 align=8
+ base size=29 base align=8
+QTimer (0x0x7f7ba3298138) 0
+ vptr=((& QTimer::_ZTV6QTimer) + 16u)
+ QObject (0x0x7f7ba366c600) 0
+ primary-for QTimer (0x0x7f7ba3298138)
+
+Class QTimeZone::OffsetData
+ size=32 align=8
+ base size=28 base align=8
+QTimeZone::OffsetData (0x0x7f7ba366cd20) 0
+
+Class QTimeZone
+ size=8 align=8
+ base size=8 base align=8
+QTimeZone (0x0x7f7ba366ccc0) 0
+
+Class QTranslator::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTranslator::QPrivateSignal (0x0x7f7ba3353300) 0 empty
+
+Vtable for QTranslator
+QTranslator::_ZTV11QTranslator: 16u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTranslator)
+16 (int (*)(...))QTranslator::metaObject
+24 (int (*)(...))QTranslator::qt_metacast
+32 (int (*)(...))QTranslator::qt_metacall
+40 (int (*)(...))QTranslator::~QTranslator
+48 (int (*)(...))QTranslator::~QTranslator
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTranslator::translate
+120 (int (*)(...))QTranslator::isEmpty
+
+Class QTranslator
+ size=16 align=8
+ base size=16 base align=8
+QTranslator (0x0x7f7ba3298bc8) 0
+ vptr=((& QTranslator::_ZTV11QTranslator) + 16u)
+ QObject (0x0x7f7ba33532a0) 0
+ primary-for QTranslator (0x0x7f7ba3298bc8)
+
+Class QUrl
+ size=8 align=8
+ base size=8 base align=8
+QUrl (0x0x7f7ba3353420) 0
+
+Class QUrlQuery
+ size=8 align=8
+ base size=8 base align=8
+QUrlQuery (0x0x7f7ba346bae0) 0
+
+Class QUuid
+ size=16 align=4
+ base size=16 base align=4
+QUuid (0x0x7f7ba3103180) 0
+
+Class QWaitCondition
+ size=8 align=8
+ base size=8 base align=8
+QWaitCondition (0x0x7f7ba3103780) 0
+
+Class QXmlStreamStringRef
+ size=16 align=8
+ base size=16 base align=8
+QXmlStreamStringRef (0x0x7f7ba31037e0) 0
+
+Class QXmlStreamAttribute
+ size=80 align=8
+ base size=73 base align=8
+QXmlStreamAttribute (0x0x7f7ba3103ae0) 0
+
+Class QXmlStreamAttributes
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamAttributes (0x0x7f7ba316a680) 0
+ QVector<QXmlStreamAttribute> (0x0x7f7ba3103ea0) 0
+
+Class QXmlStreamNamespaceDeclaration
+ size=40 align=8
+ base size=40 base align=8
+QXmlStreamNamespaceDeclaration (0x0x7f7ba3103f00) 0
+
+Class QXmlStreamNotationDeclaration
+ size=56 align=8
+ base size=56 base align=8
+QXmlStreamNotationDeclaration (0x0x7f7ba31f91e0) 0
+
+Class QXmlStreamEntityDeclaration
+ size=88 align=8
+ base size=88 base align=8
+QXmlStreamEntityDeclaration (0x0x7f7ba31f9480) 0
+
+Vtable for QXmlStreamEntityResolver
+QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
+16 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+24 (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
+32 (int (*)(...))QXmlStreamEntityResolver::resolveEntity
+40 (int (*)(...))QXmlStreamEntityResolver::resolveUndeclaredEntity
+
+Class QXmlStreamEntityResolver
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamEntityResolver (0x0x7f7ba31f9720) 0 nearly-empty
+ vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16u)
+
+Class QXmlStreamReader
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamReader (0x0x7f7ba31f9780) 0
+
+Class QXmlStreamWriter
+ size=8 align=8
+ base size=8 base align=8
+QXmlStreamWriter (0x0x7f7ba2ea51e0) 0
+
+Class qoutputrange
+ size=24 align=8
+ base size=24 base align=8
+qoutputrange (0x0x7f7ba2ea5300) 0
+
+Class QSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSensor::QPrivateSignal (0x0x7f7ba2ea53c0) 0 empty
+
+Vtable for QSensor
+QSensor::_ZTV7QSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI7QSensor)
+16 (int (*)(...))QSensor::metaObject
+24 (int (*)(...))QSensor::qt_metacast
+32 (int (*)(...))QSensor::qt_metacall
+40 (int (*)(...))QSensor::~QSensor
+48 (int (*)(...))QSensor::~QSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSensor
+ size=16 align=8
+ base size=16 base align=8
+QSensor (0x0x7f7ba3278750) 0
+ vptr=((& QSensor::_ZTV7QSensor) + 16u)
+ QObject (0x0x7f7ba2ea5360) 0
+ primary-for QSensor (0x0x7f7ba3278750)
+
+Vtable for QSensorFilter
+QSensorFilter::_ZTV13QSensorFilter: 6u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QSensorFilter)
+16 (int (*)(...))__cxa_pure_virtual
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+
+Class QSensorFilter
+ size=16 align=8
+ base size=16 base align=8
+QSensorFilter (0x0x7f7ba2ea5420) 0
+ vptr=((& QSensorFilter::_ZTV13QSensorFilter) + 16u)
+
+Class QSensorReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSensorReading::QPrivateSignal (0x0x7f7ba2ea54e0) 0 empty
+
+Vtable for QSensorReading
+QSensorReading::_ZTV14QSensorReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QSensorReading)
+16 (int (*)(...))QSensorReading::metaObject
+24 (int (*)(...))QSensorReading::qt_metacast
+32 (int (*)(...))QSensorReading::qt_metacall
+40 (int (*)(...))QSensorReading::~QSensorReading
+48 (int (*)(...))QSensorReading::~QSensorReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QSensorReading::copyValuesFrom
+
+Class QSensorReading
+ size=24 align=8
+ base size=24 base align=8
+QSensorReading (0x0x7f7ba32787b8) 0
+ vptr=((& QSensorReading::_ZTV14QSensorReading) + 16u)
+ QObject (0x0x7f7ba2ea5480) 0
+ primary-for QSensorReading (0x0x7f7ba32787b8)
+
+Class QAccelerometerReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAccelerometerReading::QPrivateSignal (0x0x7f7ba2ea5c60) 0 empty
+
+Vtable for QAccelerometerReading
+QAccelerometerReading::_ZTV21QAccelerometerReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QAccelerometerReading)
+16 (int (*)(...))QAccelerometerReading::metaObject
+24 (int (*)(...))QAccelerometerReading::qt_metacast
+32 (int (*)(...))QAccelerometerReading::qt_metacall
+40 (int (*)(...))QAccelerometerReading::~QAccelerometerReading
+48 (int (*)(...))QAccelerometerReading::~QAccelerometerReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAccelerometerReading::copyValuesFrom
+
+Class QAccelerometerReading
+ size=32 align=8
+ base size=32 base align=8
+QAccelerometerReading (0x0x7f7ba32789c0) 0
+ vptr=((& QAccelerometerReading::_ZTV21QAccelerometerReading) + 16u)
+ QSensorReading (0x0x7f7ba3278a28) 0
+ primary-for QAccelerometerReading (0x0x7f7ba32789c0)
+ QObject (0x0x7f7ba2ea5c00) 0
+ primary-for QSensorReading (0x0x7f7ba3278a28)
+
+Vtable for QAccelerometerFilter
+QAccelerometerFilter::_ZTV20QAccelerometerFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QAccelerometerFilter)
+16 (int (*)(...))QAccelerometerFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAccelerometerFilter
+ size=16 align=8
+ base size=16 base align=8
+QAccelerometerFilter (0x0x7f7ba3278a90) 0
+ vptr=((& QAccelerometerFilter::_ZTV20QAccelerometerFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2ea5d20) 0
+ primary-for QAccelerometerFilter (0x0x7f7ba3278a90)
+
+Class QAccelerometer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAccelerometer::QPrivateSignal (0x0x7f7ba2ea5de0) 0 empty
+
+Vtable for QAccelerometer
+QAccelerometer::_ZTV14QAccelerometer: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QAccelerometer)
+16 (int (*)(...))QAccelerometer::metaObject
+24 (int (*)(...))QAccelerometer::qt_metacast
+32 (int (*)(...))QAccelerometer::qt_metacall
+40 (int (*)(...))QAccelerometer::~QAccelerometer
+48 (int (*)(...))QAccelerometer::~QAccelerometer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QAccelerometer
+ size=16 align=8
+ base size=16 base align=8
+QAccelerometer (0x0x7f7ba3278af8) 0
+ vptr=((& QAccelerometer::_ZTV14QAccelerometer) + 16u)
+ QSensor (0x0x7f7ba3278b60) 0
+ primary-for QAccelerometer (0x0x7f7ba3278af8)
+ QObject (0x0x7f7ba2ea5d80) 0
+ primary-for QSensor (0x0x7f7ba3278b60)
+
+Class QAltimeterReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAltimeterReading::QPrivateSignal (0x0x7f7ba2ea5ea0) 0 empty
+
+Vtable for QAltimeterReading
+QAltimeterReading::_ZTV17QAltimeterReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QAltimeterReading)
+16 (int (*)(...))QAltimeterReading::metaObject
+24 (int (*)(...))QAltimeterReading::qt_metacast
+32 (int (*)(...))QAltimeterReading::qt_metacall
+40 (int (*)(...))QAltimeterReading::~QAltimeterReading
+48 (int (*)(...))QAltimeterReading::~QAltimeterReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAltimeterReading::copyValuesFrom
+
+Class QAltimeterReading
+ size=32 align=8
+ base size=32 base align=8
+QAltimeterReading (0x0x7f7ba3278bc8) 0
+ vptr=((& QAltimeterReading::_ZTV17QAltimeterReading) + 16u)
+ QSensorReading (0x0x7f7ba3278c30) 0
+ primary-for QAltimeterReading (0x0x7f7ba3278bc8)
+ QObject (0x0x7f7ba2ea5e40) 0
+ primary-for QSensorReading (0x0x7f7ba3278c30)
+
+Vtable for QAltimeterFilter
+QAltimeterFilter::_ZTV16QAltimeterFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QAltimeterFilter)
+16 (int (*)(...))QAltimeterFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAltimeterFilter
+ size=16 align=8
+ base size=16 base align=8
+QAltimeterFilter (0x0x7f7ba3278c98) 0
+ vptr=((& QAltimeterFilter::_ZTV16QAltimeterFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2ea5f60) 0
+ primary-for QAltimeterFilter (0x0x7f7ba3278c98)
+
+Class QAltimeter::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAltimeter::QPrivateSignal (0x0x7f7ba2faa060) 0 empty
+
+Vtable for QAltimeter
+QAltimeter::_ZTV10QAltimeter: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QAltimeter)
+16 (int (*)(...))QAltimeter::metaObject
+24 (int (*)(...))QAltimeter::qt_metacast
+32 (int (*)(...))QAltimeter::qt_metacall
+40 (int (*)(...))QAltimeter::~QAltimeter
+48 (int (*)(...))QAltimeter::~QAltimeter
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QAltimeter
+ size=16 align=8
+ base size=16 base align=8
+QAltimeter (0x0x7f7ba3278d00) 0
+ vptr=((& QAltimeter::_ZTV10QAltimeter) + 16u)
+ QSensor (0x0x7f7ba3278d68) 0
+ primary-for QAltimeter (0x0x7f7ba3278d00)
+ QObject (0x0x7f7ba2faa000) 0
+ primary-for QSensor (0x0x7f7ba3278d68)
+
+Class QAmbientLightReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAmbientLightReading::QPrivateSignal (0x0x7f7ba2faa120) 0 empty
+
+Vtable for QAmbientLightReading
+QAmbientLightReading::_ZTV20QAmbientLightReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QAmbientLightReading)
+16 (int (*)(...))QAmbientLightReading::metaObject
+24 (int (*)(...))QAmbientLightReading::qt_metacast
+32 (int (*)(...))QAmbientLightReading::qt_metacall
+40 (int (*)(...))QAmbientLightReading::~QAmbientLightReading
+48 (int (*)(...))QAmbientLightReading::~QAmbientLightReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAmbientLightReading::copyValuesFrom
+
+Class QAmbientLightReading
+ size=32 align=8
+ base size=32 base align=8
+QAmbientLightReading (0x0x7f7ba3278dd0) 0
+ vptr=((& QAmbientLightReading::_ZTV20QAmbientLightReading) + 16u)
+ QSensorReading (0x0x7f7ba3278e38) 0
+ primary-for QAmbientLightReading (0x0x7f7ba3278dd0)
+ QObject (0x0x7f7ba2faa0c0) 0
+ primary-for QSensorReading (0x0x7f7ba3278e38)
+
+Vtable for QAmbientLightFilter
+QAmbientLightFilter::_ZTV19QAmbientLightFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAmbientLightFilter)
+16 (int (*)(...))QAmbientLightFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAmbientLightFilter
+ size=16 align=8
+ base size=16 base align=8
+QAmbientLightFilter (0x0x7f7ba3278ea0) 0
+ vptr=((& QAmbientLightFilter::_ZTV19QAmbientLightFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2faa1e0) 0
+ primary-for QAmbientLightFilter (0x0x7f7ba3278ea0)
+
+Class QAmbientLightSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAmbientLightSensor::QPrivateSignal (0x0x7f7ba2faa2a0) 0 empty
+
+Vtable for QAmbientLightSensor
+QAmbientLightSensor::_ZTV19QAmbientLightSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QAmbientLightSensor)
+16 (int (*)(...))QAmbientLightSensor::metaObject
+24 (int (*)(...))QAmbientLightSensor::qt_metacast
+32 (int (*)(...))QAmbientLightSensor::qt_metacall
+40 (int (*)(...))QAmbientLightSensor::~QAmbientLightSensor
+48 (int (*)(...))QAmbientLightSensor::~QAmbientLightSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QAmbientLightSensor
+ size=16 align=8
+ base size=16 base align=8
+QAmbientLightSensor (0x0x7f7ba3278f08) 0
+ vptr=((& QAmbientLightSensor::_ZTV19QAmbientLightSensor) + 16u)
+ QSensor (0x0x7f7ba3278f70) 0
+ primary-for QAmbientLightSensor (0x0x7f7ba3278f08)
+ QObject (0x0x7f7ba2faa240) 0
+ primary-for QSensor (0x0x7f7ba3278f70)
+
+Class QAmbientTemperatureReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAmbientTemperatureReading::QPrivateSignal (0x0x7f7ba2faa360) 0 empty
+
+Vtable for QAmbientTemperatureReading
+QAmbientTemperatureReading::_ZTV26QAmbientTemperatureReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI26QAmbientTemperatureReading)
+16 (int (*)(...))QAmbientTemperatureReading::metaObject
+24 (int (*)(...))QAmbientTemperatureReading::qt_metacast
+32 (int (*)(...))QAmbientTemperatureReading::qt_metacall
+40 (int (*)(...))QAmbientTemperatureReading::~QAmbientTemperatureReading
+48 (int (*)(...))QAmbientTemperatureReading::~QAmbientTemperatureReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QAmbientTemperatureReading::copyValuesFrom
+
+Class QAmbientTemperatureReading
+ size=32 align=8
+ base size=32 base align=8
+QAmbientTemperatureReading (0x0x7f7ba2fd6000) 0
+ vptr=((& QAmbientTemperatureReading::_ZTV26QAmbientTemperatureReading) + 16u)
+ QSensorReading (0x0x7f7ba2fd6068) 0
+ primary-for QAmbientTemperatureReading (0x0x7f7ba2fd6000)
+ QObject (0x0x7f7ba2faa300) 0
+ primary-for QSensorReading (0x0x7f7ba2fd6068)
+
+Vtable for QAmbientTemperatureFilter
+QAmbientTemperatureFilter::_ZTV25QAmbientTemperatureFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAmbientTemperatureFilter)
+16 (int (*)(...))QAmbientTemperatureFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QAmbientTemperatureFilter
+ size=16 align=8
+ base size=16 base align=8
+QAmbientTemperatureFilter (0x0x7f7ba2fd60d0) 0
+ vptr=((& QAmbientTemperatureFilter::_ZTV25QAmbientTemperatureFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2faa420) 0
+ primary-for QAmbientTemperatureFilter (0x0x7f7ba2fd60d0)
+
+Class QAmbientTemperatureSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QAmbientTemperatureSensor::QPrivateSignal (0x0x7f7ba2faa4e0) 0 empty
+
+Vtable for QAmbientTemperatureSensor
+QAmbientTemperatureSensor::_ZTV25QAmbientTemperatureSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI25QAmbientTemperatureSensor)
+16 (int (*)(...))QAmbientTemperatureSensor::metaObject
+24 (int (*)(...))QAmbientTemperatureSensor::qt_metacast
+32 (int (*)(...))QAmbientTemperatureSensor::qt_metacall
+40 (int (*)(...))QAmbientTemperatureSensor::~QAmbientTemperatureSensor
+48 (int (*)(...))QAmbientTemperatureSensor::~QAmbientTemperatureSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QAmbientTemperatureSensor
+ size=16 align=8
+ base size=16 base align=8
+QAmbientTemperatureSensor (0x0x7f7ba2fd6138) 0
+ vptr=((& QAmbientTemperatureSensor::_ZTV25QAmbientTemperatureSensor) + 16u)
+ QSensor (0x0x7f7ba2fd61a0) 0
+ primary-for QAmbientTemperatureSensor (0x0x7f7ba2fd6138)
+ QObject (0x0x7f7ba2faa480) 0
+ primary-for QSensor (0x0x7f7ba2fd61a0)
+
+Class QCompassReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCompassReading::QPrivateSignal (0x0x7f7ba2faa5a0) 0 empty
+
+Vtable for QCompassReading
+QCompassReading::_ZTV15QCompassReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QCompassReading)
+16 (int (*)(...))QCompassReading::metaObject
+24 (int (*)(...))QCompassReading::qt_metacast
+32 (int (*)(...))QCompassReading::qt_metacall
+40 (int (*)(...))QCompassReading::~QCompassReading
+48 (int (*)(...))QCompassReading::~QCompassReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QCompassReading::copyValuesFrom
+
+Class QCompassReading
+ size=32 align=8
+ base size=32 base align=8
+QCompassReading (0x0x7f7ba2fd6208) 0
+ vptr=((& QCompassReading::_ZTV15QCompassReading) + 16u)
+ QSensorReading (0x0x7f7ba2fd6270) 0
+ primary-for QCompassReading (0x0x7f7ba2fd6208)
+ QObject (0x0x7f7ba2faa540) 0
+ primary-for QSensorReading (0x0x7f7ba2fd6270)
+
+Vtable for QCompassFilter
+QCompassFilter::_ZTV14QCompassFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QCompassFilter)
+16 (int (*)(...))QCompassFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QCompassFilter
+ size=16 align=8
+ base size=16 base align=8
+QCompassFilter (0x0x7f7ba2fd62d8) 0
+ vptr=((& QCompassFilter::_ZTV14QCompassFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2faa660) 0
+ primary-for QCompassFilter (0x0x7f7ba2fd62d8)
+
+Class QCompass::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QCompass::QPrivateSignal (0x0x7f7ba2faa720) 0 empty
+
+Vtable for QCompass
+QCompass::_ZTV8QCompass: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI8QCompass)
+16 (int (*)(...))QCompass::metaObject
+24 (int (*)(...))QCompass::qt_metacast
+32 (int (*)(...))QCompass::qt_metacall
+40 (int (*)(...))QCompass::~QCompass
+48 (int (*)(...))QCompass::~QCompass
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QCompass
+ size=16 align=8
+ base size=16 base align=8
+QCompass (0x0x7f7ba2fd6340) 0
+ vptr=((& QCompass::_ZTV8QCompass) + 16u)
+ QSensor (0x0x7f7ba2fd63a8) 0
+ primary-for QCompass (0x0x7f7ba2fd6340)
+ QObject (0x0x7f7ba2faa6c0) 0
+ primary-for QSensor (0x0x7f7ba2fd63a8)
+
+Class QDistanceReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDistanceReading::QPrivateSignal (0x0x7f7ba2faa7e0) 0 empty
+
+Vtable for QDistanceReading
+QDistanceReading::_ZTV16QDistanceReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QDistanceReading)
+16 (int (*)(...))QDistanceReading::metaObject
+24 (int (*)(...))QDistanceReading::qt_metacast
+32 (int (*)(...))QDistanceReading::qt_metacall
+40 (int (*)(...))QDistanceReading::~QDistanceReading
+48 (int (*)(...))QDistanceReading::~QDistanceReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QDistanceReading::copyValuesFrom
+
+Class QDistanceReading
+ size=32 align=8
+ base size=32 base align=8
+QDistanceReading (0x0x7f7ba2fd6410) 0
+ vptr=((& QDistanceReading::_ZTV16QDistanceReading) + 16u)
+ QSensorReading (0x0x7f7ba2fd6478) 0
+ primary-for QDistanceReading (0x0x7f7ba2fd6410)
+ QObject (0x0x7f7ba2faa780) 0
+ primary-for QSensorReading (0x0x7f7ba2fd6478)
+
+Vtable for QDistanceFilter
+QDistanceFilter::_ZTV15QDistanceFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDistanceFilter)
+16 (int (*)(...))QDistanceFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QDistanceFilter
+ size=16 align=8
+ base size=16 base align=8
+QDistanceFilter (0x0x7f7ba2fd64e0) 0
+ vptr=((& QDistanceFilter::_ZTV15QDistanceFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2faa8a0) 0
+ primary-for QDistanceFilter (0x0x7f7ba2fd64e0)
+
+Class QDistanceSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QDistanceSensor::QPrivateSignal (0x0x7f7ba2faa960) 0 empty
+
+Vtable for QDistanceSensor
+QDistanceSensor::_ZTV15QDistanceSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QDistanceSensor)
+16 (int (*)(...))QDistanceSensor::metaObject
+24 (int (*)(...))QDistanceSensor::qt_metacast
+32 (int (*)(...))QDistanceSensor::qt_metacall
+40 (int (*)(...))QDistanceSensor::~QDistanceSensor
+48 (int (*)(...))QDistanceSensor::~QDistanceSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QDistanceSensor
+ size=16 align=8
+ base size=16 base align=8
+QDistanceSensor (0x0x7f7ba2fd6548) 0
+ vptr=((& QDistanceSensor::_ZTV15QDistanceSensor) + 16u)
+ QSensor (0x0x7f7ba2fd65b0) 0
+ primary-for QDistanceSensor (0x0x7f7ba2fd6548)
+ QObject (0x0x7f7ba2faa900) 0
+ primary-for QSensor (0x0x7f7ba2fd65b0)
+
+Class QGyroscopeReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGyroscopeReading::QPrivateSignal (0x0x7f7ba2faaa20) 0 empty
+
+Vtable for QGyroscopeReading
+QGyroscopeReading::_ZTV17QGyroscopeReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QGyroscopeReading)
+16 (int (*)(...))QGyroscopeReading::metaObject
+24 (int (*)(...))QGyroscopeReading::qt_metacast
+32 (int (*)(...))QGyroscopeReading::qt_metacall
+40 (int (*)(...))QGyroscopeReading::~QGyroscopeReading
+48 (int (*)(...))QGyroscopeReading::~QGyroscopeReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QGyroscopeReading::copyValuesFrom
+
+Class QGyroscopeReading
+ size=32 align=8
+ base size=32 base align=8
+QGyroscopeReading (0x0x7f7ba2fd6618) 0
+ vptr=((& QGyroscopeReading::_ZTV17QGyroscopeReading) + 16u)
+ QSensorReading (0x0x7f7ba2fd6680) 0
+ primary-for QGyroscopeReading (0x0x7f7ba2fd6618)
+ QObject (0x0x7f7ba2faa9c0) 0
+ primary-for QSensorReading (0x0x7f7ba2fd6680)
+
+Vtable for QGyroscopeFilter
+QGyroscopeFilter::_ZTV16QGyroscopeFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QGyroscopeFilter)
+16 (int (*)(...))QGyroscopeFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QGyroscopeFilter
+ size=16 align=8
+ base size=16 base align=8
+QGyroscopeFilter (0x0x7f7ba2fd66e8) 0
+ vptr=((& QGyroscopeFilter::_ZTV16QGyroscopeFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2faaae0) 0
+ primary-for QGyroscopeFilter (0x0x7f7ba2fd66e8)
+
+Class QGyroscope::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QGyroscope::QPrivateSignal (0x0x7f7ba2faaba0) 0 empty
+
+Vtable for QGyroscope
+QGyroscope::_ZTV10QGyroscope: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QGyroscope)
+16 (int (*)(...))QGyroscope::metaObject
+24 (int (*)(...))QGyroscope::qt_metacast
+32 (int (*)(...))QGyroscope::qt_metacall
+40 (int (*)(...))QGyroscope::~QGyroscope
+48 (int (*)(...))QGyroscope::~QGyroscope
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QGyroscope
+ size=16 align=8
+ base size=16 base align=8
+QGyroscope (0x0x7f7ba2fd6750) 0
+ vptr=((& QGyroscope::_ZTV10QGyroscope) + 16u)
+ QSensor (0x0x7f7ba2fd67b8) 0
+ primary-for QGyroscope (0x0x7f7ba2fd6750)
+ QObject (0x0x7f7ba2faab40) 0
+ primary-for QSensor (0x0x7f7ba2fd67b8)
+
+Class QHolsterReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHolsterReading::QPrivateSignal (0x0x7f7ba2faac60) 0 empty
+
+Vtable for QHolsterReading
+QHolsterReading::_ZTV15QHolsterReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QHolsterReading)
+16 (int (*)(...))QHolsterReading::metaObject
+24 (int (*)(...))QHolsterReading::qt_metacast
+32 (int (*)(...))QHolsterReading::qt_metacall
+40 (int (*)(...))QHolsterReading::~QHolsterReading
+48 (int (*)(...))QHolsterReading::~QHolsterReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QHolsterReading::copyValuesFrom
+
+Class QHolsterReading
+ size=32 align=8
+ base size=32 base align=8
+QHolsterReading (0x0x7f7ba2fd6820) 0
+ vptr=((& QHolsterReading::_ZTV15QHolsterReading) + 16u)
+ QSensorReading (0x0x7f7ba2fd6888) 0
+ primary-for QHolsterReading (0x0x7f7ba2fd6820)
+ QObject (0x0x7f7ba2faac00) 0
+ primary-for QSensorReading (0x0x7f7ba2fd6888)
+
+Vtable for QHolsterFilter
+QHolsterFilter::_ZTV14QHolsterFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QHolsterFilter)
+16 (int (*)(...))QHolsterFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QHolsterFilter
+ size=16 align=8
+ base size=16 base align=8
+QHolsterFilter (0x0x7f7ba2fd68f0) 0
+ vptr=((& QHolsterFilter::_ZTV14QHolsterFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2faad20) 0
+ primary-for QHolsterFilter (0x0x7f7ba2fd68f0)
+
+Class QHolsterSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHolsterSensor::QPrivateSignal (0x0x7f7ba2faade0) 0 empty
+
+Vtable for QHolsterSensor
+QHolsterSensor::_ZTV14QHolsterSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QHolsterSensor)
+16 (int (*)(...))QHolsterSensor::metaObject
+24 (int (*)(...))QHolsterSensor::qt_metacast
+32 (int (*)(...))QHolsterSensor::qt_metacall
+40 (int (*)(...))QHolsterSensor::~QHolsterSensor
+48 (int (*)(...))QHolsterSensor::~QHolsterSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QHolsterSensor
+ size=16 align=8
+ base size=16 base align=8
+QHolsterSensor (0x0x7f7ba2fd6958) 0
+ vptr=((& QHolsterSensor::_ZTV14QHolsterSensor) + 16u)
+ QSensor (0x0x7f7ba2fd69c0) 0
+ primary-for QHolsterSensor (0x0x7f7ba2fd6958)
+ QObject (0x0x7f7ba2faad80) 0
+ primary-for QSensor (0x0x7f7ba2fd69c0)
+
+Class QHumidityReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHumidityReading::QPrivateSignal (0x0x7f7ba2faaea0) 0 empty
+
+Vtable for QHumidityReading
+QHumidityReading::_ZTV16QHumidityReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QHumidityReading)
+16 (int (*)(...))QHumidityReading::metaObject
+24 (int (*)(...))QHumidityReading::qt_metacast
+32 (int (*)(...))QHumidityReading::qt_metacall
+40 (int (*)(...))QHumidityReading::~QHumidityReading
+48 (int (*)(...))QHumidityReading::~QHumidityReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QHumidityReading::copyValuesFrom
+
+Class QHumidityReading
+ size=32 align=8
+ base size=32 base align=8
+QHumidityReading (0x0x7f7ba2fd6a28) 0
+ vptr=((& QHumidityReading::_ZTV16QHumidityReading) + 16u)
+ QSensorReading (0x0x7f7ba2fd6a90) 0
+ primary-for QHumidityReading (0x0x7f7ba2fd6a28)
+ QObject (0x0x7f7ba2faae40) 0
+ primary-for QSensorReading (0x0x7f7ba2fd6a90)
+
+Vtable for QHumidityFilter
+QHumidityFilter::_ZTV15QHumidityFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QHumidityFilter)
+16 (int (*)(...))QHumidityFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QHumidityFilter
+ size=16 align=8
+ base size=16 base align=8
+QHumidityFilter (0x0x7f7ba2fd6af8) 0
+ vptr=((& QHumidityFilter::_ZTV15QHumidityFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2faaf60) 0
+ primary-for QHumidityFilter (0x0x7f7ba2fd6af8)
+
+Class QHumiditySensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QHumiditySensor::QPrivateSignal (0x0x7f7ba2c8b060) 0 empty
+
+Vtable for QHumiditySensor
+QHumiditySensor::_ZTV15QHumiditySensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QHumiditySensor)
+16 (int (*)(...))QHumiditySensor::metaObject
+24 (int (*)(...))QHumiditySensor::qt_metacast
+32 (int (*)(...))QHumiditySensor::qt_metacall
+40 (int (*)(...))QHumiditySensor::~QHumiditySensor
+48 (int (*)(...))QHumiditySensor::~QHumiditySensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QHumiditySensor
+ size=16 align=8
+ base size=16 base align=8
+QHumiditySensor (0x0x7f7ba2fd6b60) 0
+ vptr=((& QHumiditySensor::_ZTV15QHumiditySensor) + 16u)
+ QSensor (0x0x7f7ba2fd6bc8) 0
+ primary-for QHumiditySensor (0x0x7f7ba2fd6b60)
+ QObject (0x0x7f7ba2c8b000) 0
+ primary-for QSensor (0x0x7f7ba2fd6bc8)
+
+Class QIRProximityReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIRProximityReading::QPrivateSignal (0x0x7f7ba2c8b120) 0 empty
+
+Vtable for QIRProximityReading
+QIRProximityReading::_ZTV19QIRProximityReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QIRProximityReading)
+16 (int (*)(...))QIRProximityReading::metaObject
+24 (int (*)(...))QIRProximityReading::qt_metacast
+32 (int (*)(...))QIRProximityReading::qt_metacall
+40 (int (*)(...))QIRProximityReading::~QIRProximityReading
+48 (int (*)(...))QIRProximityReading::~QIRProximityReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QIRProximityReading::copyValuesFrom
+
+Class QIRProximityReading
+ size=32 align=8
+ base size=32 base align=8
+QIRProximityReading (0x0x7f7ba2fd6c30) 0
+ vptr=((& QIRProximityReading::_ZTV19QIRProximityReading) + 16u)
+ QSensorReading (0x0x7f7ba2fd6c98) 0
+ primary-for QIRProximityReading (0x0x7f7ba2fd6c30)
+ QObject (0x0x7f7ba2c8b0c0) 0
+ primary-for QSensorReading (0x0x7f7ba2fd6c98)
+
+Vtable for QIRProximityFilter
+QIRProximityFilter::_ZTV18QIRProximityFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QIRProximityFilter)
+16 (int (*)(...))QIRProximityFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QIRProximityFilter
+ size=16 align=8
+ base size=16 base align=8
+QIRProximityFilter (0x0x7f7ba2fd6d00) 0
+ vptr=((& QIRProximityFilter::_ZTV18QIRProximityFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2c8b1e0) 0
+ primary-for QIRProximityFilter (0x0x7f7ba2fd6d00)
+
+Class QIRProximitySensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QIRProximitySensor::QPrivateSignal (0x0x7f7ba2c8b2a0) 0 empty
+
+Vtable for QIRProximitySensor
+QIRProximitySensor::_ZTV18QIRProximitySensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QIRProximitySensor)
+16 (int (*)(...))QIRProximitySensor::metaObject
+24 (int (*)(...))QIRProximitySensor::qt_metacast
+32 (int (*)(...))QIRProximitySensor::qt_metacall
+40 (int (*)(...))QIRProximitySensor::~QIRProximitySensor
+48 (int (*)(...))QIRProximitySensor::~QIRProximitySensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QIRProximitySensor
+ size=16 align=8
+ base size=16 base align=8
+QIRProximitySensor (0x0x7f7ba2fd6d68) 0
+ vptr=((& QIRProximitySensor::_ZTV18QIRProximitySensor) + 16u)
+ QSensor (0x0x7f7ba2fd6dd0) 0
+ primary-for QIRProximitySensor (0x0x7f7ba2fd6d68)
+ QObject (0x0x7f7ba2c8b240) 0
+ primary-for QSensor (0x0x7f7ba2fd6dd0)
+
+Class QLidReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLidReading::QPrivateSignal (0x0x7f7ba2c8b360) 0 empty
+
+Vtable for QLidReading
+QLidReading::_ZTV11QLidReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QLidReading)
+16 (int (*)(...))QLidReading::metaObject
+24 (int (*)(...))QLidReading::qt_metacast
+32 (int (*)(...))QLidReading::qt_metacall
+40 (int (*)(...))QLidReading::~QLidReading
+48 (int (*)(...))QLidReading::~QLidReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLidReading::copyValuesFrom
+
+Class QLidReading
+ size=32 align=8
+ base size=32 base align=8
+QLidReading (0x0x7f7ba2fd6e38) 0
+ vptr=((& QLidReading::_ZTV11QLidReading) + 16u)
+ QSensorReading (0x0x7f7ba2fd6ea0) 0
+ primary-for QLidReading (0x0x7f7ba2fd6e38)
+ QObject (0x0x7f7ba2c8b300) 0
+ primary-for QSensorReading (0x0x7f7ba2fd6ea0)
+
+Vtable for QLidFilter
+QLidFilter::_ZTV10QLidFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QLidFilter)
+16 (int (*)(...))QLidFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QLidFilter
+ size=16 align=8
+ base size=16 base align=8
+QLidFilter (0x0x7f7ba2fd6f08) 0
+ vptr=((& QLidFilter::_ZTV10QLidFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2c8b420) 0
+ primary-for QLidFilter (0x0x7f7ba2fd6f08)
+
+Class QLidSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLidSensor::QPrivateSignal (0x0x7f7ba2c8b4e0) 0 empty
+
+Vtable for QLidSensor
+QLidSensor::_ZTV10QLidSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QLidSensor)
+16 (int (*)(...))QLidSensor::metaObject
+24 (int (*)(...))QLidSensor::qt_metacast
+32 (int (*)(...))QLidSensor::qt_metacall
+40 (int (*)(...))QLidSensor::~QLidSensor
+48 (int (*)(...))QLidSensor::~QLidSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QLidSensor
+ size=16 align=8
+ base size=16 base align=8
+QLidSensor (0x0x7f7ba2fd6f70) 0
+ vptr=((& QLidSensor::_ZTV10QLidSensor) + 16u)
+ QSensor (0x0x7f7ba2ccb000) 0
+ primary-for QLidSensor (0x0x7f7ba2fd6f70)
+ QObject (0x0x7f7ba2c8b480) 0
+ primary-for QSensor (0x0x7f7ba2ccb000)
+
+Class QLightReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLightReading::QPrivateSignal (0x0x7f7ba2c8b5a0) 0 empty
+
+Vtable for QLightReading
+QLightReading::_ZTV13QLightReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QLightReading)
+16 (int (*)(...))QLightReading::metaObject
+24 (int (*)(...))QLightReading::qt_metacast
+32 (int (*)(...))QLightReading::qt_metacall
+40 (int (*)(...))QLightReading::~QLightReading
+48 (int (*)(...))QLightReading::~QLightReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QLightReading::copyValuesFrom
+
+Class QLightReading
+ size=32 align=8
+ base size=32 base align=8
+QLightReading (0x0x7f7ba2ccb068) 0
+ vptr=((& QLightReading::_ZTV13QLightReading) + 16u)
+ QSensorReading (0x0x7f7ba2ccb0d0) 0
+ primary-for QLightReading (0x0x7f7ba2ccb068)
+ QObject (0x0x7f7ba2c8b540) 0
+ primary-for QSensorReading (0x0x7f7ba2ccb0d0)
+
+Vtable for QLightFilter
+QLightFilter::_ZTV12QLightFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QLightFilter)
+16 (int (*)(...))QLightFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QLightFilter
+ size=16 align=8
+ base size=16 base align=8
+QLightFilter (0x0x7f7ba2ccb138) 0
+ vptr=((& QLightFilter::_ZTV12QLightFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2c8b660) 0
+ primary-for QLightFilter (0x0x7f7ba2ccb138)
+
+Class QLightSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QLightSensor::QPrivateSignal (0x0x7f7ba2c8b720) 0 empty
+
+Vtable for QLightSensor
+QLightSensor::_ZTV12QLightSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QLightSensor)
+16 (int (*)(...))QLightSensor::metaObject
+24 (int (*)(...))QLightSensor::qt_metacast
+32 (int (*)(...))QLightSensor::qt_metacall
+40 (int (*)(...))QLightSensor::~QLightSensor
+48 (int (*)(...))QLightSensor::~QLightSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QLightSensor
+ size=16 align=8
+ base size=16 base align=8
+QLightSensor (0x0x7f7ba2ccb1a0) 0
+ vptr=((& QLightSensor::_ZTV12QLightSensor) + 16u)
+ QSensor (0x0x7f7ba2ccb208) 0
+ primary-for QLightSensor (0x0x7f7ba2ccb1a0)
+ QObject (0x0x7f7ba2c8b6c0) 0
+ primary-for QSensor (0x0x7f7ba2ccb208)
+
+Class QMagnetometerReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMagnetometerReading::QPrivateSignal (0x0x7f7ba2c8b7e0) 0 empty
+
+Vtable for QMagnetometerReading
+QMagnetometerReading::_ZTV20QMagnetometerReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI20QMagnetometerReading)
+16 (int (*)(...))QMagnetometerReading::metaObject
+24 (int (*)(...))QMagnetometerReading::qt_metacast
+32 (int (*)(...))QMagnetometerReading::qt_metacall
+40 (int (*)(...))QMagnetometerReading::~QMagnetometerReading
+48 (int (*)(...))QMagnetometerReading::~QMagnetometerReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QMagnetometerReading::copyValuesFrom
+
+Class QMagnetometerReading
+ size=32 align=8
+ base size=32 base align=8
+QMagnetometerReading (0x0x7f7ba2ccb270) 0
+ vptr=((& QMagnetometerReading::_ZTV20QMagnetometerReading) + 16u)
+ QSensorReading (0x0x7f7ba2ccb2d8) 0
+ primary-for QMagnetometerReading (0x0x7f7ba2ccb270)
+ QObject (0x0x7f7ba2c8b780) 0
+ primary-for QSensorReading (0x0x7f7ba2ccb2d8)
+
+Vtable for QMagnetometerFilter
+QMagnetometerFilter::_ZTV19QMagnetometerFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QMagnetometerFilter)
+16 (int (*)(...))QMagnetometerFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QMagnetometerFilter
+ size=16 align=8
+ base size=16 base align=8
+QMagnetometerFilter (0x0x7f7ba2ccb340) 0
+ vptr=((& QMagnetometerFilter::_ZTV19QMagnetometerFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2c8b8a0) 0
+ primary-for QMagnetometerFilter (0x0x7f7ba2ccb340)
+
+Class QMagnetometer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QMagnetometer::QPrivateSignal (0x0x7f7ba2c8b960) 0 empty
+
+Vtable for QMagnetometer
+QMagnetometer::_ZTV13QMagnetometer: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI13QMagnetometer)
+16 (int (*)(...))QMagnetometer::metaObject
+24 (int (*)(...))QMagnetometer::qt_metacast
+32 (int (*)(...))QMagnetometer::qt_metacall
+40 (int (*)(...))QMagnetometer::~QMagnetometer
+48 (int (*)(...))QMagnetometer::~QMagnetometer
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QMagnetometer
+ size=16 align=8
+ base size=16 base align=8
+QMagnetometer (0x0x7f7ba2ccb3a8) 0
+ vptr=((& QMagnetometer::_ZTV13QMagnetometer) + 16u)
+ QSensor (0x0x7f7ba2ccb410) 0
+ primary-for QMagnetometer (0x0x7f7ba2ccb3a8)
+ QObject (0x0x7f7ba2c8b900) 0
+ primary-for QSensor (0x0x7f7ba2ccb410)
+
+Class QOrientationReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOrientationReading::QPrivateSignal (0x0x7f7ba2c8ba20) 0 empty
+
+Vtable for QOrientationReading
+QOrientationReading::_ZTV19QOrientationReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI19QOrientationReading)
+16 (int (*)(...))QOrientationReading::metaObject
+24 (int (*)(...))QOrientationReading::qt_metacast
+32 (int (*)(...))QOrientationReading::qt_metacall
+40 (int (*)(...))QOrientationReading::~QOrientationReading
+48 (int (*)(...))QOrientationReading::~QOrientationReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QOrientationReading::copyValuesFrom
+
+Class QOrientationReading
+ size=32 align=8
+ base size=32 base align=8
+QOrientationReading (0x0x7f7ba2ccb478) 0
+ vptr=((& QOrientationReading::_ZTV19QOrientationReading) + 16u)
+ QSensorReading (0x0x7f7ba2ccb4e0) 0
+ primary-for QOrientationReading (0x0x7f7ba2ccb478)
+ QObject (0x0x7f7ba2c8b9c0) 0
+ primary-for QSensorReading (0x0x7f7ba2ccb4e0)
+
+Vtable for QOrientationFilter
+QOrientationFilter::_ZTV18QOrientationFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOrientationFilter)
+16 (int (*)(...))QOrientationFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QOrientationFilter
+ size=16 align=8
+ base size=16 base align=8
+QOrientationFilter (0x0x7f7ba2ccb548) 0
+ vptr=((& QOrientationFilter::_ZTV18QOrientationFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2c8bae0) 0
+ primary-for QOrientationFilter (0x0x7f7ba2ccb548)
+
+Class QOrientationSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QOrientationSensor::QPrivateSignal (0x0x7f7ba2c8bba0) 0 empty
+
+Vtable for QOrientationSensor
+QOrientationSensor::_ZTV18QOrientationSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI18QOrientationSensor)
+16 (int (*)(...))QOrientationSensor::metaObject
+24 (int (*)(...))QOrientationSensor::qt_metacast
+32 (int (*)(...))QOrientationSensor::qt_metacall
+40 (int (*)(...))QOrientationSensor::~QOrientationSensor
+48 (int (*)(...))QOrientationSensor::~QOrientationSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QOrientationSensor
+ size=16 align=8
+ base size=16 base align=8
+QOrientationSensor (0x0x7f7ba2ccb5b0) 0
+ vptr=((& QOrientationSensor::_ZTV18QOrientationSensor) + 16u)
+ QSensor (0x0x7f7ba2ccb618) 0
+ primary-for QOrientationSensor (0x0x7f7ba2ccb5b0)
+ QObject (0x0x7f7ba2c8bb40) 0
+ primary-for QSensor (0x0x7f7ba2ccb618)
+
+Class QPressureReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPressureReading::QPrivateSignal (0x0x7f7ba2c8bc60) 0 empty
+
+Vtable for QPressureReading
+QPressureReading::_ZTV16QPressureReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QPressureReading)
+16 (int (*)(...))QPressureReading::metaObject
+24 (int (*)(...))QPressureReading::qt_metacast
+32 (int (*)(...))QPressureReading::qt_metacall
+40 (int (*)(...))QPressureReading::~QPressureReading
+48 (int (*)(...))QPressureReading::~QPressureReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QPressureReading::copyValuesFrom
+
+Class QPressureReading
+ size=32 align=8
+ base size=32 base align=8
+QPressureReading (0x0x7f7ba2ccb680) 0
+ vptr=((& QPressureReading::_ZTV16QPressureReading) + 16u)
+ QSensorReading (0x0x7f7ba2ccb6e8) 0
+ primary-for QPressureReading (0x0x7f7ba2ccb680)
+ QObject (0x0x7f7ba2c8bc00) 0
+ primary-for QSensorReading (0x0x7f7ba2ccb6e8)
+
+Vtable for QPressureFilter
+QPressureFilter::_ZTV15QPressureFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QPressureFilter)
+16 (int (*)(...))QPressureFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QPressureFilter
+ size=16 align=8
+ base size=16 base align=8
+QPressureFilter (0x0x7f7ba2ccb750) 0
+ vptr=((& QPressureFilter::_ZTV15QPressureFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2c8bd20) 0
+ primary-for QPressureFilter (0x0x7f7ba2ccb750)
+
+Class QPressureSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QPressureSensor::QPrivateSignal (0x0x7f7ba2c8bde0) 0 empty
+
+Vtable for QPressureSensor
+QPressureSensor::_ZTV15QPressureSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QPressureSensor)
+16 (int (*)(...))QPressureSensor::metaObject
+24 (int (*)(...))QPressureSensor::qt_metacast
+32 (int (*)(...))QPressureSensor::qt_metacall
+40 (int (*)(...))QPressureSensor::~QPressureSensor
+48 (int (*)(...))QPressureSensor::~QPressureSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QPressureSensor
+ size=16 align=8
+ base size=16 base align=8
+QPressureSensor (0x0x7f7ba2ccb7b8) 0
+ vptr=((& QPressureSensor::_ZTV15QPressureSensor) + 16u)
+ QSensor (0x0x7f7ba2ccb820) 0
+ primary-for QPressureSensor (0x0x7f7ba2ccb7b8)
+ QObject (0x0x7f7ba2c8bd80) 0
+ primary-for QSensor (0x0x7f7ba2ccb820)
+
+Class QProximityReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProximityReading::QPrivateSignal (0x0x7f7ba2c8bea0) 0 empty
+
+Vtable for QProximityReading
+QProximityReading::_ZTV17QProximityReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI17QProximityReading)
+16 (int (*)(...))QProximityReading::metaObject
+24 (int (*)(...))QProximityReading::qt_metacast
+32 (int (*)(...))QProximityReading::qt_metacall
+40 (int (*)(...))QProximityReading::~QProximityReading
+48 (int (*)(...))QProximityReading::~QProximityReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QProximityReading::copyValuesFrom
+
+Class QProximityReading
+ size=32 align=8
+ base size=32 base align=8
+QProximityReading (0x0x7f7ba2ccb888) 0
+ vptr=((& QProximityReading::_ZTV17QProximityReading) + 16u)
+ QSensorReading (0x0x7f7ba2ccb8f0) 0
+ primary-for QProximityReading (0x0x7f7ba2ccb888)
+ QObject (0x0x7f7ba2c8be40) 0
+ primary-for QSensorReading (0x0x7f7ba2ccb8f0)
+
+Vtable for QProximityFilter
+QProximityFilter::_ZTV16QProximityFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QProximityFilter)
+16 (int (*)(...))QProximityFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QProximityFilter
+ size=16 align=8
+ base size=16 base align=8
+QProximityFilter (0x0x7f7ba2ccb958) 0
+ vptr=((& QProximityFilter::_ZTV16QProximityFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2c8bf60) 0
+ primary-for QProximityFilter (0x0x7f7ba2ccb958)
+
+Class QProximitySensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QProximitySensor::QPrivateSignal (0x0x7f7ba2d72060) 0 empty
+
+Vtable for QProximitySensor
+QProximitySensor::_ZTV16QProximitySensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QProximitySensor)
+16 (int (*)(...))QProximitySensor::metaObject
+24 (int (*)(...))QProximitySensor::qt_metacast
+32 (int (*)(...))QProximitySensor::qt_metacall
+40 (int (*)(...))QProximitySensor::~QProximitySensor
+48 (int (*)(...))QProximitySensor::~QProximitySensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QProximitySensor
+ size=16 align=8
+ base size=16 base align=8
+QProximitySensor (0x0x7f7ba2ccb9c0) 0
+ vptr=((& QProximitySensor::_ZTV16QProximitySensor) + 16u)
+ QSensor (0x0x7f7ba2ccba28) 0
+ primary-for QProximitySensor (0x0x7f7ba2ccb9c0)
+ QObject (0x0x7f7ba2d72000) 0
+ primary-for QSensor (0x0x7f7ba2ccba28)
+
+Class QRotationReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRotationReading::QPrivateSignal (0x0x7f7ba2d72120) 0 empty
+
+Vtable for QRotationReading
+QRotationReading::_ZTV16QRotationReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI16QRotationReading)
+16 (int (*)(...))QRotationReading::metaObject
+24 (int (*)(...))QRotationReading::qt_metacast
+32 (int (*)(...))QRotationReading::qt_metacall
+40 (int (*)(...))QRotationReading::~QRotationReading
+48 (int (*)(...))QRotationReading::~QRotationReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QRotationReading::copyValuesFrom
+
+Class QRotationReading
+ size=32 align=8
+ base size=32 base align=8
+QRotationReading (0x0x7f7ba2ccba90) 0
+ vptr=((& QRotationReading::_ZTV16QRotationReading) + 16u)
+ QSensorReading (0x0x7f7ba2ccbaf8) 0
+ primary-for QRotationReading (0x0x7f7ba2ccba90)
+ QObject (0x0x7f7ba2d720c0) 0
+ primary-for QSensorReading (0x0x7f7ba2ccbaf8)
+
+Vtable for QRotationFilter
+QRotationFilter::_ZTV15QRotationFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QRotationFilter)
+16 (int (*)(...))QRotationFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QRotationFilter
+ size=16 align=8
+ base size=16 base align=8
+QRotationFilter (0x0x7f7ba2ccbb60) 0
+ vptr=((& QRotationFilter::_ZTV15QRotationFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2d721e0) 0
+ primary-for QRotationFilter (0x0x7f7ba2ccbb60)
+
+Class QRotationSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QRotationSensor::QPrivateSignal (0x0x7f7ba2d722a0) 0 empty
+
+Vtable for QRotationSensor
+QRotationSensor::_ZTV15QRotationSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI15QRotationSensor)
+16 (int (*)(...))QRotationSensor::metaObject
+24 (int (*)(...))QRotationSensor::qt_metacast
+32 (int (*)(...))QRotationSensor::qt_metacall
+40 (int (*)(...))QRotationSensor::~QRotationSensor
+48 (int (*)(...))QRotationSensor::~QRotationSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QRotationSensor
+ size=16 align=8
+ base size=16 base align=8
+QRotationSensor (0x0x7f7ba2ccbbc8) 0
+ vptr=((& QRotationSensor::_ZTV15QRotationSensor) + 16u)
+ QSensor (0x0x7f7ba2ccbc30) 0
+ primary-for QRotationSensor (0x0x7f7ba2ccbbc8)
+ QObject (0x0x7f7ba2d72240) 0
+ primary-for QSensor (0x0x7f7ba2ccbc30)
+
+Class QSensorManager
+ size=1 align=1
+ base size=0 base align=1
+QSensorManager (0x0x7f7ba2d72300) 0 empty
+
+Vtable for QSensorBackendFactory
+QSensorBackendFactory::_ZTV21QSensorBackendFactory: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QSensorBackendFactory)
+16 (int (*)(...))__cxa_pure_virtual
+24 0u
+32 0u
+
+Class QSensorBackendFactory
+ size=8 align=8
+ base size=8 base align=8
+QSensorBackendFactory (0x0x7f7ba2d72360) 0 nearly-empty
+ vptr=((& QSensorBackendFactory::_ZTV21QSensorBackendFactory) + 16u)
+
+Class QSensorBackend::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSensorBackend::QPrivateSignal (0x0x7f7ba2d72420) 0 empty
+
+Vtable for QSensorBackend
+QSensorBackend::_ZTV14QSensorBackend: 17u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QSensorBackend)
+16 (int (*)(...))QSensorBackend::metaObject
+24 (int (*)(...))QSensorBackend::qt_metacast
+32 (int (*)(...))QSensorBackend::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))QSensorBackend::isFeatureSupported
+
+Class QSensorBackend
+ size=16 align=8
+ base size=16 base align=8
+QSensorBackend (0x0x7f7ba2ccbc98) 0
+ vptr=((& QSensorBackend::_ZTV14QSensorBackend) + 16u)
+ QObject (0x0x7f7ba2d723c0) 0
+ primary-for QSensorBackend (0x0x7f7ba2ccbc98)
+
+Vtable for QSensorGesture
+QSensorGesture::_ZTV14QSensorGesture: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI14QSensorGesture)
+16 (int (*)(...))QSensorGesture::metaObject
+24 (int (*)(...))QObject::qt_metacast
+32 (int (*)(...))QSensorGesture::qt_metacall
+40 (int (*)(...))QSensorGesture::~QSensorGesture
+48 (int (*)(...))QSensorGesture::~QSensorGesture
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSensorGesture
+ size=24 align=8
+ base size=24 base align=8
+QSensorGesture (0x0x7f7ba2ccbd00) 0
+ vptr=((& QSensorGesture::_ZTV14QSensorGesture) + 16u)
+ QObject (0x0x7f7ba2d72480) 0
+ primary-for QSensorGesture (0x0x7f7ba2ccbd00)
+
+Class QSensorGestureRecognizer::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSensorGestureRecognizer::QPrivateSignal (0x0x7f7ba2d72540) 0 empty
+
+Vtable for QSensorGestureRecognizer
+QSensorGestureRecognizer::_ZTV24QSensorGestureRecognizer: 19u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI24QSensorGestureRecognizer)
+16 (int (*)(...))QSensorGestureRecognizer::metaObject
+24 (int (*)(...))QSensorGestureRecognizer::qt_metacast
+32 (int (*)(...))QSensorGestureRecognizer::qt_metacall
+40 0u
+48 0u
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))__cxa_pure_virtual
+120 (int (*)(...))__cxa_pure_virtual
+128 (int (*)(...))__cxa_pure_virtual
+136 (int (*)(...))__cxa_pure_virtual
+144 (int (*)(...))__cxa_pure_virtual
+
+Class QSensorGestureRecognizer
+ size=24 align=8
+ base size=24 base align=8
+QSensorGestureRecognizer (0x0x7f7ba2ccbd68) 0
+ vptr=((& QSensorGestureRecognizer::_ZTV24QSensorGestureRecognizer) + 16u)
+ QObject (0x0x7f7ba2d724e0) 0
+ primary-for QSensorGestureRecognizer (0x0x7f7ba2ccbd68)
+
+Class QSensorGestureManager::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QSensorGestureManager::QPrivateSignal (0x0x7f7ba2d72600) 0 empty
+
+Vtable for QSensorGestureManager
+QSensorGestureManager::_ZTV21QSensorGestureManager: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI21QSensorGestureManager)
+16 (int (*)(...))QSensorGestureManager::metaObject
+24 (int (*)(...))QSensorGestureManager::qt_metacast
+32 (int (*)(...))QSensorGestureManager::qt_metacall
+40 (int (*)(...))QSensorGestureManager::~QSensorGestureManager
+48 (int (*)(...))QSensorGestureManager::~QSensorGestureManager
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QSensorGestureManager
+ size=16 align=8
+ base size=16 base align=8
+QSensorGestureManager (0x0x7f7ba2ccbdd0) 0
+ vptr=((& QSensorGestureManager::_ZTV21QSensorGestureManager) + 16u)
+ QObject (0x0x7f7ba2d725a0) 0
+ primary-for QSensorGestureManager (0x0x7f7ba2ccbdd0)
+
+Vtable for QSensorGesturePluginInterface
+QSensorGesturePluginInterface::_ZTV29QSensorGesturePluginInterface: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI29QSensorGesturePluginInterface)
+16 0u
+24 0u
+32 (int (*)(...))__cxa_pure_virtual
+40 (int (*)(...))__cxa_pure_virtual
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QSensorGesturePluginInterface
+ size=8 align=8
+ base size=8 base align=8
+QSensorGesturePluginInterface (0x0x7f7ba2d72660) 0 nearly-empty
+ vptr=((& QSensorGesturePluginInterface::_ZTV29QSensorGesturePluginInterface) + 16u)
+
+Vtable for QSensorPluginInterface
+QSensorPluginInterface::_ZTV22QSensorPluginInterface: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI22QSensorPluginInterface)
+16 (int (*)(...))__cxa_pure_virtual
+24 0u
+32 0u
+
+Class QSensorPluginInterface
+ size=8 align=8
+ base size=8 base align=8
+QSensorPluginInterface (0x0x7f7ba2d72720) 0 nearly-empty
+ vptr=((& QSensorPluginInterface::_ZTV22QSensorPluginInterface) + 16u)
+
+Vtable for QSensorChangesInterface
+QSensorChangesInterface::_ZTV23QSensorChangesInterface: 5u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI23QSensorChangesInterface)
+16 (int (*)(...))__cxa_pure_virtual
+24 0u
+32 0u
+
+Class QSensorChangesInterface
+ size=8 align=8
+ base size=8 base align=8
+QSensorChangesInterface (0x0x7f7ba2d72780) 0 nearly-empty
+ vptr=((& QSensorChangesInterface::_ZTV23QSensorChangesInterface) + 16u)
+
+Class QTapReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTapReading::QPrivateSignal (0x0x7f7ba2d72900) 0 empty
+
+Vtable for QTapReading
+QTapReading::_ZTV11QTapReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTapReading)
+16 (int (*)(...))QTapReading::metaObject
+24 (int (*)(...))QTapReading::qt_metacast
+32 (int (*)(...))QTapReading::qt_metacall
+40 (int (*)(...))QTapReading::~QTapReading
+48 (int (*)(...))QTapReading::~QTapReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTapReading::copyValuesFrom
+
+Class QTapReading
+ size=32 align=8
+ base size=32 base align=8
+QTapReading (0x0x7f7ba2ccbe38) 0
+ vptr=((& QTapReading::_ZTV11QTapReading) + 16u)
+ QSensorReading (0x0x7f7ba2ccbea0) 0
+ primary-for QTapReading (0x0x7f7ba2ccbe38)
+ QObject (0x0x7f7ba2d728a0) 0
+ primary-for QSensorReading (0x0x7f7ba2ccbea0)
+
+Vtable for QTapFilter
+QTapFilter::_ZTV10QTapFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTapFilter)
+16 (int (*)(...))QTapFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QTapFilter
+ size=16 align=8
+ base size=16 base align=8
+QTapFilter (0x0x7f7ba2ccbf08) 0
+ vptr=((& QTapFilter::_ZTV10QTapFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2d729c0) 0
+ primary-for QTapFilter (0x0x7f7ba2ccbf08)
+
+Class QTapSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTapSensor::QPrivateSignal (0x0x7f7ba2d72a80) 0 empty
+
+Vtable for QTapSensor
+QTapSensor::_ZTV10QTapSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI10QTapSensor)
+16 (int (*)(...))QTapSensor::metaObject
+24 (int (*)(...))QTapSensor::qt_metacast
+32 (int (*)(...))QTapSensor::qt_metacall
+40 (int (*)(...))QTapSensor::~QTapSensor
+48 (int (*)(...))QTapSensor::~QTapSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTapSensor
+ size=16 align=8
+ base size=16 base align=8
+QTapSensor (0x0x7f7ba2ccbf70) 0
+ vptr=((& QTapSensor::_ZTV10QTapSensor) + 16u)
+ QSensor (0x0x7f7ba2e05000) 0
+ primary-for QTapSensor (0x0x7f7ba2ccbf70)
+ QObject (0x0x7f7ba2d72a20) 0
+ primary-for QSensor (0x0x7f7ba2e05000)
+
+Class QTiltReading::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTiltReading::QPrivateSignal (0x0x7f7ba2d72b40) 0 empty
+
+Vtable for QTiltReading
+QTiltReading::_ZTV12QTiltReading: 15u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI12QTiltReading)
+16 (int (*)(...))QTiltReading::metaObject
+24 (int (*)(...))QTiltReading::qt_metacast
+32 (int (*)(...))QTiltReading::qt_metacall
+40 (int (*)(...))QTiltReading::~QTiltReading
+48 (int (*)(...))QTiltReading::~QTiltReading
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+112 (int (*)(...))QTiltReading::copyValuesFrom
+
+Class QTiltReading
+ size=32 align=8
+ base size=32 base align=8
+QTiltReading (0x0x7f7ba2e05068) 0
+ vptr=((& QTiltReading::_ZTV12QTiltReading) + 16u)
+ QSensorReading (0x0x7f7ba2e050d0) 0
+ primary-for QTiltReading (0x0x7f7ba2e05068)
+ QObject (0x0x7f7ba2d72ae0) 0
+ primary-for QSensorReading (0x0x7f7ba2e050d0)
+
+Vtable for QTiltFilter
+QTiltFilter::_ZTV11QTiltFilter: 7u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTiltFilter)
+16 (int (*)(...))QTiltFilter::filter
+24 0u
+32 0u
+40 (int (*)(...))QSensorFilter::setSensor
+48 (int (*)(...))__cxa_pure_virtual
+
+Class QTiltFilter
+ size=16 align=8
+ base size=16 base align=8
+QTiltFilter (0x0x7f7ba2e05138) 0
+ vptr=((& QTiltFilter::_ZTV11QTiltFilter) + 16u)
+ QSensorFilter (0x0x7f7ba2d72c00) 0
+ primary-for QTiltFilter (0x0x7f7ba2e05138)
+
+Class QTiltSensor::QPrivateSignal
+ size=1 align=1
+ base size=0 base align=1
+QTiltSensor::QPrivateSignal (0x0x7f7ba2d72cc0) 0 empty
+
+Vtable for QTiltSensor
+QTiltSensor::_ZTV11QTiltSensor: 14u entries
+0 (int (*)(...))0
+8 (int (*)(...))(& _ZTI11QTiltSensor)
+16 (int (*)(...))QTiltSensor::metaObject
+24 (int (*)(...))QTiltSensor::qt_metacast
+32 (int (*)(...))QTiltSensor::qt_metacall
+40 (int (*)(...))QTiltSensor::~QTiltSensor
+48 (int (*)(...))QTiltSensor::~QTiltSensor
+56 (int (*)(...))QObject::event
+64 (int (*)(...))QObject::eventFilter
+72 (int (*)(...))QObject::timerEvent
+80 (int (*)(...))QObject::childEvent
+88 (int (*)(...))QObject::customEvent
+96 (int (*)(...))QObject::connectNotify
+104 (int (*)(...))QObject::disconnectNotify
+
+Class QTiltSensor
+ size=16 align=8
+ base size=16 base align=8
+QTiltSensor (0x0x7f7ba2e051a0) 0
+ vptr=((& QTiltSensor::_ZTV11QTiltSensor) + 16u)
+ QSensor (0x0x7f7ba2e05208) 0
+ primary-for QTiltSensor (0x0x7f7ba2e051a0)
+ QObject (0x0x7f7ba2d72c60) 0
+ primary-for QSensor (0x0x7f7ba2e05208)
+
diff --git a/tests/auto/qsensor/test_backends.cpp b/tests/auto/qsensor/test_backends.cpp
index 26d4779d..4dde98fe 100644
--- a/tests/auto/qsensor/test_backends.cpp
+++ b/tests/auto/qsensor/test_backends.cpp
@@ -54,7 +54,7 @@ static bool registerTestBackend(const char *className, CreateFunc func)
class BackendFactory : public QSensorBackendFactory
{
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
foreach (const Record &record, records) {
if (sensor->identifier() == record.type) {
diff --git a/tests/auto/qsensor/test_backends.h b/tests/auto/qsensor/test_backends.h
index c4fa43c6..aba0b2f2 100644
--- a/tests/auto/qsensor/test_backends.h
+++ b/tests/auto/qsensor/test_backends.h
@@ -56,10 +56,10 @@ void unregister_test_backends();
{\
public:\
SensorClass ## _impl(QSensor *sensor);\
- void start();\
- void stop();\
+ void start() override;\
+ void stop() override;\
};\
- class SensorClass ## _testfilter : public FilterClass { bool filter(ReadingClass *); };
+ class SensorClass ## _testfilter : public FilterClass { bool filter(ReadingClass *) override; };
#define PREPARE_SENSORINTERFACE_IMPLS(SensorClass, ReadingClass, FilterClass, readingcode)\
SensorClass ## _impl::SensorClass ##_impl(QSensor *sensor) : QSensorBackend(sensor) {}\
diff --git a/tests/auto/qsensor/test_sensor.h b/tests/auto/qsensor/test_sensor.h
index 23224fd8..1adb06a6 100644
--- a/tests/auto/qsensor/test_sensor.h
+++ b/tests/auto/qsensor/test_sensor.h
@@ -48,7 +48,7 @@ class TestSensorFilter : public QSensorFilter
public:
virtual bool filter(TestSensorReading *reading) = 0;
private:
- bool filter(QSensorReading *reading) { return filter(static_cast<TestSensorReading*>(reading)); }
+ bool filter(QSensorReading *reading) override { return filter(static_cast<TestSensorReading*>(reading)); }
};
class TestSensor : public QSensor
diff --git a/tests/auto/qsensor/test_sensor2.h b/tests/auto/qsensor/test_sensor2.h
index 6ccbde2c..69050f7c 100644
--- a/tests/auto/qsensor/test_sensor2.h
+++ b/tests/auto/qsensor/test_sensor2.h
@@ -59,7 +59,7 @@ private:
public:\
classname(QObject *parent = 0);\
virtual ~classname();\
- void copyValuesFrom(QSensorReading *other);\
+ void copyValuesFrom(QSensorReading *other) override;\
private:\
qTypedWrapper<pclassname> d;
@@ -80,7 +80,7 @@ class TestSensor2Filter : public QSensorFilter
public:
virtual bool filter(TestSensor2Reading *reading) = 0;
private:
- bool filter(QSensorReading *reading) { return filter(static_cast<TestSensor2Reading*>(reading)); }
+ bool filter(QSensorReading *reading) override { return filter(static_cast<TestSensor2Reading*>(reading)); }
};
class TestSensor2 : public QSensor
diff --git a/tests/auto/qsensor/test_sensor2impl.h b/tests/auto/qsensor/test_sensor2impl.h
index b51e9cdd..30e03f9e 100644
--- a/tests/auto/qsensor/test_sensor2impl.h
+++ b/tests/auto/qsensor/test_sensor2impl.h
@@ -39,8 +39,8 @@ public:
testsensor2impl(QSensor *sensor);
- void start();
- void stop();
+ void start() override;
+ void stop() override;
private:
TestSensor2Reading m_reading;
diff --git a/tests/auto/qsensor/test_sensorimpl.h b/tests/auto/qsensor/test_sensorimpl.h
index 95877310..42b2e09a 100644
--- a/tests/auto/qsensor/test_sensorimpl.h
+++ b/tests/auto/qsensor/test_sensorimpl.h
@@ -41,8 +41,8 @@ public:
testsensorimpl(QSensor *sensor);
~testsensorimpl();
- void start();
- void stop();
+ void start() override;
+ void stop() override;
bool isFeatureSupported(QSensor::Feature feature) const override;
signals:
diff --git a/tests/auto/qsensor/test_sensorplugin.cpp b/tests/auto/qsensor/test_sensorplugin.cpp
index fe119619..a48428b3 100644
--- a/tests/auto/qsensor/test_sensorplugin.cpp
+++ b/tests/auto/qsensor/test_sensorplugin.cpp
@@ -44,7 +44,7 @@ class TestSensorPlugin : public QObject,
Q_PLUGIN_METADATA(IID "com.qt-project.Qt.QSensorPluginInterface/1.0")
Q_INTERFACES(QSensorPluginInterface QSensorChangesInterface)
public:
- void registerSensors()
+ void registerSensors() override
{
static bool recursive = false;
QVERIFY2(!recursive, "Recursively called TestSensorPlugin::registerSensors!");
@@ -62,7 +62,7 @@ public:
QSensorManager::registerBackend(TestSensor2::type, testsensor2impl::id, this);
}
- void sensorsChanged()
+ void sensorsChanged() override
{
// Register a new type on initial load
// This is testing the "don't emit availableSensorsChanged() too many times" functionality.
@@ -80,7 +80,7 @@ public:
}
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == testsensorimpl::id) {
return new testsensorimpl(sensor);
diff --git a/tests/auto/qsensor/tst_qsensor.cpp b/tests/auto/qsensor/tst_qsensor.cpp
index 3af58a0c..911e9c2c 100644
--- a/tests/auto/qsensor/tst_qsensor.cpp
+++ b/tests/auto/qsensor/tst_qsensor.cpp
@@ -75,11 +75,11 @@ namespace QTest {
}
-class MyFilter : public TestSensorFilter { bool filter(TestSensorReading *) { return false; } };
+class MyFilter : public TestSensorFilter { bool filter(TestSensorReading *) override { return false; } };
class ModFilter : public TestSensorFilter
{
- bool filter(TestSensorReading *reading)
+ bool filter(TestSensorReading *reading) override
{
reading->setTest(3);
return true;
@@ -88,7 +88,7 @@ class ModFilter : public TestSensorFilter
class MyFactory : public QSensorBackendFactory
{
- QSensorBackend *createBackend(QSensor * /*sensor*/)
+ QSensorBackend *createBackend(QSensor * /*sensor*/) override
{
return 0;
}
diff --git a/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.h b/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.h
index 7077561e..ad9a1584 100644
--- a/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.h
+++ b/tests/auto/qsensorgestures/plugins/test/qtest2recognizer.h
@@ -39,12 +39,12 @@ public:
QTest2Recognizer(QObject *parent = 0);
~QTest2Recognizer();
- void create();
+ void create() override;
- QString id() const;
- bool start();
- bool stop();
- bool isActive();
+ QString id() const override;
+ bool start() override;
+ bool stop() override;
+ bool isActive() override;
int thresholdTime() const;
void setThresholdTime(int msec);
diff --git a/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.h b/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.h
index fd230b4f..3afe7806 100644
--- a/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.h
+++ b/tests/auto/qsensorgestures/plugins/test/qtestrecognizer.h
@@ -41,12 +41,12 @@ public:
QTestRecognizer(QObject *parent = 0);
~QTestRecognizer();
- void create();
+ void create() override;
- QString id() const;
- bool start();
- bool stop();
- bool isActive();
+ QString id() const override;
+ bool start() override;
+ bool stop() override;
+ bool isActive() override;
int thresholdTime() const;
void setThresholdTime(int msec);
diff --git a/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h b/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h
index 7730edcd..0a62cb3b 100644
--- a/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h
+++ b/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h
@@ -53,11 +53,11 @@ public:
explicit QTestSensorGesturePlugin();
~QTestSensorGesturePlugin();
- QList <QSensorGestureRecognizer *> createRecognizers();
+ QList<QSensorGestureRecognizer *> createRecognizers() override;
// QStringList gestureSignals() const;
- QStringList supportedIds() const;
- QString name() const;
+ QStringList supportedIds() const override;
+ QString name() const override;
QList<QSensorGestureRecognizer*> recognizers() const;
diff --git a/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.h b/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.h
index e3c9eda5..7ce2a765 100644
--- a/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.h
+++ b/tests/auto/qsensorgestures/plugins/test1/qtest2recognizerdup.h
@@ -39,12 +39,12 @@ public:
QTest2RecognizerDup(QObject *parent = 0);
~QTest2RecognizerDup();
- void create();
+ void create() override;
- QString id() const;
- bool start();
- bool stop();
- bool isActive();
+ QString id() const override;
+ bool start() override;
+ bool stop() override;
+ bool isActive() override;
int thresholdTime() const;
void setThresholdTime(int msec);
diff --git a/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.h b/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.h
index aa061701..6b66a6ba 100644
--- a/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.h
+++ b/tests/auto/qsensorgestures/plugins/test1/qtestrecognizerdup.h
@@ -41,12 +41,12 @@ public:
QTestRecognizerDup(QObject *parent = 0);
~QTestRecognizerDup();
- void create();
+ void create() override;
- QString id() const;
- bool start();
- bool stop();
- bool isActive();
+ QString id() const override;
+ bool start() override;
+ bool stop() override;
+ bool isActive() override;
int thresholdTime() const;
void setThresholdTime(int msec);
diff --git a/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h b/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h
index 179167dc..1a577cb3 100644
--- a/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h
+++ b/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h
@@ -43,11 +43,11 @@ public:
~QTestSensorGestureDupPlugin();
- QList <QSensorGestureRecognizer *> createRecognizers();
+ QList<QSensorGestureRecognizer *> createRecognizers() override;
QStringList gestureSignals() const;
- QStringList supportedIds() const;
- QString name() const;
+ QStringList supportedIds() const override;
+ QString name() const override;
QList<QSensorGestureRecognizer*> recognizers() const;
diff --git a/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp b/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp
index 8323e0f4..99884ccb 100644
--- a/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp
+++ b/tests/auto/qsensorgestures/tst_qsensorgesturetest.cpp
@@ -77,12 +77,12 @@ public:
QTest3Recognizer(QObject *parent = 0);
- void create();
+ void create() override;
- QString id() const;
- bool start() ;
- bool stop();
- bool isActive();
+ QString id() const override;
+ bool start() override;
+ bool stop() override;
+ bool isActive() override;
void changeId(const QString &);
QString recognizerId;
diff --git a/tests/auto/qsensorgestures_gestures/mockbackends.h b/tests/auto/qsensorgestures_gestures/mockbackends.h
index 28af79ea..474a7ef7 100644
--- a/tests/auto/qsensorgestures_gestures/mockbackends.h
+++ b/tests/auto/qsensorgestures_gestures/mockbackends.h
@@ -55,7 +55,7 @@ class mockSensorPlugin : public QObject,
public:
QString m_filename;
- void registerSensors()
+ void registerSensors() override
{
qDebug() << "loaded the mock plugin";
@@ -76,7 +76,7 @@ public:
}
- QSensorBackend *createBackend(QSensor *sensor)
+ QSensorBackend *createBackend(QSensor *sensor) override
{
if (sensor->identifier() == mockaccelerometer::id) {
return new mockaccelerometer(sensor);
diff --git a/tests/auto/qsensorgestures_gestures/mockcommon.h b/tests/auto/qsensorgestures_gestures/mockcommon.h
index c3007337..cbb36f25 100644
--- a/tests/auto/qsensorgestures_gestures/mockcommon.h
+++ b/tests/auto/qsensorgestures_gestures/mockcommon.h
@@ -78,8 +78,8 @@ class mockcommon : public QSensorBackend
public:
mockcommon(QSensor *sensor);
- void start();
- void stop();
+ void start() override;
+ void stop() override;
static char const * const id;
Q_SIGNALS:
diff --git a/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp b/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp
index ee242109..69dcce9e 100644
--- a/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp
+++ b/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp
@@ -87,6 +87,7 @@ void tst_sensorgestures_gestures::initTestCase()
void tst_sensorgestures_gestures::testSingleGestures()
{
QFETCH(QString, gestureId);
+ QFETCH(QStringList, gestureSignals);
QString name = "mock_data/sensordata_" + gestureId + ".dat";
@@ -105,21 +106,31 @@ void tst_sensorgestures_gestures::testSingleGestures()
gesture.data()->startDetection();
QCOMPARE(gesture->isActive(),true);
- QTRY_COMPARE_WITH_TIMEOUT(spy_gesture.count(),1, 7000);
+ auto toStringList = [](const QList<QList<QVariant>> list) {
+ QStringList result;
+ for (const QList<QVariant> &item: list) {
+ if (!item.isEmpty())
+ result << item.first().toString();
+ }
+ return result;
+ };
+
+ QTRY_COMPARE_WITH_TIMEOUT(toStringList(spy_gesture), gestureSignals, 7000);
}
void tst_sensorgestures_gestures::testSingleGestures_data()
{
QTest::addColumn<QString>("gestureId");
- QTest::newRow("cover") << "cover";
- QTest::newRow("doubletap") << "doubletap";
- QTest::newRow("hover") << "hover";
- QTest::newRow("pickup") << "pickup";
- QTest::newRow("shake2") << "shake2"; //multi?
- QTest::newRow("slam") << "slam";
- QTest::newRow("turnover") << "turnover";
- QTest::newRow("twist") << "twist"; //multi?
- QTest::newRow("whip") << "whip";
+ QTest::addColumn<QStringList>("gestureSignals");
+ QTest::newRow("cover") << "cover" << QStringList({ "cover"});
+ QTest::newRow("doubletap") << "doubletap" << QStringList({ "doubletap" });
+ QTest::newRow("hover") << "hover" << QStringList({ "hover" });
+ QTest::newRow("pickup") << "pickup" << QStringList({ "pickup" });
+ QTest::newRow("shake2") << "shake2" << QStringList({ "shakeRight" });
+ QTest::newRow("slam") << "slam" << QStringList({ "slam" });
+ QTest::newRow("turnover") << "turnover" << QStringList({ "turnover" });
+ QTest::newRow("twist") << "twist" << QStringList({ "twistLeft", "twistLeft", "twistRight" });
+ QTest::newRow("whip") << "whip" << QStringList({ "whip" });
}
void tst_sensorgestures_gestures::testSingleDataset2Gestures()
diff --git a/tests/auto/sensors2qmlapi/qtemplategestureplugin.h b/tests/auto/sensors2qmlapi/qtemplategestureplugin.h
index 62ee60a6..94f6aaea 100644
--- a/tests/auto/sensors2qmlapi/qtemplategestureplugin.h
+++ b/tests/auto/sensors2qmlapi/qtemplategestureplugin.h
@@ -43,11 +43,11 @@ public:
explicit QTemplateGesturePlugin();
~QTemplateGesturePlugin();
- QList <QSensorGestureRecognizer *> createRecognizers();
+ QList<QSensorGestureRecognizer *> createRecognizers() override;
QStringList gestureSignals() const;
- QStringList supportedIds() const;
- QString name() const { return "TemplateGestures"; }
+ QStringList supportedIds() const override;
+ QString name() const override { return "TemplateGestures"; }
};
#endif // QTEMPLATEGESTUREPLUGIN_H
diff --git a/tests/auto/sensors2qmlapi/qtemplaterecognizer.h b/tests/auto/sensors2qmlapi/qtemplaterecognizer.h
index 17f84b0a..10e5bc33 100644
--- a/tests/auto/sensors2qmlapi/qtemplaterecognizer.h
+++ b/tests/auto/sensors2qmlapi/qtemplaterecognizer.h
@@ -41,12 +41,12 @@ public:
QTemplateGestureRecognizer(QObject *parent = 0);
~QTemplateGestureRecognizer();
- void create();
+ void create() override;
- QString id() const;
- bool start();
- bool stop();
- bool isActive();
+ QString id() const override;
+ bool start() override;
+ bool stop() override;
+ bool isActive() override;
private slots:
void timeout();
@@ -63,12 +63,12 @@ public:
QTemplateGestureRecognizer1(QObject *parent = 0);
~QTemplateGestureRecognizer1();
- void create();
+ void create() override;
- QString id() const;
- bool start();
- bool stop();
- bool isActive();
+ QString id() const override;
+ bool start() override;
+ bool stop() override;
+ bool isActive() override;
private slots:
void timeout();