vtk_rs/
vtkCommonExecutionModel.rs

1/// Aggregate results in the vtkEndFor
2///
3///
4/// vtkAggregateToPartitionedDataSetCollection is an execution aggregator for the
5/// `vtkEndFor` filter that insert each iteration result in a partition of a
6/// vtkPartitionnedDataSetCollection.
7///
8/// @sa vtkEndFor, vtkForEach, vtkExecutionAggregator
9#[allow(non_camel_case_types)]
10pub struct vtkAggregateToPartitionedDataSetCollection(*mut core::ffi::c_void);
11impl vtkAggregateToPartitionedDataSetCollection {
12    /// Creates a new [vtkAggregateToPartitionedDataSetCollection] wrapped inside `vtkNew`
13    #[doc(alias = "vtkAggregateToPartitionedDataSetCollection")]
14    pub fn new() -> Self {
15        unsafe extern "C" {
16            fn vtkAggregateToPartitionedDataSetCollection_new() -> *mut core::ffi::c_void;
17        }
18        Self(unsafe { &mut *vtkAggregateToPartitionedDataSetCollection_new() })
19    }
20    #[cfg(test)]
21    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
22        unsafe extern "C" {
23            fn vtkAggregateToPartitionedDataSetCollection_get_ptr(
24                sself: *mut core::ffi::c_void,
25            ) -> *mut core::ffi::c_void;
26        }
27        unsafe { vtkAggregateToPartitionedDataSetCollection_get_ptr(self.0) }
28    }
29}
30impl std::default::Default for vtkAggregateToPartitionedDataSetCollection {
31    fn default() -> Self {
32        Self::new()
33    }
34}
35impl Drop for vtkAggregateToPartitionedDataSetCollection {
36    fn drop(&mut self) {
37        unsafe extern "C" {
38            fn vtkAggregateToPartitionedDataSetCollection_destructor(
39                sself: *mut core::ffi::c_void,
40            );
41        }
42        unsafe { vtkAggregateToPartitionedDataSetCollection_destructor(self.0) }
43        self.0 = core::ptr::null_mut();
44    }
45}
46#[test]
47fn test_vtkAggregateToPartitionedDataSetCollection_create_drop() {
48    let obj = vtkAggregateToPartitionedDataSetCollection::new();
49    let ptr = obj.0;
50    assert!(!ptr.is_null());
51    assert!(unsafe { !obj._get_ptr().is_null() });
52    drop(obj);
53    let new_obj = vtkAggregateToPartitionedDataSetCollection(ptr);
54    assert!(unsafe { new_obj._get_ptr().is_null() });
55}
56/// Superclass for all sources, filters, and sinks in VTK.
57///
58///
59/// vtkAlgorithm is the superclass for all sources, filters, and sinks
60/// in VTK.  It defines a generalized interface for executing data
61/// processing algorithms.  Pipeline connections are associated with
62/// input and output ports that are independent of the type of data
63/// passing through the connections.
64///
65/// Instances may be used independently or within pipelines with a
66/// variety of architectures and update mechanisms.  Pipelines are
67/// controlled by instances of vtkExecutive.  Every vtkAlgorithm
68/// instance has an associated vtkExecutive when it is used in a
69/// pipeline.  The executive is responsible for data flow.
70#[allow(non_camel_case_types)]
71pub struct vtkAlgorithm(*mut core::ffi::c_void);
72impl vtkAlgorithm {
73    /// Creates a new [vtkAlgorithm] wrapped inside `vtkNew`
74    #[doc(alias = "vtkAlgorithm")]
75    pub fn new() -> Self {
76        unsafe extern "C" {
77            fn vtkAlgorithm_new() -> *mut core::ffi::c_void;
78        }
79        Self(unsafe { &mut *vtkAlgorithm_new() })
80    }
81    #[cfg(test)]
82    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
83        unsafe extern "C" {
84            fn vtkAlgorithm_get_ptr(
85                sself: *mut core::ffi::c_void,
86            ) -> *mut core::ffi::c_void;
87        }
88        unsafe { vtkAlgorithm_get_ptr(self.0) }
89    }
90}
91impl std::default::Default for vtkAlgorithm {
92    fn default() -> Self {
93        Self::new()
94    }
95}
96impl Drop for vtkAlgorithm {
97    fn drop(&mut self) {
98        unsafe extern "C" {
99            fn vtkAlgorithm_destructor(sself: *mut core::ffi::c_void);
100        }
101        unsafe { vtkAlgorithm_destructor(self.0) }
102        self.0 = core::ptr::null_mut();
103    }
104}
105#[test]
106fn test_vtkAlgorithm_create_drop() {
107    let obj = vtkAlgorithm::new();
108    let ptr = obj.0;
109    assert!(!ptr.is_null());
110    assert!(unsafe { !obj._get_ptr().is_null() });
111    drop(obj);
112    let new_obj = vtkAlgorithm(ptr);
113    assert!(unsafe { new_obj._get_ptr().is_null() });
114}
115/// Proxy object to connect input/output ports.
116///
117///
118/// vtkAlgorithmOutput is a proxy object returned by the GetOutputPort
119/// method of vtkAlgorithm.  It may be passed to the
120/// SetInputConnection, AddInputConnection, or RemoveInputConnection
121/// methods of another vtkAlgorithm to establish a connection between
122/// an output and input port.  The connection is not stored in the
123/// proxy object: it is simply a convenience for creating or removing
124/// connections.
125#[allow(non_camel_case_types)]
126pub struct vtkAlgorithmOutput(*mut core::ffi::c_void);
127impl vtkAlgorithmOutput {
128    /// Creates a new [vtkAlgorithmOutput] wrapped inside `vtkNew`
129    #[doc(alias = "vtkAlgorithmOutput")]
130    pub fn new() -> Self {
131        unsafe extern "C" {
132            fn vtkAlgorithmOutput_new() -> *mut core::ffi::c_void;
133        }
134        Self(unsafe { &mut *vtkAlgorithmOutput_new() })
135    }
136    #[cfg(test)]
137    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
138        unsafe extern "C" {
139            fn vtkAlgorithmOutput_get_ptr(
140                sself: *mut core::ffi::c_void,
141            ) -> *mut core::ffi::c_void;
142        }
143        unsafe { vtkAlgorithmOutput_get_ptr(self.0) }
144    }
145}
146impl std::default::Default for vtkAlgorithmOutput {
147    fn default() -> Self {
148        Self::new()
149    }
150}
151impl Drop for vtkAlgorithmOutput {
152    fn drop(&mut self) {
153        unsafe extern "C" {
154            fn vtkAlgorithmOutput_destructor(sself: *mut core::ffi::c_void);
155        }
156        unsafe { vtkAlgorithmOutput_destructor(self.0) }
157        self.0 = core::ptr::null_mut();
158    }
159}
160#[test]
161fn test_vtkAlgorithmOutput_create_drop() {
162    let obj = vtkAlgorithmOutput::new();
163    let ptr = obj.0;
164    assert!(!ptr.is_null());
165    assert!(unsafe { !obj._get_ptr().is_null() });
166    drop(obj);
167    let new_obj = vtkAlgorithmOutput(ptr);
168    assert!(unsafe { new_obj._get_ptr().is_null() });
169}
170/// Superclass for algorithms that produce only vtkAnnotationLayers as output
171///
172///
173///
174/// vtkAnnotationLayersAlgorithm is a convenience class to make writing algorithms
175/// easier. It is also designed to help transition old algorithms to the new
176/// pipeline architecture. There are some assumptions and defaults made by this
177/// class you should be aware of. This class defaults such that your filter
178/// will have one input port and one output port. If that is not the case
179/// simply change it with SetNumberOfInputPorts etc. See this class
180/// constructor for the default. This class also provides a FillInputPortInfo
181/// method that by default says that all inputs will be vtkAnnotationLayers. If that
182/// isn't the case then please override this method in your subclass.
183/// You should implement the subclass's algorithm into
184/// RequestData( request, inputVec, outputVec).
185#[allow(non_camel_case_types)]
186pub struct vtkAnnotationLayersAlgorithm(*mut core::ffi::c_void);
187impl vtkAnnotationLayersAlgorithm {
188    /// Creates a new [vtkAnnotationLayersAlgorithm] wrapped inside `vtkNew`
189    #[doc(alias = "vtkAnnotationLayersAlgorithm")]
190    pub fn new() -> Self {
191        unsafe extern "C" {
192            fn vtkAnnotationLayersAlgorithm_new() -> *mut core::ffi::c_void;
193        }
194        Self(unsafe { &mut *vtkAnnotationLayersAlgorithm_new() })
195    }
196    #[cfg(test)]
197    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
198        unsafe extern "C" {
199            fn vtkAnnotationLayersAlgorithm_get_ptr(
200                sself: *mut core::ffi::c_void,
201            ) -> *mut core::ffi::c_void;
202        }
203        unsafe { vtkAnnotationLayersAlgorithm_get_ptr(self.0) }
204    }
205}
206impl std::default::Default for vtkAnnotationLayersAlgorithm {
207    fn default() -> Self {
208        Self::new()
209    }
210}
211impl Drop for vtkAnnotationLayersAlgorithm {
212    fn drop(&mut self) {
213        unsafe extern "C" {
214            fn vtkAnnotationLayersAlgorithm_destructor(sself: *mut core::ffi::c_void);
215        }
216        unsafe { vtkAnnotationLayersAlgorithm_destructor(self.0) }
217        self.0 = core::ptr::null_mut();
218    }
219}
220#[test]
221fn test_vtkAnnotationLayersAlgorithm_create_drop() {
222    let obj = vtkAnnotationLayersAlgorithm::new();
223    let ptr = obj.0;
224    assert!(!ptr.is_null());
225    assert!(unsafe { !obj._get_ptr().is_null() });
226    drop(obj);
227    let new_obj = vtkAnnotationLayersAlgorithm(ptr);
228    assert!(unsafe { new_obj._get_ptr().is_null() });
229}
230/// Superclass for algorithms that produce
231///
232/// vtkArrayDatas as output
233///
234///
235/// vtkArrayDataAlgorithm is a convenience class to make writing algorithms
236/// easier. It is also designed to help transition old algorithms to the new
237/// pipeline architecture. There are some assumptions and defaults made by this
238/// class you should be aware of. This class defaults such that your filter
239/// will have one input port and one output port. If that is not the case
240/// simply change it with SetNumberOfInputPorts etc. See this class
241/// constructor for the default. This class also provides a FillInputPortInfo
242/// method that by default says that all inputs will be vtkArrayData. If that
243/// isn't the case then please override this method in your subclass.
244///
245/// @par Thanks:
246/// Developed by Timothy M. Shead (tshead@sandia.gov) at Sandia National Laboratories.
247#[allow(non_camel_case_types)]
248pub struct vtkArrayDataAlgorithm(*mut core::ffi::c_void);
249impl vtkArrayDataAlgorithm {
250    /// Creates a new [vtkArrayDataAlgorithm] wrapped inside `vtkNew`
251    #[doc(alias = "vtkArrayDataAlgorithm")]
252    pub fn new() -> Self {
253        unsafe extern "C" {
254            fn vtkArrayDataAlgorithm_new() -> *mut core::ffi::c_void;
255        }
256        Self(unsafe { &mut *vtkArrayDataAlgorithm_new() })
257    }
258    #[cfg(test)]
259    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
260        unsafe extern "C" {
261            fn vtkArrayDataAlgorithm_get_ptr(
262                sself: *mut core::ffi::c_void,
263            ) -> *mut core::ffi::c_void;
264        }
265        unsafe { vtkArrayDataAlgorithm_get_ptr(self.0) }
266    }
267}
268impl std::default::Default for vtkArrayDataAlgorithm {
269    fn default() -> Self {
270        Self::new()
271    }
272}
273impl Drop for vtkArrayDataAlgorithm {
274    fn drop(&mut self) {
275        unsafe extern "C" {
276            fn vtkArrayDataAlgorithm_destructor(sself: *mut core::ffi::c_void);
277        }
278        unsafe { vtkArrayDataAlgorithm_destructor(self.0) }
279        self.0 = core::ptr::null_mut();
280    }
281}
282#[test]
283fn test_vtkArrayDataAlgorithm_create_drop() {
284    let obj = vtkArrayDataAlgorithm::new();
285    let ptr = obj.0;
286    assert!(!ptr.is_null());
287    assert!(unsafe { !obj._get_ptr().is_null() });
288    drop(obj);
289    let new_obj = vtkArrayDataAlgorithm(ptr);
290    assert!(unsafe { new_obj._get_ptr().is_null() });
291}
292///
293/// vtkCachedStreamingDemandDrivenPipeline
294#[allow(non_camel_case_types)]
295pub struct vtkCachedStreamingDemandDrivenPipeline(*mut core::ffi::c_void);
296impl vtkCachedStreamingDemandDrivenPipeline {
297    /// Creates a new [vtkCachedStreamingDemandDrivenPipeline] wrapped inside `vtkNew`
298    #[doc(alias = "vtkCachedStreamingDemandDrivenPipeline")]
299    pub fn new() -> Self {
300        unsafe extern "C" {
301            fn vtkCachedStreamingDemandDrivenPipeline_new() -> *mut core::ffi::c_void;
302        }
303        Self(unsafe { &mut *vtkCachedStreamingDemandDrivenPipeline_new() })
304    }
305    #[cfg(test)]
306    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
307        unsafe extern "C" {
308            fn vtkCachedStreamingDemandDrivenPipeline_get_ptr(
309                sself: *mut core::ffi::c_void,
310            ) -> *mut core::ffi::c_void;
311        }
312        unsafe { vtkCachedStreamingDemandDrivenPipeline_get_ptr(self.0) }
313    }
314}
315impl std::default::Default for vtkCachedStreamingDemandDrivenPipeline {
316    fn default() -> Self {
317        Self::new()
318    }
319}
320impl Drop for vtkCachedStreamingDemandDrivenPipeline {
321    fn drop(&mut self) {
322        unsafe extern "C" {
323            fn vtkCachedStreamingDemandDrivenPipeline_destructor(
324                sself: *mut core::ffi::c_void,
325            );
326        }
327        unsafe { vtkCachedStreamingDemandDrivenPipeline_destructor(self.0) }
328        self.0 = core::ptr::null_mut();
329    }
330}
331#[test]
332fn test_vtkCachedStreamingDemandDrivenPipeline_create_drop() {
333    let obj = vtkCachedStreamingDemandDrivenPipeline::new();
334    let ptr = obj.0;
335    assert!(!ptr.is_null());
336    assert!(unsafe { !obj._get_ptr().is_null() });
337    drop(obj);
338    let new_obj = vtkCachedStreamingDemandDrivenPipeline(ptr);
339    assert!(unsafe { new_obj._get_ptr().is_null() });
340}
341/// works around type-checking limitations
342///
343///
344/// vtkCastToConcrete is a filter that works around type-checking limitations
345/// in the filter classes. Some filters generate abstract types on output,
346/// and cannot be connected to the input of filters requiring a concrete
347/// input type. For example, vtkElevationFilter generates vtkDataSet for output,
348/// and cannot be connected to vtkDecimate, because vtkDecimate requires
349/// vtkPolyData as input. This is true even though (in this example) the input
350/// to vtkElevationFilter is of type vtkPolyData, and you know the output of
351/// vtkElevationFilter is the same type as its input.
352///
353/// vtkCastToConcrete performs run-time checking to ensure that output type
354/// is of the right type. An error message will result if you try to cast
355/// an input type improperly. Otherwise, the filter performs the appropriate
356/// cast and returns the data.
357///
358/// @warning
359/// You must specify the input before you can get the output. Otherwise an
360/// error results.
361///
362/// @sa
363/// vtkDataSetAlgorithm vtkPointSetToPointSetFilter
364#[allow(non_camel_case_types)]
365pub struct vtkCastToConcrete(*mut core::ffi::c_void);
366impl vtkCastToConcrete {
367    /// Creates a new [vtkCastToConcrete] wrapped inside `vtkNew`
368    #[doc(alias = "vtkCastToConcrete")]
369    pub fn new() -> Self {
370        unsafe extern "C" {
371            fn vtkCastToConcrete_new() -> *mut core::ffi::c_void;
372        }
373        Self(unsafe { &mut *vtkCastToConcrete_new() })
374    }
375    #[cfg(test)]
376    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
377        unsafe extern "C" {
378            fn vtkCastToConcrete_get_ptr(
379                sself: *mut core::ffi::c_void,
380            ) -> *mut core::ffi::c_void;
381        }
382        unsafe { vtkCastToConcrete_get_ptr(self.0) }
383    }
384}
385impl std::default::Default for vtkCastToConcrete {
386    fn default() -> Self {
387        Self::new()
388    }
389}
390impl Drop for vtkCastToConcrete {
391    fn drop(&mut self) {
392        unsafe extern "C" {
393            fn vtkCastToConcrete_destructor(sself: *mut core::ffi::c_void);
394        }
395        unsafe { vtkCastToConcrete_destructor(self.0) }
396        self.0 = core::ptr::null_mut();
397    }
398}
399#[test]
400fn test_vtkCastToConcrete_create_drop() {
401    let obj = vtkCastToConcrete::new();
402    let ptr = obj.0;
403    assert!(!ptr.is_null());
404    assert!(unsafe { !obj._get_ptr().is_null() });
405    drop(obj);
406    let new_obj = vtkCastToConcrete(ptr);
407    assert!(unsafe { new_obj._get_ptr().is_null() });
408}
409/// Superclass for algorithms that produce only polydata as output
410///
411///
412///
413/// vtkCellGridAlgorithm is a convenience class to make writing algorithms
414/// easier. It is also designed to help transition old algorithms to the new
415/// pipeline architecture. There are some assumptions and defaults made by this
416/// class you should be aware of. This class defaults such that your filter
417/// will have one input port and one output port. If that is not the case
418/// simply change it with SetNumberOfInputPorts etc. See this class
419/// constructor for the default. This class also provides a FillInputPortInfo
420/// method that by default says that all inputs will be PolyData. If that
421/// isn't the case then please override this method in your subclass.
422#[allow(non_camel_case_types)]
423pub struct vtkCellGridAlgorithm(*mut core::ffi::c_void);
424impl vtkCellGridAlgorithm {
425    /// Creates a new [vtkCellGridAlgorithm] wrapped inside `vtkNew`
426    #[doc(alias = "vtkCellGridAlgorithm")]
427    pub fn new() -> Self {
428        unsafe extern "C" {
429            fn vtkCellGridAlgorithm_new() -> *mut core::ffi::c_void;
430        }
431        Self(unsafe { &mut *vtkCellGridAlgorithm_new() })
432    }
433    #[cfg(test)]
434    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
435        unsafe extern "C" {
436            fn vtkCellGridAlgorithm_get_ptr(
437                sself: *mut core::ffi::c_void,
438            ) -> *mut core::ffi::c_void;
439        }
440        unsafe { vtkCellGridAlgorithm_get_ptr(self.0) }
441    }
442}
443impl std::default::Default for vtkCellGridAlgorithm {
444    fn default() -> Self {
445        Self::new()
446    }
447}
448impl Drop for vtkCellGridAlgorithm {
449    fn drop(&mut self) {
450        unsafe extern "C" {
451            fn vtkCellGridAlgorithm_destructor(sself: *mut core::ffi::c_void);
452        }
453        unsafe { vtkCellGridAlgorithm_destructor(self.0) }
454        self.0 = core::ptr::null_mut();
455    }
456}
457#[test]
458fn test_vtkCellGridAlgorithm_create_drop() {
459    let obj = vtkCellGridAlgorithm::new();
460    let ptr = obj.0;
461    assert!(!ptr.is_null());
462    assert!(unsafe { !obj._get_ptr().is_null() });
463    drop(obj);
464    let new_obj = vtkCellGridAlgorithm(ptr);
465    assert!(unsafe { new_obj._get_ptr().is_null() });
466}
467/// Executive supporting composite datasets.
468///
469///
470/// vtkCompositeDataPipeline is an executive that supports the processing of
471/// composite dataset. It supports algorithms that are aware of composite
472/// dataset as well as those that are not. Type checking is performed at run
473/// time. Algorithms that are not composite dataset-aware have to support
474/// all dataset types contained in the composite dataset. The pipeline
475/// execution can be summarized as follows:
476///
477/// * REQUEST_INFORMATION: The producers have to provide information about
478/// the contents of the composite dataset in this pass.
479/// Sources that can produce more than one piece (note that a piece is
480/// different than a block; each piece consists of 0 or more blocks) should
481/// set CAN_HANDLE_PIECE_REQUEST.
482///
483/// * REQUEST_UPDATE_EXTENT: This pass is identical to the one implemented
484/// in vtkStreamingDemandDrivenPipeline
485///
486/// * REQUEST_DATA: This is where the algorithms execute. If the
487/// vtkCompositeDataPipeline is assigned to a simple filter,
488/// it will invoke the  vtkStreamingDemandDrivenPipeline passes in a loop,
489/// passing a different block each time and will collect the results in a
490/// composite dataset.
491/// @sa
492/// vtkCompositeDataSet
493#[allow(non_camel_case_types)]
494pub struct vtkCompositeDataPipeline(*mut core::ffi::c_void);
495impl vtkCompositeDataPipeline {
496    /// Creates a new [vtkCompositeDataPipeline] wrapped inside `vtkNew`
497    #[doc(alias = "vtkCompositeDataPipeline")]
498    pub fn new() -> Self {
499        unsafe extern "C" {
500            fn vtkCompositeDataPipeline_new() -> *mut core::ffi::c_void;
501        }
502        Self(unsafe { &mut *vtkCompositeDataPipeline_new() })
503    }
504    #[cfg(test)]
505    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
506        unsafe extern "C" {
507            fn vtkCompositeDataPipeline_get_ptr(
508                sself: *mut core::ffi::c_void,
509            ) -> *mut core::ffi::c_void;
510        }
511        unsafe { vtkCompositeDataPipeline_get_ptr(self.0) }
512    }
513}
514impl std::default::Default for vtkCompositeDataPipeline {
515    fn default() -> Self {
516        Self::new()
517    }
518}
519impl Drop for vtkCompositeDataPipeline {
520    fn drop(&mut self) {
521        unsafe extern "C" {
522            fn vtkCompositeDataPipeline_destructor(sself: *mut core::ffi::c_void);
523        }
524        unsafe { vtkCompositeDataPipeline_destructor(self.0) }
525        self.0 = core::ptr::null_mut();
526    }
527}
528#[test]
529fn test_vtkCompositeDataPipeline_create_drop() {
530    let obj = vtkCompositeDataPipeline::new();
531    let ptr = obj.0;
532    assert!(!ptr.is_null());
533    assert!(unsafe { !obj._get_ptr().is_null() });
534    drop(obj);
535    let new_obj = vtkCompositeDataPipeline(ptr);
536    assert!(unsafe { new_obj._get_ptr().is_null() });
537}
538/// Superclass for algorithms that produce only vtkCompositeDataSet as output
539///
540///
541/// Algorithms that take any type of data object (including composite dataset)
542/// and produce a vtkCompositeDataSet in the output can subclass from this
543/// class.
544#[allow(non_camel_case_types)]
545pub struct vtkCompositeDataSetAlgorithm(*mut core::ffi::c_void);
546impl vtkCompositeDataSetAlgorithm {
547    /// Creates a new [vtkCompositeDataSetAlgorithm] wrapped inside `vtkNew`
548    #[doc(alias = "vtkCompositeDataSetAlgorithm")]
549    pub fn new() -> Self {
550        unsafe extern "C" {
551            fn vtkCompositeDataSetAlgorithm_new() -> *mut core::ffi::c_void;
552        }
553        Self(unsafe { &mut *vtkCompositeDataSetAlgorithm_new() })
554    }
555    #[cfg(test)]
556    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
557        unsafe extern "C" {
558            fn vtkCompositeDataSetAlgorithm_get_ptr(
559                sself: *mut core::ffi::c_void,
560            ) -> *mut core::ffi::c_void;
561        }
562        unsafe { vtkCompositeDataSetAlgorithm_get_ptr(self.0) }
563    }
564}
565impl std::default::Default for vtkCompositeDataSetAlgorithm {
566    fn default() -> Self {
567        Self::new()
568    }
569}
570impl Drop for vtkCompositeDataSetAlgorithm {
571    fn drop(&mut self) {
572        unsafe extern "C" {
573            fn vtkCompositeDataSetAlgorithm_destructor(sself: *mut core::ffi::c_void);
574        }
575        unsafe { vtkCompositeDataSetAlgorithm_destructor(self.0) }
576        self.0 = core::ptr::null_mut();
577    }
578}
579#[test]
580fn test_vtkCompositeDataSetAlgorithm_create_drop() {
581    let obj = vtkCompositeDataSetAlgorithm::new();
582    let ptr = obj.0;
583    assert!(!ptr.is_null());
584    assert!(unsafe { !obj._get_ptr().is_null() });
585    drop(obj);
586    let new_obj = vtkCompositeDataSetAlgorithm(ptr);
587    assert!(unsafe { new_obj._get_ptr().is_null() });
588}
589/// Superclass for algorithms that produce only data object as output
590///
591///
592///
593/// vtkDataObjectAlgorithm is a convenience class to make writing algorithms
594/// easier. It is also designed to help transition old algorithms to the new
595/// pipeline architecture. There are some assumptions and defaults made by this
596/// class you should be aware of. This class defaults such that your filter
597/// will have one input port and one output port. If that is not the case
598/// simply change it with SetNumberOfInputPorts etc. See this classes
599/// constructor for the default. This class also provides a FillInputPortInfo
600/// method that by default says that all inputs will be DataObject. If that
601/// isn't the case then please override this method in your subclass.
602/// You should implement the subclass's algorithm into
603/// RequestData( request, inputVec, outputVec).
604#[allow(non_camel_case_types)]
605pub struct vtkDataObjectAlgorithm(*mut core::ffi::c_void);
606impl vtkDataObjectAlgorithm {
607    /// Creates a new [vtkDataObjectAlgorithm] wrapped inside `vtkNew`
608    #[doc(alias = "vtkDataObjectAlgorithm")]
609    pub fn new() -> Self {
610        unsafe extern "C" {
611            fn vtkDataObjectAlgorithm_new() -> *mut core::ffi::c_void;
612        }
613        Self(unsafe { &mut *vtkDataObjectAlgorithm_new() })
614    }
615    #[cfg(test)]
616    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
617        unsafe extern "C" {
618            fn vtkDataObjectAlgorithm_get_ptr(
619                sself: *mut core::ffi::c_void,
620            ) -> *mut core::ffi::c_void;
621        }
622        unsafe { vtkDataObjectAlgorithm_get_ptr(self.0) }
623    }
624}
625impl std::default::Default for vtkDataObjectAlgorithm {
626    fn default() -> Self {
627        Self::new()
628    }
629}
630impl Drop for vtkDataObjectAlgorithm {
631    fn drop(&mut self) {
632        unsafe extern "C" {
633            fn vtkDataObjectAlgorithm_destructor(sself: *mut core::ffi::c_void);
634        }
635        unsafe { vtkDataObjectAlgorithm_destructor(self.0) }
636        self.0 = core::ptr::null_mut();
637    }
638}
639#[test]
640fn test_vtkDataObjectAlgorithm_create_drop() {
641    let obj = vtkDataObjectAlgorithm::new();
642    let ptr = obj.0;
643    assert!(!ptr.is_null());
644    assert!(unsafe { !obj._get_ptr().is_null() });
645    drop(obj);
646    let new_obj = vtkDataObjectAlgorithm(ptr);
647    assert!(unsafe { new_obj._get_ptr().is_null() });
648}
649/// Superclass for algorithms that produce output of the same type as input
650///
651///
652/// vtkDataSetAlgorithm is a convenience class to make writing algorithms
653/// easier. It is also designed to help transition old algorithms to the new
654/// pipeline architecture. There are some assumptions and defaults made by this
655/// class you should be aware of. This class defaults such that your filter
656/// will have one input port and one output port. If that is not the case
657/// simply change it with SetNumberOfInputPorts etc. See this classes
658/// constructor for the default. This class also provides a FillInputPortInfo
659/// method that by default says that all inputs will be DataSet. If that isn't
660/// the case then please override this method in your subclass. This class
661/// breaks out the downstream requests into separate functions such as
662/// RequestDataObject RequestData and RequestInformation. The default
663/// implementation of RequestDataObject will create an output data of the
664/// same type as the input.
665#[allow(non_camel_case_types)]
666pub struct vtkDataSetAlgorithm(*mut core::ffi::c_void);
667impl vtkDataSetAlgorithm {
668    /// Creates a new [vtkDataSetAlgorithm] wrapped inside `vtkNew`
669    #[doc(alias = "vtkDataSetAlgorithm")]
670    pub fn new() -> Self {
671        unsafe extern "C" {
672            fn vtkDataSetAlgorithm_new() -> *mut core::ffi::c_void;
673        }
674        Self(unsafe { &mut *vtkDataSetAlgorithm_new() })
675    }
676    #[cfg(test)]
677    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
678        unsafe extern "C" {
679            fn vtkDataSetAlgorithm_get_ptr(
680                sself: *mut core::ffi::c_void,
681            ) -> *mut core::ffi::c_void;
682        }
683        unsafe { vtkDataSetAlgorithm_get_ptr(self.0) }
684    }
685}
686impl std::default::Default for vtkDataSetAlgorithm {
687    fn default() -> Self {
688        Self::new()
689    }
690}
691impl Drop for vtkDataSetAlgorithm {
692    fn drop(&mut self) {
693        unsafe extern "C" {
694            fn vtkDataSetAlgorithm_destructor(sself: *mut core::ffi::c_void);
695        }
696        unsafe { vtkDataSetAlgorithm_destructor(self.0) }
697        self.0 = core::ptr::null_mut();
698    }
699}
700#[test]
701fn test_vtkDataSetAlgorithm_create_drop() {
702    let obj = vtkDataSetAlgorithm::new();
703    let ptr = obj.0;
704    assert!(!ptr.is_null());
705    assert!(unsafe { !obj._get_ptr().is_null() });
706    drop(obj);
707    let new_obj = vtkDataSetAlgorithm(ptr);
708    assert!(unsafe { new_obj._get_ptr().is_null() });
709}
710/// Executive supporting on-demand execution.
711///
712///
713/// vtkDemandDrivenPipeline is an executive that will execute an
714/// algorithm only when its outputs are out-of-date with respect to its
715/// inputs.
716#[allow(non_camel_case_types)]
717pub struct vtkDemandDrivenPipeline(*mut core::ffi::c_void);
718impl vtkDemandDrivenPipeline {
719    /// Creates a new [vtkDemandDrivenPipeline] wrapped inside `vtkNew`
720    #[doc(alias = "vtkDemandDrivenPipeline")]
721    pub fn new() -> Self {
722        unsafe extern "C" {
723            fn vtkDemandDrivenPipeline_new() -> *mut core::ffi::c_void;
724        }
725        Self(unsafe { &mut *vtkDemandDrivenPipeline_new() })
726    }
727    #[cfg(test)]
728    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
729        unsafe extern "C" {
730            fn vtkDemandDrivenPipeline_get_ptr(
731                sself: *mut core::ffi::c_void,
732            ) -> *mut core::ffi::c_void;
733        }
734        unsafe { vtkDemandDrivenPipeline_get_ptr(self.0) }
735    }
736}
737impl std::default::Default for vtkDemandDrivenPipeline {
738    fn default() -> Self {
739        Self::new()
740    }
741}
742impl Drop for vtkDemandDrivenPipeline {
743    fn drop(&mut self) {
744        unsafe extern "C" {
745            fn vtkDemandDrivenPipeline_destructor(sself: *mut core::ffi::c_void);
746        }
747        unsafe { vtkDemandDrivenPipeline_destructor(self.0) }
748        self.0 = core::ptr::null_mut();
749    }
750}
751#[test]
752fn test_vtkDemandDrivenPipeline_create_drop() {
753    let obj = vtkDemandDrivenPipeline::new();
754    let ptr = obj.0;
755    assert!(!ptr.is_null());
756    assert!(unsafe { !obj._get_ptr().is_null() });
757    drop(obj);
758    let new_obj = vtkDemandDrivenPipeline(ptr);
759    assert!(unsafe { new_obj._get_ptr().is_null() });
760}
761/// Superclass for algorithms that produce only directed graph as output
762///
763///
764///
765/// vtkDirectedGraphAlgorithm is a convenience class to make writing algorithms
766/// easier. It is also designed to help transition old algorithms to the new
767/// pipeline edgehitecture. There are some assumptions and defaults made by this
768/// class you should be aware of. This class defaults such that your filter
769/// will have one input port and one output port. If that is not the case
770/// simply change it with SetNumberOfInputPorts etc. See this class
771/// constructor for the default. This class also provides a FillInputPortInfo
772/// method that by default says that all inputs will be Graph. If that
773/// isn't the case then please override this method in your subclass.
774/// You should implement the subclass's algorithm into
775/// RequestData( request, inputVec, outputVec).
776///
777///
778/// @par Thanks:
779/// Thanks to Patricia Crossno, Ken Moreland, Andrew Wilson and Brian Wylie from
780/// Sandia National Laboratories for their help in developing this class.
781#[allow(non_camel_case_types)]
782pub struct vtkDirectedGraphAlgorithm(*mut core::ffi::c_void);
783impl vtkDirectedGraphAlgorithm {
784    /// Creates a new [vtkDirectedGraphAlgorithm] wrapped inside `vtkNew`
785    #[doc(alias = "vtkDirectedGraphAlgorithm")]
786    pub fn new() -> Self {
787        unsafe extern "C" {
788            fn vtkDirectedGraphAlgorithm_new() -> *mut core::ffi::c_void;
789        }
790        Self(unsafe { &mut *vtkDirectedGraphAlgorithm_new() })
791    }
792    #[cfg(test)]
793    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
794        unsafe extern "C" {
795            fn vtkDirectedGraphAlgorithm_get_ptr(
796                sself: *mut core::ffi::c_void,
797            ) -> *mut core::ffi::c_void;
798        }
799        unsafe { vtkDirectedGraphAlgorithm_get_ptr(self.0) }
800    }
801}
802impl std::default::Default for vtkDirectedGraphAlgorithm {
803    fn default() -> Self {
804        Self::new()
805    }
806}
807impl Drop for vtkDirectedGraphAlgorithm {
808    fn drop(&mut self) {
809        unsafe extern "C" {
810            fn vtkDirectedGraphAlgorithm_destructor(sself: *mut core::ffi::c_void);
811        }
812        unsafe { vtkDirectedGraphAlgorithm_destructor(self.0) }
813        self.0 = core::ptr::null_mut();
814    }
815}
816#[test]
817fn test_vtkDirectedGraphAlgorithm_create_drop() {
818    let obj = vtkDirectedGraphAlgorithm::new();
819    let ptr = obj.0;
820    assert!(!ptr.is_null());
821    assert!(unsafe { !obj._get_ptr().is_null() });
822    drop(obj);
823    let new_obj = vtkDirectedGraphAlgorithm(ptr);
824    assert!(unsafe { new_obj._get_ptr().is_null() });
825}
826/// vtkEndFor define the end of the sub-pipeline to loop
827///
828///
829/// vtkEndFor works together with vtkForEach. It marks the end of the loop.
830/// Its goals is to use the given `vtkExecutionAggregator` to process the result
831/// of each iteration and provide an output dataset.
832///
833/// The default aggregator is vtkAggregateToPartitionedDataSetCollection, which
834/// build a vtkPartitionedDataSetCollection with each result in a separate partition.
835///
836/// > Largely inspired by the ttkForEach/ttkEndFor in the TTK project
837/// > (https://github.com/topology-tool-kit/ttk/tree/dev)
838///
839/// @sa vtkForEach, vtkExecutionAggregator
840#[allow(non_camel_case_types)]
841pub struct vtkEndFor(*mut core::ffi::c_void);
842impl vtkEndFor {
843    /// Creates a new [vtkEndFor] wrapped inside `vtkNew`
844    #[doc(alias = "vtkEndFor")]
845    pub fn new() -> Self {
846        unsafe extern "C" {
847            fn vtkEndFor_new() -> *mut core::ffi::c_void;
848        }
849        Self(unsafe { &mut *vtkEndFor_new() })
850    }
851    #[cfg(test)]
852    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
853        unsafe extern "C" {
854            fn vtkEndFor_get_ptr(
855                sself: *mut core::ffi::c_void,
856            ) -> *mut core::ffi::c_void;
857        }
858        unsafe { vtkEndFor_get_ptr(self.0) }
859    }
860}
861impl std::default::Default for vtkEndFor {
862    fn default() -> Self {
863        Self::new()
864    }
865}
866impl Drop for vtkEndFor {
867    fn drop(&mut self) {
868        unsafe extern "C" {
869            fn vtkEndFor_destructor(sself: *mut core::ffi::c_void);
870        }
871        unsafe { vtkEndFor_destructor(self.0) }
872        self.0 = core::ptr::null_mut();
873    }
874}
875#[test]
876fn test_vtkEndFor_create_drop() {
877    let obj = vtkEndFor::new();
878    let ptr = obj.0;
879    assert!(!ptr.is_null());
880    assert!(unsafe { !obj._get_ptr().is_null() });
881    drop(obj);
882    let new_obj = vtkEndFor(ptr);
883    assert!(unsafe { new_obj._get_ptr().is_null() });
884}
885/// source that manages dataset ensembles
886///
887///
888/// vtkEnsembleSource manages a collection of data sources in order to
889/// represent a dataset ensemble. It has the ability to provide meta-data
890/// about the ensemble in the form of a table, using the META_DATA key
891/// as well as accept a pipeline request using the UPDATE_MEMBER key.
892/// Note that it is expected that all ensemble members produce data of the
893/// same type.
894#[allow(non_camel_case_types)]
895pub struct vtkEnsembleSource(*mut core::ffi::c_void);
896impl vtkEnsembleSource {
897    /// Creates a new [vtkEnsembleSource] wrapped inside `vtkNew`
898    #[doc(alias = "vtkEnsembleSource")]
899    pub fn new() -> Self {
900        unsafe extern "C" {
901            fn vtkEnsembleSource_new() -> *mut core::ffi::c_void;
902        }
903        Self(unsafe { &mut *vtkEnsembleSource_new() })
904    }
905    #[cfg(test)]
906    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
907        unsafe extern "C" {
908            fn vtkEnsembleSource_get_ptr(
909                sself: *mut core::ffi::c_void,
910            ) -> *mut core::ffi::c_void;
911        }
912        unsafe { vtkEnsembleSource_get_ptr(self.0) }
913    }
914}
915impl std::default::Default for vtkEnsembleSource {
916    fn default() -> Self {
917        Self::new()
918    }
919}
920impl Drop for vtkEnsembleSource {
921    fn drop(&mut self) {
922        unsafe extern "C" {
923            fn vtkEnsembleSource_destructor(sself: *mut core::ffi::c_void);
924        }
925        unsafe { vtkEnsembleSource_destructor(self.0) }
926        self.0 = core::ptr::null_mut();
927    }
928}
929#[test]
930fn test_vtkEnsembleSource_create_drop() {
931    let obj = vtkEnsembleSource::new();
932    let ptr = obj.0;
933    assert!(!ptr.is_null());
934    assert!(unsafe { !obj._get_ptr().is_null() });
935    drop(obj);
936    let new_obj = vtkEnsembleSource(ptr);
937    assert!(unsafe { new_obj._get_ptr().is_null() });
938}
939/// Superclass for algorithms that produce only
940///
941/// explicit structured grid as output.
942#[allow(non_camel_case_types)]
943pub struct vtkExplicitStructuredGridAlgorithm(*mut core::ffi::c_void);
944impl vtkExplicitStructuredGridAlgorithm {
945    /// Creates a new [vtkExplicitStructuredGridAlgorithm] wrapped inside `vtkNew`
946    #[doc(alias = "vtkExplicitStructuredGridAlgorithm")]
947    pub fn new() -> Self {
948        unsafe extern "C" {
949            fn vtkExplicitStructuredGridAlgorithm_new() -> *mut core::ffi::c_void;
950        }
951        Self(unsafe { &mut *vtkExplicitStructuredGridAlgorithm_new() })
952    }
953    #[cfg(test)]
954    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
955        unsafe extern "C" {
956            fn vtkExplicitStructuredGridAlgorithm_get_ptr(
957                sself: *mut core::ffi::c_void,
958            ) -> *mut core::ffi::c_void;
959        }
960        unsafe { vtkExplicitStructuredGridAlgorithm_get_ptr(self.0) }
961    }
962}
963impl std::default::Default for vtkExplicitStructuredGridAlgorithm {
964    fn default() -> Self {
965        Self::new()
966    }
967}
968impl Drop for vtkExplicitStructuredGridAlgorithm {
969    fn drop(&mut self) {
970        unsafe extern "C" {
971            fn vtkExplicitStructuredGridAlgorithm_destructor(
972                sself: *mut core::ffi::c_void,
973            );
974        }
975        unsafe { vtkExplicitStructuredGridAlgorithm_destructor(self.0) }
976        self.0 = core::ptr::null_mut();
977    }
978}
979#[test]
980fn test_vtkExplicitStructuredGridAlgorithm_create_drop() {
981    let obj = vtkExplicitStructuredGridAlgorithm::new();
982    let ptr = obj.0;
983    assert!(!ptr.is_null());
984    assert!(unsafe { !obj._get_ptr().is_null() });
985    drop(obj);
986    let new_obj = vtkExplicitStructuredGridAlgorithm(ptr);
987    assert!(unsafe { new_obj._get_ptr().is_null() });
988}
989/// This method partitions a global extent to N partitions where N is a user
990///
991/// supplied parameter.
992#[allow(non_camel_case_types)]
993pub struct vtkExtentRCBPartitioner(*mut core::ffi::c_void);
994impl vtkExtentRCBPartitioner {
995    /// Creates a new [vtkExtentRCBPartitioner] wrapped inside `vtkNew`
996    #[doc(alias = "vtkExtentRCBPartitioner")]
997    pub fn new() -> Self {
998        unsafe extern "C" {
999            fn vtkExtentRCBPartitioner_new() -> *mut core::ffi::c_void;
1000        }
1001        Self(unsafe { &mut *vtkExtentRCBPartitioner_new() })
1002    }
1003    #[cfg(test)]
1004    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1005        unsafe extern "C" {
1006            fn vtkExtentRCBPartitioner_get_ptr(
1007                sself: *mut core::ffi::c_void,
1008            ) -> *mut core::ffi::c_void;
1009        }
1010        unsafe { vtkExtentRCBPartitioner_get_ptr(self.0) }
1011    }
1012}
1013impl std::default::Default for vtkExtentRCBPartitioner {
1014    fn default() -> Self {
1015        Self::new()
1016    }
1017}
1018impl Drop for vtkExtentRCBPartitioner {
1019    fn drop(&mut self) {
1020        unsafe extern "C" {
1021            fn vtkExtentRCBPartitioner_destructor(sself: *mut core::ffi::c_void);
1022        }
1023        unsafe { vtkExtentRCBPartitioner_destructor(self.0) }
1024        self.0 = core::ptr::null_mut();
1025    }
1026}
1027#[test]
1028fn test_vtkExtentRCBPartitioner_create_drop() {
1029    let obj = vtkExtentRCBPartitioner::new();
1030    let ptr = obj.0;
1031    assert!(!ptr.is_null());
1032    assert!(unsafe { !obj._get_ptr().is_null() });
1033    drop(obj);
1034    let new_obj = vtkExtentRCBPartitioner(ptr);
1035    assert!(unsafe { new_obj._get_ptr().is_null() });
1036}
1037/// Split an extent across other extents.
1038///
1039///
1040/// vtkExtentSplitter splits each input extent into non-overlapping
1041/// sub-extents that are completely contained within other "source
1042/// extents".  A source extent corresponds to some resource providing
1043/// an extent.  Each source extent has an integer identifier, integer
1044/// priority, and an extent.  The input extents are split into
1045/// sub-extents according to priority, availability, and amount of
1046/// overlap of the source extents.  This can be used by parallel data
1047/// readers to read as few piece files as possible.
1048#[allow(non_camel_case_types)]
1049pub struct vtkExtentSplitter(*mut core::ffi::c_void);
1050impl vtkExtentSplitter {
1051    /// Creates a new [vtkExtentSplitter] wrapped inside `vtkNew`
1052    #[doc(alias = "vtkExtentSplitter")]
1053    pub fn new() -> Self {
1054        unsafe extern "C" {
1055            fn vtkExtentSplitter_new() -> *mut core::ffi::c_void;
1056        }
1057        Self(unsafe { &mut *vtkExtentSplitter_new() })
1058    }
1059    #[cfg(test)]
1060    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1061        unsafe extern "C" {
1062            fn vtkExtentSplitter_get_ptr(
1063                sself: *mut core::ffi::c_void,
1064            ) -> *mut core::ffi::c_void;
1065        }
1066        unsafe { vtkExtentSplitter_get_ptr(self.0) }
1067    }
1068}
1069impl std::default::Default for vtkExtentSplitter {
1070    fn default() -> Self {
1071        Self::new()
1072    }
1073}
1074impl Drop for vtkExtentSplitter {
1075    fn drop(&mut self) {
1076        unsafe extern "C" {
1077            fn vtkExtentSplitter_destructor(sself: *mut core::ffi::c_void);
1078        }
1079        unsafe { vtkExtentSplitter_destructor(self.0) }
1080        self.0 = core::ptr::null_mut();
1081    }
1082}
1083#[test]
1084fn test_vtkExtentSplitter_create_drop() {
1085    let obj = vtkExtentSplitter::new();
1086    let ptr = obj.0;
1087    assert!(!ptr.is_null());
1088    assert!(unsafe { !obj._get_ptr().is_null() });
1089    drop(obj);
1090    let new_obj = vtkExtentSplitter(ptr);
1091    assert!(unsafe { new_obj._get_ptr().is_null() });
1092}
1093/// Generates a structured extent from unstructured.
1094///
1095///
1096///
1097/// vtkExtentTranslator generates a structured extent from an unstructured
1098/// extent.  It uses a recursive scheme that splits the largest axis.  A hard
1099/// coded extent can be used for a starting point.
1100#[allow(non_camel_case_types)]
1101pub struct vtkExtentTranslator(*mut core::ffi::c_void);
1102impl vtkExtentTranslator {
1103    /// Creates a new [vtkExtentTranslator] wrapped inside `vtkNew`
1104    #[doc(alias = "vtkExtentTranslator")]
1105    pub fn new() -> Self {
1106        unsafe extern "C" {
1107            fn vtkExtentTranslator_new() -> *mut core::ffi::c_void;
1108        }
1109        Self(unsafe { &mut *vtkExtentTranslator_new() })
1110    }
1111    #[cfg(test)]
1112    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1113        unsafe extern "C" {
1114            fn vtkExtentTranslator_get_ptr(
1115                sself: *mut core::ffi::c_void,
1116            ) -> *mut core::ffi::c_void;
1117        }
1118        unsafe { vtkExtentTranslator_get_ptr(self.0) }
1119    }
1120}
1121impl std::default::Default for vtkExtentTranslator {
1122    fn default() -> Self {
1123        Self::new()
1124    }
1125}
1126impl Drop for vtkExtentTranslator {
1127    fn drop(&mut self) {
1128        unsafe extern "C" {
1129            fn vtkExtentTranslator_destructor(sself: *mut core::ffi::c_void);
1130        }
1131        unsafe { vtkExtentTranslator_destructor(self.0) }
1132        self.0 = core::ptr::null_mut();
1133    }
1134}
1135#[test]
1136fn test_vtkExtentTranslator_create_drop() {
1137    let obj = vtkExtentTranslator::new();
1138    let ptr = obj.0;
1139    assert!(!ptr.is_null());
1140    assert!(unsafe { !obj._get_ptr().is_null() });
1141    drop(obj);
1142    let new_obj = vtkExtentTranslator(ptr);
1143    assert!(unsafe { new_obj._get_ptr().is_null() });
1144}
1145/// Algorithm allowing to implement a for loop using the VTK pipeline and a sister filter
1146///
1147/// vtkEndFor
1148///
1149/// This filter begins a for loop that can execute a portion of a pipeline (sub-pipeline) a certain
1150/// number of times. To be used in conjunction with the `vtkEndFor` filter that should end the loop.
1151///
1152/// > Largely inspired by the ttkForEach/ttkEndFor in the TTK project
1153/// > (https://github.com/topology-tool-kit/ttk/tree/dev)
1154///
1155/// @sa vtkEndFor, vtkExecutionRange
1156#[allow(non_camel_case_types)]
1157pub struct vtkForEach(*mut core::ffi::c_void);
1158impl vtkForEach {
1159    /// Creates a new [vtkForEach] wrapped inside `vtkNew`
1160    #[doc(alias = "vtkForEach")]
1161    pub fn new() -> Self {
1162        unsafe extern "C" {
1163            fn vtkForEach_new() -> *mut core::ffi::c_void;
1164        }
1165        Self(unsafe { &mut *vtkForEach_new() })
1166    }
1167    #[cfg(test)]
1168    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1169        unsafe extern "C" {
1170            fn vtkForEach_get_ptr(
1171                sself: *mut core::ffi::c_void,
1172            ) -> *mut core::ffi::c_void;
1173        }
1174        unsafe { vtkForEach_get_ptr(self.0) }
1175    }
1176}
1177impl std::default::Default for vtkForEach {
1178    fn default() -> Self {
1179        Self::new()
1180    }
1181}
1182impl Drop for vtkForEach {
1183    fn drop(&mut self) {
1184        unsafe extern "C" {
1185            fn vtkForEach_destructor(sself: *mut core::ffi::c_void);
1186        }
1187        unsafe { vtkForEach_destructor(self.0) }
1188        self.0 = core::ptr::null_mut();
1189    }
1190}
1191#[test]
1192fn test_vtkForEach_create_drop() {
1193    let obj = vtkForEach::new();
1194    let ptr = obj.0;
1195    assert!(!ptr.is_null());
1196    assert!(unsafe { !obj._get_ptr().is_null() });
1197    drop(obj);
1198    let new_obj = vtkForEach(ptr);
1199    assert!(unsafe { new_obj._get_ptr().is_null() });
1200}
1201/// Superclass for algorithms that produce only graph as output
1202///
1203///
1204///
1205/// vtkGraphAlgorithm is a convenience class to make writing algorithms
1206/// easier. It is also designed to help transition old algorithms to the new
1207/// pipeline architecture. There are some assumptions and defaults made by this
1208/// class you should be aware of. This class defaults such that your filter
1209/// will have one input port and one output port. If that is not the case
1210/// simply change it with SetNumberOfInputPorts etc. See this class
1211/// constructor for the default. This class also provides a FillInputPortInfo
1212/// method that by default says that all inputs will be Graph. If that
1213/// isn't the case then please override this method in your subclass.
1214/// You should implement the subclass's algorithm into
1215/// RequestData( request, inputVec, outputVec).
1216///
1217/// @par Thanks:
1218/// Thanks to Patricia Crossno, Ken Moreland, Andrew Wilson and Brian Wylie from
1219/// Sandia National Laboratories for their help in developing this class.
1220#[allow(non_camel_case_types)]
1221pub struct vtkGraphAlgorithm(*mut core::ffi::c_void);
1222impl vtkGraphAlgorithm {
1223    /// Creates a new [vtkGraphAlgorithm] wrapped inside `vtkNew`
1224    #[doc(alias = "vtkGraphAlgorithm")]
1225    pub fn new() -> Self {
1226        unsafe extern "C" {
1227            fn vtkGraphAlgorithm_new() -> *mut core::ffi::c_void;
1228        }
1229        Self(unsafe { &mut *vtkGraphAlgorithm_new() })
1230    }
1231    #[cfg(test)]
1232    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1233        unsafe extern "C" {
1234            fn vtkGraphAlgorithm_get_ptr(
1235                sself: *mut core::ffi::c_void,
1236            ) -> *mut core::ffi::c_void;
1237        }
1238        unsafe { vtkGraphAlgorithm_get_ptr(self.0) }
1239    }
1240}
1241impl std::default::Default for vtkGraphAlgorithm {
1242    fn default() -> Self {
1243        Self::new()
1244    }
1245}
1246impl Drop for vtkGraphAlgorithm {
1247    fn drop(&mut self) {
1248        unsafe extern "C" {
1249            fn vtkGraphAlgorithm_destructor(sself: *mut core::ffi::c_void);
1250        }
1251        unsafe { vtkGraphAlgorithm_destructor(self.0) }
1252        self.0 = core::ptr::null_mut();
1253    }
1254}
1255#[test]
1256fn test_vtkGraphAlgorithm_create_drop() {
1257    let obj = vtkGraphAlgorithm::new();
1258    let ptr = obj.0;
1259    assert!(!ptr.is_null());
1260    assert!(unsafe { !obj._get_ptr().is_null() });
1261    drop(obj);
1262    let new_obj = vtkGraphAlgorithm(ptr);
1263    assert!(unsafe { new_obj._get_ptr().is_null() });
1264}
1265/// superclass for algorithms that
1266///
1267/// produce vtkHierarchicalBoxDataSet as output.
1268///
1269/// Algorithms that take any type of data object (including composite dataset)
1270/// and produce a vtkHierarchicalBoxDataSet in the output can subclass from this
1271/// class.
1272#[allow(non_camel_case_types)]
1273pub struct vtkHierarchicalBoxDataSetAlgorithm(*mut core::ffi::c_void);
1274impl vtkHierarchicalBoxDataSetAlgorithm {
1275    /// Creates a new [vtkHierarchicalBoxDataSetAlgorithm] wrapped inside `vtkNew`
1276    #[doc(alias = "vtkHierarchicalBoxDataSetAlgorithm")]
1277    pub fn new() -> Self {
1278        unsafe extern "C" {
1279            fn vtkHierarchicalBoxDataSetAlgorithm_new() -> *mut core::ffi::c_void;
1280        }
1281        Self(unsafe { &mut *vtkHierarchicalBoxDataSetAlgorithm_new() })
1282    }
1283    #[cfg(test)]
1284    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1285        unsafe extern "C" {
1286            fn vtkHierarchicalBoxDataSetAlgorithm_get_ptr(
1287                sself: *mut core::ffi::c_void,
1288            ) -> *mut core::ffi::c_void;
1289        }
1290        unsafe { vtkHierarchicalBoxDataSetAlgorithm_get_ptr(self.0) }
1291    }
1292}
1293impl std::default::Default for vtkHierarchicalBoxDataSetAlgorithm {
1294    fn default() -> Self {
1295        Self::new()
1296    }
1297}
1298impl Drop for vtkHierarchicalBoxDataSetAlgorithm {
1299    fn drop(&mut self) {
1300        unsafe extern "C" {
1301            fn vtkHierarchicalBoxDataSetAlgorithm_destructor(
1302                sself: *mut core::ffi::c_void,
1303            );
1304        }
1305        unsafe { vtkHierarchicalBoxDataSetAlgorithm_destructor(self.0) }
1306        self.0 = core::ptr::null_mut();
1307    }
1308}
1309#[test]
1310fn test_vtkHierarchicalBoxDataSetAlgorithm_create_drop() {
1311    let obj = vtkHierarchicalBoxDataSetAlgorithm::new();
1312    let ptr = obj.0;
1313    assert!(!ptr.is_null());
1314    assert!(unsafe { !obj._get_ptr().is_null() });
1315    drop(obj);
1316    let new_obj = vtkHierarchicalBoxDataSetAlgorithm(ptr);
1317    assert!(unsafe { new_obj._get_ptr().is_null() });
1318}
1319///
1320/// a structured grid instance.
1321///
1322///
1323/// A concrete instance of vtkStructuredGridAlgorithm which provides
1324/// functionality for converting instances of vtkImageData to vtkStructuredGrid.
1325#[allow(non_camel_case_types)]
1326pub struct vtkImageToStructuredGrid(*mut core::ffi::c_void);
1327impl vtkImageToStructuredGrid {
1328    /// Creates a new [vtkImageToStructuredGrid] wrapped inside `vtkNew`
1329    #[doc(alias = "vtkImageToStructuredGrid")]
1330    pub fn new() -> Self {
1331        unsafe extern "C" {
1332            fn vtkImageToStructuredGrid_new() -> *mut core::ffi::c_void;
1333        }
1334        Self(unsafe { &mut *vtkImageToStructuredGrid_new() })
1335    }
1336    #[cfg(test)]
1337    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1338        unsafe extern "C" {
1339            fn vtkImageToStructuredGrid_get_ptr(
1340                sself: *mut core::ffi::c_void,
1341            ) -> *mut core::ffi::c_void;
1342        }
1343        unsafe { vtkImageToStructuredGrid_get_ptr(self.0) }
1344    }
1345}
1346impl std::default::Default for vtkImageToStructuredGrid {
1347    fn default() -> Self {
1348        Self::new()
1349    }
1350}
1351impl Drop for vtkImageToStructuredGrid {
1352    fn drop(&mut self) {
1353        unsafe extern "C" {
1354            fn vtkImageToStructuredGrid_destructor(sself: *mut core::ffi::c_void);
1355        }
1356        unsafe { vtkImageToStructuredGrid_destructor(self.0) }
1357        self.0 = core::ptr::null_mut();
1358    }
1359}
1360#[test]
1361fn test_vtkImageToStructuredGrid_create_drop() {
1362    let obj = vtkImageToStructuredGrid::new();
1363    let ptr = obj.0;
1364    assert!(!ptr.is_null());
1365    assert!(unsafe { !obj._get_ptr().is_null() });
1366    drop(obj);
1367    let new_obj = vtkImageToStructuredGrid(ptr);
1368    assert!(unsafe { new_obj._get_ptr().is_null() });
1369}
1370/// Attaches image pipeline to VTK.
1371///
1372///
1373/// vtkImageToStructuredPoints changes an image cache format to
1374/// a structured points dataset.  It takes an Input plus an optional
1375/// VectorInput. The VectorInput converts the RGB scalar components
1376/// of the VectorInput to vector pointdata attributes. This filter
1377/// will try to reference count the data but in some cases it must
1378/// make a copy.
1379#[allow(non_camel_case_types)]
1380pub struct vtkImageToStructuredPoints(*mut core::ffi::c_void);
1381impl vtkImageToStructuredPoints {
1382    /// Creates a new [vtkImageToStructuredPoints] wrapped inside `vtkNew`
1383    #[doc(alias = "vtkImageToStructuredPoints")]
1384    pub fn new() -> Self {
1385        unsafe extern "C" {
1386            fn vtkImageToStructuredPoints_new() -> *mut core::ffi::c_void;
1387        }
1388        Self(unsafe { &mut *vtkImageToStructuredPoints_new() })
1389    }
1390    #[cfg(test)]
1391    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1392        unsafe extern "C" {
1393            fn vtkImageToStructuredPoints_get_ptr(
1394                sself: *mut core::ffi::c_void,
1395            ) -> *mut core::ffi::c_void;
1396        }
1397        unsafe { vtkImageToStructuredPoints_get_ptr(self.0) }
1398    }
1399}
1400impl std::default::Default for vtkImageToStructuredPoints {
1401    fn default() -> Self {
1402        Self::new()
1403    }
1404}
1405impl Drop for vtkImageToStructuredPoints {
1406    fn drop(&mut self) {
1407        unsafe extern "C" {
1408            fn vtkImageToStructuredPoints_destructor(sself: *mut core::ffi::c_void);
1409        }
1410        unsafe { vtkImageToStructuredPoints_destructor(self.0) }
1411        self.0 = core::ptr::null_mut();
1412    }
1413}
1414#[test]
1415fn test_vtkImageToStructuredPoints_create_drop() {
1416    let obj = vtkImageToStructuredPoints::new();
1417    let ptr = obj.0;
1418    assert!(!ptr.is_null());
1419    assert!(unsafe { !obj._get_ptr().is_null() });
1420    drop(obj);
1421    let new_obj = vtkImageToStructuredPoints(ptr);
1422    assert!(unsafe { new_obj._get_ptr().is_null() });
1423}
1424/// Superclass for algorithms that operate on
1425///
1426/// vtkMolecules
1427///
1428///
1429///
1430/// vtkMoleculeAlgorithm is a convenience class to make writing algorithms
1431/// easier. There are some assumptions and defaults made by this class you
1432/// should be aware of. This class defaults such that your filter will have
1433/// one input port and one output port. If that is not the case simply change
1434/// it with SetNumberOfInputPorts etc. See this class constructor for the
1435/// default. This class also provides a FillInputPortInfo method that by
1436/// default says that all inputs will be vtkMolecules. If that isn't the case
1437/// then please override this method in your subclass. You should implement
1438/// the subclass's algorithm into RequestData( request, inputVec, outputVec).
1439#[allow(non_camel_case_types)]
1440pub struct vtkMoleculeAlgorithm(*mut core::ffi::c_void);
1441impl vtkMoleculeAlgorithm {
1442    /// Creates a new [vtkMoleculeAlgorithm] wrapped inside `vtkNew`
1443    #[doc(alias = "vtkMoleculeAlgorithm")]
1444    pub fn new() -> Self {
1445        unsafe extern "C" {
1446            fn vtkMoleculeAlgorithm_new() -> *mut core::ffi::c_void;
1447        }
1448        Self(unsafe { &mut *vtkMoleculeAlgorithm_new() })
1449    }
1450    #[cfg(test)]
1451    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1452        unsafe extern "C" {
1453            fn vtkMoleculeAlgorithm_get_ptr(
1454                sself: *mut core::ffi::c_void,
1455            ) -> *mut core::ffi::c_void;
1456        }
1457        unsafe { vtkMoleculeAlgorithm_get_ptr(self.0) }
1458    }
1459}
1460impl std::default::Default for vtkMoleculeAlgorithm {
1461    fn default() -> Self {
1462        Self::new()
1463    }
1464}
1465impl Drop for vtkMoleculeAlgorithm {
1466    fn drop(&mut self) {
1467        unsafe extern "C" {
1468            fn vtkMoleculeAlgorithm_destructor(sself: *mut core::ffi::c_void);
1469        }
1470        unsafe { vtkMoleculeAlgorithm_destructor(self.0) }
1471        self.0 = core::ptr::null_mut();
1472    }
1473}
1474#[test]
1475fn test_vtkMoleculeAlgorithm_create_drop() {
1476    let obj = vtkMoleculeAlgorithm::new();
1477    let ptr = obj.0;
1478    assert!(!ptr.is_null());
1479    assert!(unsafe { !obj._get_ptr().is_null() });
1480    drop(obj);
1481    let new_obj = vtkMoleculeAlgorithm(ptr);
1482    assert!(unsafe { new_obj._get_ptr().is_null() });
1483}
1484/// Superclass for algorithms that produce only vtkMultiBlockDataSet as output
1485///
1486///
1487/// Algorithms that take any type of data object (including composite dataset)
1488/// and produce a vtkMultiBlockDataSet in the output can subclass from this
1489/// class.
1490#[allow(non_camel_case_types)]
1491pub struct vtkMultiBlockDataSetAlgorithm(*mut core::ffi::c_void);
1492impl vtkMultiBlockDataSetAlgorithm {
1493    /// Creates a new [vtkMultiBlockDataSetAlgorithm] wrapped inside `vtkNew`
1494    #[doc(alias = "vtkMultiBlockDataSetAlgorithm")]
1495    pub fn new() -> Self {
1496        unsafe extern "C" {
1497            fn vtkMultiBlockDataSetAlgorithm_new() -> *mut core::ffi::c_void;
1498        }
1499        Self(unsafe { &mut *vtkMultiBlockDataSetAlgorithm_new() })
1500    }
1501    #[cfg(test)]
1502    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1503        unsafe extern "C" {
1504            fn vtkMultiBlockDataSetAlgorithm_get_ptr(
1505                sself: *mut core::ffi::c_void,
1506            ) -> *mut core::ffi::c_void;
1507        }
1508        unsafe { vtkMultiBlockDataSetAlgorithm_get_ptr(self.0) }
1509    }
1510}
1511impl std::default::Default for vtkMultiBlockDataSetAlgorithm {
1512    fn default() -> Self {
1513        Self::new()
1514    }
1515}
1516impl Drop for vtkMultiBlockDataSetAlgorithm {
1517    fn drop(&mut self) {
1518        unsafe extern "C" {
1519            fn vtkMultiBlockDataSetAlgorithm_destructor(sself: *mut core::ffi::c_void);
1520        }
1521        unsafe { vtkMultiBlockDataSetAlgorithm_destructor(self.0) }
1522        self.0 = core::ptr::null_mut();
1523    }
1524}
1525#[test]
1526fn test_vtkMultiBlockDataSetAlgorithm_create_drop() {
1527    let obj = vtkMultiBlockDataSetAlgorithm::new();
1528    let ptr = obj.0;
1529    assert!(!ptr.is_null());
1530    assert!(unsafe { !obj._get_ptr().is_null() });
1531    drop(obj);
1532    let new_obj = vtkMultiBlockDataSetAlgorithm(ptr);
1533    assert!(unsafe { new_obj._get_ptr().is_null() });
1534}
1535/// Superclass for algorithms that would like to make multiple time requests
1536///
1537///
1538/// This class can be inherited by any algorithm that wishes to make multiple
1539/// time requests upstream.
1540///
1541/// A subclass should override `RequestUpdateExtent` and use
1542/// `vtkMultiTimeStepAlgorithm::UPDATE_TIME_STEPS` key to indicate which
1543/// timesteps are to be requested. This class will then take care of executing
1544/// the upstream pipeline to obtain the requested timesteps.
1545///
1546/// Subclasses can then override `Execute` which is provided a vector of input
1547/// data objects corresponding to the requested timesteps.
1548///
1549/// In VTK 9.1 and earlier, subclasses overrode `RequestData` instead of
1550/// `Execute`. RequestData was passed a `vtkMultiBlockDataSet` with blocks corresponding
1551/// to the input timesteps. However, with addition of vtkPartitionedDataSet and
1552/// vtkPartitionedDataSetCollection in VTK 9.2, it is not possible to package all
1553/// input data types into a multiblock dataset. Hence, the method is deprecated
1554/// and only used when `Execute` is not overridden.
1555#[allow(non_camel_case_types)]
1556pub struct vtkMultiTimeStepAlgorithm(*mut core::ffi::c_void);
1557impl vtkMultiTimeStepAlgorithm {
1558    /// Creates a new [vtkMultiTimeStepAlgorithm] wrapped inside `vtkNew`
1559    #[doc(alias = "vtkMultiTimeStepAlgorithm")]
1560    pub fn new() -> Self {
1561        unsafe extern "C" {
1562            fn vtkMultiTimeStepAlgorithm_new() -> *mut core::ffi::c_void;
1563        }
1564        Self(unsafe { &mut *vtkMultiTimeStepAlgorithm_new() })
1565    }
1566    #[cfg(test)]
1567    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1568        unsafe extern "C" {
1569            fn vtkMultiTimeStepAlgorithm_get_ptr(
1570                sself: *mut core::ffi::c_void,
1571            ) -> *mut core::ffi::c_void;
1572        }
1573        unsafe { vtkMultiTimeStepAlgorithm_get_ptr(self.0) }
1574    }
1575}
1576impl std::default::Default for vtkMultiTimeStepAlgorithm {
1577    fn default() -> Self {
1578        Self::new()
1579    }
1580}
1581impl Drop for vtkMultiTimeStepAlgorithm {
1582    fn drop(&mut self) {
1583        unsafe extern "C" {
1584            fn vtkMultiTimeStepAlgorithm_destructor(sself: *mut core::ffi::c_void);
1585        }
1586        unsafe { vtkMultiTimeStepAlgorithm_destructor(self.0) }
1587        self.0 = core::ptr::null_mut();
1588    }
1589}
1590#[test]
1591fn test_vtkMultiTimeStepAlgorithm_create_drop() {
1592    let obj = vtkMultiTimeStepAlgorithm::new();
1593    let ptr = obj.0;
1594    assert!(!ptr.is_null());
1595    assert!(unsafe { !obj._get_ptr().is_null() });
1596    drop(obj);
1597    let new_obj = vtkMultiTimeStepAlgorithm(ptr);
1598    assert!(unsafe { new_obj._get_ptr().is_null() });
1599}
1600///
1601/// produce vtkNonOverlappingAMR as output.
1602#[allow(non_camel_case_types)]
1603pub struct vtkNonOverlappingAMRAlgorithm(*mut core::ffi::c_void);
1604impl vtkNonOverlappingAMRAlgorithm {
1605    /// Creates a new [vtkNonOverlappingAMRAlgorithm] wrapped inside `vtkNew`
1606    #[doc(alias = "vtkNonOverlappingAMRAlgorithm")]
1607    pub fn new() -> Self {
1608        unsafe extern "C" {
1609            fn vtkNonOverlappingAMRAlgorithm_new() -> *mut core::ffi::c_void;
1610        }
1611        Self(unsafe { &mut *vtkNonOverlappingAMRAlgorithm_new() })
1612    }
1613    #[cfg(test)]
1614    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1615        unsafe extern "C" {
1616            fn vtkNonOverlappingAMRAlgorithm_get_ptr(
1617                sself: *mut core::ffi::c_void,
1618            ) -> *mut core::ffi::c_void;
1619        }
1620        unsafe { vtkNonOverlappingAMRAlgorithm_get_ptr(self.0) }
1621    }
1622}
1623impl std::default::Default for vtkNonOverlappingAMRAlgorithm {
1624    fn default() -> Self {
1625        Self::new()
1626    }
1627}
1628impl Drop for vtkNonOverlappingAMRAlgorithm {
1629    fn drop(&mut self) {
1630        unsafe extern "C" {
1631            fn vtkNonOverlappingAMRAlgorithm_destructor(sself: *mut core::ffi::c_void);
1632        }
1633        unsafe { vtkNonOverlappingAMRAlgorithm_destructor(self.0) }
1634        self.0 = core::ptr::null_mut();
1635    }
1636}
1637#[test]
1638fn test_vtkNonOverlappingAMRAlgorithm_create_drop() {
1639    let obj = vtkNonOverlappingAMRAlgorithm::new();
1640    let ptr = obj.0;
1641    assert!(!ptr.is_null());
1642    assert!(unsafe { !obj._get_ptr().is_null() });
1643    drop(obj);
1644    let new_obj = vtkNonOverlappingAMRAlgorithm(ptr);
1645    assert!(unsafe { new_obj._get_ptr().is_null() });
1646}
1647/// A base class for all algorithms that take as input vtkOverlappingAMR and
1648///
1649/// produce vtkOverlappingAMR.
1650#[allow(non_camel_case_types)]
1651pub struct vtkOverlappingAMRAlgorithm(*mut core::ffi::c_void);
1652impl vtkOverlappingAMRAlgorithm {
1653    /// Creates a new [vtkOverlappingAMRAlgorithm] wrapped inside `vtkNew`
1654    #[doc(alias = "vtkOverlappingAMRAlgorithm")]
1655    pub fn new() -> Self {
1656        unsafe extern "C" {
1657            fn vtkOverlappingAMRAlgorithm_new() -> *mut core::ffi::c_void;
1658        }
1659        Self(unsafe { &mut *vtkOverlappingAMRAlgorithm_new() })
1660    }
1661    #[cfg(test)]
1662    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1663        unsafe extern "C" {
1664            fn vtkOverlappingAMRAlgorithm_get_ptr(
1665                sself: *mut core::ffi::c_void,
1666            ) -> *mut core::ffi::c_void;
1667        }
1668        unsafe { vtkOverlappingAMRAlgorithm_get_ptr(self.0) }
1669    }
1670}
1671impl std::default::Default for vtkOverlappingAMRAlgorithm {
1672    fn default() -> Self {
1673        Self::new()
1674    }
1675}
1676impl Drop for vtkOverlappingAMRAlgorithm {
1677    fn drop(&mut self) {
1678        unsafe extern "C" {
1679            fn vtkOverlappingAMRAlgorithm_destructor(sself: *mut core::ffi::c_void);
1680        }
1681        unsafe { vtkOverlappingAMRAlgorithm_destructor(self.0) }
1682        self.0 = core::ptr::null_mut();
1683    }
1684}
1685#[test]
1686fn test_vtkOverlappingAMRAlgorithm_create_drop() {
1687    let obj = vtkOverlappingAMRAlgorithm::new();
1688    let ptr = obj.0;
1689    assert!(!ptr.is_null());
1690    assert!(unsafe { !obj._get_ptr().is_null() });
1691    drop(obj);
1692    let new_obj = vtkOverlappingAMRAlgorithm(ptr);
1693    assert!(unsafe { new_obj._get_ptr().is_null() });
1694}
1695/// Superclass for algorithms that produce output of the same type as input
1696///
1697///
1698/// vtkPassInputTypeAlgorithm is a convenience class to make writing algorithms
1699/// easier. It is also designed to help transition old algorithms to the new
1700/// pipeline architecture. There are some assumptions and defaults made by this
1701/// class you should be aware of. This class defaults such that your filter
1702/// will have one input port and one output port. If that is not the case
1703/// simply change it with SetNumberOfInputPorts etc. See this classes
1704/// constructor for the default. This class also provides a FillInputPortInfo
1705/// method that by default says that all inputs will be DataObject. If that isn't
1706/// the case then please override this method in your subclass. This class
1707/// breaks out the downstream requests into separate functions such as
1708/// RequestDataObject RequestData and RequestInformation. The default
1709/// implementation of RequestDataObject will create an output data of the
1710/// same type as the input.
1711#[allow(non_camel_case_types)]
1712pub struct vtkPassInputTypeAlgorithm(*mut core::ffi::c_void);
1713impl vtkPassInputTypeAlgorithm {
1714    /// Creates a new [vtkPassInputTypeAlgorithm] wrapped inside `vtkNew`
1715    #[doc(alias = "vtkPassInputTypeAlgorithm")]
1716    pub fn new() -> Self {
1717        unsafe extern "C" {
1718            fn vtkPassInputTypeAlgorithm_new() -> *mut core::ffi::c_void;
1719        }
1720        Self(unsafe { &mut *vtkPassInputTypeAlgorithm_new() })
1721    }
1722    #[cfg(test)]
1723    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1724        unsafe extern "C" {
1725            fn vtkPassInputTypeAlgorithm_get_ptr(
1726                sself: *mut core::ffi::c_void,
1727            ) -> *mut core::ffi::c_void;
1728        }
1729        unsafe { vtkPassInputTypeAlgorithm_get_ptr(self.0) }
1730    }
1731}
1732impl std::default::Default for vtkPassInputTypeAlgorithm {
1733    fn default() -> Self {
1734        Self::new()
1735    }
1736}
1737impl Drop for vtkPassInputTypeAlgorithm {
1738    fn drop(&mut self) {
1739        unsafe extern "C" {
1740            fn vtkPassInputTypeAlgorithm_destructor(sself: *mut core::ffi::c_void);
1741        }
1742        unsafe { vtkPassInputTypeAlgorithm_destructor(self.0) }
1743        self.0 = core::ptr::null_mut();
1744    }
1745}
1746#[test]
1747fn test_vtkPassInputTypeAlgorithm_create_drop() {
1748    let obj = vtkPassInputTypeAlgorithm::new();
1749    let ptr = obj.0;
1750    assert!(!ptr.is_null());
1751    assert!(unsafe { !obj._get_ptr().is_null() });
1752    drop(obj);
1753    let new_obj = vtkPassInputTypeAlgorithm(ptr);
1754    assert!(unsafe { new_obj._get_ptr().is_null() });
1755}
1756/// Superclass for algorithms that produce only piecewise function as output
1757///
1758///
1759///
1760/// vtkPiecewiseFunctionAlgorithm is a convenience class to make writing algorithms
1761/// easier. It is also designed to help transition old algorithms to the new
1762/// pipeline architecture. There are some assumptions and defaults made by this
1763/// class you should be aware of. This class defaults such that your filter
1764/// will have one input port and one output port. If that is not the case
1765/// simply change it with SetNumberOfInputPorts etc. See this classes
1766/// constructor for the default. This class also provides a FillInputPortInfo
1767/// method that by default says that all inputs will be PiecewiseFunction. If that
1768/// isn't the case then please override this method in your subclass.
1769/// You should implement the subclass's algorithm into
1770/// RequestData( request, inputVec, outputVec).
1771#[allow(non_camel_case_types)]
1772pub struct vtkPiecewiseFunctionAlgorithm(*mut core::ffi::c_void);
1773impl vtkPiecewiseFunctionAlgorithm {
1774    /// Creates a new [vtkPiecewiseFunctionAlgorithm] wrapped inside `vtkNew`
1775    #[doc(alias = "vtkPiecewiseFunctionAlgorithm")]
1776    pub fn new() -> Self {
1777        unsafe extern "C" {
1778            fn vtkPiecewiseFunctionAlgorithm_new() -> *mut core::ffi::c_void;
1779        }
1780        Self(unsafe { &mut *vtkPiecewiseFunctionAlgorithm_new() })
1781    }
1782    #[cfg(test)]
1783    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1784        unsafe extern "C" {
1785            fn vtkPiecewiseFunctionAlgorithm_get_ptr(
1786                sself: *mut core::ffi::c_void,
1787            ) -> *mut core::ffi::c_void;
1788        }
1789        unsafe { vtkPiecewiseFunctionAlgorithm_get_ptr(self.0) }
1790    }
1791}
1792impl std::default::Default for vtkPiecewiseFunctionAlgorithm {
1793    fn default() -> Self {
1794        Self::new()
1795    }
1796}
1797impl Drop for vtkPiecewiseFunctionAlgorithm {
1798    fn drop(&mut self) {
1799        unsafe extern "C" {
1800            fn vtkPiecewiseFunctionAlgorithm_destructor(sself: *mut core::ffi::c_void);
1801        }
1802        unsafe { vtkPiecewiseFunctionAlgorithm_destructor(self.0) }
1803        self.0 = core::ptr::null_mut();
1804    }
1805}
1806#[test]
1807fn test_vtkPiecewiseFunctionAlgorithm_create_drop() {
1808    let obj = vtkPiecewiseFunctionAlgorithm::new();
1809    let ptr = obj.0;
1810    assert!(!ptr.is_null());
1811    assert!(unsafe { !obj._get_ptr().is_null() });
1812    drop(obj);
1813    let new_obj = vtkPiecewiseFunctionAlgorithm(ptr);
1814    assert!(unsafe { new_obj._get_ptr().is_null() });
1815}
1816///
1817#[allow(non_camel_case_types)]
1818pub struct vtkPiecewiseFunctionShiftScale(*mut core::ffi::c_void);
1819impl vtkPiecewiseFunctionShiftScale {
1820    /// Creates a new [vtkPiecewiseFunctionShiftScale] wrapped inside `vtkNew`
1821    #[doc(alias = "vtkPiecewiseFunctionShiftScale")]
1822    pub fn new() -> Self {
1823        unsafe extern "C" {
1824            fn vtkPiecewiseFunctionShiftScale_new() -> *mut core::ffi::c_void;
1825        }
1826        Self(unsafe { &mut *vtkPiecewiseFunctionShiftScale_new() })
1827    }
1828    #[cfg(test)]
1829    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1830        unsafe extern "C" {
1831            fn vtkPiecewiseFunctionShiftScale_get_ptr(
1832                sself: *mut core::ffi::c_void,
1833            ) -> *mut core::ffi::c_void;
1834        }
1835        unsafe { vtkPiecewiseFunctionShiftScale_get_ptr(self.0) }
1836    }
1837}
1838impl std::default::Default for vtkPiecewiseFunctionShiftScale {
1839    fn default() -> Self {
1840        Self::new()
1841    }
1842}
1843impl Drop for vtkPiecewiseFunctionShiftScale {
1844    fn drop(&mut self) {
1845        unsafe extern "C" {
1846            fn vtkPiecewiseFunctionShiftScale_destructor(sself: *mut core::ffi::c_void);
1847        }
1848        unsafe { vtkPiecewiseFunctionShiftScale_destructor(self.0) }
1849        self.0 = core::ptr::null_mut();
1850    }
1851}
1852#[test]
1853fn test_vtkPiecewiseFunctionShiftScale_create_drop() {
1854    let obj = vtkPiecewiseFunctionShiftScale::new();
1855    let ptr = obj.0;
1856    assert!(!ptr.is_null());
1857    assert!(unsafe { !obj._get_ptr().is_null() });
1858    drop(obj);
1859    let new_obj = vtkPiecewiseFunctionShiftScale(ptr);
1860    assert!(unsafe { new_obj._get_ptr().is_null() });
1861}
1862/// Superclass for algorithms that produce output of the same type as input
1863///
1864///
1865/// vtkPointSetAlgorithm is a convenience class to make writing algorithms
1866/// easier. It is also designed to help transition old algorithms to the new
1867/// pipeline architecture. There are some assumptions and defaults made by this
1868/// class you should be aware of. This class defaults such that your filter
1869/// will have one input port and one output port. If that is not the case
1870/// simply change it with SetNumberOfInputPorts etc. See this classes
1871/// constructor for the default. This class also provides a FillInputPortInfo
1872/// method that by default says that all inputs will be PointSet. If that
1873/// isn't the case then please override this method in your subclass.
1874/// You should implement the subclass's algorithm into
1875/// RequestData( request, inputVec, outputVec).
1876#[allow(non_camel_case_types)]
1877pub struct vtkPointSetAlgorithm(*mut core::ffi::c_void);
1878impl vtkPointSetAlgorithm {
1879    /// Creates a new [vtkPointSetAlgorithm] wrapped inside `vtkNew`
1880    #[doc(alias = "vtkPointSetAlgorithm")]
1881    pub fn new() -> Self {
1882        unsafe extern "C" {
1883            fn vtkPointSetAlgorithm_new() -> *mut core::ffi::c_void;
1884        }
1885        Self(unsafe { &mut *vtkPointSetAlgorithm_new() })
1886    }
1887    #[cfg(test)]
1888    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1889        unsafe extern "C" {
1890            fn vtkPointSetAlgorithm_get_ptr(
1891                sself: *mut core::ffi::c_void,
1892            ) -> *mut core::ffi::c_void;
1893        }
1894        unsafe { vtkPointSetAlgorithm_get_ptr(self.0) }
1895    }
1896}
1897impl std::default::Default for vtkPointSetAlgorithm {
1898    fn default() -> Self {
1899        Self::new()
1900    }
1901}
1902impl Drop for vtkPointSetAlgorithm {
1903    fn drop(&mut self) {
1904        unsafe extern "C" {
1905            fn vtkPointSetAlgorithm_destructor(sself: *mut core::ffi::c_void);
1906        }
1907        unsafe { vtkPointSetAlgorithm_destructor(self.0) }
1908        self.0 = core::ptr::null_mut();
1909    }
1910}
1911#[test]
1912fn test_vtkPointSetAlgorithm_create_drop() {
1913    let obj = vtkPointSetAlgorithm::new();
1914    let ptr = obj.0;
1915    assert!(!ptr.is_null());
1916    assert!(unsafe { !obj._get_ptr().is_null() });
1917    drop(obj);
1918    let new_obj = vtkPointSetAlgorithm(ptr);
1919    assert!(unsafe { new_obj._get_ptr().is_null() });
1920}
1921/// Superclass for algorithms that produce only polydata as output
1922///
1923///
1924///
1925/// vtkPolyDataAlgorithm is a convenience class to make writing algorithms
1926/// easier. It is also designed to help transition old algorithms to the new
1927/// pipeline architecture. There are some assumptions and defaults made by this
1928/// class you should be aware of. This class defaults such that your filter
1929/// will have one input port and one output port. If that is not the case
1930/// simply change it with SetNumberOfInputPorts etc. See this class
1931/// constructor for the default. This class also provides a FillInputPortInfo
1932/// method that by default says that all inputs will be PolyData. If that
1933/// isn't the case then please override this method in your subclass.
1934#[allow(non_camel_case_types)]
1935pub struct vtkPolyDataAlgorithm(*mut core::ffi::c_void);
1936impl vtkPolyDataAlgorithm {
1937    /// Creates a new [vtkPolyDataAlgorithm] wrapped inside `vtkNew`
1938    #[doc(alias = "vtkPolyDataAlgorithm")]
1939    pub fn new() -> Self {
1940        unsafe extern "C" {
1941            fn vtkPolyDataAlgorithm_new() -> *mut core::ffi::c_void;
1942        }
1943        Self(unsafe { &mut *vtkPolyDataAlgorithm_new() })
1944    }
1945    #[cfg(test)]
1946    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1947        unsafe extern "C" {
1948            fn vtkPolyDataAlgorithm_get_ptr(
1949                sself: *mut core::ffi::c_void,
1950            ) -> *mut core::ffi::c_void;
1951        }
1952        unsafe { vtkPolyDataAlgorithm_get_ptr(self.0) }
1953    }
1954}
1955impl std::default::Default for vtkPolyDataAlgorithm {
1956    fn default() -> Self {
1957        Self::new()
1958    }
1959}
1960impl Drop for vtkPolyDataAlgorithm {
1961    fn drop(&mut self) {
1962        unsafe extern "C" {
1963            fn vtkPolyDataAlgorithm_destructor(sself: *mut core::ffi::c_void);
1964        }
1965        unsafe { vtkPolyDataAlgorithm_destructor(self.0) }
1966        self.0 = core::ptr::null_mut();
1967    }
1968}
1969#[test]
1970fn test_vtkPolyDataAlgorithm_create_drop() {
1971    let obj = vtkPolyDataAlgorithm::new();
1972    let ptr = obj.0;
1973    assert!(!ptr.is_null());
1974    assert!(unsafe { !obj._get_ptr().is_null() });
1975    drop(obj);
1976    let new_obj = vtkPolyDataAlgorithm(ptr);
1977    assert!(unsafe { new_obj._get_ptr().is_null() });
1978}
1979/// Basic class to optionally replace vtkAlgorithm progress functionality.
1980///
1981///
1982/// When the basic functionality in vtkAlgorithm that reports progress is
1983/// not enough, a subclass of vtkProgressObserver can be used to provide
1984/// custom functionality.
1985/// The main use case for this is when an algorithm's RequestData() is
1986/// called from multiple threads in parallel - the basic functionality in
1987/// vtkAlgorithm is not thread safe. vtkSMPProgressObserver can
1988/// handle this situation by routing progress from each thread to a
1989/// thread local vtkProgressObserver, which will invoke events separately
1990/// for each thread.
1991#[allow(non_camel_case_types)]
1992pub struct vtkProgressObserver(*mut core::ffi::c_void);
1993impl vtkProgressObserver {
1994    /// Creates a new [vtkProgressObserver] wrapped inside `vtkNew`
1995    #[doc(alias = "vtkProgressObserver")]
1996    pub fn new() -> Self {
1997        unsafe extern "C" {
1998            fn vtkProgressObserver_new() -> *mut core::ffi::c_void;
1999        }
2000        Self(unsafe { &mut *vtkProgressObserver_new() })
2001    }
2002    #[cfg(test)]
2003    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2004        unsafe extern "C" {
2005            fn vtkProgressObserver_get_ptr(
2006                sself: *mut core::ffi::c_void,
2007            ) -> *mut core::ffi::c_void;
2008        }
2009        unsafe { vtkProgressObserver_get_ptr(self.0) }
2010    }
2011}
2012impl std::default::Default for vtkProgressObserver {
2013    fn default() -> Self {
2014        Self::new()
2015    }
2016}
2017impl Drop for vtkProgressObserver {
2018    fn drop(&mut self) {
2019        unsafe extern "C" {
2020            fn vtkProgressObserver_destructor(sself: *mut core::ffi::c_void);
2021        }
2022        unsafe { vtkProgressObserver_destructor(self.0) }
2023        self.0 = core::ptr::null_mut();
2024    }
2025}
2026#[test]
2027fn test_vtkProgressObserver_create_drop() {
2028    let obj = vtkProgressObserver::new();
2029    let ptr = obj.0;
2030    assert!(!ptr.is_null());
2031    assert!(unsafe { !obj._get_ptr().is_null() });
2032    drop(obj);
2033    let new_obj = vtkProgressObserver(ptr);
2034    assert!(unsafe { new_obj._get_ptr().is_null() });
2035}
2036/// Superclass for algorithms that produce only rectilinear grid as output
2037///
2038///
2039///
2040/// vtkRectilinearGridAlgorithm is a convenience class to make writing algorithms
2041/// easier. It is also designed to help transition old algorithms to the new
2042/// pipeline architecture. There are some assumptions and defaults made by this
2043/// class you should be aware of. This class defaults such that your filter
2044/// will have one input port and one output port. If that is not the case
2045/// simply change it with SetNumberOfInputPorts etc. See this classes
2046/// constructor for the default. This class also provides a FillInputPortInfo
2047/// method that by default says that all inputs will be RectilinearGrid. If that
2048/// isn't the case then please override this method in your subclass.
2049/// You should implement the subclass's algorithm into
2050/// RequestData( request, inputVec, outputVec).
2051#[allow(non_camel_case_types)]
2052pub struct vtkRectilinearGridAlgorithm(*mut core::ffi::c_void);
2053impl vtkRectilinearGridAlgorithm {
2054    /// Creates a new [vtkRectilinearGridAlgorithm] wrapped inside `vtkNew`
2055    #[doc(alias = "vtkRectilinearGridAlgorithm")]
2056    pub fn new() -> Self {
2057        unsafe extern "C" {
2058            fn vtkRectilinearGridAlgorithm_new() -> *mut core::ffi::c_void;
2059        }
2060        Self(unsafe { &mut *vtkRectilinearGridAlgorithm_new() })
2061    }
2062    #[cfg(test)]
2063    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2064        unsafe extern "C" {
2065            fn vtkRectilinearGridAlgorithm_get_ptr(
2066                sself: *mut core::ffi::c_void,
2067            ) -> *mut core::ffi::c_void;
2068        }
2069        unsafe { vtkRectilinearGridAlgorithm_get_ptr(self.0) }
2070    }
2071}
2072impl std::default::Default for vtkRectilinearGridAlgorithm {
2073    fn default() -> Self {
2074        Self::new()
2075    }
2076}
2077impl Drop for vtkRectilinearGridAlgorithm {
2078    fn drop(&mut self) {
2079        unsafe extern "C" {
2080            fn vtkRectilinearGridAlgorithm_destructor(sself: *mut core::ffi::c_void);
2081        }
2082        unsafe { vtkRectilinearGridAlgorithm_destructor(self.0) }
2083        self.0 = core::ptr::null_mut();
2084    }
2085}
2086#[test]
2087fn test_vtkRectilinearGridAlgorithm_create_drop() {
2088    let obj = vtkRectilinearGridAlgorithm::new();
2089    let ptr = obj.0;
2090    assert!(!ptr.is_null());
2091    assert!(unsafe { !obj._get_ptr().is_null() });
2092    drop(obj);
2093    let new_obj = vtkRectilinearGridAlgorithm(ptr);
2094    assert!(unsafe { new_obj._get_ptr().is_null() });
2095}
2096/// Progress observer that is thread safe
2097///
2098///
2099/// vtkSMPProgressObserver is designed to handle progress events coming
2100/// from an algorithm in a thread safe way. It does this by using
2101/// thread local objects that it updates. To receive the progress
2102/// information, one has to listen to the local observer in the same
2103/// thread. Since the execution will be somewhat load balanced,
2104/// it may be enough to do this only on the main thread.
2105#[allow(non_camel_case_types)]
2106pub struct vtkSMPProgressObserver(*mut core::ffi::c_void);
2107impl vtkSMPProgressObserver {
2108    /// Creates a new [vtkSMPProgressObserver] wrapped inside `vtkNew`
2109    #[doc(alias = "vtkSMPProgressObserver")]
2110    pub fn new() -> Self {
2111        unsafe extern "C" {
2112            fn vtkSMPProgressObserver_new() -> *mut core::ffi::c_void;
2113        }
2114        Self(unsafe { &mut *vtkSMPProgressObserver_new() })
2115    }
2116    #[cfg(test)]
2117    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2118        unsafe extern "C" {
2119            fn vtkSMPProgressObserver_get_ptr(
2120                sself: *mut core::ffi::c_void,
2121            ) -> *mut core::ffi::c_void;
2122        }
2123        unsafe { vtkSMPProgressObserver_get_ptr(self.0) }
2124    }
2125}
2126impl std::default::Default for vtkSMPProgressObserver {
2127    fn default() -> Self {
2128        Self::new()
2129    }
2130}
2131impl Drop for vtkSMPProgressObserver {
2132    fn drop(&mut self) {
2133        unsafe extern "C" {
2134            fn vtkSMPProgressObserver_destructor(sself: *mut core::ffi::c_void);
2135        }
2136        unsafe { vtkSMPProgressObserver_destructor(self.0) }
2137        self.0 = core::ptr::null_mut();
2138    }
2139}
2140#[test]
2141fn test_vtkSMPProgressObserver_create_drop() {
2142    let obj = vtkSMPProgressObserver::new();
2143    let ptr = obj.0;
2144    assert!(!ptr.is_null());
2145    assert!(unsafe { !obj._get_ptr().is_null() });
2146    drop(obj);
2147    let new_obj = vtkSMPProgressObserver(ptr);
2148    assert!(unsafe { new_obj._get_ptr().is_null() });
2149}
2150/// Superclass for algorithms that produce only Selection as output
2151///
2152///
2153///
2154/// vtkSelectionAlgorithm is a convenience class to make writing algorithms
2155/// easier. It is also designed to help transition old algorithms to the new
2156/// pipeline edgehitecture. There are some assumptions and defaults made by this
2157/// class you should be aware of. This class defaults such that your filter
2158/// will have one input port and one output port. If that is not the case
2159/// simply change it with SetNumberOfInputPorts etc. See this class
2160/// constructor for the default. This class also provides a FillInputPortInfo
2161/// method that by default says that all inputs will be Selection. If that
2162/// isn't the case then please override this method in your subclass.
2163/// You should implement the subclass's algorithm into
2164/// RequestData( request, inputVec, outputVec).
2165///
2166/// @par Thanks:
2167/// Thanks to Patricia Crossno, Ken Moreland, Andrew Wilson and Brian Wylie from
2168/// Sandia National Laboratories for their help in developing this class.
2169#[allow(non_camel_case_types)]
2170pub struct vtkSelectionAlgorithm(*mut core::ffi::c_void);
2171impl vtkSelectionAlgorithm {
2172    /// Creates a new [vtkSelectionAlgorithm] wrapped inside `vtkNew`
2173    #[doc(alias = "vtkSelectionAlgorithm")]
2174    pub fn new() -> Self {
2175        unsafe extern "C" {
2176            fn vtkSelectionAlgorithm_new() -> *mut core::ffi::c_void;
2177        }
2178        Self(unsafe { &mut *vtkSelectionAlgorithm_new() })
2179    }
2180    #[cfg(test)]
2181    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2182        unsafe extern "C" {
2183            fn vtkSelectionAlgorithm_get_ptr(
2184                sself: *mut core::ffi::c_void,
2185            ) -> *mut core::ffi::c_void;
2186        }
2187        unsafe { vtkSelectionAlgorithm_get_ptr(self.0) }
2188    }
2189}
2190impl std::default::Default for vtkSelectionAlgorithm {
2191    fn default() -> Self {
2192        Self::new()
2193    }
2194}
2195impl Drop for vtkSelectionAlgorithm {
2196    fn drop(&mut self) {
2197        unsafe extern "C" {
2198            fn vtkSelectionAlgorithm_destructor(sself: *mut core::ffi::c_void);
2199        }
2200        unsafe { vtkSelectionAlgorithm_destructor(self.0) }
2201        self.0 = core::ptr::null_mut();
2202    }
2203}
2204#[test]
2205fn test_vtkSelectionAlgorithm_create_drop() {
2206    let obj = vtkSelectionAlgorithm::new();
2207    let ptr = obj.0;
2208    assert!(!ptr.is_null());
2209    assert!(unsafe { !obj._get_ptr().is_null() });
2210    drop(obj);
2211    let new_obj = vtkSelectionAlgorithm(ptr);
2212    assert!(unsafe { new_obj._get_ptr().is_null() });
2213}
2214/// organize data according to scalar values (used to accelerate contouring operations)
2215///
2216///
2217/// vtkSimpleScalarTree creates a pointerless binary tree that helps search
2218/// for cells that lie within a particular scalar range. This object is used
2219/// to accelerate some contouring (and other scalar-based techniques).
2220///
2221/// The tree consists of an array of (min,max) scalar range pairs per
2222/// node in the tree. The (min,max) range is determined from looking at
2223/// the range of the children of the tree node. If the node is a leaf,
2224/// then the range is determined by scanning the range of scalar data
2225/// in n cells in the dataset. The n cells are determined by arbitrary
2226/// selecting cell ids from id(i) to id(i+n), and where n is specified
2227/// using the BranchingFactor ivar. Note that leaf node i=0 contains
2228/// the scalar range computed from cell ids (0,n-1); leaf node i=1
2229/// contains the range from cell ids (n,2n-1); and so on. The
2230/// implication is that there are no direct lists of cell ids per leaf
2231/// node, instead the cell ids are implicitly known. Despite the
2232/// arbitrary grouping of cells, in practice this scalar tree actually
2233/// performs quite well due to spatial/data coherence.
2234///
2235/// This class has an API that supports both serial and parallel
2236/// operation.  The parallel API enables the using class to grab arrays
2237/// (or batches) of cells that potentially intersect the
2238/// isocontour. These batches can then be processed in separate
2239/// threads.
2240///
2241/// @sa
2242/// vtkScalarTree vtkSpanSpace
2243#[allow(non_camel_case_types)]
2244pub struct vtkSimpleScalarTree(*mut core::ffi::c_void);
2245impl vtkSimpleScalarTree {
2246    /// Creates a new [vtkSimpleScalarTree] wrapped inside `vtkNew`
2247    #[doc(alias = "vtkSimpleScalarTree")]
2248    pub fn new() -> Self {
2249        unsafe extern "C" {
2250            fn vtkSimpleScalarTree_new() -> *mut core::ffi::c_void;
2251        }
2252        Self(unsafe { &mut *vtkSimpleScalarTree_new() })
2253    }
2254    #[cfg(test)]
2255    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2256        unsafe extern "C" {
2257            fn vtkSimpleScalarTree_get_ptr(
2258                sself: *mut core::ffi::c_void,
2259            ) -> *mut core::ffi::c_void;
2260        }
2261        unsafe { vtkSimpleScalarTree_get_ptr(self.0) }
2262    }
2263}
2264impl std::default::Default for vtkSimpleScalarTree {
2265    fn default() -> Self {
2266        Self::new()
2267    }
2268}
2269impl Drop for vtkSimpleScalarTree {
2270    fn drop(&mut self) {
2271        unsafe extern "C" {
2272            fn vtkSimpleScalarTree_destructor(sself: *mut core::ffi::c_void);
2273        }
2274        unsafe { vtkSimpleScalarTree_destructor(self.0) }
2275        self.0 = core::ptr::null_mut();
2276    }
2277}
2278#[test]
2279fn test_vtkSimpleScalarTree_create_drop() {
2280    let obj = vtkSimpleScalarTree::new();
2281    let ptr = obj.0;
2282    assert!(!ptr.is_null());
2283    assert!(unsafe { !obj._get_ptr().is_null() });
2284    drop(obj);
2285    let new_obj = vtkSimpleScalarTree(ptr);
2286    assert!(unsafe { new_obj._get_ptr().is_null() });
2287}
2288/// organize data according to scalar span space
2289///
2290///
2291/// This is a helper class used to accelerate contouring operations. Given an
2292/// dataset, it organizes the dataset cells into a 2D binned space, with
2293/// coordinate axes (scalar_min,scalar_max). This so-called span space can
2294/// then be traversed quickly to find the cells that intersect a specified
2295/// contour value.
2296///
2297/// This class has an API that supports both serial and parallel
2298/// operation.  The parallel API enables the using class to grab arrays
2299/// (or batches) of cells that lie along a particular row in the span
2300/// space. These arrays can then be processed separately or in parallel.
2301///
2302/// Learn more about span space in these two publications: 1) "A Near
2303/// Optimal Isosorface Extraction Algorithm Using the Span Space."
2304/// Yarden Livnat et al. and 2) Isosurfacing in Span Space with Utmost
2305/// Efficiency." Han-Wei Shen et al.
2306///
2307/// @sa
2308/// vtkScalarTree vtkSimpleScalarTree
2309#[allow(non_camel_case_types)]
2310pub struct vtkSpanSpace(*mut core::ffi::c_void);
2311impl vtkSpanSpace {
2312    /// Creates a new [vtkSpanSpace] wrapped inside `vtkNew`
2313    #[doc(alias = "vtkSpanSpace")]
2314    pub fn new() -> Self {
2315        unsafe extern "C" {
2316            fn vtkSpanSpace_new() -> *mut core::ffi::c_void;
2317        }
2318        Self(unsafe { &mut *vtkSpanSpace_new() })
2319    }
2320    #[cfg(test)]
2321    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2322        unsafe extern "C" {
2323            fn vtkSpanSpace_get_ptr(
2324                sself: *mut core::ffi::c_void,
2325            ) -> *mut core::ffi::c_void;
2326        }
2327        unsafe { vtkSpanSpace_get_ptr(self.0) }
2328    }
2329}
2330impl std::default::Default for vtkSpanSpace {
2331    fn default() -> Self {
2332        Self::new()
2333    }
2334}
2335impl Drop for vtkSpanSpace {
2336    fn drop(&mut self) {
2337        unsafe extern "C" {
2338            fn vtkSpanSpace_destructor(sself: *mut core::ffi::c_void);
2339        }
2340        unsafe { vtkSpanSpace_destructor(self.0) }
2341        self.0 = core::ptr::null_mut();
2342    }
2343}
2344#[test]
2345fn test_vtkSpanSpace_create_drop() {
2346    let obj = vtkSpanSpace::new();
2347    let ptr = obj.0;
2348    assert!(!ptr.is_null());
2349    assert!(unsafe { !obj._get_ptr().is_null() });
2350    drop(obj);
2351    let new_obj = vtkSpanSpace(ptr);
2352    assert!(unsafe { new_obj._get_ptr().is_null() });
2353}
2354/// class to build and traverse sphere trees
2355///
2356///
2357/// vtkSphereTree is a helper class used to build and traverse sphere
2358/// trees. Various types of trees can be constructed for different VTK
2359/// dataset types, as well well as different approaches to organize
2360/// the tree into hierarchies.
2361///
2362/// Typically building a complete sphere tree consists of two parts: 1)
2363/// creating spheres for each cell in the dataset, then 2) creating an
2364/// organizing hierarchy. The structure of the hierarchy varies depending on
2365/// the topological characteristics of the dataset.
2366///
2367/// Once the tree is constructed, various geometric operations are available
2368/// for quickly selecting cells based on sphere tree operations; for example,
2369/// process all cells intersecting a plane (i.e., use the sphere tree to identify
2370/// candidate cells for plane intersection).
2371///
2372/// This class does not necessarily create optimal sphere trees because
2373/// some of its requirements (fast build time, provide simple reference
2374/// code, a single bounding sphere per cell, etc.) precludes optimal
2375/// performance. It is also oriented to computing on cells versus the
2376/// classic problem of collision detection for polygonal models. For
2377/// more information you want to read Gareth Bradshaw's PhD thesis
2378/// "Bounding Volume Hierarchies for Level-of-Detail Collision
2379/// Handling" which does a nice job of laying out the challenges and
2380/// important algorithms relative to sphere trees and BVH (bounding
2381/// volume hierarchies).
2382///
2383/// @sa
2384/// vtkSphereTreeFilter vtkPlaneCutter
2385#[allow(non_camel_case_types)]
2386pub struct vtkSphereTree(*mut core::ffi::c_void);
2387impl vtkSphereTree {
2388    /// Creates a new [vtkSphereTree] wrapped inside `vtkNew`
2389    #[doc(alias = "vtkSphereTree")]
2390    pub fn new() -> Self {
2391        unsafe extern "C" {
2392            fn vtkSphereTree_new() -> *mut core::ffi::c_void;
2393        }
2394        Self(unsafe { &mut *vtkSphereTree_new() })
2395    }
2396    #[cfg(test)]
2397    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2398        unsafe extern "C" {
2399            fn vtkSphereTree_get_ptr(
2400                sself: *mut core::ffi::c_void,
2401            ) -> *mut core::ffi::c_void;
2402        }
2403        unsafe { vtkSphereTree_get_ptr(self.0) }
2404    }
2405}
2406impl std::default::Default for vtkSphereTree {
2407    fn default() -> Self {
2408        Self::new()
2409    }
2410}
2411impl Drop for vtkSphereTree {
2412    fn drop(&mut self) {
2413        unsafe extern "C" {
2414            fn vtkSphereTree_destructor(sself: *mut core::ffi::c_void);
2415        }
2416        unsafe { vtkSphereTree_destructor(self.0) }
2417        self.0 = core::ptr::null_mut();
2418    }
2419}
2420#[test]
2421fn test_vtkSphereTree_create_drop() {
2422    let obj = vtkSphereTree::new();
2423    let ptr = obj.0;
2424    assert!(!ptr.is_null());
2425    assert!(unsafe { !obj._get_ptr().is_null() });
2426    drop(obj);
2427    let new_obj = vtkSphereTree(ptr);
2428    assert!(unsafe { new_obj._get_ptr().is_null() });
2429}
2430/// Executive supporting partial updates.
2431///
2432///
2433/// vtkStreamingDemandDrivenPipeline is an executive that supports
2434/// updating only a portion of the data set in the pipeline.  This is
2435/// the style of pipeline update that is provided by the old-style VTK
2436/// 4.x pipeline.  Instead of always updating an entire data set, this
2437/// executive supports asking for pieces or sub-extents.
2438#[allow(non_camel_case_types)]
2439pub struct vtkStreamingDemandDrivenPipeline(*mut core::ffi::c_void);
2440impl vtkStreamingDemandDrivenPipeline {
2441    /// Creates a new [vtkStreamingDemandDrivenPipeline] wrapped inside `vtkNew`
2442    #[doc(alias = "vtkStreamingDemandDrivenPipeline")]
2443    pub fn new() -> Self {
2444        unsafe extern "C" {
2445            fn vtkStreamingDemandDrivenPipeline_new() -> *mut core::ffi::c_void;
2446        }
2447        Self(unsafe { &mut *vtkStreamingDemandDrivenPipeline_new() })
2448    }
2449    #[cfg(test)]
2450    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2451        unsafe extern "C" {
2452            fn vtkStreamingDemandDrivenPipeline_get_ptr(
2453                sself: *mut core::ffi::c_void,
2454            ) -> *mut core::ffi::c_void;
2455        }
2456        unsafe { vtkStreamingDemandDrivenPipeline_get_ptr(self.0) }
2457    }
2458}
2459impl std::default::Default for vtkStreamingDemandDrivenPipeline {
2460    fn default() -> Self {
2461        Self::new()
2462    }
2463}
2464impl Drop for vtkStreamingDemandDrivenPipeline {
2465    fn drop(&mut self) {
2466        unsafe extern "C" {
2467            fn vtkStreamingDemandDrivenPipeline_destructor(
2468                sself: *mut core::ffi::c_void,
2469            );
2470        }
2471        unsafe { vtkStreamingDemandDrivenPipeline_destructor(self.0) }
2472        self.0 = core::ptr::null_mut();
2473    }
2474}
2475#[test]
2476fn test_vtkStreamingDemandDrivenPipeline_create_drop() {
2477    let obj = vtkStreamingDemandDrivenPipeline::new();
2478    let ptr = obj.0;
2479    assert!(!ptr.is_null());
2480    assert!(unsafe { !obj._get_ptr().is_null() });
2481    drop(obj);
2482    let new_obj = vtkStreamingDemandDrivenPipeline(ptr);
2483    assert!(unsafe { new_obj._get_ptr().is_null() });
2484}
2485/// Superclass for algorithms that produce only structured grid as output
2486///
2487///
2488///
2489/// vtkStructuredGridAlgorithm is a convenience class to make writing algorithms
2490/// easier. It is also designed to help transition old algorithms to the new
2491/// pipeline architecture. There are some assumptions and defaults made by this
2492/// class you should be aware of. This class defaults such that your filter
2493/// will have one input port and one output port. If that is not the case
2494/// simply change it with SetNumberOfInputPorts etc. See this classes
2495/// constructor for the default. This class also provides a FillInputPortInfo
2496/// method that by default says that all inputs will be StructuredGrid. If that
2497/// isn't the case then please override this method in your subclass.
2498#[allow(non_camel_case_types)]
2499pub struct vtkStructuredGridAlgorithm(*mut core::ffi::c_void);
2500impl vtkStructuredGridAlgorithm {
2501    /// Creates a new [vtkStructuredGridAlgorithm] wrapped inside `vtkNew`
2502    #[doc(alias = "vtkStructuredGridAlgorithm")]
2503    pub fn new() -> Self {
2504        unsafe extern "C" {
2505            fn vtkStructuredGridAlgorithm_new() -> *mut core::ffi::c_void;
2506        }
2507        Self(unsafe { &mut *vtkStructuredGridAlgorithm_new() })
2508    }
2509    #[cfg(test)]
2510    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2511        unsafe extern "C" {
2512            fn vtkStructuredGridAlgorithm_get_ptr(
2513                sself: *mut core::ffi::c_void,
2514            ) -> *mut core::ffi::c_void;
2515        }
2516        unsafe { vtkStructuredGridAlgorithm_get_ptr(self.0) }
2517    }
2518}
2519impl std::default::Default for vtkStructuredGridAlgorithm {
2520    fn default() -> Self {
2521        Self::new()
2522    }
2523}
2524impl Drop for vtkStructuredGridAlgorithm {
2525    fn drop(&mut self) {
2526        unsafe extern "C" {
2527            fn vtkStructuredGridAlgorithm_destructor(sself: *mut core::ffi::c_void);
2528        }
2529        unsafe { vtkStructuredGridAlgorithm_destructor(self.0) }
2530        self.0 = core::ptr::null_mut();
2531    }
2532}
2533#[test]
2534fn test_vtkStructuredGridAlgorithm_create_drop() {
2535    let obj = vtkStructuredGridAlgorithm::new();
2536    let ptr = obj.0;
2537    assert!(!ptr.is_null());
2538    assert!(unsafe { !obj._get_ptr().is_null() });
2539    drop(obj);
2540    let new_obj = vtkStructuredGridAlgorithm(ptr);
2541    assert!(unsafe { new_obj._get_ptr().is_null() });
2542}
2543/// Superclass for algorithms that produce only vtkTables as output
2544///
2545///
2546///
2547/// vtkTableAlgorithm is a convenience class to make writing algorithms
2548/// easier. It is also designed to help transition old algorithms to the new
2549/// pipeline architecture. There are some assumptions and defaults made by this
2550/// class you should be aware of. This class defaults such that your filter
2551/// will have one input port and one output port. If that is not the case
2552/// simply change it with SetNumberOfInputPorts etc. See this class
2553/// constructor for the default. This class also provides a FillInputPortInfo
2554/// method that by default says that all inputs will be Tree. If that
2555/// isn't the case then please override this method in your subclass.
2556///
2557/// @par Thanks:
2558/// Thanks to Brian Wylie for creating this class.
2559#[allow(non_camel_case_types)]
2560pub struct vtkTableAlgorithm(*mut core::ffi::c_void);
2561impl vtkTableAlgorithm {
2562    /// Creates a new [vtkTableAlgorithm] wrapped inside `vtkNew`
2563    #[doc(alias = "vtkTableAlgorithm")]
2564    pub fn new() -> Self {
2565        unsafe extern "C" {
2566            fn vtkTableAlgorithm_new() -> *mut core::ffi::c_void;
2567        }
2568        Self(unsafe { &mut *vtkTableAlgorithm_new() })
2569    }
2570    #[cfg(test)]
2571    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2572        unsafe extern "C" {
2573            fn vtkTableAlgorithm_get_ptr(
2574                sself: *mut core::ffi::c_void,
2575            ) -> *mut core::ffi::c_void;
2576        }
2577        unsafe { vtkTableAlgorithm_get_ptr(self.0) }
2578    }
2579}
2580impl std::default::Default for vtkTableAlgorithm {
2581    fn default() -> Self {
2582        Self::new()
2583    }
2584}
2585impl Drop for vtkTableAlgorithm {
2586    fn drop(&mut self) {
2587        unsafe extern "C" {
2588            fn vtkTableAlgorithm_destructor(sself: *mut core::ffi::c_void);
2589        }
2590        unsafe { vtkTableAlgorithm_destructor(self.0) }
2591        self.0 = core::ptr::null_mut();
2592    }
2593}
2594#[test]
2595fn test_vtkTableAlgorithm_create_drop() {
2596    let obj = vtkTableAlgorithm::new();
2597    let ptr = obj.0;
2598    assert!(!ptr.is_null());
2599    assert!(unsafe { !obj._get_ptr().is_null() });
2600    drop(obj);
2601    let new_obj = vtkTableAlgorithm(ptr);
2602    assert!(unsafe { new_obj._get_ptr().is_null() });
2603}
2604/// Executive that works in parallel
2605///
2606///
2607/// vtkThreadedCompositeDataPipeline processes a composite data object in
2608/// parallel using the SMP framework. It does this by creating a vector of
2609/// data objects (the pieces of the composite data) and processing them
2610/// using vtkSMPTools::For. Note that this requires that the
2611/// algorithm implement all pipeline passes in a re-entrant way. It should
2612/// store/retrieve all state changes using input and output information
2613/// objects, which are unique to each thread.
2614#[allow(non_camel_case_types)]
2615pub struct vtkThreadedCompositeDataPipeline(*mut core::ffi::c_void);
2616impl vtkThreadedCompositeDataPipeline {
2617    /// Creates a new [vtkThreadedCompositeDataPipeline] wrapped inside `vtkNew`
2618    #[doc(alias = "vtkThreadedCompositeDataPipeline")]
2619    pub fn new() -> Self {
2620        unsafe extern "C" {
2621            fn vtkThreadedCompositeDataPipeline_new() -> *mut core::ffi::c_void;
2622        }
2623        Self(unsafe { &mut *vtkThreadedCompositeDataPipeline_new() })
2624    }
2625    #[cfg(test)]
2626    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2627        unsafe extern "C" {
2628            fn vtkThreadedCompositeDataPipeline_get_ptr(
2629                sself: *mut core::ffi::c_void,
2630            ) -> *mut core::ffi::c_void;
2631        }
2632        unsafe { vtkThreadedCompositeDataPipeline_get_ptr(self.0) }
2633    }
2634}
2635impl std::default::Default for vtkThreadedCompositeDataPipeline {
2636    fn default() -> Self {
2637        Self::new()
2638    }
2639}
2640impl Drop for vtkThreadedCompositeDataPipeline {
2641    fn drop(&mut self) {
2642        unsafe extern "C" {
2643            fn vtkThreadedCompositeDataPipeline_destructor(
2644                sself: *mut core::ffi::c_void,
2645            );
2646        }
2647        unsafe { vtkThreadedCompositeDataPipeline_destructor(self.0) }
2648        self.0 = core::ptr::null_mut();
2649    }
2650}
2651#[test]
2652fn test_vtkThreadedCompositeDataPipeline_create_drop() {
2653    let obj = vtkThreadedCompositeDataPipeline::new();
2654    let ptr = obj.0;
2655    assert!(!ptr.is_null());
2656    assert!(unsafe { !obj._get_ptr().is_null() });
2657    drop(obj);
2658    let new_obj = vtkThreadedCompositeDataPipeline(ptr);
2659    assert!(unsafe { new_obj._get_ptr().is_null() });
2660}
2661/// vtkExecutionRange using time to dispatch in a vtkForEach sub-pipeline
2662///
2663///
2664/// vtkTimeRange is an execution range for the vtkForEach, that split execution by time steps.
2665/// The resulting sub-pipeline will be executed once for each time step of the input dataset.
2666///
2667/// @sa vtkForEach, vtkExecutionRange, vtkTimeRange
2668#[allow(non_camel_case_types)]
2669pub struct vtkTimeRange(*mut core::ffi::c_void);
2670impl vtkTimeRange {
2671    /// Creates a new [vtkTimeRange] wrapped inside `vtkNew`
2672    #[doc(alias = "vtkTimeRange")]
2673    pub fn new() -> Self {
2674        unsafe extern "C" {
2675            fn vtkTimeRange_new() -> *mut core::ffi::c_void;
2676        }
2677        Self(unsafe { &mut *vtkTimeRange_new() })
2678    }
2679    #[cfg(test)]
2680    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2681        unsafe extern "C" {
2682            fn vtkTimeRange_get_ptr(
2683                sself: *mut core::ffi::c_void,
2684            ) -> *mut core::ffi::c_void;
2685        }
2686        unsafe { vtkTimeRange_get_ptr(self.0) }
2687    }
2688}
2689impl std::default::Default for vtkTimeRange {
2690    fn default() -> Self {
2691        Self::new()
2692    }
2693}
2694impl Drop for vtkTimeRange {
2695    fn drop(&mut self) {
2696        unsafe extern "C" {
2697            fn vtkTimeRange_destructor(sself: *mut core::ffi::c_void);
2698        }
2699        unsafe { vtkTimeRange_destructor(self.0) }
2700        self.0 = core::ptr::null_mut();
2701    }
2702}
2703#[test]
2704fn test_vtkTimeRange_create_drop() {
2705    let obj = vtkTimeRange::new();
2706    let ptr = obj.0;
2707    assert!(!ptr.is_null());
2708    assert!(unsafe { !obj._get_ptr().is_null() });
2709    drop(obj);
2710    let new_obj = vtkTimeRange(ptr);
2711    assert!(unsafe { new_obj._get_ptr().is_null() });
2712}
2713/// Superclass for algorithms that produce only Tree as output
2714///
2715///
2716///
2717/// vtkTreeAlgorithm is a convenience class to make writing algorithms
2718/// easier. It is also designed to help transition old algorithms to the new
2719/// pipeline edgehitecture. There are some assumptions and defaults made by this
2720/// class you should be aware of. This class defaults such that your filter
2721/// will have one input port and one output port. If that is not the case
2722/// simply change it with SetNumberOfInputPorts etc. See this class
2723/// constructor for the default. This class also provides a FillInputPortInfo
2724/// method that by default says that all inputs will be Tree. If that
2725/// isn't the case then please override this method in your subclass.
2726#[allow(non_camel_case_types)]
2727pub struct vtkTreeAlgorithm(*mut core::ffi::c_void);
2728impl vtkTreeAlgorithm {
2729    /// Creates a new [vtkTreeAlgorithm] wrapped inside `vtkNew`
2730    #[doc(alias = "vtkTreeAlgorithm")]
2731    pub fn new() -> Self {
2732        unsafe extern "C" {
2733            fn vtkTreeAlgorithm_new() -> *mut core::ffi::c_void;
2734        }
2735        Self(unsafe { &mut *vtkTreeAlgorithm_new() })
2736    }
2737    #[cfg(test)]
2738    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2739        unsafe extern "C" {
2740            fn vtkTreeAlgorithm_get_ptr(
2741                sself: *mut core::ffi::c_void,
2742            ) -> *mut core::ffi::c_void;
2743        }
2744        unsafe { vtkTreeAlgorithm_get_ptr(self.0) }
2745    }
2746}
2747impl std::default::Default for vtkTreeAlgorithm {
2748    fn default() -> Self {
2749        Self::new()
2750    }
2751}
2752impl Drop for vtkTreeAlgorithm {
2753    fn drop(&mut self) {
2754        unsafe extern "C" {
2755            fn vtkTreeAlgorithm_destructor(sself: *mut core::ffi::c_void);
2756        }
2757        unsafe { vtkTreeAlgorithm_destructor(self.0) }
2758        self.0 = core::ptr::null_mut();
2759    }
2760}
2761#[test]
2762fn test_vtkTreeAlgorithm_create_drop() {
2763    let obj = vtkTreeAlgorithm::new();
2764    let ptr = obj.0;
2765    assert!(!ptr.is_null());
2766    assert!(unsafe { !obj._get_ptr().is_null() });
2767    drop(obj);
2768    let new_obj = vtkTreeAlgorithm(ptr);
2769    assert!(unsafe { new_obj._get_ptr().is_null() });
2770}
2771/// Consumer to consume data off of a pipeline.
2772///
2773///
2774/// vtkTrivialConsumer caps off a pipeline so that no output data is left
2775/// hanging around when a pipeline executes when data is set to be released (see
2776/// vtkDataObject::SetGlobalReleaseDataFlag). This is intended to be used for
2777/// tools such as Catalyst and not end users.
2778#[allow(non_camel_case_types)]
2779pub struct vtkTrivialConsumer(*mut core::ffi::c_void);
2780impl vtkTrivialConsumer {
2781    /// Creates a new [vtkTrivialConsumer] wrapped inside `vtkNew`
2782    #[doc(alias = "vtkTrivialConsumer")]
2783    pub fn new() -> Self {
2784        unsafe extern "C" {
2785            fn vtkTrivialConsumer_new() -> *mut core::ffi::c_void;
2786        }
2787        Self(unsafe { &mut *vtkTrivialConsumer_new() })
2788    }
2789    #[cfg(test)]
2790    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2791        unsafe extern "C" {
2792            fn vtkTrivialConsumer_get_ptr(
2793                sself: *mut core::ffi::c_void,
2794            ) -> *mut core::ffi::c_void;
2795        }
2796        unsafe { vtkTrivialConsumer_get_ptr(self.0) }
2797    }
2798}
2799impl std::default::Default for vtkTrivialConsumer {
2800    fn default() -> Self {
2801        Self::new()
2802    }
2803}
2804impl Drop for vtkTrivialConsumer {
2805    fn drop(&mut self) {
2806        unsafe extern "C" {
2807            fn vtkTrivialConsumer_destructor(sself: *mut core::ffi::c_void);
2808        }
2809        unsafe { vtkTrivialConsumer_destructor(self.0) }
2810        self.0 = core::ptr::null_mut();
2811    }
2812}
2813#[test]
2814fn test_vtkTrivialConsumer_create_drop() {
2815    let obj = vtkTrivialConsumer::new();
2816    let ptr = obj.0;
2817    assert!(!ptr.is_null());
2818    assert!(unsafe { !obj._get_ptr().is_null() });
2819    drop(obj);
2820    let new_obj = vtkTrivialConsumer(ptr);
2821    assert!(unsafe { new_obj._get_ptr().is_null() });
2822}
2823/// Producer for stand-alone data objects.
2824///
2825///
2826/// vtkTrivialProducer allows stand-alone data objects to be connected
2827/// as inputs in a pipeline.  All data objects that are connected to a
2828/// pipeline involving vtkAlgorithm must have a producer.  This trivial
2829/// producer allows data objects that are hand-constructed in a program
2830/// without another vtk producer to be connected.
2831#[allow(non_camel_case_types)]
2832pub struct vtkTrivialProducer(*mut core::ffi::c_void);
2833impl vtkTrivialProducer {
2834    /// Creates a new [vtkTrivialProducer] wrapped inside `vtkNew`
2835    #[doc(alias = "vtkTrivialProducer")]
2836    pub fn new() -> Self {
2837        unsafe extern "C" {
2838            fn vtkTrivialProducer_new() -> *mut core::ffi::c_void;
2839        }
2840        Self(unsafe { &mut *vtkTrivialProducer_new() })
2841    }
2842    #[cfg(test)]
2843    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2844        unsafe extern "C" {
2845            fn vtkTrivialProducer_get_ptr(
2846                sself: *mut core::ffi::c_void,
2847            ) -> *mut core::ffi::c_void;
2848        }
2849        unsafe { vtkTrivialProducer_get_ptr(self.0) }
2850    }
2851}
2852impl std::default::Default for vtkTrivialProducer {
2853    fn default() -> Self {
2854        Self::new()
2855    }
2856}
2857impl Drop for vtkTrivialProducer {
2858    fn drop(&mut self) {
2859        unsafe extern "C" {
2860            fn vtkTrivialProducer_destructor(sself: *mut core::ffi::c_void);
2861        }
2862        unsafe { vtkTrivialProducer_destructor(self.0) }
2863        self.0 = core::ptr::null_mut();
2864    }
2865}
2866#[test]
2867fn test_vtkTrivialProducer_create_drop() {
2868    let obj = vtkTrivialProducer::new();
2869    let ptr = obj.0;
2870    assert!(!ptr.is_null());
2871    assert!(unsafe { !obj._get_ptr().is_null() });
2872    drop(obj);
2873    let new_obj = vtkTrivialProducer(ptr);
2874    assert!(unsafe { new_obj._get_ptr().is_null() });
2875}
2876/// Superclass for algorithms that produce undirected graph as output
2877///
2878///
2879///
2880/// vtkUndirectedGraphAlgorithm is a convenience class to make writing algorithms
2881/// easier. It is also designed to help transition old algorithms to the new
2882/// pipeline edgehitecture. There are some assumptions and defaults made by this
2883/// class you should be aware of. This class defaults such that your filter
2884/// will have one input port and one output port. If that is not the case
2885/// simply change it with SetNumberOfInputPorts etc. See this class
2886/// constructor for the default. This class also provides a FillInputPortInfo
2887/// method that by default says that all inputs will be Graph. If that
2888/// isn't the case then please override this method in your subclass.
2889///
2890/// @par Thanks:
2891/// Thanks to Patricia Crossno, Ken Moreland, Andrew Wilson and Brian Wylie from
2892/// Sandia National Laboratories for their help in developing this class.
2893#[allow(non_camel_case_types)]
2894pub struct vtkUndirectedGraphAlgorithm(*mut core::ffi::c_void);
2895impl vtkUndirectedGraphAlgorithm {
2896    /// Creates a new [vtkUndirectedGraphAlgorithm] wrapped inside `vtkNew`
2897    #[doc(alias = "vtkUndirectedGraphAlgorithm")]
2898    pub fn new() -> Self {
2899        unsafe extern "C" {
2900            fn vtkUndirectedGraphAlgorithm_new() -> *mut core::ffi::c_void;
2901        }
2902        Self(unsafe { &mut *vtkUndirectedGraphAlgorithm_new() })
2903    }
2904    #[cfg(test)]
2905    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2906        unsafe extern "C" {
2907            fn vtkUndirectedGraphAlgorithm_get_ptr(
2908                sself: *mut core::ffi::c_void,
2909            ) -> *mut core::ffi::c_void;
2910        }
2911        unsafe { vtkUndirectedGraphAlgorithm_get_ptr(self.0) }
2912    }
2913}
2914impl std::default::Default for vtkUndirectedGraphAlgorithm {
2915    fn default() -> Self {
2916        Self::new()
2917    }
2918}
2919impl Drop for vtkUndirectedGraphAlgorithm {
2920    fn drop(&mut self) {
2921        unsafe extern "C" {
2922            fn vtkUndirectedGraphAlgorithm_destructor(sself: *mut core::ffi::c_void);
2923        }
2924        unsafe { vtkUndirectedGraphAlgorithm_destructor(self.0) }
2925        self.0 = core::ptr::null_mut();
2926    }
2927}
2928#[test]
2929fn test_vtkUndirectedGraphAlgorithm_create_drop() {
2930    let obj = vtkUndirectedGraphAlgorithm::new();
2931    let ptr = obj.0;
2932    assert!(!ptr.is_null());
2933    assert!(unsafe { !obj._get_ptr().is_null() });
2934    drop(obj);
2935    let new_obj = vtkUndirectedGraphAlgorithm(ptr);
2936    assert!(unsafe { new_obj._get_ptr().is_null() });
2937}
2938///
2939/// vtkUniformGridAMR as output.
2940///
2941///
2942/// A base class for all algorithms that take as input any type of data object
2943/// including composite datasets and produce vtkUniformGridAMR in the output.
2944#[allow(non_camel_case_types)]
2945pub struct vtkUniformGridAMRAlgorithm(*mut core::ffi::c_void);
2946impl vtkUniformGridAMRAlgorithm {
2947    /// Creates a new [vtkUniformGridAMRAlgorithm] wrapped inside `vtkNew`
2948    #[doc(alias = "vtkUniformGridAMRAlgorithm")]
2949    pub fn new() -> Self {
2950        unsafe extern "C" {
2951            fn vtkUniformGridAMRAlgorithm_new() -> *mut core::ffi::c_void;
2952        }
2953        Self(unsafe { &mut *vtkUniformGridAMRAlgorithm_new() })
2954    }
2955    #[cfg(test)]
2956    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2957        unsafe extern "C" {
2958            fn vtkUniformGridAMRAlgorithm_get_ptr(
2959                sself: *mut core::ffi::c_void,
2960            ) -> *mut core::ffi::c_void;
2961        }
2962        unsafe { vtkUniformGridAMRAlgorithm_get_ptr(self.0) }
2963    }
2964}
2965impl std::default::Default for vtkUniformGridAMRAlgorithm {
2966    fn default() -> Self {
2967        Self::new()
2968    }
2969}
2970impl Drop for vtkUniformGridAMRAlgorithm {
2971    fn drop(&mut self) {
2972        unsafe extern "C" {
2973            fn vtkUniformGridAMRAlgorithm_destructor(sself: *mut core::ffi::c_void);
2974        }
2975        unsafe { vtkUniformGridAMRAlgorithm_destructor(self.0) }
2976        self.0 = core::ptr::null_mut();
2977    }
2978}
2979#[test]
2980fn test_vtkUniformGridAMRAlgorithm_create_drop() {
2981    let obj = vtkUniformGridAMRAlgorithm::new();
2982    let ptr = obj.0;
2983    assert!(!ptr.is_null());
2984    assert!(unsafe { !obj._get_ptr().is_null() });
2985    drop(obj);
2986    let new_obj = vtkUniformGridAMRAlgorithm(ptr);
2987    assert!(unsafe { new_obj._get_ptr().is_null() });
2988}
2989///
2990/// A concrete implementation of vtkMultiBlockDataSetAlgorithm that provides
2991/// functionality for partitioning a uniform grid. The partitioning method
2992/// that is used is Recursive Coordinate Bisection (RCB) where each time
2993/// the longest dimension is split.
2994///
2995/// @sa
2996/// vtkStructuredGridPartitioner vtkRectilinearGridPartitioner
2997#[allow(non_camel_case_types)]
2998pub struct vtkUniformGridPartitioner(*mut core::ffi::c_void);
2999impl vtkUniformGridPartitioner {
3000    /// Creates a new [vtkUniformGridPartitioner] wrapped inside `vtkNew`
3001    #[doc(alias = "vtkUniformGridPartitioner")]
3002    pub fn new() -> Self {
3003        unsafe extern "C" {
3004            fn vtkUniformGridPartitioner_new() -> *mut core::ffi::c_void;
3005        }
3006        Self(unsafe { &mut *vtkUniformGridPartitioner_new() })
3007    }
3008    #[cfg(test)]
3009    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3010        unsafe extern "C" {
3011            fn vtkUniformGridPartitioner_get_ptr(
3012                sself: *mut core::ffi::c_void,
3013            ) -> *mut core::ffi::c_void;
3014        }
3015        unsafe { vtkUniformGridPartitioner_get_ptr(self.0) }
3016    }
3017}
3018impl std::default::Default for vtkUniformGridPartitioner {
3019    fn default() -> Self {
3020        Self::new()
3021    }
3022}
3023impl Drop for vtkUniformGridPartitioner {
3024    fn drop(&mut self) {
3025        unsafe extern "C" {
3026            fn vtkUniformGridPartitioner_destructor(sself: *mut core::ffi::c_void);
3027        }
3028        unsafe { vtkUniformGridPartitioner_destructor(self.0) }
3029        self.0 = core::ptr::null_mut();
3030    }
3031}
3032#[test]
3033fn test_vtkUniformGridPartitioner_create_drop() {
3034    let obj = vtkUniformGridPartitioner::new();
3035    let ptr = obj.0;
3036    assert!(!ptr.is_null());
3037    assert!(unsafe { !obj._get_ptr().is_null() });
3038    drop(obj);
3039    let new_obj = vtkUniformGridPartitioner(ptr);
3040    assert!(unsafe { new_obj._get_ptr().is_null() });
3041}
3042/// Superclass for algorithms that produce only unstructured grid as output
3043///
3044///
3045///
3046/// vtkUnstructuredGridAlgorithm is a convenience class to make writing algorithms
3047/// easier. It is also designed to help transition old algorithms to the new
3048/// pipeline architecture. There are some assumptions and defaults made by this
3049/// class you should be aware of. This class defaults such that your filter
3050/// will have one input port and one output port. If that is not the case
3051/// simply change it with SetNumberOfInputPorts etc. See this classes
3052/// constructor for the default. This class also provides a FillInputPortInfo
3053/// method that by default says that all inputs will be UnstructuredGrid. If that
3054/// isn't the case then please override this method in your subclass.
3055#[allow(non_camel_case_types)]
3056pub struct vtkUnstructuredGridAlgorithm(*mut core::ffi::c_void);
3057impl vtkUnstructuredGridAlgorithm {
3058    /// Creates a new [vtkUnstructuredGridAlgorithm] wrapped inside `vtkNew`
3059    #[doc(alias = "vtkUnstructuredGridAlgorithm")]
3060    pub fn new() -> Self {
3061        unsafe extern "C" {
3062            fn vtkUnstructuredGridAlgorithm_new() -> *mut core::ffi::c_void;
3063        }
3064        Self(unsafe { &mut *vtkUnstructuredGridAlgorithm_new() })
3065    }
3066    #[cfg(test)]
3067    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3068        unsafe extern "C" {
3069            fn vtkUnstructuredGridAlgorithm_get_ptr(
3070                sself: *mut core::ffi::c_void,
3071            ) -> *mut core::ffi::c_void;
3072        }
3073        unsafe { vtkUnstructuredGridAlgorithm_get_ptr(self.0) }
3074    }
3075}
3076impl std::default::Default for vtkUnstructuredGridAlgorithm {
3077    fn default() -> Self {
3078        Self::new()
3079    }
3080}
3081impl Drop for vtkUnstructuredGridAlgorithm {
3082    fn drop(&mut self) {
3083        unsafe extern "C" {
3084            fn vtkUnstructuredGridAlgorithm_destructor(sself: *mut core::ffi::c_void);
3085        }
3086        unsafe { vtkUnstructuredGridAlgorithm_destructor(self.0) }
3087        self.0 = core::ptr::null_mut();
3088    }
3089}
3090#[test]
3091fn test_vtkUnstructuredGridAlgorithm_create_drop() {
3092    let obj = vtkUnstructuredGridAlgorithm::new();
3093    let ptr = obj.0;
3094    assert!(!ptr.is_null());
3095    assert!(unsafe { !obj._get_ptr().is_null() });
3096    drop(obj);
3097    let new_obj = vtkUnstructuredGridAlgorithm(ptr);
3098    assert!(unsafe { new_obj._get_ptr().is_null() });
3099}
3100/// Superclass for algorithms that
3101///
3102/// produce only vtkUnstructureGridBase subclasses as output
3103///
3104/// vtkUnstructuredGridBaseAlgorithm is a convenience class to make writing
3105/// algorithms easier. There are some assumptions and defaults made by this
3106/// class you should be aware of. This class defaults such that your filter
3107/// will have one input port and one output port. If that is not the case
3108/// simply change it with SetNumberOfInputPorts etc. See this classes
3109/// constructor for the default. This class also provides a FillInputPortInfo
3110/// method that by default says that all inputs will be UnstructuredGridBase. If
3111/// that isn't the case then please override this method in your subclass.
3112#[allow(non_camel_case_types)]
3113pub struct vtkUnstructuredGridBaseAlgorithm(*mut core::ffi::c_void);
3114impl vtkUnstructuredGridBaseAlgorithm {
3115    /// Creates a new [vtkUnstructuredGridBaseAlgorithm] wrapped inside `vtkNew`
3116    #[doc(alias = "vtkUnstructuredGridBaseAlgorithm")]
3117    pub fn new() -> Self {
3118        unsafe extern "C" {
3119            fn vtkUnstructuredGridBaseAlgorithm_new() -> *mut core::ffi::c_void;
3120        }
3121        Self(unsafe { &mut *vtkUnstructuredGridBaseAlgorithm_new() })
3122    }
3123    #[cfg(test)]
3124    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3125        unsafe extern "C" {
3126            fn vtkUnstructuredGridBaseAlgorithm_get_ptr(
3127                sself: *mut core::ffi::c_void,
3128            ) -> *mut core::ffi::c_void;
3129        }
3130        unsafe { vtkUnstructuredGridBaseAlgorithm_get_ptr(self.0) }
3131    }
3132}
3133impl std::default::Default for vtkUnstructuredGridBaseAlgorithm {
3134    fn default() -> Self {
3135        Self::new()
3136    }
3137}
3138impl Drop for vtkUnstructuredGridBaseAlgorithm {
3139    fn drop(&mut self) {
3140        unsafe extern "C" {
3141            fn vtkUnstructuredGridBaseAlgorithm_destructor(
3142                sself: *mut core::ffi::c_void,
3143            );
3144        }
3145        unsafe { vtkUnstructuredGridBaseAlgorithm_destructor(self.0) }
3146        self.0 = core::ptr::null_mut();
3147    }
3148}
3149#[test]
3150fn test_vtkUnstructuredGridBaseAlgorithm_create_drop() {
3151    let obj = vtkUnstructuredGridBaseAlgorithm::new();
3152    let ptr = obj.0;
3153    assert!(!ptr.is_null());
3154    assert!(unsafe { !obj._get_ptr().is_null() });
3155    drop(obj);
3156    let new_obj = vtkUnstructuredGridBaseAlgorithm(ptr);
3157    assert!(unsafe { new_obj._get_ptr().is_null() });
3158}