1#[cxx::bridge]
2pub(crate) mod ffi {
3 unsafe extern "C++" {
4 include!("vtk_object.h");
5
6 pub(crate) type vtkObject;
7
8 fn vtk_object_debug_on(vtk_object: Pin<&mut vtkObject>);
9 fn vtk_object_debug_off(vtk_object: Pin<&mut vtkObject>);
10 fn vtk_object_set_debug(object: Pin<&mut vtkObject>, status: bool);
11 fn vtk_object_get_debug(object: &vtkObject) -> bool;
12 fn vtk_object_modified(object: &vtkObject);
13 fn vtk_object_remove_observer(object: Pin<&mut vtkObject>, tag: u64);
14 fn vtk_object_remove_observers(object: Pin<&mut vtkObject>, event: u64);
15 fn vtk_object_remove_all_observers(object: Pin<&mut vtkObject>);
16 fn vtk_object_has_observer(object: &vtkObject, event: u64) -> u64;
17 }
21}
22
23pub(crate) mod private {
24 pub trait Sealed {}
25}
26
27#[allow(non_camel_case_types)]
29pub trait vtkObject: private::Sealed {
30 #[doc(hidden)]
31 fn as_vtk_object(&self) -> core::pin::Pin<&ffi::vtkObject>;
32 #[doc(hidden)]
33 fn as_vtk_object_mut(&mut self) -> core::pin::Pin<&mut ffi::vtkObject>;
34
35 #[doc(alias = "SetDebug")]
36 fn set_debug(&mut self, status: bool) {
37 ffi::vtk_object_set_debug(self.as_vtk_object_mut(), status);
38 }
39
40 #[doc(alias = "GetDebug")]
41 fn get_debug(&self) -> bool {
42 ffi::vtk_object_get_debug(&self.as_vtk_object())
43 }
44
45 #[doc(alias = "DebugOn")]
46 fn debug_on(&mut self) {
47 ffi::vtk_object_debug_on(self.as_vtk_object_mut())
48 }
49
50 #[doc(alias = "DebugOff")]
51 fn debug_off(&mut self) {
52 ffi::vtk_object_debug_off(self.as_vtk_object_mut())
53 }
54
55 #[doc(alias = "Modified")]
56 fn modified(&mut self) {
57 ffi::vtk_object_modified(&self.as_vtk_object())
58 }
59
60 #[doc(alias = "RemoveObserver")]
61 fn remove_observer(&mut self, tag: u64) {
62 ffi::vtk_object_remove_observer(self.as_vtk_object_mut(), tag)
63 }
64
65 #[doc(alias = "RemoveObservers")]
66 fn remove_observers(&mut self, event: u64) {
67 ffi::vtk_object_remove_observers(self.as_vtk_object_mut(), event)
68 }
69
70 #[doc(alias = "RemoveAllObservers")]
71 fn remove_all_observers(&mut self) {
72 ffi::vtk_object_remove_all_observers(self.as_vtk_object_mut())
73 }
74
75 #[doc(alias = "HasObserver")]
76 fn has_observer(&self, event: u64) -> u64 {
77 ffi::vtk_object_has_observer(&self.as_vtk_object(), event)
78 }
79
80 }