Coverage Report

Created: 2025-12-31 07:23

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/qtbase/src/gui/kernel/qguivariant.cpp
Line
Count
Source
1
/****************************************************************************
2
**
3
** Copyright (C) 2016 The Qt Company Ltd.
4
** Contact: https://www.qt.io/licensing/
5
**
6
** This file is part of the QtGui module of the Qt Toolkit.
7
**
8
** $QT_BEGIN_LICENSE:LGPL$
9
** Commercial License Usage
10
** Licensees holding valid commercial Qt licenses may use this file in
11
** accordance with the commercial license agreement provided with the
12
** Software or, alternatively, in accordance with the terms contained in
13
** a written agreement between you and The Qt Company. For licensing terms
14
** and conditions see https://www.qt.io/terms-conditions. For further
15
** information use the contact form at https://www.qt.io/contact-us.
16
**
17
** GNU Lesser General Public License Usage
18
** Alternatively, this file may be used under the terms of the GNU Lesser
19
** General Public License version 3 as published by the Free Software
20
** Foundation and appearing in the file LICENSE.LGPL3 included in the
21
** packaging of this file. Please review the following information to
22
** ensure the GNU Lesser General Public License version 3 requirements
23
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24
**
25
** GNU General Public License Usage
26
** Alternatively, this file may be used under the terms of the GNU
27
** General Public License version 2.0 or (at your option) the GNU General
28
** Public license version 3 or any later version approved by the KDE Free
29
** Qt Foundation. The licenses are as published by the Free Software
30
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31
** included in the packaging of this file. Please review the following
32
** information to ensure the GNU General Public License requirements will
33
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34
** https://www.gnu.org/licenses/gpl-3.0.html.
35
**
36
** $QT_END_LICENSE$
37
**
38
****************************************************************************/
39
40
// Gui types
41
#include "qbitmap.h"
42
#include "qbrush.h"
43
#include "qcolor.h"
44
#include "qcolorspace.h"
45
#include "qcursor.h"
46
#include "qfont.h"
47
#include "qimage.h"
48
#include "qkeysequence.h"
49
#include "qtransform.h"
50
#include "qpalette.h"
51
#include "qpen.h"
52
#include "qpixmap.h"
53
#include "qpolygon.h"
54
#include "qregion.h"
55
#include "qtextformat.h"
56
#include "qmatrix4x4.h"
57
#include "qvector2d.h"
58
#include "qvector3d.h"
59
#include "qvector4d.h"
60
#include "qquaternion.h"
61
#include "qicon.h"
62
63
// Core types
64
#include "qvariant.h"
65
#include "qbitarray.h"
66
#include "qbytearray.h"
67
#include "qdatastream.h"
68
#include "qdebug.h"
69
#include "qmap.h"
70
#include "qdatetime.h"
71
#include "qlist.h"
72
#include "qstring.h"
73
#include "qstringlist.h"
74
#include "qurl.h"
75
#include "qlocale.h"
76
#include "quuid.h"
77
78
#ifndef QT_NO_GEOM_VARIANT
79
#include "qsize.h"
80
#include "qpoint.h"
81
#include "qrect.h"
82
#include "qline.h"
83
#endif
84
85
#include <float.h>
86
87
#include "private/qvariant_p.h"
88
#include <private/qmetatype_p.h>
89
90
QT_BEGIN_NAMESPACE
91
92
Q_CORE_EXPORT const QVariant::Handler *qcoreVariantHandler();
93
94
namespace {
95
struct GuiTypesFilter {
96
    template<typename T>
97
    struct Acceptor {
98
        static const bool IsAccepted = QModulesPrivate::QTypeModuleInfo<T>::IsGui && QtMetaTypePrivate::TypeDefinition<T>::IsAvailable;
99
    };
100
};
101
102
static void construct(QVariant::Private *x, const void *copy)
103
0
{
104
0
    const int type = x->type;
105
0
    QVariantConstructor<GuiTypesFilter> constructor(x, copy);
106
0
    QMetaTypeSwitcher::switcher<void>(constructor, type, nullptr);
107
0
}
108
109
static void clear(QVariant::Private *d)
110
0
{
111
0
    QVariantDestructor<GuiTypesFilter> destructor(d);
112
0
    QMetaTypeSwitcher::switcher<void>(destructor, d->type, nullptr);
113
0
}
114
115
// This class is a hack that customizes access to QPolygon and QPolygonF
116
template<class Filter>
117
class QGuiVariantIsNull : public QVariantIsNull<Filter> {
118
    typedef QVariantIsNull<Filter> Base;
119
public:
120
    QGuiVariantIsNull(const QVariant::Private *d)
121
0
        : QVariantIsNull<Filter>(d)
122
0
    {}
123
    template<typename T>
124
0
    bool delegate(const T *p) { return Base::delegate(p); }
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<bool>(bool const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<int>(int const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned int>(unsigned int const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<long long>(long long const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned long long>(unsigned long long const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<double>(double const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<long>(long const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<short>(short const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<char>(char const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned long>(unsigned long const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned short>(unsigned short const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned char>(unsigned char const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<float>(float const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<signed char>(signed char const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<decltype(nullptr)>(decltype(nullptr) const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QCborSimpleType>(QCborSimpleType const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<void*>(void* const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QChar>(QChar const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QString>(QString const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QStringList>(QStringList const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QByteArray>(QByteArray const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QBitArray>(QBitArray const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QDate>(QDate const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QTime>(QTime const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QDateTime>(QDateTime const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QUrl>(QUrl const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QLocale>(QLocale const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QRect>(QRect const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QRectF>(QRectF const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QSize>(QSize const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QSizeF>(QSizeF const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QLine>(QLine const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QLineF>(QLineF const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QPoint>(QPoint const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QPointF>(QPointF const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QRegExp>(QRegExp const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QEasingCurve>(QEasingCurve const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QUuid>(QUuid const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QVariant>(QVariant const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QRegularExpression>(QRegularExpression const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QJsonValue>(QJsonValue const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QJsonObject>(QJsonObject const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QJsonArray>(QJsonArray const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QJsonDocument>(QJsonDocument const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QCborValue>(QCborValue const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QCborArray>(QCborArray const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QCborMap>(QCborMap const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QModelIndex>(QModelIndex const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QPersistentModelIndex>(QPersistentModelIndex const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QObject*>(QObject* const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QMap<QString, QVariant> >(QMap<QString, QVariant> const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QList<QVariant> >(QList<QVariant> const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QHash<QString, QVariant> >(QHash<QString, QVariant> const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QList<QByteArray> >(QList<QByteArray> const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QFont>(QFont const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QPixmap>(QPixmap const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QBrush>(QBrush const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QColor>(QColor const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QPalette>(QPalette const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QIcon>(QIcon const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QImage>(QImage const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QRegion>(QRegion const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QBitmap>(QBitmap const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QCursor>(QCursor const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QKeySequence>(QKeySequence const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QPen>(QPen const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QTextLength>(QTextLength const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QTextFormat>(QTextFormat const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QMatrix>(QMatrix const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QTransform>(QTransform const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QMatrix4x4>(QMatrix4x4 const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QVector2D>(QVector2D const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QVector3D>(QVector3D const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QVector4D>(QVector4D const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QQuaternion>(QQuaternion const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QColorSpace>(QColorSpace const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QSizePolicy>(QSizePolicy const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QMetaTypeSwitcher::UnknownType>(QMetaTypeSwitcher::UnknownType const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantIsNull<(anonymous namespace)::GuiTypesFilter>::delegate<QMetaTypeSwitcher::NotBuiltinType>(QMetaTypeSwitcher::NotBuiltinType const*)
125
0
    bool delegate(const QPolygon*) { return v_cast<QPolygon>(Base::m_d)->isEmpty(); }
126
0
    bool delegate(const QPolygonF*) { return v_cast<QPolygonF>(Base::m_d)->isEmpty(); }
127
0
    bool delegate(const void *p) { return Base::delegate(p); }
128
};
129
static bool isNull(const QVariant::Private *d)
130
0
{
131
0
    QGuiVariantIsNull<GuiTypesFilter> isNull(d);
132
0
    return QMetaTypeSwitcher::switcher<bool>(isNull, d->type, nullptr);
133
0
}
134
135
// This class is a hack that customizes access to QPixmap, QBitmap, QCursor and QIcon
136
template<class Filter>
137
class QGuiVariantComparator : public QVariantComparator<Filter> {
138
    typedef QVariantComparator<Filter> Base;
139
public:
140
    QGuiVariantComparator(const QVariant::Private *a, const QVariant::Private *b)
141
0
        : QVariantComparator<Filter>(a, b)
142
0
    {}
143
    template<typename T>
144
    bool delegate(const T *p)
145
0
    {
146
0
        return Base::delegate(p);
147
0
    }
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<bool>(bool const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<int>(int const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned int>(unsigned int const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<long long>(long long const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned long long>(unsigned long long const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<double>(double const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<long>(long const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<short>(short const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<char>(char const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned long>(unsigned long const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned short>(unsigned short const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<unsigned char>(unsigned char const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<float>(float const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<signed char>(signed char const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<decltype(nullptr)>(decltype(nullptr) const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QCborSimpleType>(QCborSimpleType const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<void*>(void* const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QChar>(QChar const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QString>(QString const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QStringList>(QStringList const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QByteArray>(QByteArray const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QBitArray>(QBitArray const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QDate>(QDate const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QTime>(QTime const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QDateTime>(QDateTime const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QUrl>(QUrl const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QLocale>(QLocale const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QRect>(QRect const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QRectF>(QRectF const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QSize>(QSize const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QSizeF>(QSizeF const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QLine>(QLine const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QLineF>(QLineF const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QPoint>(QPoint const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QPointF>(QPointF const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QRegExp>(QRegExp const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QEasingCurve>(QEasingCurve const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QUuid>(QUuid const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QVariant>(QVariant const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QRegularExpression>(QRegularExpression const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QJsonValue>(QJsonValue const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QJsonObject>(QJsonObject const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QJsonArray>(QJsonArray const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QJsonDocument>(QJsonDocument const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QCborValue>(QCborValue const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QCborArray>(QCborArray const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QCborMap>(QCborMap const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QModelIndex>(QModelIndex const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QPersistentModelIndex>(QPersistentModelIndex const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QObject*>(QObject* const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QMap<QString, QVariant> >(QMap<QString, QVariant> const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QList<QVariant> >(QList<QVariant> const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QHash<QString, QVariant> >(QHash<QString, QVariant> const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QList<QByteArray> >(QList<QByteArray> const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QFont>(QFont const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QBrush>(QBrush const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QColor>(QColor const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QPalette>(QPalette const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QImage>(QImage const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QPolygon>(QPolygon const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QRegion>(QRegion const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QKeySequence>(QKeySequence const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QPen>(QPen const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QTextLength>(QTextLength const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QTextFormat>(QTextFormat const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QMatrix>(QMatrix const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QTransform>(QTransform const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QMatrix4x4>(QMatrix4x4 const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QVector2D>(QVector2D const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QVector3D>(QVector3D const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QVector4D>(QVector4D const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QQuaternion>(QQuaternion const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QPolygonF>(QPolygonF const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QColorSpace>(QColorSpace const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QSizePolicy>(QSizePolicy const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QMetaTypeSwitcher::UnknownType>(QMetaTypeSwitcher::UnknownType const*)
Unexecuted instantiation: qguivariant.cpp:bool (anonymous namespace)::QGuiVariantComparator<(anonymous namespace)::GuiTypesFilter>::delegate<QMetaTypeSwitcher::NotBuiltinType>(QMetaTypeSwitcher::NotBuiltinType const*)
148
    bool delegate(const QPixmap*)
149
0
    {
150
0
        return v_cast<QPixmap>(Base::m_a)->cacheKey() == v_cast<QPixmap>(Base::m_b)->cacheKey();
151
0
    }
152
    bool delegate(const QBitmap*)
153
0
    {
154
0
        return v_cast<QBitmap>(Base::m_a)->cacheKey() == v_cast<QBitmap>(Base::m_b)->cacheKey();
155
0
    }
156
#ifndef QT_NO_CURSOR
157
    bool delegate(const QCursor*)
158
0
    {
159
0
        return v_cast<QCursor>(Base::m_a)->shape() == v_cast<QCursor>(Base::m_b)->shape();
160
0
    }
161
#endif
162
#ifndef QT_NO_ICON
163
    bool delegate(const QIcon *)
164
0
    {
165
0
        return v_cast<QIcon>(Base::m_a)->cacheKey() == v_cast<QIcon>(Base::m_b)->cacheKey();
166
0
    }
167
#endif
168
0
    bool delegate(const void *p) { return Base::delegate(p); }
169
};
170
171
static bool compare(const QVariant::Private *a, const QVariant::Private *b)
172
0
{
173
0
    QGuiVariantComparator<GuiTypesFilter> comparator(a, b);
174
0
    return QMetaTypeSwitcher::switcher<bool>(comparator, a->type, nullptr);
175
0
}
176
177
static bool convert(const QVariant::Private *d, int t,
178
                 void *result, bool *ok)
179
0
{
180
0
    switch (t) {
181
0
    case QMetaType::QByteArray:
182
0
        if (d->type == QMetaType::QColor) {
183
0
            const QColor *c = v_cast<QColor>(d);
184
0
            *static_cast<QByteArray *>(result) = c->name(c->alpha() != 255 ? QColor::HexArgb : QColor::HexRgb).toLatin1();
185
0
            return true;
186
0
        }
187
0
        break;
188
0
    case QMetaType::QString: {
189
0
        QString *str = static_cast<QString *>(result);
190
0
        switch (d->type) {
191
0
#ifndef QT_NO_SHORTCUT
192
0
        case QMetaType::QKeySequence:
193
0
            *str = (*v_cast<QKeySequence>(d)).toString(QKeySequence::NativeText);
194
0
            return true;
195
0
#endif
196
0
        case QMetaType::QFont:
197
0
            *str = v_cast<QFont>(d)->toString();
198
0
            return true;
199
0
        case QMetaType::QColor: {
200
0
            const QColor *c = v_cast<QColor>(d);
201
0
            *str = c->name(c->alpha() != 255 ? QColor::HexArgb : QColor::HexRgb);
202
0
            return true;
203
0
        }
204
0
        default:
205
0
            break;
206
0
        }
207
0
        break;
208
0
    }
209
0
    case QMetaType::QPixmap:
210
0
        if (d->type == QMetaType::QImage) {
211
0
            *static_cast<QPixmap *>(result) = QPixmap::fromImage(*v_cast<QImage>(d));
212
0
            return true;
213
0
        } else if (d->type == QMetaType::QBitmap) {
214
0
            *static_cast<QPixmap *>(result) = *v_cast<QBitmap>(d);
215
0
            return true;
216
0
        } else if (d->type == QMetaType::QBrush) {
217
0
            if (v_cast<QBrush>(d)->style() == Qt::TexturePattern) {
218
0
                *static_cast<QPixmap *>(result) = v_cast<QBrush>(d)->texture();
219
0
                return true;
220
0
            }
221
0
        }
222
0
        break;
223
0
    case QMetaType::QImage:
224
0
        if (d->type == QMetaType::QPixmap) {
225
0
            *static_cast<QImage *>(result) = v_cast<QPixmap>(d)->toImage();
226
0
            return true;
227
0
        } else if (d->type == QMetaType::QBitmap) {
228
0
            *static_cast<QImage *>(result) = v_cast<QBitmap>(d)->toImage();
229
0
            return true;
230
0
        }
231
0
        break;
232
0
    case QMetaType::QBitmap:
233
0
        if (d->type == QMetaType::QPixmap) {
234
0
            *static_cast<QBitmap *>(result) = *v_cast<QPixmap>(d);
235
0
            return true;
236
0
        } else if (d->type == QMetaType::QImage) {
237
0
            *static_cast<QBitmap *>(result) = QBitmap::fromImage(*v_cast<QImage>(d));
238
0
            return true;
239
0
        }
240
0
        break;
241
0
#ifndef QT_NO_SHORTCUT
242
0
    case QMetaType::Int:
243
0
        if (d->type == QMetaType::QKeySequence) {
244
0
            const QKeySequence &seq = *v_cast<QKeySequence>(d);
245
0
            *static_cast<int *>(result) = seq.isEmpty() ? 0 : seq[0];
246
0
            return true;
247
0
        }
248
0
        break;
249
0
#endif
250
0
    case QMetaType::QFont:
251
0
        if (d->type == QMetaType::QString) {
252
0
            QFont *f = static_cast<QFont *>(result);
253
0
            f->fromString(*v_cast<QString>(d));
254
0
            return true;
255
0
        }
256
0
        break;
257
0
    case QMetaType::QColor:
258
0
        if (d->type == QMetaType::QString) {
259
0
            static_cast<QColor *>(result)->setNamedColor(*v_cast<QString>(d));
260
0
            return static_cast<QColor *>(result)->isValid();
261
0
        } else if (d->type == QMetaType::QByteArray) {
262
0
            static_cast<QColor *>(result)->setNamedColor(QLatin1String(*v_cast<QByteArray>(d)));
263
0
            return true;
264
0
        } else if (d->type == QMetaType::QBrush) {
265
0
            if (v_cast<QBrush>(d)->style() == Qt::SolidPattern) {
266
0
                *static_cast<QColor *>(result) = v_cast<QBrush>(d)->color();
267
0
                return true;
268
0
            }
269
0
        }
270
0
        break;
271
0
    case QMetaType::QBrush:
272
0
        if (d->type == QMetaType::QColor) {
273
0
            *static_cast<QBrush *>(result) = QBrush(*v_cast<QColor>(d));
274
0
            return true;
275
0
        } else if (d->type == QMetaType::QPixmap) {
276
0
            *static_cast<QBrush *>(result) = QBrush(*v_cast<QPixmap>(d));
277
0
            return true;
278
0
        }
279
0
        break;
280
0
#ifndef QT_NO_SHORTCUT
281
0
    case QMetaType::QKeySequence: {
282
0
        QKeySequence *seq = static_cast<QKeySequence *>(result);
283
0
        switch (d->type) {
284
0
        case QMetaType::QString:
285
0
            *seq = QKeySequence(*v_cast<QString>(d));
286
0
            return true;
287
0
        case QMetaType::Int:
288
0
            *seq = QKeySequence(d->data.i);
289
0
            return true;
290
0
        default:
291
0
            break;
292
0
        }
293
0
        break;
294
0
    }
295
0
#endif
296
0
#ifndef QT_NO_ICON
297
0
    case QMetaType::QIcon: {
298
0
        if (ok)
299
0
            *ok = false;
300
0
        return false;
301
0
    }
302
0
#endif
303
0
    default:
304
0
        break;
305
0
    }
306
0
    return qcoreVariantHandler()->convert(d, t, result, ok);
307
0
}
308
309
#if !defined(QT_NO_DEBUG_STREAM)
310
static void streamDebug(QDebug dbg, const QVariant &v)
311
0
{
312
0
    QVariant::Private *d = const_cast<QVariant::Private *>(&v.data_ptr());
313
0
    QVariantDebugStream<GuiTypesFilter> stream(dbg, d);
314
0
    QMetaTypeSwitcher::switcher<void>(stream, d->type, nullptr);
315
0
}
316
#endif
317
318
const QVariant::Handler qt_gui_variant_handler = {
319
    construct,
320
    clear,
321
    isNull,
322
#ifndef QT_NO_DATASTREAM
323
    nullptr,
324
    nullptr,
325
#endif
326
    compare,
327
    convert,
328
    nullptr,
329
#if !defined(QT_NO_DEBUG_STREAM)
330
    streamDebug
331
#else
332
    0
333
#endif
334
};
335
336
#define QT_IMPL_METATYPEINTERFACE_GUI_TYPES(MetaTypeName, MetaTypeId, RealName) \
337
    QT_METATYPE_INTERFACE_INIT(RealName),
338
339
static const QMetaTypeInterface qVariantGuiHelper[] = {
340
    QT_FOR_EACH_STATIC_GUI_CLASS(QT_IMPL_METATYPEINTERFACE_GUI_TYPES)
341
};
342
343
#undef QT_IMPL_METATYPEINTERFACE_GUI_TYPES
344
} // namespace used to hide QVariant handler
345
346
extern Q_CORE_EXPORT const QMetaTypeInterface *qMetaTypeGuiHelper;
347
348
void qRegisterGuiVariant()
349
10
{
350
10
    QVariantPrivate::registerHandler(QModulesPrivate::Gui, &qt_gui_variant_handler);
351
10
    qMetaTypeGuiHelper = qVariantGuiHelper;
352
10
}
353
Q_CONSTRUCTOR_FUNCTION(qRegisterGuiVariant)
354
355
QT_END_NAMESPACE