vtk_rs/
vtk_data_object.rs1#[cxx::bridge]
2pub(crate) mod ffi {
3 unsafe extern "C++" {
4 include!("vtk_data_object.h");
5
6 pub type vtkDataObject;
7
8 fn vtk_data_object_new() -> *mut vtkDataObject;
9 fn vtk_data_object_delete(data_object: Pin<&mut vtkDataObject>);
10 fn vtk_data_object_initialize(data_object: Pin<&mut vtkDataObject>);
11 fn vtk_data_object_release_data(data_object: Pin<&mut vtkDataObject>);
12 }
13}
14
15crate::define_object!(
16 "https://vtk.org/doc/nightly/html/classvtkNamedColors.html",
17 @name DataObject, ffi::vtkDataObject,
18 @new ffi::vtk_data_object_new,
19 @delete ffi::vtk_data_object_delete,
21 @inherit vtkDataObject
22);
23
24pub(crate) mod private {
25 pub trait Sealed {}
26}
27
28#[allow(non_camel_case_types)]
30pub trait vtkDataObject: private::Sealed {
31 #[doc(hidden)]
32 fn as_vtk_data_object(&self) -> core::pin::Pin<&ffi::vtkDataObject>;
33 #[doc(hidden)]
34 fn as_vtk_data_object_mut(&mut self) -> core::pin::Pin<&mut ffi::vtkDataObject>;
35
36 fn initialize(&mut self) {
37 ffi::vtk_data_object_initialize(self.as_vtk_data_object_mut())
38 }
39
40 fn release_data(&mut self) {
41 ffi::vtk_data_object_release_data(self.as_vtk_data_object_mut())
42 }
43}