// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QTESTDATA_H #define QTESTDATA_H #include #include #include QT_BEGIN_NAMESPACE class QTestTable; class QTestDataPrivate; class Q_TESTLIB_EXPORT QTestData { public: ~QTestData(); void append(int type, const void *data); void *data(int index) const; const char *dataTag() const; QTestTable *parent() const; int dataCount() const; private: friend class QTestTable; QTestData(const char *tag, QTestTable *parent); Q_DISABLE_COPY(QTestData) QTestDataPrivate *d; }; template QTestData &operator<<(QTestData &data, const T &value) { data.append(qMetaTypeId(), &value); return data; } inline QTestData &operator<<(QTestData &data, const char * value) { QString str = QString::fromUtf8(value); data.append(QMetaType::QString, &str); return data; } #ifdef __cpp_char8_t Q_WEAK_OVERLOAD inline QTestData &operator<<(QTestData &data, const char8_t *value) { return data << reinterpret_cast(value); } #endif #ifdef QT_USE_QSTRINGBUILDER template inline QTestData &operator<<(QTestData &data, const QStringBuilder &value) { return data << typename QConcatenable >::ConvertTo(value); } #endif QT_END_NAMESPACE #endif