vtk_rs/
vtk_data_object.rs

1#[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    // @clone ffi::data_object_clone,
20    @delete ffi::vtk_data_object_delete,
21    @inherit vtkDataObject
22);
23
24pub(crate) mod private {
25    pub trait Sealed {}
26}
27
28/// [`vtkDataObject`](https://vtk.org/doc/nightly/html/classvtkDataObject.html)
29#[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}