Skip to content

Commit 6892f82

Browse files
ahayzen-kdabBe-ing
authored andcommitted
cxx-qt-lib: use std int for qset and add i64/u64
1 parent 7552bf6 commit 6892f82

File tree

7 files changed

+154
-12
lines changed

7 files changed

+154
-12
lines changed

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
// SPDX-License-Identifier: MIT OR Apache-2.0
77
#pragma once
88

9+
#include <cstdint>
10+
911
#include <QtCore/QSet>
1012

1113
#include <QtCore/QDate>
@@ -61,14 +63,16 @@ qsetLen(const QSet<T>& s) noexcept
6163
using QSet_bool = QSet<bool>;
6264
using QSet_f32 = QSet<float>;
6365
using QSet_f64 = QSet<double>;
64-
using QSet_i8 = QSet<::qint8>;
65-
using QSet_i16 = QSet<::qint16>;
66-
using QSet_i32 = QSet<::qint32>;
66+
using QSet_i8 = QSet<::std::int8_t>;
67+
using QSet_i16 = QSet<::std::int16_t>;
68+
using QSet_i32 = QSet<::std::int32_t>;
69+
using QSet_i64 = QSet<::std::int64_t>;
6770
using QSet_QDate = QSet<::QDate>;
6871
using QSet_QDateTime = QSet<::QDateTime>;
6972
using QSet_QString = QSet<::QString>;
7073
using QSet_QTime = QSet<::QTime>;
7174
using QSet_QUrl = QSet<::QUrl>;
72-
using QSet_u8 = QSet<::quint8>;
73-
using QSet_u16 = QSet<::quint16>;
74-
using QSet_u32 = QSet<::quint32>;
75+
using QSet_u8 = QSet<::std::uint8_t>;
76+
using QSet_u16 = QSet<::std::uint16_t>;
77+
using QSet_u32 = QSet<::std::uint32_t>;
78+
using QSet_u64 = QSet<::std::uint64_t>;

crates/cxx-qt-lib/build.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ fn main() {
3434
"qset/qset_i8",
3535
"qset/qset_i16",
3636
"qset/qset_i32",
37+
"qset/qset_i64",
3738
"qset/qset_qdate",
3839
"qset/qset_qdatetime",
3940
"qset/qset_qstring",
@@ -42,6 +43,7 @@ fn main() {
4243
"qset/qset_u8",
4344
"qset/qset_u16",
4445
"qset/qset_u32",
46+
"qset/qset_u64",
4547
"qsize",
4648
"qsizef",
4749
"qstring",

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ generate_bridge_primitive "f64"
158158
generate_bridge_primitive "i8"
159159
generate_bridge_primitive "i16"
160160
generate_bridge_primitive "i32"
161+
generate_bridge_primitive "i64"
161162
generate_bridge_qt "QDate" "qdate"
162163
generate_bridge_qt "QDateTime" "qdatetime"
163164
generate_bridge_qt "QString" "qstring"
@@ -166,3 +167,4 @@ generate_bridge_qt "QUrl" "qurl"
166167
generate_bridge_primitive "u8"
167168
generate_bridge_primitive "u16"
168169
generate_bridge_primitive "u32"
170+
generate_bridge_primitive "u64"

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ mod qset_f32;
1111
mod qset_f64;
1212
mod qset_i16;
1313
mod qset_i32;
14+
mod qset_i64;
1415
mod qset_i8;
1516
mod qset_qdate;
1617
mod qset_qdatetime;
@@ -19,6 +20,7 @@ mod qset_qtime;
1920
mod qset_qurl;
2021
mod qset_u16;
2122
mod qset_u32;
23+
mod qset_u64;
2224
mod qset_u8;
2325

2426
/// The QSet class is a template class that provides a hash-table-based set.
@@ -248,6 +250,7 @@ impl_qset_element!(f64, qset_f64, "QSet_f64");
248250
impl_qset_element!(i8, qset_i8, "QSet_i8");
249251
impl_qset_element!(i16, qset_i16, "QSet_i16");
250252
impl_qset_element!(i32, qset_i32, "QSet_i32");
253+
impl_qset_element!(i64, qset_i64, "QSet_i64");
251254
impl_qset_element!(QDate, qset_qdate, "QSet_QDate");
252255
impl_qset_element!(QDateTime, qset_qdatetime, "QSet_QDateTime");
253256
impl_qset_element!(QString, qset_qstring, "QSet_QString");
@@ -256,3 +259,4 @@ impl_qset_element!(QUrl, qset_qurl, "QSet_QUrl");
256259
impl_qset_element!(u8, qset_u8, "QSet_u8");
257260
impl_qset_element!(u16, qset_u16, "QSet_u16");
258261
impl_qset_element!(u32, qset_u32, "QSet_u32");
262+
impl_qset_element!(u64, qset_u64, "QSet_u64");

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,16 @@
2424
CXX_QT_QSET_ASSERTS(bool, bool);
2525
CXX_QT_QSET_ASSERTS(float, f32);
2626
CXX_QT_QSET_ASSERTS(double, f64);
27-
CXX_QT_QSET_ASSERTS(::qint8, i8);
28-
CXX_QT_QSET_ASSERTS(::qint16, i16);
29-
CXX_QT_QSET_ASSERTS(::qint32, i32);
27+
CXX_QT_QSET_ASSERTS(::std::int8_t, i8);
28+
CXX_QT_QSET_ASSERTS(::std::int16_t, i16);
29+
CXX_QT_QSET_ASSERTS(::std::int32_t, i32);
30+
CXX_QT_QSET_ASSERTS(::std::int64_t, i64);
3031
CXX_QT_QSET_ASSERTS(::QDate, QDate);
3132
CXX_QT_QSET_ASSERTS(::QDateTime, QDateTime);
3233
CXX_QT_QSET_ASSERTS(::QString, QString);
3334
CXX_QT_QSET_ASSERTS(::QTime, QTime);
3435
CXX_QT_QSET_ASSERTS(::QUrl, QUrl);
35-
CXX_QT_QSET_ASSERTS(::quint8, u8);
36-
CXX_QT_QSET_ASSERTS(::quint16, u16);
37-
CXX_QT_QSET_ASSERTS(::quint32, u32);
36+
CXX_QT_QSET_ASSERTS(::std::uint8_t, u8);
37+
CXX_QT_QSET_ASSERTS(::std::uint16_t, u16);
38+
CXX_QT_QSET_ASSERTS(::std::uint32_t, u32);
39+
CXX_QT_QSET_ASSERTS(::std::uint64_t, u64);
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company <[email protected]>
2+
// SPDX-FileContributor: Andrew Hayzen <[email protected]>
3+
//
4+
// SPDX-License-Identifier: MIT OR Apache-2.0
5+
6+
#[cxx::bridge]
7+
pub mod ffi {
8+
unsafe extern "C++" {
9+
include!("cxx-qt-lib/qset.h");
10+
type QSet_i64 = crate::QSet<i64>;
11+
}
12+
13+
unsafe extern "C++" {
14+
#[rust_name = "cxx_clear"]
15+
fn clear(self: &mut QSet_i64);
16+
#[rust_name = "cxx_contains"]
17+
fn contains(self: &QSet_i64, _: &i64) -> bool;
18+
#[rust_name = "cxx_remove"]
19+
fn remove(self: &mut QSet_i64, _: &i64) -> bool;
20+
}
21+
22+
#[namespace = "rust::cxxqtlib1"]
23+
unsafe extern "C++" {
24+
include!("cxx-qt-lib/common.h");
25+
26+
#[rust_name = "clone_i64"]
27+
fn construct(_: &QSet_i64) -> QSet_i64;
28+
#[rust_name = "default_i64"]
29+
fn construct() -> QSet_i64;
30+
#[rust_name = "drop_i64"]
31+
fn drop(_: &mut QSet_i64);
32+
#[rust_name = "get_unchecked_i64"]
33+
#[allow(clippy::needless_lifetimes)]
34+
unsafe fn qsetGetUnchecked<'a>(set: &'a QSet_i64, pos: usize) -> &'a i64;
35+
#[rust_name = "insert_i64"]
36+
fn qsetInsert(_: &mut QSet_i64, _: &i64);
37+
#[rust_name = "len_i64"]
38+
fn qsetLen(_: &QSet_i64) -> usize;
39+
}
40+
}
41+
42+
pub(crate) fn clone(s: &ffi::QSet_i64) -> ffi::QSet_i64 {
43+
ffi::clone_i64(s)
44+
}
45+
46+
pub(crate) fn default() -> ffi::QSet_i64 {
47+
ffi::default_i64()
48+
}
49+
50+
pub(crate) fn drop(s: &mut ffi::QSet_i64) {
51+
ffi::drop_i64(s);
52+
}
53+
54+
pub(crate) unsafe fn get_unchecked(s: &ffi::QSet_i64, pos: usize) -> &i64 {
55+
ffi::get_unchecked_i64(s, pos)
56+
}
57+
58+
pub(crate) fn insert(s: &mut ffi::QSet_i64, value: &i64) {
59+
ffi::insert_i64(s, value);
60+
}
61+
62+
pub(crate) fn len(s: &ffi::QSet_i64) -> usize {
63+
ffi::len_i64(s)
64+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company <[email protected]>
2+
// SPDX-FileContributor: Andrew Hayzen <[email protected]>
3+
//
4+
// SPDX-License-Identifier: MIT OR Apache-2.0
5+
6+
#[cxx::bridge]
7+
pub mod ffi {
8+
unsafe extern "C++" {
9+
include!("cxx-qt-lib/qset.h");
10+
type QSet_u64 = crate::QSet<u64>;
11+
}
12+
13+
unsafe extern "C++" {
14+
#[rust_name = "cxx_clear"]
15+
fn clear(self: &mut QSet_u64);
16+
#[rust_name = "cxx_contains"]
17+
fn contains(self: &QSet_u64, _: &u64) -> bool;
18+
#[rust_name = "cxx_remove"]
19+
fn remove(self: &mut QSet_u64, _: &u64) -> bool;
20+
}
21+
22+
#[namespace = "rust::cxxqtlib1"]
23+
unsafe extern "C++" {
24+
include!("cxx-qt-lib/common.h");
25+
26+
#[rust_name = "clone_u64"]
27+
fn construct(_: &QSet_u64) -> QSet_u64;
28+
#[rust_name = "default_u64"]
29+
fn construct() -> QSet_u64;
30+
#[rust_name = "drop_u64"]
31+
fn drop(_: &mut QSet_u64);
32+
#[rust_name = "get_unchecked_u64"]
33+
#[allow(clippy::needless_lifetimes)]
34+
unsafe fn qsetGetUnchecked<'a>(set: &'a QSet_u64, pos: usize) -> &'a u64;
35+
#[rust_name = "insert_u64"]
36+
fn qsetInsert(_: &mut QSet_u64, _: &u64);
37+
#[rust_name = "len_u64"]
38+
fn qsetLen(_: &QSet_u64) -> usize;
39+
}
40+
}
41+
42+
pub(crate) fn clone(s: &ffi::QSet_u64) -> ffi::QSet_u64 {
43+
ffi::clone_u64(s)
44+
}
45+
46+
pub(crate) fn default() -> ffi::QSet_u64 {
47+
ffi::default_u64()
48+
}
49+
50+
pub(crate) fn drop(s: &mut ffi::QSet_u64) {
51+
ffi::drop_u64(s);
52+
}
53+
54+
pub(crate) unsafe fn get_unchecked(s: &ffi::QSet_u64, pos: usize) -> &u64 {
55+
ffi::get_unchecked_u64(s, pos)
56+
}
57+
58+
pub(crate) fn insert(s: &mut ffi::QSet_u64, value: &u64) {
59+
ffi::insert_u64(s, value);
60+
}
61+
62+
pub(crate) fn len(s: &ffi::QSet_u64) -> usize {
63+
ffi::len_u64(s)
64+
}

0 commit comments

Comments
 (0)