From d17cf14185eb84863549e0119c8b7bd20db78580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Thu, 26 Apr 2012 12:06:17 +0200 Subject: Implement QVector with QArrayData interface. Change-Id: I109f46892aed2f6024459812d24922b12358814d Reviewed-by: Thiago Macieira --- .../benchmarks/corelib/tools/qvector/qrawvector.h | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'tests/benchmarks/corelib/tools/qvector/qrawvector.h') diff --git a/tests/benchmarks/corelib/tools/qvector/qrawvector.h b/tests/benchmarks/corelib/tools/qvector/qrawvector.h index 18d9847c95..7d80c125ea 100644 --- a/tests/benchmarks/corelib/tools/qvector/qrawvector.h +++ b/tests/benchmarks/corelib/tools/qvector/qrawvector.h @@ -47,6 +47,7 @@ #include #include #include +#include #include #include @@ -59,7 +60,32 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE +struct QVectorData +{ + QtPrivate::RefCount ref; + int size; + uint alloc : 31; + uint capacityReserved : 1; + + qptrdiff offset; + + void* data() { return reinterpret_cast(this) + this->offset; } + + static const QVectorData shared_null; + static QVectorData *allocate(int size, int alignment); + static QVectorData *reallocate(QVectorData *old, int newsize, int oldsize, int alignment); + static void free(QVectorData *data, int alignment); + static int grow(int sizeOfHeader, int size, int sizeOfT); +}; +template +struct QVectorTypedData : QVectorData +{ + T* begin() { return reinterpret_cast(this->data()); } + T* end() { return begin() + this->size; } + + static QVectorTypedData *sharedNull() { return static_cast(const_cast(&QVectorData::shared_null)); } +}; template class QRawVector -- cgit v1.2.3