diff --git a/src/corelib/tools/qarraydata.h b/src/corelib/tools/qarraydata.h index c022d9f3021..5ed8d4ba957 100644 --- a/src/corelib/tools/qarraydata.h +++ b/src/corelib/tools/qarraydata.h @@ -177,6 +177,13 @@ struct QStaticArrayData T data[N]; }; +// Support for returning QArrayDataPointer from functions +template +struct QArrayDataPointerRef +{ + QTypedArrayData *ptr; +}; + #define Q_STATIC_ARRAY_DATA_HEADER_INITIALIZER(type, size) { \ Q_REFCOUNT_INITIALIZE_STATIC, size, 0, 0, \ (sizeof(QArrayData) + (Q_ALIGNOF(type) - 1)) \ diff --git a/src/corelib/tools/qarraydatapointer.h b/src/corelib/tools/qarraydatapointer.h index 81eae4cf816..8b5752bc70f 100644 --- a/src/corelib/tools/qarraydatapointer.h +++ b/src/corelib/tools/qarraydatapointer.h @@ -76,6 +76,11 @@ public: Q_CHECK_PTR(ptr); } + QArrayDataPointer(QArrayDataPointerRef ref) + : d(ref.ptr) + { + } + QArrayDataPointer &operator=(const QArrayDataPointer &other) { QArrayDataPointer tmp(other);