diff options
author | Mike Krus <mike.krus@kdab.com> | 2020-11-23 09:06:01 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2021-01-08 11:32:08 +0000 |
commit | d2fe37b3480cc55cf301426d7fa40475080cc6f9 (patch) | |
tree | 8c0ef31cdc3d2f75f4eed7d851a6d22e793d4c00 /src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp | |
parent | eee0fca4abc800883dde40559290403e7e550d14 (diff) |
Update QQMLPropertyList API
Use lambdas with local typedefs for index type
Change-Id: I2876c71d619815e7e777f936e8bb0835b8269336
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp')
-rw-r--r-- | src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp | 54 |
1 files changed, 25 insertions, 29 deletions
diff --git a/src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp b/src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp index 51e8911a6..146a17477 100644 --- a/src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp +++ b/src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp @@ -63,11 +63,31 @@ Quick3DShaderDataArray::Quick3DShaderDataArray(QNode *parent) QQmlListProperty<QShaderData> Quick3DShaderDataArray::valuesList() { - return QQmlListProperty<QShaderData>(this, 0, - &Quick3DShaderDataArray::appendValue, - &Quick3DShaderDataArray::valueCount, - &Quick3DShaderDataArray::valueAt, - &Quick3DShaderDataArray::clearValues); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + using qt_size_type = qsizetype; +#else + using qt_size_type = int; +#endif + + using ListContentType = QShaderData; + auto appendFunction = [](QQmlListProperty<ListContentType> *list, ListContentType *bar) { + Quick3DShaderDataArray *self = static_cast<Quick3DShaderDataArray *>(list->object); + static_cast<Quick3DShaderDataArrayPrivate *>(Quick3DShaderDataArrayPrivate::get(self))->m_values.append(bar); + }; + auto countFunction = [](QQmlListProperty<ListContentType> *list) -> qt_size_type { + Quick3DShaderDataArray *self = static_cast<Quick3DShaderDataArray *>(list->object); + return static_cast<Quick3DShaderDataArrayPrivate *>(Quick3DShaderDataArrayPrivate::get(self))->m_values.count(); + }; + auto atFunction = [](QQmlListProperty<ListContentType> *list, qt_size_type index) -> ListContentType * { + Quick3DShaderDataArray *self = static_cast<Quick3DShaderDataArray *>(list->object); + return static_cast<Quick3DShaderDataArrayPrivate *>(Quick3DShaderDataArrayPrivate::get(self))->m_values.at(index); + }; + auto clearFunction = [](QQmlListProperty<ListContentType> *list) { + Quick3DShaderDataArray *self = static_cast<Quick3DShaderDataArray *>(list->object); + static_cast<Quick3DShaderDataArrayPrivate *>(Quick3DShaderDataArrayPrivate::get(self))->m_values.clear(); + }; + + return QQmlListProperty<ListContentType>(this, nullptr, appendFunction, countFunction, atFunction, clearFunction); } QList<QShaderData *> Quick3DShaderDataArray::values() const @@ -85,30 +105,6 @@ QList<QShaderData *> Quick3DShaderDataArray::values() const // d_func()->m_values.append(static_cast<QShaderData *>(QNode::clone(v))); //} -void Quick3DShaderDataArray::appendValue(QQmlListProperty<QShaderData> *list, QShaderData *bar) -{ - Quick3DShaderDataArray *self = static_cast<Quick3DShaderDataArray *>(list->object); - static_cast<Quick3DShaderDataArrayPrivate *>(Quick3DShaderDataArrayPrivate::get(self))->m_values.append(bar); -} - -QShaderData *Quick3DShaderDataArray::valueAt(QQmlListProperty<QShaderData> *list, qsizetype index) -{ - Quick3DShaderDataArray *self = static_cast<Quick3DShaderDataArray *>(list->object); - return static_cast<Quick3DShaderDataArrayPrivate *>(Quick3DShaderDataArrayPrivate::get(self))->m_values.at(index); -} - -qsizetype Quick3DShaderDataArray::valueCount(QQmlListProperty<QShaderData> *list) -{ - Quick3DShaderDataArray *self = static_cast<Quick3DShaderDataArray *>(list->object); - return static_cast<Quick3DShaderDataArrayPrivate *>(Quick3DShaderDataArrayPrivate::get(self))->m_values.count(); -} - -void Quick3DShaderDataArray::clearValues(QQmlListProperty<QShaderData> *list) -{ - Quick3DShaderDataArray *self = static_cast<Quick3DShaderDataArray *>(list->object); - static_cast<Quick3DShaderDataArrayPrivate *>(Quick3DShaderDataArrayPrivate::get(self))->m_values.clear(); -} - } // namespace Quick } // namespace Render } // namespace Qt3DRender |