77// SPDX-License-Identifier: MIT OR Apache-2.0
88#pragma once
99
10+ #include < cstdint>
11+
1012#include < QVariant>
1113
1214#include < QColor>
@@ -31,54 +33,51 @@ struct rust::IsRelocatable<QVariant> : std::true_type
3133
3234namespace rust {
3335namespace cxxqtlib1 {
34-
35- namespace types {
36-
37- enum class QVariantType : uint8_t
38- {
39- Unsupported = 0 ,
40- Bool = 1 ,
41- F32 = 2 ,
42- F64 = 3 ,
43- I8 = 4 ,
44- I16 = 5 ,
45- I32 = 6 ,
46- QColor = 7 ,
47- QDate = 8 ,
48- QDateTime = 9 ,
49- QPoint = 10 ,
50- QPointF = 11 ,
51- QRect = 12 ,
52- QRectF = 13 ,
53- QSize = 14 ,
54- QSizeF = 15 ,
55- QString = 16 ,
56- QTime = 17 ,
57- QUrl = 18 ,
58- U8 = 19 ,
59- U16 = 20 ,
60- U32 = 21 ,
61- };
62-
63- } // namespace types
36+ namespace qvariant {
6437
6538template <typename T>
6639QVariant
67- qvariantInitFromT (T value)
40+ qvariantConstruct ( const T& value) noexcept
6841{
69- return QVariant::fromValue (value);
42+ return QVariant::fromValue<T> (value);
7043}
7144
72- types::QVariantType
73- qvariantType (const QVariant& variant);
74-
7545template <typename T>
7646T
77- qvariantToT (const QVariant& variant)
47+ qvariantValue (const QVariant& variant) noexcept
7848{
79- Q_ASSERT (variant.canConvert <T>());
8049 return variant.value <T>();
8150}
8251
52+ // Need to use a macro here as we can't template because the types
53+ // are always QVariant and bool. So then CXX can't decide which to use.
54+ #define CXX_QT_QVARIANT_CAN_CONVERT (name ) \
55+ bool qvariantCanConvert##name(const QVariant& variant);
56+
57+ CXX_QT_QVARIANT_CAN_CONVERT (Bool)
58+ CXX_QT_QVARIANT_CAN_CONVERT (F32)
59+ CXX_QT_QVARIANT_CAN_CONVERT (F64)
60+ CXX_QT_QVARIANT_CAN_CONVERT (I8)
61+ CXX_QT_QVARIANT_CAN_CONVERT (I16)
62+ CXX_QT_QVARIANT_CAN_CONVERT (I32)
63+ CXX_QT_QVARIANT_CAN_CONVERT (I64)
64+ CXX_QT_QVARIANT_CAN_CONVERT (QColor)
65+ CXX_QT_QVARIANT_CAN_CONVERT (QDate)
66+ CXX_QT_QVARIANT_CAN_CONVERT (QDateTime)
67+ CXX_QT_QVARIANT_CAN_CONVERT (QPoint)
68+ CXX_QT_QVARIANT_CAN_CONVERT (QPointF)
69+ CXX_QT_QVARIANT_CAN_CONVERT (QRect)
70+ CXX_QT_QVARIANT_CAN_CONVERT (QRectF)
71+ CXX_QT_QVARIANT_CAN_CONVERT (QSize)
72+ CXX_QT_QVARIANT_CAN_CONVERT (QSizeF)
73+ CXX_QT_QVARIANT_CAN_CONVERT (QString)
74+ CXX_QT_QVARIANT_CAN_CONVERT (QTime)
75+ CXX_QT_QVARIANT_CAN_CONVERT (QUrl)
76+ CXX_QT_QVARIANT_CAN_CONVERT (U8)
77+ CXX_QT_QVARIANT_CAN_CONVERT (U16)
78+ CXX_QT_QVARIANT_CAN_CONVERT (U32)
79+ CXX_QT_QVARIANT_CAN_CONVERT (U64)
80+
81+ }
8382}
8483}
0 commit comments