cxx_qt_lib/core/qhash/
qhash_qstring_qvariant.rs

1// SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
2// SPDX-FileContributor: Andrew Hayzen <andrew.hayzen@kdab.com>
3//
4// SPDX-License-Identifier: MIT OR Apache-2.0
5
6use cxx::{type_id, ExternType};
7
8#[cxx::bridge]
9pub mod ffi {
10    unsafe extern "C++" {
11        include!("cxx-qt-lib/qstring.h");
12        type QString = crate::QString;
13        include!("cxx-qt-lib/qvariant.h");
14        type QVariant = crate::QVariant;
15
16        include!("cxx-qt-lib/qhash.h");
17        type QHash_QString_QVariant = crate::QHash<super::QHashPair_QString_QVariant>;
18    }
19
20    unsafe extern "C++" {
21        #[rust_name = "cxx_clear"]
22        fn clear(self: &mut QHash_QString_QVariant);
23        #[rust_name = "cxx_contains"]
24        fn contains(self: &QHash_QString_QVariant, key: &QString) -> bool;
25    }
26
27    #[namespace = "rust::cxxqtlib1"]
28    unsafe extern "C++" {
29        include!("cxx-qt-lib/common.h");
30
31        #[rust_name = "qhash_clone_QString_QVariant"]
32        fn construct(_: &QHash_QString_QVariant) -> QHash_QString_QVariant;
33        #[rust_name = "qhash_default_QString_QVariant"]
34        fn construct() -> QHash_QString_QVariant;
35        #[rust_name = "qhash_drop_QString_QVariant"]
36        fn drop(_: &mut QHash_QString_QVariant);
37    }
38
39    #[namespace = "rust::cxxqtlib1::qhash"]
40    unsafe extern "C++" {
41        #[rust_name = "get_or_default_QString_QVariant"]
42        fn qhashGetOrDefault(_: &QHash_QString_QVariant, key: &QString) -> QVariant;
43        #[rust_name = "get_unchecked_key_QString_QVariant"]
44        unsafe fn qhashGetUncheckedKey(_: &QHash_QString_QVariant, pos: isize) -> &QString;
45        #[rust_name = "get_unchecked_value_QString_QVariant"]
46        unsafe fn qhashGetUncheckedValue(_: &QHash_QString_QVariant, pos: isize) -> &QVariant;
47        #[rust_name = "insert_QString_QVariant"]
48        fn qhashInsert(_: &mut QHash_QString_QVariant, key: &QString, value: &QVariant);
49        #[rust_name = "len_QString_QVariant"]
50        fn qhashLen(_: &QHash_QString_QVariant) -> isize;
51        #[rust_name = "remove_QString_QVariant"]
52        fn qhashRemove(_: &mut QHash_QString_QVariant, key: &QString) -> bool;
53    }
54}
55
56pub(crate) fn clone(hash: &ffi::QHash_QString_QVariant) -> ffi::QHash_QString_QVariant {
57    ffi::qhash_clone_QString_QVariant(hash)
58}
59
60pub(crate) fn default() -> ffi::QHash_QString_QVariant {
61    ffi::qhash_default_QString_QVariant()
62}
63
64pub(crate) fn drop(hash: &mut ffi::QHash_QString_QVariant) {
65    ffi::qhash_drop_QString_QVariant(hash);
66}
67
68pub(crate) fn get_or_default(
69    hash: &ffi::QHash_QString_QVariant,
70    key: &ffi::QString,
71) -> ffi::QVariant {
72    ffi::get_or_default_QString_QVariant(hash, key)
73}
74
75pub(crate) unsafe fn get_unchecked_key(
76    hash: &ffi::QHash_QString_QVariant,
77    pos: isize,
78) -> &ffi::QString {
79    ffi::get_unchecked_key_QString_QVariant(hash, pos)
80}
81
82pub(crate) unsafe fn get_unchecked_value(
83    hash: &ffi::QHash_QString_QVariant,
84    pos: isize,
85) -> &ffi::QVariant {
86    ffi::get_unchecked_value_QString_QVariant(hash, pos)
87}
88
89pub(crate) fn insert(
90    hash: &mut ffi::QHash_QString_QVariant,
91    key: &ffi::QString,
92    value: &ffi::QVariant,
93) {
94    ffi::insert_QString_QVariant(hash, key, value);
95}
96
97pub(crate) fn len(hash: &ffi::QHash_QString_QVariant) -> isize {
98    ffi::len_QString_QVariant(hash)
99}
100
101pub(crate) fn remove(hash: &mut ffi::QHash_QString_QVariant, key: &ffi::QString) -> bool {
102    ffi::remove_QString_QVariant(hash, key)
103}
104
105#[allow(non_camel_case_types)]
106pub struct QHashPair_QString_QVariant;
107
108unsafe impl ExternType for QHashPair_QString_QVariant {
109    type Id = type_id!("QHashPair_QString_QVariant");
110    type Kind = cxx::kind::Trivial;
111}