summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp')
-rw-r--r--src/quick3d/quick3drender/items/quick3dshaderdataarray.cpp54
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