qtbridge_runtime/
qmlprivate.rs1#[doc(hidden)]
9#[cfg(feature = "linkme")]
10#[linkme::distributed_slice]
11pub static QML_REGISTER_CALLBACKS: [fn()];
12
13#[doc(hidden)]
14pub fn call_qml_register_callbacks() {
15 #[cfg(feature = "linkme")]
16 {
17 use std::sync::Once;
18 static INIT_ONCE: Once = Once::new();
19 INIT_ONCE.call_once(|| {
20 for reg_fn in QML_REGISTER_CALLBACKS {
21 reg_fn();
22 }
23 });
24 }
25}
26
27#[cxx::bridge]
28mod ffi {
29 unsafe extern "C++" {
30 include!("qtbridge-type-lib/src/core/qmetaobject/cpp/qmetaobject.h");
31 type QMetaObject = qtbridge_type_lib::QMetaObject;
32 include!("qtbridge-type-lib/src/core/qmetatype/cpp/qmetatype.h");
33 type QMetaType = qtbridge_type_lib::QMetaType;
34
35 include!("cpp/qmlprivate.h");
36 }
37 #[allow(clippy::too_many_arguments)]
38 #[namespace = "rust::bridge::qmlprivate"]
39 unsafe extern "C++" {
40 fn qml_register_element(
43 type_id: QMetaType,
44 list_id: QMetaType,
45 object_size: u32,
46 parser_status_cast: i32,
47 create_fn: usize,
48 uri: &[u8],
49 version_major: u8,
50 version_minor: u8,
51 elm_name: &[u8],
52 meta_object: &'static QMetaObject,
53 );
54 fn qml_register_singleton(
55 type_id: QMetaType,
56 create_fn: usize,
57 uri: &[u8],
58 version_major: u8,
59 version_minor: u8,
60 elm_name: &[u8],
61 meta_object: &'static QMetaObject,
62 );
63 }
64}
65
66#[doc(hidden)]
67pub use ffi::{qml_register_element, qml_register_singleton};