qtbridge_interfaces/qobject/
proxy_rust_bridge.rs

1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only
3
4use super::proxy_rust::QObjectProxyRust;
5#[cxx::bridge]
6pub mod ffi {
7    unsafe extern "C++" {
8        include!("qtbridge-type-lib/src/generated/core/qvariant/cpp/qvariant.h");
9        type QVariant = qtbridge_type_lib::QVariant;
10    }
11
12    extern "Rust" {
13        type QObjectProxyRust;
14        # [Self = QObjectProxyRust]
15        # [cxx_name = dropSelf]
16        unsafe fn drop_self(self_ptr: *mut QObjectProxyRust);
17
18        # [cxx_name = invokeSlot]
19        fn invoke_slot(&self, slot_id: u32, args: &[*const u8], outputs: &[*mut u8]);
20        # [cxx_name = invokeSlotMut]
21        fn invoke_slot_mut(&mut self, slot_id: u32, args: &[*const u8], outputs: &[*mut u8]);
22        # [cxx_name = readProperty]
23        fn read_property(&self, prop_id: u32) -> QVariant;
24        # [cxx_name = writeProperty]
25        fn write_property(&mut self, prop_id: u32, value: &QVariant);
26    }
27}
28unsafe impl cxx::ExternType for QObjectProxyRust {
29    type Id = cxx::type_id!(QObjectProxyRust);
30    type Kind = cxx::kind::Trivial;
31}