summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2018-09-05 16:59:14 +0200
committerRobert Griebl <robert.griebl@pelagicore.com>2018-09-25 12:55:51 +0000
commit142d7174863c2acf2792ba723c8dd273f8d07b22 (patch)
treec10f8d490a2f0e598351fd1fdbab5480e9c06ba6
parent4508165067765a8a9638e649f22e22c1725f9b03 (diff)
downloadqtivi-142d7174863c2acf2792ba723c8dd273f8d07b22.tar.gz
Refactor the backend() method in the autogenerated interface classes
Previously we used some old-style casts. These has been replaced by reinterpret_casts. To get rid of some more casts which where all over the place, a new backend() function is now generated which does the cast to the interface class only once. Change-Id: Idf3deecbeda753f6fe61ec023044f1a096aa4736 Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
-rw-r--r--src/tools/ivigenerator/templates_frontend/interface.cpp.tpl20
-rw-r--r--src/tools/ivigenerator/templates_frontend/interface.h.tpl4
2 files changed, 15 insertions, 9 deletions
diff --git a/src/tools/ivigenerator/templates_frontend/interface.cpp.tpl b/src/tools/ivigenerator/templates_frontend/interface.cpp.tpl
index 2ee21f2..eccd474 100644
--- a/src/tools/ivigenerator/templates_frontend/interface.cpp.tpl
+++ b/src/tools/ivigenerator/templates_frontend/interface.cpp.tpl
@@ -100,7 +100,7 @@ QT_BEGIN_NAMESPACE
{% if module.tags.config.disablePrivateIVI %}
return v->m_helper;
{% else %}
- return ({{class}}Private *) v->d_ptr.data();
+ return reinterpret_cast<{{class}}Private *>(v->d_ptr.data());
{% endif %}
}
@@ -110,7 +110,7 @@ const {{class}}Private *{{class}}Private::get(const {{class}} *v)
{% if module.tags.config.disablePrivateIVI %}
return v->m_helper;
{% else %}
- return (const {{class}}Private *) v->d_ptr.data();
+ return reinterpret_cast<const {{class}}Private *>(v->d_ptr.data());
{% endif %}
}
@@ -360,7 +360,7 @@ void {{class}}::registerQmlTypes(const QString& uri, int majorVersion, int minor
{% endif %}
if (!forceUpdate && d->m_{{property}} == {{property}})
return;
- if ({{class}}BackendInterface *backend = qobject_cast<{{class}}BackendInterface *>(this->backend()))
+ if ({{class}}BackendInterface *backend = {{interface|lower}}Backend())
backend->{{property|setter_name}}({{property}}{% if interface.tags.config.zoned %}, zone(){% endif %});
else
emit {{property}}Changed(d->m_{{property}});
@@ -379,7 +379,7 @@ void {{class}}::registerQmlTypes(const QString& uri, int majorVersion, int minor
*/
{{ivi.operation(operation, class)}}
{
- if ({{class}}BackendInterface *backend = ({{class}}BackendInterface *) this->backend())
+ if ({{class}}BackendInterface *backend = {{interface|lower}}Backend())
{% if interface.tags.config.zoned %}
{% if operation.parameters|length %}
return backend->{{operation}}({{operation.parameters|join(', ')}}, zone());
@@ -407,7 +407,7 @@ void {{class}}::connectToServiceObject(QIviServiceObject *serviceObject)
{
auto d = {{class}}Private::get(this);
- auto *backend = qobject_cast<{{class}}BackendInterface*>(this->backend());
+ auto *backend = {{interface|lower}}Backend();
if (!backend)
return;
@@ -441,9 +441,15 @@ void {{class}}::clearServiceObject()
{% endif %}
}
-{% if not interface.tags.config.zoned %}
+{% if interface.tags.config.zoned %}
+/*! \internal */
+{{class}}BackendInterface *{{class}}::{{interface|lower}}Backend() const
+{
+ return qobject_cast<{{class}}BackendInterface*>(backend());
+}
+{% else %}
/*! \internal */
-{{class}}BackendInterface *{{class}}::backend() const
+{{class}}BackendInterface *{{class}}::{{interface|lower}}Backend() const
{
if (QIviServiceObject *so = serviceObject())
return qobject_cast<{{class}}BackendInterface*>(so->interfaceInstance(interfaceName()));
diff --git a/src/tools/ivigenerator/templates_frontend/interface.h.tpl b/src/tools/ivigenerator/templates_frontend/interface.h.tpl
index 9688336..20efa50 100644
--- a/src/tools/ivigenerator/templates_frontend/interface.h.tpl
+++ b/src/tools/ivigenerator/templates_frontend/interface.h.tpl
@@ -113,9 +113,9 @@ Q_SIGNALS:
protected:
{% if interface.tags.config.zoned %}
QIviAbstractZonedFeature *createZoneFeature(const QString &zone) Q_DECL_OVERRIDE;
-{% else %}
- {{class}}BackendInterface *backend() const;
{% endif %}
+ {{class}}BackendInterface *{{interface|lower}}Backend() const;
+
void connectToServiceObject(QIviServiceObject *service) Q_DECL_OVERRIDE;
void clearServiceObject() Q_DECL_OVERRIDE;