summaryrefslogtreecommitdiffstats
path: root/src/extras
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-05-14 08:52:45 +0200
committerSean Harmer <sean.harmer@kdab.com>2016-05-19 07:03:19 +0000
commit6f6207fadc1a334d1aed98f840a0d074acf18d06 (patch)
tree083bf49b4d6bc999f099b3c1e2897cb23cb89887 /src/extras
parent72f2c87d15c76cc861699aea536e01bc8d56c8f2 (diff)
De-inline dtors of public polymorphic classes
By making the destructor (usually the first non-inline, non-pure, virtual function, and therefore the trigger for most compilers to emit the vtable and type_info structures for the class in that TU) out-of-line, vtables and, more importantly, type_info structures for the class are pinned to a single TU. This prevents false negative dynamic_cast and catch evaluation. It also allows to add code to them later, if necessary. Change-Id: I0da301cd788162abba6cdbbb21910090a22adb9a Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/extras')
-rw-r--r--src/extras/defaults/qgoochmaterial.cpp5
-rw-r--r--src/extras/defaults/qgoochmaterial.h2
-rw-r--r--src/extras/defaults/qskyboxentity.cpp5
-rw-r--r--src/extras/defaults/qskyboxentity.h1
-rw-r--r--src/extras/geometries/qconegeometry.cpp6
-rw-r--r--src/extras/geometries/qconegeometry.h1
-rw-r--r--src/extras/geometries/qconemesh.cpp5
-rw-r--r--src/extras/geometries/qconemesh.h1
-rw-r--r--src/extras/geometries/qcuboidgeometry.cpp7
-rw-r--r--src/extras/geometries/qcuboidgeometry.h1
-rw-r--r--src/extras/geometries/qcuboidmesh.cpp5
-rw-r--r--src/extras/geometries/qcuboidmesh.h1
-rw-r--r--src/extras/geometries/qcylindergeometry.cpp7
-rw-r--r--src/extras/geometries/qcylindergeometry.h1
-rw-r--r--src/extras/geometries/qcylindermesh.cpp5
-rw-r--r--src/extras/geometries/qcylindermesh.h1
-rw-r--r--src/extras/geometries/qplanegeometry.cpp7
-rw-r--r--src/extras/geometries/qplanegeometry.h1
-rw-r--r--src/extras/geometries/qplanemesh.cpp5
-rw-r--r--src/extras/geometries/qplanemesh.h1
-rw-r--r--src/extras/geometries/qspheregeometry.cpp7
-rw-r--r--src/extras/geometries/qspheregeometry.h1
-rw-r--r--src/extras/geometries/qspheremesh.cpp5
-rw-r--r--src/extras/geometries/qspheremesh.h1
-rw-r--r--src/extras/geometries/qtorusgeometry.cpp7
-rw-r--r--src/extras/geometries/qtorusgeometry.h1
-rw-r--r--src/extras/geometries/qtorusmesh.cpp5
-rw-r--r--src/extras/geometries/qtorusmesh.h1
28 files changed, 96 insertions, 0 deletions
diff --git a/src/extras/defaults/qgoochmaterial.cpp b/src/extras/defaults/qgoochmaterial.cpp
index a6f533745..6b6ea131a 100644
--- a/src/extras/defaults/qgoochmaterial.cpp
+++ b/src/extras/defaults/qgoochmaterial.cpp
@@ -224,6 +224,11 @@ QGoochMaterial::QGoochMaterial(QNode *parent)
d->init();
}
+/*! \internal */
+QGoochMaterial::~QGoochMaterial()
+{
+}
+
QGoochMaterial::QGoochMaterial(QGoochMaterialPrivate &dd, QNode *parent)
: QMaterial(dd, parent)
{
diff --git a/src/extras/defaults/qgoochmaterial.h b/src/extras/defaults/qgoochmaterial.h
index e3a863433..232257513 100644
--- a/src/extras/defaults/qgoochmaterial.h
+++ b/src/extras/defaults/qgoochmaterial.h
@@ -63,6 +63,8 @@ class QT3DEXTRASSHARED_EXPORT QGoochMaterial : public Qt3DRender::QMaterial
public:
explicit QGoochMaterial(Qt3DCore::QNode *parent = nullptr);
+ ~QGoochMaterial();
+
QColor diffuse() const;
QColor specular() const;
QColor cool() const;
diff --git a/src/extras/defaults/qskyboxentity.cpp b/src/extras/defaults/qskyboxentity.cpp
index 30e42a7a6..2e755f385 100644
--- a/src/extras/defaults/qskyboxentity.cpp
+++ b/src/extras/defaults/qskyboxentity.cpp
@@ -218,6 +218,11 @@ QSkyboxEntity::QSkyboxEntity(QNode *parent)
d_func()->init();
}
+/*! \internal */
+QSkyboxEntity::~QSkyboxEntity()
+{
+}
+
/*!
* Sets the base name to \a baseName.
*/
diff --git a/src/extras/defaults/qskyboxentity.h b/src/extras/defaults/qskyboxentity.h
index 4295c2332..8cb279e1a 100644
--- a/src/extras/defaults/qskyboxentity.h
+++ b/src/extras/defaults/qskyboxentity.h
@@ -54,6 +54,7 @@ class QT3DEXTRASSHARED_EXPORT QSkyboxEntity : public Qt3DCore::QEntity
Q_OBJECT
public:
explicit QSkyboxEntity(Qt3DCore::QNode *parent = nullptr);
+ ~QSkyboxEntity();
void setBaseName(const QString &path);
QString baseName() const;
diff --git a/src/extras/geometries/qconegeometry.cpp b/src/extras/geometries/qconegeometry.cpp
index 64cc569e8..7215c0797 100644
--- a/src/extras/geometries/qconegeometry.cpp
+++ b/src/extras/geometries/qconegeometry.cpp
@@ -415,6 +415,12 @@ QConeGeometry::QConeGeometry(QConeGeometryPrivate &dd, QNode *parent)
d->init();
}
+
+/*! \internal */
+QConeGeometry::~QConeGeometry()
+{
+}
+
void QConeGeometry::updateVertices()
{
Q_D(QConeGeometry);
diff --git a/src/extras/geometries/qconegeometry.h b/src/extras/geometries/qconegeometry.h
index c581da59a..4f1dc944a 100644
--- a/src/extras/geometries/qconegeometry.h
+++ b/src/extras/geometries/qconegeometry.h
@@ -70,6 +70,7 @@ class QT3DEXTRASSHARED_EXPORT QConeGeometry : public Qt3DRender::QGeometry
public:
explicit QConeGeometry(QNode *parent = nullptr);
+ ~QConeGeometry();
void updateVertices();
void updateIndices();
diff --git a/src/extras/geometries/qconemesh.cpp b/src/extras/geometries/qconemesh.cpp
index 6e9415895..e2f43b16d 100644
--- a/src/extras/geometries/qconemesh.cpp
+++ b/src/extras/geometries/qconemesh.cpp
@@ -68,6 +68,11 @@ QConeMesh::QConeMesh(QNode *parent)
QGeometryRenderer::setGeometry(geometry);
}
+/*! \internal */
+QConeMesh::~QConeMesh()
+{
+}
+
void QConeMesh::setHasTopEndcap(bool hasTopEndcap)
{
static_cast<QConeGeometry *>(geometry())->setHasTopEndcap(hasTopEndcap);
diff --git a/src/extras/geometries/qconemesh.h b/src/extras/geometries/qconemesh.h
index 0dc546ea7..c32070e5c 100644
--- a/src/extras/geometries/qconemesh.h
+++ b/src/extras/geometries/qconemesh.h
@@ -59,6 +59,7 @@ class QT3DEXTRASSHARED_EXPORT QConeMesh : public Qt3DRender::QGeometryRenderer
Q_PROPERTY(float length READ length WRITE setLength NOTIFY lengthChanged)
public:
explicit QConeMesh(Qt3DCore::QNode *parent = nullptr);
+ ~QConeMesh();
int rings() const;
int slices() const;
diff --git a/src/extras/geometries/qcuboidgeometry.cpp b/src/extras/geometries/qcuboidgeometry.cpp
index dc76edbf6..21944c529 100644
--- a/src/extras/geometries/qcuboidgeometry.cpp
+++ b/src/extras/geometries/qcuboidgeometry.cpp
@@ -595,6 +595,13 @@ QCuboidGeometry::QCuboidGeometry(QCuboidGeometryPrivate &dd, QNode *parent)
}
/*!
+ * \internal
+ */
+QCuboidGeometry::~QCuboidGeometry()
+{
+}
+
+/*!
* Updates indices based on mesh resolutions.
*/
void QCuboidGeometry::updateIndices()
diff --git a/src/extras/geometries/qcuboidgeometry.h b/src/extras/geometries/qcuboidgeometry.h
index 1bf7905ea..fad5dcf9f 100644
--- a/src/extras/geometries/qcuboidgeometry.h
+++ b/src/extras/geometries/qcuboidgeometry.h
@@ -73,6 +73,7 @@ class QT3DEXTRASSHARED_EXPORT QCuboidGeometry : public Qt3DRender::QGeometry
public:
explicit QCuboidGeometry(QNode *parent = nullptr);
+ ~QCuboidGeometry();
void updateIndices();
void updateVertices();
diff --git a/src/extras/geometries/qcuboidmesh.cpp b/src/extras/geometries/qcuboidmesh.cpp
index ac5b164c6..004fca472 100644
--- a/src/extras/geometries/qcuboidmesh.cpp
+++ b/src/extras/geometries/qcuboidmesh.cpp
@@ -112,6 +112,11 @@ QCuboidMesh::QCuboidMesh(QNode *parent)
QGeometryRenderer::setGeometry(geometry);
}
+/*! \internal */
+QCuboidMesh::~QCuboidMesh()
+{
+}
+
void QCuboidMesh::setXExtent(float xExtent)
{
static_cast<QCuboidGeometry *>(geometry())->setXExtent(xExtent);
diff --git a/src/extras/geometries/qcuboidmesh.h b/src/extras/geometries/qcuboidmesh.h
index 93d386d2c..f709703c5 100644
--- a/src/extras/geometries/qcuboidmesh.h
+++ b/src/extras/geometries/qcuboidmesh.h
@@ -61,6 +61,7 @@ class QT3DEXTRASSHARED_EXPORT QCuboidMesh : public Qt3DRender::QGeometryRenderer
public:
explicit QCuboidMesh(Qt3DCore::QNode *parent = nullptr);
+ ~QCuboidMesh();
float xExtent() const;
float yExtent() const;
diff --git a/src/extras/geometries/qcylindergeometry.cpp b/src/extras/geometries/qcylindergeometry.cpp
index 3231507f7..2cbe1939c 100644
--- a/src/extras/geometries/qcylindergeometry.cpp
+++ b/src/extras/geometries/qcylindergeometry.cpp
@@ -418,6 +418,13 @@ QCylinderGeometry::QCylinderGeometry(QCylinderGeometryPrivate &dd, QNode *parent
}
/*!
+ * \internal
+ */
+QCylinderGeometry::~QCylinderGeometry()
+{
+}
+
+/*!
* Updates the vertices based on rings and slices.
*/
void QCylinderGeometry::updateVertices()
diff --git a/src/extras/geometries/qcylindergeometry.h b/src/extras/geometries/qcylindergeometry.h
index 9be49c67c..add4a7d96 100644
--- a/src/extras/geometries/qcylindergeometry.h
+++ b/src/extras/geometries/qcylindergeometry.h
@@ -68,6 +68,7 @@ class QT3DEXTRASSHARED_EXPORT QCylinderGeometry : public Qt3DRender::QGeometry
public:
explicit QCylinderGeometry(QNode *parent = nullptr);
+ ~QCylinderGeometry();
void updateVertices();
void updateIndices();
diff --git a/src/extras/geometries/qcylindermesh.cpp b/src/extras/geometries/qcylindermesh.cpp
index 5a4e2c6a0..ef405cb6e 100644
--- a/src/extras/geometries/qcylindermesh.cpp
+++ b/src/extras/geometries/qcylindermesh.cpp
@@ -111,6 +111,11 @@ QCylinderMesh::QCylinderMesh(QNode *parent)
QGeometryRenderer::setGeometry(geometry);
}
+/*! \internal */
+QCylinderMesh::~QCylinderMesh()
+{
+}
+
void QCylinderMesh::setRings(int rings)
{
static_cast<QCylinderGeometry *>(geometry())->setRings(rings);
diff --git a/src/extras/geometries/qcylindermesh.h b/src/extras/geometries/qcylindermesh.h
index 0da4b9555..3083ed849 100644
--- a/src/extras/geometries/qcylindermesh.h
+++ b/src/extras/geometries/qcylindermesh.h
@@ -57,6 +57,7 @@ class QT3DEXTRASSHARED_EXPORT QCylinderMesh : public Qt3DRender::QGeometryRender
Q_PROPERTY(float length READ length WRITE setLength NOTIFY lengthChanged)
public:
explicit QCylinderMesh(Qt3DCore::QNode *parent = nullptr);
+ ~QCylinderMesh();
int rings() const;
int slices() const;
diff --git a/src/extras/geometries/qplanegeometry.cpp b/src/extras/geometries/qplanegeometry.cpp
index 29ec8256e..59ed9ee21 100644
--- a/src/extras/geometries/qplanegeometry.cpp
+++ b/src/extras/geometries/qplanegeometry.cpp
@@ -288,6 +288,13 @@ QPlaneGeometry::QPlaneGeometry(QPlaneGeometryPrivate &dd, QNode *parent)
}
/*!
+ * \internal
+ */
+QPlaneGeometry::~QPlaneGeometry()
+{
+}
+
+/*!
* Updates vertices based on resolution.
*/
void QPlaneGeometry::updateVertices()
diff --git a/src/extras/geometries/qplanegeometry.h b/src/extras/geometries/qplanegeometry.h
index d082269c3..7ec5cba43 100644
--- a/src/extras/geometries/qplanegeometry.h
+++ b/src/extras/geometries/qplanegeometry.h
@@ -70,6 +70,7 @@ class QT3DEXTRASSHARED_EXPORT QPlaneGeometry : public Qt3DRender::QGeometry
public:
explicit QPlaneGeometry(QNode *parent = nullptr);
+ ~QPlaneGeometry();
void updateVertices();
void updateIndices();
diff --git a/src/extras/geometries/qplanemesh.cpp b/src/extras/geometries/qplanemesh.cpp
index 34bdbc5ee..f9d1a105b 100644
--- a/src/extras/geometries/qplanemesh.cpp
+++ b/src/extras/geometries/qplanemesh.cpp
@@ -91,6 +91,11 @@ QPlaneMesh::QPlaneMesh(QNode *parent)
QGeometryRenderer::setGeometry(geometry);
}
+/*! \internal */
+QPlaneMesh::~QPlaneMesh()
+{
+}
+
void QPlaneMesh::setWidth(float width)
{
static_cast<QPlaneGeometry *>(geometry())->setWidth(width);
diff --git a/src/extras/geometries/qplanemesh.h b/src/extras/geometries/qplanemesh.h
index b308908e8..b1505db17 100644
--- a/src/extras/geometries/qplanemesh.h
+++ b/src/extras/geometries/qplanemesh.h
@@ -57,6 +57,7 @@ class QT3DEXTRASSHARED_EXPORT QPlaneMesh : public Qt3DRender::QGeometryRenderer
public:
explicit QPlaneMesh(Qt3DCore::QNode *parent = nullptr);
+ ~QPlaneMesh();
float width() const;
float height() const;
diff --git a/src/extras/geometries/qspheregeometry.cpp b/src/extras/geometries/qspheregeometry.cpp
index 38af69fe5..0c582f441 100644
--- a/src/extras/geometries/qspheregeometry.cpp
+++ b/src/extras/geometries/qspheregeometry.cpp
@@ -401,6 +401,13 @@ QSphereGeometry::QSphereGeometry(QSphereGeometryPrivate &dd, QNode *parent)
}
/*!
+ * \internal
+ */
+QSphereGeometry::~QSphereGeometry()
+{
+}
+
+/*!
* Updates vertices based on rings and slices.
*/
void QSphereGeometry::updateVertices()
diff --git a/src/extras/geometries/qspheregeometry.h b/src/extras/geometries/qspheregeometry.h
index 5deb8a171..d657c0c67 100644
--- a/src/extras/geometries/qspheregeometry.h
+++ b/src/extras/geometries/qspheregeometry.h
@@ -70,6 +70,7 @@ class QT3DEXTRASSHARED_EXPORT QSphereGeometry : public Qt3DRender::QGeometry
public:
explicit QSphereGeometry(QNode *parent = nullptr);
+ ~QSphereGeometry();
void updateVertices();
void updateIndices();
diff --git a/src/extras/geometries/qspheremesh.cpp b/src/extras/geometries/qspheremesh.cpp
index a17145181..205f6437f 100644
--- a/src/extras/geometries/qspheremesh.cpp
+++ b/src/extras/geometries/qspheremesh.cpp
@@ -99,6 +99,11 @@ QSphereMesh::QSphereMesh(QNode *parent)
QGeometryRenderer::setGeometry(geometry);
}
+/*! \internal */
+QSphereMesh::~QSphereMesh()
+{
+}
+
void QSphereMesh::setRings(int rings)
{
static_cast<QSphereGeometry *>(geometry())->setRings(rings);
diff --git a/src/extras/geometries/qspheremesh.h b/src/extras/geometries/qspheremesh.h
index 5880f7188..58e77dcab 100644
--- a/src/extras/geometries/qspheremesh.h
+++ b/src/extras/geometries/qspheremesh.h
@@ -59,6 +59,7 @@ class QT3DEXTRASSHARED_EXPORT QSphereMesh : public Qt3DRender::QGeometryRenderer
public:
explicit QSphereMesh(Qt3DCore::QNode *parent = nullptr);
+ ~QSphereMesh();
int rings() const;
int slices() const;
diff --git a/src/extras/geometries/qtorusgeometry.cpp b/src/extras/geometries/qtorusgeometry.cpp
index f62700755..5ca8c3ce1 100644
--- a/src/extras/geometries/qtorusgeometry.cpp
+++ b/src/extras/geometries/qtorusgeometry.cpp
@@ -344,6 +344,13 @@ QTorusGeometry::QTorusGeometry(QTorusGeometryPrivate &dd, QNode *parent)
}
/*!
+ * \internal
+ */
+QTorusGeometry::~QTorusGeometry()
+{
+}
+
+/*!
* Updates vertices based on rings and slices.
*/
void QTorusGeometry::updateVertices()
diff --git a/src/extras/geometries/qtorusgeometry.h b/src/extras/geometries/qtorusgeometry.h
index 89e205a3f..ebde32bd8 100644
--- a/src/extras/geometries/qtorusgeometry.h
+++ b/src/extras/geometries/qtorusgeometry.h
@@ -69,6 +69,7 @@ class QT3DEXTRASSHARED_EXPORT QTorusGeometry : public Qt3DRender::QGeometry
public:
explicit QTorusGeometry(QNode *parent = nullptr);
+ ~QTorusGeometry();
void updateVertices();
void updateIndices();
diff --git a/src/extras/geometries/qtorusmesh.cpp b/src/extras/geometries/qtorusmesh.cpp
index 67f4cffa7..e3b5b61d0 100644
--- a/src/extras/geometries/qtorusmesh.cpp
+++ b/src/extras/geometries/qtorusmesh.cpp
@@ -104,6 +104,11 @@ QTorusMesh::QTorusMesh(QNode *parent)
QGeometryRenderer::setGeometry(geometry);
}
+/*! \internal */
+QTorusMesh::~QTorusMesh()
+{
+}
+
void QTorusMesh::setRings(int rings)
{
static_cast<QTorusGeometry *>(geometry())->setRings(rings);
diff --git a/src/extras/geometries/qtorusmesh.h b/src/extras/geometries/qtorusmesh.h
index f75ec913a..69ad00efe 100644
--- a/src/extras/geometries/qtorusmesh.h
+++ b/src/extras/geometries/qtorusmesh.h
@@ -56,6 +56,7 @@ class QT3DEXTRASSHARED_EXPORT QTorusMesh : public Qt3DRender::QGeometryRenderer
Q_PROPERTY(float minorRadius READ minorRadius WRITE setMinorRadius NOTIFY minorRadiusChanged)
public:
explicit QTorusMesh(Qt3DCore::QNode *parent = nullptr);
+ ~QTorusMesh();
int rings() const;
int slices() const;