diff options
author | Dominik Holland <dominik.holland@pelagicore.com> | 2018-09-05 16:59:14 +0200 |
---|---|---|
committer | Robert Griebl <robert.griebl@pelagicore.com> | 2018-09-25 12:55:51 +0000 |
commit | 142d7174863c2acf2792ba723c8dd273f8d07b22 (patch) | |
tree | c10f8d490a2f0e598351fd1fdbab5480e9c06ba6 | |
parent | 4508165067765a8a9638e649f22e22c1725f9b03 (diff) | |
download | qtivi-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.tpl | 20 | ||||
-rw-r--r-- | src/tools/ivigenerator/templates_frontend/interface.h.tpl | 4 |
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; |