Skip to content

Commit e84662a

Browse files
cxx-qt-lib: Add support for QUuid (#1149)
--------- Co-authored-by: Leon Matthes <[email protected]>
1 parent 1f72cdd commit e84662a

27 files changed

+910
-4
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2020
### Added
2121

2222
- `QDateTime::from_string` to parse `QDateTime` from a `QString`.
23+
- Support for further types: `QUuid`
2324

2425
### Fixed
2526

crates/cxx-qt-lib/Cargo.toml

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,15 @@ http = { version = "1.0", optional = true }
2929
rgb = { version = "0.8", optional = true }
3030
time = { version = "0.3.20", optional = true }
3131
url = { version = "2.3", optional = true }
32+
uuid = { version = "1.1.0", optional = true }
3233
serde = { version = "1", features=["derive"], optional = true }
3334

3435
[build-dependencies]
3536
cxx-qt-build.workspace = true
3637
qt-build-utils.workspace = true
3738

3839
[features]
39-
full = ["qt_full", "serde", "url", "time", "rgb", "http", "chrono", "bytes"]
40+
full = ["qt_full", "serde", "url", "uuid", "time", "rgb", "http", "chrono", "bytes"]
4041
default = []
4142

4243
qt_full = ["qt_gui", "qt_qml", "qt_quickcontrols"]
@@ -51,6 +52,7 @@ rgb = ["dep:rgb"]
5152
time = ["dep:time"]
5253
url = ["dep:url"]
5354
serde = ["dep:serde"]
55+
uuid = ["dep:uuid"]
5456
link_qt_object_files = ["cxx-qt-build/link_qt_object_files"]
5557

5658
[lints]

crates/cxx-qt-lib/build.rs

+6
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ fn main() {
110110
"core/qlist/qlist_qstring",
111111
"core/qlist/qlist_qtime",
112112
"core/qlist/qlist_qurl",
113+
"core/qlist/qlist_quuid",
113114
"core/qlist/qlist_qvariant",
114115
"core/qlist/qlist_u8",
115116
"core/qlist/qlist_u16",
@@ -137,6 +138,7 @@ fn main() {
137138
"core/qset/qset_qstring",
138139
"core/qset/qset_qtime",
139140
"core/qset/qset_qurl",
141+
"core/qset/qset_quuid",
140142
"core/qset/qset_u8",
141143
"core/qset/qset_u16",
142144
"core/qset/qset_u32",
@@ -148,6 +150,7 @@ fn main() {
148150
"core/qt",
149151
"core/qtime",
150152
"core/qurl",
153+
"core/quuid",
151154
"core/qvariant/mod",
152155
"core/qvariant/qvariant_bool",
153156
"core/qvariant/qvariant_f32",
@@ -170,6 +173,7 @@ fn main() {
170173
"core/qvariant/qvariant_qstringlist",
171174
"core/qvariant/qvariant_qtime",
172175
"core/qvariant/qvariant_qurl",
176+
"core/qvariant/qvariant_quuid",
173177
"core/qvariant/qvariant_u8",
174178
"core/qvariant/qvariant_u16",
175179
"core/qvariant/qvariant_u32",
@@ -197,6 +201,7 @@ fn main() {
197201
"core/qvector/qvector_qstring",
198202
"core/qvector/qvector_qtime",
199203
"core/qvector/qvector_qurl",
204+
"core/qvector/qvector_quuid",
200205
"core/qvector/qvector_qvariant",
201206
"core/qvector/qvector_u8",
202207
"core/qvector/qvector_u16",
@@ -272,6 +277,7 @@ fn main() {
272277
"core/qstringlist",
273278
"core/qtime",
274279
"core/qurl",
280+
"core/quuid",
275281
"core/qvariant/qvariant",
276282
"core/qvector/qvector",
277283
];

crates/cxx-qt-lib/include/core/qlist.h

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <QtCore/QString>
2828
#include <QtCore/QTime>
2929
#include <QtCore/QUrl>
30+
#include <QtCore/QUuid>
3031
#include <QtCore/QVariant>
3132

3233
#ifdef CXX_QT_GUI_FEATURE
@@ -170,6 +171,7 @@ using QList_QSizeF = QList<::QSizeF>;
170171
using QList_QString = QList<::QString>;
171172
using QList_QTime = QList<::QTime>;
172173
using QList_QUrl = QList<::QUrl>;
174+
using QList_QUuid = QList<::QUuid>;
173175
using QList_QVariant = QList<::QVariant>;
174176
using QList_u8 = QList<::std::uint8_t>;
175177
using QList_u16 = QList<::std::uint16_t>;

crates/cxx-qt-lib/include/core/qset.h

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <QtCore/QString>
1818
#include <QtCore/QTime>
1919
#include <QtCore/QUrl>
20+
#include <QtCore/QUuid>
2021

2122
#include "rust/cxx.h"
2223

@@ -84,6 +85,7 @@ using QSet_QPersistentModelIndex = QSet<::QPersistentModelIndex>;
8485
using QSet_QString = QSet<::QString>;
8586
using QSet_QTime = QSet<::QTime>;
8687
using QSet_QUrl = QSet<::QUrl>;
88+
using QSet_QUuid = QSet<::QUuid>;
8789
using QSet_u8 = QSet<::std::uint8_t>;
8890
using QSet_u16 = QSet<::std::uint16_t>;
8991
using QSet_u32 = QSet<::std::uint32_t>;
+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// clang-format off
2+
// SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company <[email protected]>
3+
// clang-format on
4+
// SPDX-FileContributor: Joshua Booth <[email protected]>
5+
//
6+
// SPDX-License-Identifier: MIT OR Apache-2.0
7+
#pragma once
8+
9+
#include <QtCore/QUuid>
10+
11+
#include "rust/cxx.h"
12+
13+
using QUuidVariant = QUuid::Variant;
14+
using QUuidVersion = QUuid::Version;
15+
16+
namespace rust {
17+
namespace cxxqtlib1 {
18+
QUuid
19+
quuidCreateUuidV3(const QUuid& ns, ::rust::Slice<const ::std::uint8_t> slice);
20+
21+
QUuid
22+
quuidCreateUuid();
23+
24+
QUuid
25+
quuidCreateUuidV5(const QUuid& ns, ::rust::Slice<const ::std::uint8_t> slice);
26+
27+
QString
28+
quuidToString(const QUuid& uuid);
29+
30+
QUuid
31+
quuidFromString(const QString& string);
32+
33+
QUuid
34+
quuidFromStr(rust::Str string);
35+
36+
QUuid
37+
quuidFromRfc4122(const QByteArray& bytes);
38+
39+
}
40+
}

crates/cxx-qt-lib/include/core/qvariant.h

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <QtCore/QStringList>
2727
#include <QtCore/QTime>
2828
#include <QtCore/QUrl>
29+
#include <QtCore/QUuid>
2930

3031
#ifdef CXX_QT_GUI_FEATURE
3132
#include <QtGui/QColor>
@@ -91,6 +92,7 @@ CXX_QT_QVARIANT_CAN_CONVERT(QString)
9192
CXX_QT_QVARIANT_CAN_CONVERT(QStringList)
9293
CXX_QT_QVARIANT_CAN_CONVERT(QTime)
9394
CXX_QT_QVARIANT_CAN_CONVERT(QUrl)
95+
CXX_QT_QVARIANT_CAN_CONVERT(QUuid)
9496
CXX_QT_QVARIANT_CAN_CONVERT(U8)
9597
CXX_QT_QVARIANT_CAN_CONVERT(U16)
9698
CXX_QT_QVARIANT_CAN_CONVERT(U32)

crates/cxx-qt-lib/include/core/qvector.h

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <QtCore/QString>
2626
#include <QtCore/QTime>
2727
#include <QtCore/QUrl>
28+
#include <QtCore/QUuid>
2829
#include <QtCore/QVariant>
2930

3031
#ifdef CXX_QT_GUI_FEATURE
@@ -167,6 +168,7 @@ using QVector_QSizeF = QVector<::QSizeF>;
167168
using QVector_QString = QVector<::QString>;
168169
using QVector_QTime = QVector<::QTime>;
169170
using QVector_QUrl = QVector<::QUrl>;
171+
using QVector_QUuid = QVector<::QUuid>;
170172
using QVector_QVariant = QVector<::QVariant>;
171173
using QVector_u8 = QVector<::std::uint8_t>;
172174
using QVector_u16 = QVector<::std::uint16_t>;

crates/cxx-qt-lib/src/core/mod.rs

+3
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ pub use qpointf::QPointF;
9797
mod qurl;
9898
pub use qurl::QUrl;
9999

100+
mod quuid;
101+
pub use quuid::{QUuid, QUuidVariant, QUuidVersion};
102+
100103
mod qvariant;
101104
pub use qvariant::{QVariant, QVariantValue};
102105

crates/cxx-qt-lib/src/core/qlist/generate.sh

+1
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ generate_bridge_qt "QSizeF" "qsizef"
227227
generate_bridge_qt "QString" "qstring"
228228
generate_bridge_qt "QTime" "qtime"
229229
generate_bridge_qt "QUrl" "qurl"
230+
generate_bridge_qt "QUuid" "quuid"
230231
generate_bridge_qt "QVariant" "qvariant"
231232
generate_bridge_qt "QLine" "qline"
232233
generate_bridge_qt "QLineF" "qlinef"

crates/cxx-qt-lib/src/core/qlist/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::QColor;
99
use crate::QDateTime;
1010
use crate::{
1111
QByteArray, QDate, QLine, QLineF, QMargins, QMarginsF, QPersistentModelIndex, QPoint, QPointF,
12-
QRect, QRectF, QSize, QSizeF, QString, QTime, QUrl, QVariant,
12+
QRect, QRectF, QSize, QSizeF, QString, QTime, QUrl, QUuid, QVariant,
1313
};
1414
use core::{marker::PhantomData, mem::MaybeUninit};
1515
use cxx::{type_id, ExternType};
@@ -373,6 +373,7 @@ impl_qlist_element!(QSizeF, qlist_qsizef, "QList_QSizeF");
373373
impl_qlist_element!(QString, qlist_qstring, "QList_QString");
374374
impl_qlist_element!(QTime, qlist_qtime, "QList_QTime");
375375
impl_qlist_element!(QUrl, qlist_qurl, "QList_QUrl");
376+
impl_qlist_element!(QUuid, qlist_quuid, "QList_QUuid");
376377
impl_qlist_element!(QVariant, qlist_qvariant, "QList_QVariant");
377378
impl_qlist_element!(u8, qlist_u8, "QList_u8");
378379
impl_qlist_element!(u16, qlist_u16, "QList_u16");

crates/cxx-qt-lib/src/core/qlist/qlist.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ CXX_QT_QLIST_ASSERTS(::QSizeF, QSizeF);
5757
CXX_QT_QLIST_ASSERTS(::QString, QString);
5858
CXX_QT_QLIST_ASSERTS(::QTime, QTime);
5959
CXX_QT_QLIST_ASSERTS(::QUrl, QUrl);
60+
CXX_QT_QLIST_ASSERTS(::QUuid, QUuid);
6061
CXX_QT_QLIST_ASSERTS(::QVariant, QVariant);
6162
CXX_QT_QLIST_ASSERTS(::std::uint8_t, u8);
6263
CXX_QT_QLIST_ASSERTS(::std::uint16_t, u16);

crates/cxx-qt-lib/src/core/qlist/qlist_quuid.rs

+92
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/cxx-qt-lib/src/core/qset/generate.sh

+1
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ generate_bridge_qt "QPersistentModelIndex" "qpersistentmodelindex"
174174
generate_bridge_qt "QString" "qstring"
175175
generate_bridge_qt "QTime" "qtime"
176176
generate_bridge_qt "QUrl" "qurl"
177+
generate_bridge_qt "QUuid" "quuid"
177178
generate_bridge_primitive "u8"
178179
generate_bridge_primitive "u16"
179180
generate_bridge_primitive "u32"

crates/cxx-qt-lib/src/core/qset/mod.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
// SPDX-License-Identifier: MIT OR Apache-2.0
55
#[cfg(not(target_os = "emscripten"))]
66
use crate::QDateTime;
7-
use crate::{QByteArray, QDate, QPersistentModelIndex, QString, QTime, QUrl};
7+
use crate::{QByteArray, QDate, QPersistentModelIndex, QString, QTime, QUrl, QUuid};
88
use core::{marker::PhantomData, mem::MaybeUninit};
99
use cxx::{type_id, ExternType};
1010

@@ -262,6 +262,7 @@ impl_qset_element!(
262262
impl_qset_element!(QString, qset_qstring, "QSet_QString");
263263
impl_qset_element!(QTime, qset_qtime, "QSet_QTime");
264264
impl_qset_element!(QUrl, qset_qurl, "QSet_QUrl");
265+
impl_qset_element!(QUuid, qset_quuid, "QSet_QUuid");
265266
impl_qset_element!(u8, qset_u8, "QSet_u8");
266267
impl_qset_element!(u16, qset_u16, "QSet_u16");
267268
impl_qset_element!(u32, qset_u32, "QSet_u32");

crates/cxx-qt-lib/src/core/qset/qset.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ CXX_QT_QSET_ASSERTS(::QPersistentModelIndex, QPersistentModelIndex);
3434
CXX_QT_QSET_ASSERTS(::QString, QString);
3535
CXX_QT_QSET_ASSERTS(::QTime, QTime);
3636
CXX_QT_QSET_ASSERTS(::QUrl, QUrl);
37+
CXX_QT_QSET_ASSERTS(::QUuid, QUuid);
3738
CXX_QT_QSET_ASSERTS(::std::uint8_t, u8);
3839
CXX_QT_QSET_ASSERTS(::std::uint16_t, u16);
3940
CXX_QT_QSET_ASSERTS(::std::uint32_t, u32);

0 commit comments

Comments
 (0)