vtk_rs/
vtk_poly_data_algorithm.rs

1#[cxx::bridge]
2pub(crate) mod ffi {
3    unsafe extern "C++" {
4        include!("vtk_poly_data_algorithm.h");
5
6        pub(crate) type vtkPolyDataAlgorithm;
7        pub(crate) type vtkDataObject;
8        pub(crate) type vtkPolyData;
9
10        fn vtk_poly_data_algorithm_new() -> *mut vtkPolyDataAlgorithm;
11        fn vtk_poly_data_algorithm_delete(poly_data_algorithm: Pin<&mut vtkPolyDataAlgorithm>);
12        fn vtk_poly_data_algorithm_get_input(
13            vtk_poly_data_algorithm: &vtkPolyDataAlgorithm,
14            port: i64,
15        ) -> &vtkDataObject;
16        fn vtk_poly_data_algorithm_get_poly_data_input(
17            vtk_poly_data_algorithm: &vtkPolyDataAlgorithm,
18            port: i64,
19        ) -> &vtkPolyData;
20        fn vtk_poly_data_algorithm_get_output(
21            vtk_poly_data_algorithm: &vtkPolyDataAlgorithm,
22            port: i64,
23        ) -> &vtkPolyData;
24        fn vtk_poly_data_algorithm_set_output(
25            vtk_poly_data_algorithm: Pin<&mut vtkPolyDataAlgorithm>,
26            data_object: &vtkDataObject,
27        );
28        fn vtk_poly_data_algorithm_set_input_data(
29            poly_data_algorithm: Pin<&mut vtkPolyDataAlgorithm>,
30            port: i64,
31            data_object: &vtkDataObject,
32        );
33        fn vtk_poly_data_algorithm_add_input_data(
34            poly_data_algorithm: Pin<&mut vtkPolyDataAlgorithm>,
35            port: i64,
36            data_object: &vtkDataObject,
37        );
38    }
39}
40
41pub(crate) mod private {
42    pub trait Sealed {}
43}
44
45crate::define_object!(
46    "https://vtk.org/doc/nightly/html/classvtkPolyDataAlgorithm.html",
47    @name PolyDataAlgorithm, ffi::vtkPolyDataAlgorithm,
48    @new ffi::vtk_poly_data_algorithm_new,
49    // @clone ffi::data_object_clone,
50    @delete ffi::vtk_poly_data_algorithm_delete,
51    @inherit vtkPolyDataAlgorithm
52);
53
54/// [`vtkPolyDataAlgorithm`](https://vtk.org/doc/nightly/html/classvtkPolyDataAlgorithm.html)
55#[allow(non_camel_case_types)]
56pub trait vtkPolyDataAlgorithm: private::Sealed {
57    #[doc(hidden)]
58    fn as_vtk_poly_data_algorithm(&self) -> core::pin::Pin<&ffi::vtkPolyDataAlgorithm>;
59    #[doc(hidden)]
60    fn as_vtk_poly_data_algorithm_mut(&mut self) -> core::pin::Pin<&mut ffi::vtkPolyDataAlgorithm>;
61
62    // fn process_request(
63    //      &self,
64    //      information: &crate::Information,
65    //      i1: &crate::InformationVector,
66    //      i2: &crate::InformationVector
67    // ) -> bool;
68
69    fn get_input(&self, port: i64) -> Option<&crate::DataObject> {
70        let sself = self.as_vtk_poly_data_algorithm();
71        let raw_ref = ffi::vtk_poly_data_algorithm_get_input(&sself, port);
72        let raw_ptr = raw_ref as *const _ as *const crate::vtk_data_object::DataObject;
73        unsafe { raw_ptr.as_ref() }
74    }
75
76    fn vtk_poly_data_algorithm_get_poly_data_input(&self, port: i64) -> Option<&crate::PolyData> {
77        let sself = self.as_vtk_poly_data_algorithm();
78        let raw_ref = ffi::vtk_poly_data_algorithm_get_poly_data_input(&sself, port);
79        let raw_ptr = raw_ref as *const _ as *const crate::vtk_poly_data::PolyData;
80        unsafe { raw_ptr.as_ref() }
81    }
82
83    fn get_poly_data_input(&self, port: i64) -> Option<&crate::vtk_poly_data::PolyData> {
84        let sself = self.as_vtk_poly_data_algorithm();
85        let raw_ref = ffi::vtk_poly_data_algorithm_get_poly_data_input(&sself, port);
86        let raw_ptr = raw_ref as *const _ as *const crate::PolyData;
87        unsafe { raw_ptr.as_ref() }
88    }
89
90    fn set_output(&mut self, data_object: &impl crate::vtkDataObject) {
91        let dobject = &data_object.as_vtk_data_object() as *const _ as *const ffi::vtkDataObject;
92        ffi::vtk_poly_data_algorithm_set_output(self.as_vtk_poly_data_algorithm_mut(), unsafe {
93            &*dobject
94        });
95    }
96
97    fn set_input_data(&mut self, port: i64, data_object: &impl crate::vtkDataObject) {
98        let dobject = &data_object.as_vtk_data_object() as *const _ as *const ffi::vtkDataObject;
99        ffi::vtk_poly_data_algorithm_set_input_data(
100            self.as_vtk_poly_data_algorithm_mut(),
101            port,
102            unsafe { &*dobject },
103        );
104    }
105
106    fn add_input_data(&mut self, port: i64, data_object: &impl crate::vtkDataObject) {
107        let dobject = &data_object.as_vtk_data_object() as *const _ as *const ffi::vtkDataObject;
108        ffi::vtk_poly_data_algorithm_add_input_data(
109            self.as_vtk_poly_data_algorithm_mut(),
110            port,
111            unsafe { &*dobject },
112        );
113    }
114
115    fn get_output(&self, port: i64) -> Option<&crate::PolyData> {
116        let sself = self.as_vtk_poly_data_algorithm();
117        let raw_ref = ffi::vtk_poly_data_algorithm_get_output(&sself, port);
118        let raw_ptr = raw_ref as *const _ as *const crate::PolyData;
119        unsafe { raw_ptr.as_ref() }
120    }
121}