21#include <QtQuick3DUtils/private/qtquick3dutilsglobal_p.h>
23#include <QtCore/qlist.h>
24#include <QtCore/qbytearray.h>
34 explicit QSSGDataView(
const QList<T> &data) : mData(data.constData()), mSize(data.size()) { Q_ASSERT(mSize >= 0); }
35 template <qsizetype N>
36 explicit QSSGDataView(
const QVarLengthArray<T, N> &data) : mData(data.constData()), mSize(data.size()) { Q_ASSERT(mSize >= 0); }
37 QSSGDataView(
const T *inData, qsizetype inSize) : mData(inData), mSize(inSize) { Q_ASSERT(mSize >= 0); }
38 constexpr QSSGDataView() : mData(
nullptr), mSize(0) {}
40 qsizetype size()
const {
return mSize; }
42 const T *begin()
const {
return mData; }
43 const T *end()
const {
return mData + mSize; }
45 const T& first()
const { Q_ASSERT(!isEmpty());
return *begin(); }
46 const T& last()
const { Q_ASSERT(!isEmpty());
return *(end()-1); }
48 const T &operator[](
int index)
const
51 Q_ASSERT(index < mSize);
55 bool isEmpty()
const {
return (mSize == 0); }
63 operator
const void *() {
return reinterpret_cast<
const void *>(mData); }
74 { Q_ASSERT(mSize >= 0); }
78 { Q_ASSERT(mSize >= 0); }
83 { Q_ASSERT(mSize >= 0); }
87 bool isEmpty()
const {
return (mSize == 0); }
95 Q_ASSERT(index < mSize);
105 operator const void *() {
return reinterpret_cast<
const void *>(mData); }
111inline QSSGDataView<T> toDataView(
const T &type)
113 return QSSGDataView<T>(&type, 1);
117inline QSSGDataView<T> toDataView(
const QList<T> &type)
119 return QSSGDataView<T>(type);
146inline QSSGDataView<T> toDataView(
const T *type, qsizetype count)
148 return QSSGDataView<T>(type, count);
168 T *
end() {
return mData + mSize; }
171 T *
end()
const {
return mData + mSize; }
183 Q_ASSERT(index >= 0);
184 Q_ASSERT(index < mSize);
190 Q_ASSERT(index >= 0);
191 Q_ASSERT(index < mSize);
205using QSSGByteRef = QSSGDataRef<quint8>;
216 return QSSGByteRef(
reinterpret_cast<quint8 *>(&type),
sizeof(T));
228 return QSSGByteRef(
reinterpret_cast<quint8 *>(type),
sizeof(T) * count);
Combined button and popup list for selecting options.
QSSGByteRef toByteRef(T &type)
QSSGByteView toByteView(const QList< T > &type)
QSSGByteView toByteView(const QByteArray &type)
QSSGByteView toByteView(const T &type)
QSSGByteView toByteView(const char *str)
QSSGDataRef< T > toDataRef(T *type, qsizetype count)
QSSGDataView< quint8 > QSSGByteView
QSSGByteRef toByteRef(T *type, qsizetype count)
QSSGByteView toByteView(const T *type, qsizetype count)
QSSGDataRef< T > toDataRef(T &type)
const T & operator[](qsizetype index) const
T & operator[](qsizetype index)
QSSGDataRef(T *inData, qsizetype inSize)
const quint8 & operator[](int index) const
QSSGDataView(const QByteArray &data)
QSSGDataView(const T *inData, qsizetype inSize)
QSSGDataView(const QList< T > &data)
QSSGDataView(const quint8 *inData, qsizetype inSize)
const quint8 * end() const
const quint8 * begin() const