diff options
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(); |