vtk_rs/
vtkCommonDataModel.rs

1/// container of vtkUniformGrid for an AMR data set
2///
3///
4///
5/// vtkAMRDataInternals stores a list of non-empty blocks of an AMR data set
6///
7/// @sa
8/// vtkOverlappingAMR, vtkAMRBox
9#[allow(non_camel_case_types)]
10pub struct vtkAMRDataInternals(*mut core::ffi::c_void);
11impl vtkAMRDataInternals {
12    /// Creates a new [vtkAMRDataInternals] wrapped inside `vtkNew`
13    #[doc(alias = "vtkAMRDataInternals")]
14    pub fn new() -> Self {
15        unsafe extern "C" {
16            fn vtkAMRDataInternals_new() -> *mut core::ffi::c_void;
17        }
18        Self(unsafe { &mut *vtkAMRDataInternals_new() })
19    }
20    #[cfg(test)]
21    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
22        unsafe extern "C" {
23            fn vtkAMRDataInternals_get_ptr(
24                sself: *mut core::ffi::c_void,
25            ) -> *mut core::ffi::c_void;
26        }
27        unsafe { vtkAMRDataInternals_get_ptr(self.0) }
28    }
29}
30impl std::default::Default for vtkAMRDataInternals {
31    fn default() -> Self {
32        Self::new()
33    }
34}
35impl Drop for vtkAMRDataInternals {
36    fn drop(&mut self) {
37        unsafe extern "C" {
38            fn vtkAMRDataInternals_destructor(sself: *mut core::ffi::c_void);
39        }
40        unsafe { vtkAMRDataInternals_destructor(self.0) }
41        self.0 = core::ptr::null_mut();
42    }
43}
44#[test]
45fn test_vtkAMRDataInternals_create_drop() {
46    let obj = vtkAMRDataInternals::new();
47    let ptr = obj.0;
48    assert!(!ptr.is_null());
49    assert!(unsafe { !obj._get_ptr().is_null() });
50    drop(obj);
51    let new_obj = vtkAMRDataInternals(ptr);
52    assert!(unsafe { new_obj._get_ptr().is_null() });
53}
54/// Iterates through adjacent vertices in a graph.
55///
56///
57///
58/// vtkAdjacentVertexIterator iterates through all vertices adjacent to a
59/// vertex, i.e. the vertices which may be reached by traversing an out edge
60/// of the source vertex. Use graph->GetAdjacentVertices(v, it) to initialize
61/// the iterator.
62#[allow(non_camel_case_types)]
63pub struct vtkAdjacentVertexIterator(*mut core::ffi::c_void);
64impl vtkAdjacentVertexIterator {
65    /// Creates a new [vtkAdjacentVertexIterator] wrapped inside `vtkNew`
66    #[doc(alias = "vtkAdjacentVertexIterator")]
67    pub fn new() -> Self {
68        unsafe extern "C" {
69            fn vtkAdjacentVertexIterator_new() -> *mut core::ffi::c_void;
70        }
71        Self(unsafe { &mut *vtkAdjacentVertexIterator_new() })
72    }
73    #[cfg(test)]
74    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
75        unsafe extern "C" {
76            fn vtkAdjacentVertexIterator_get_ptr(
77                sself: *mut core::ffi::c_void,
78            ) -> *mut core::ffi::c_void;
79        }
80        unsafe { vtkAdjacentVertexIterator_get_ptr(self.0) }
81    }
82}
83impl std::default::Default for vtkAdjacentVertexIterator {
84    fn default() -> Self {
85        Self::new()
86    }
87}
88impl Drop for vtkAdjacentVertexIterator {
89    fn drop(&mut self) {
90        unsafe extern "C" {
91            fn vtkAdjacentVertexIterator_destructor(sself: *mut core::ffi::c_void);
92        }
93        unsafe { vtkAdjacentVertexIterator_destructor(self.0) }
94        self.0 = core::ptr::null_mut();
95    }
96}
97#[test]
98fn test_vtkAdjacentVertexIterator_create_drop() {
99    let obj = vtkAdjacentVertexIterator::new();
100    let ptr = obj.0;
101    assert!(!ptr.is_null());
102    assert!(unsafe { !obj._get_ptr().is_null() });
103    drop(obj);
104    let new_obj = vtkAdjacentVertexIterator(ptr);
105    assert!(unsafe { new_obj._get_ptr().is_null() });
106}
107/// the animation scene manager.
108///
109///
110/// vtkAnimationCue and vtkAnimationScene provide the framework to support
111/// animations in VTK. vtkAnimationCue represents an entity that changes/
112/// animates with time, while vtkAnimationScene represents scene or setup
113/// for the animation, which consists of individual cues or other scenes.
114///
115/// A scene can be played in real time mode, or as a sequence of frames
116/// 1/frame rate apart in time.
117/// @sa
118/// vtkAnimationCue
119#[allow(non_camel_case_types)]
120pub struct vtkAnimationScene(*mut core::ffi::c_void);
121impl vtkAnimationScene {
122    /// Creates a new [vtkAnimationScene] wrapped inside `vtkNew`
123    #[doc(alias = "vtkAnimationScene")]
124    pub fn new() -> Self {
125        unsafe extern "C" {
126            fn vtkAnimationScene_new() -> *mut core::ffi::c_void;
127        }
128        Self(unsafe { &mut *vtkAnimationScene_new() })
129    }
130    #[cfg(test)]
131    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
132        unsafe extern "C" {
133            fn vtkAnimationScene_get_ptr(
134                sself: *mut core::ffi::c_void,
135            ) -> *mut core::ffi::c_void;
136        }
137        unsafe { vtkAnimationScene_get_ptr(self.0) }
138    }
139}
140impl std::default::Default for vtkAnimationScene {
141    fn default() -> Self {
142        Self::new()
143    }
144}
145impl Drop for vtkAnimationScene {
146    fn drop(&mut self) {
147        unsafe extern "C" {
148            fn vtkAnimationScene_destructor(sself: *mut core::ffi::c_void);
149        }
150        unsafe { vtkAnimationScene_destructor(self.0) }
151        self.0 = core::ptr::null_mut();
152    }
153}
154#[test]
155fn test_vtkAnimationScene_create_drop() {
156    let obj = vtkAnimationScene::new();
157    let ptr = obj.0;
158    assert!(!ptr.is_null());
159    assert!(unsafe { !obj._get_ptr().is_null() });
160    drop(obj);
161    let new_obj = vtkAnimationScene(ptr);
162    assert!(unsafe { new_obj._get_ptr().is_null() });
163}
164/// Stores a collection of annotation artifacts.
165///
166///
167///
168/// vtkAnnotation is a collection of annotation properties along with
169/// an associated selection indicating the portion of data the annotation
170/// refers to.
171///
172/// @par Thanks:
173/// Timothy M. Shead (tshead@sandia.gov) at Sandia National Laboratories
174/// contributed code to this class.
175#[allow(non_camel_case_types)]
176pub struct vtkAnnotation(*mut core::ffi::c_void);
177impl vtkAnnotation {
178    /// Creates a new [vtkAnnotation] wrapped inside `vtkNew`
179    #[doc(alias = "vtkAnnotation")]
180    pub fn new() -> Self {
181        unsafe extern "C" {
182            fn vtkAnnotation_new() -> *mut core::ffi::c_void;
183        }
184        Self(unsafe { &mut *vtkAnnotation_new() })
185    }
186    #[cfg(test)]
187    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
188        unsafe extern "C" {
189            fn vtkAnnotation_get_ptr(
190                sself: *mut core::ffi::c_void,
191            ) -> *mut core::ffi::c_void;
192        }
193        unsafe { vtkAnnotation_get_ptr(self.0) }
194    }
195}
196impl std::default::Default for vtkAnnotation {
197    fn default() -> Self {
198        Self::new()
199    }
200}
201impl Drop for vtkAnnotation {
202    fn drop(&mut self) {
203        unsafe extern "C" {
204            fn vtkAnnotation_destructor(sself: *mut core::ffi::c_void);
205        }
206        unsafe { vtkAnnotation_destructor(self.0) }
207        self.0 = core::ptr::null_mut();
208    }
209}
210#[test]
211fn test_vtkAnnotation_create_drop() {
212    let obj = vtkAnnotation::new();
213    let ptr = obj.0;
214    assert!(!ptr.is_null());
215    assert!(unsafe { !obj._get_ptr().is_null() });
216    drop(obj);
217    let new_obj = vtkAnnotation(ptr);
218    assert!(unsafe { new_obj._get_ptr().is_null() });
219}
220/// Stores a ordered collection of annotation sets
221///
222///
223///
224/// vtkAnnotationLayers stores a vector of annotation layers. Each layer
225/// may contain any number of vtkAnnotation objects. The ordering of the
226/// layers introduces a prioritization of annotations. Annotations in
227/// higher layers may obscure annotations in lower layers.
228#[allow(non_camel_case_types)]
229pub struct vtkAnnotationLayers(*mut core::ffi::c_void);
230impl vtkAnnotationLayers {
231    /// Creates a new [vtkAnnotationLayers] wrapped inside `vtkNew`
232    #[doc(alias = "vtkAnnotationLayers")]
233    pub fn new() -> Self {
234        unsafe extern "C" {
235            fn vtkAnnotationLayers_new() -> *mut core::ffi::c_void;
236        }
237        Self(unsafe { &mut *vtkAnnotationLayers_new() })
238    }
239    #[cfg(test)]
240    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
241        unsafe extern "C" {
242            fn vtkAnnotationLayers_get_ptr(
243                sself: *mut core::ffi::c_void,
244            ) -> *mut core::ffi::c_void;
245        }
246        unsafe { vtkAnnotationLayers_get_ptr(self.0) }
247    }
248}
249impl std::default::Default for vtkAnnotationLayers {
250    fn default() -> Self {
251        Self::new()
252    }
253}
254impl Drop for vtkAnnotationLayers {
255    fn drop(&mut self) {
256        unsafe extern "C" {
257            fn vtkAnnotationLayers_destructor(sself: *mut core::ffi::c_void);
258        }
259        unsafe { vtkAnnotationLayers_destructor(self.0) }
260        self.0 = core::ptr::null_mut();
261    }
262}
263#[test]
264fn test_vtkAnnotationLayers_create_drop() {
265    let obj = vtkAnnotationLayers::new();
266    let ptr = obj.0;
267    assert!(!ptr.is_null());
268    assert!(unsafe { !obj._get_ptr().is_null() });
269    drop(obj);
270    let new_obj = vtkAnnotationLayers(ptr);
271    assert!(unsafe { new_obj._get_ptr().is_null() });
272}
273/// implicit function for a annulus
274///
275///
276/// vtkAnnulus computes the implicit function and function gradient
277/// for an annulus composed of two co-axial cylinders. vtkAnnulus is a concrete
278/// implementation of vtkImplicitFunction. By default the Annulus is
279/// centered at the origin and the axis of rotation is along the
280/// y-axis. You can redefine the center and axis of rotation by setting
281/// the Center and Axis data members. (Note that it is also possible to
282/// use the superclass' vtkImplicitFunction transformation matrix if
283/// necessary to reposition by using FunctionValue() and
284/// FunctionGradient().)
285///
286/// @warning
287/// The annulus is infinite in extent. To truncate the annulus in
288/// modeling operations use the vtkImplicitBoolean in combination with
289/// clipping planes.
290#[allow(non_camel_case_types)]
291pub struct vtkAnnulus(*mut core::ffi::c_void);
292impl vtkAnnulus {
293    /// Creates a new [vtkAnnulus] wrapped inside `vtkNew`
294    #[doc(alias = "vtkAnnulus")]
295    pub fn new() -> Self {
296        unsafe extern "C" {
297            fn vtkAnnulus_new() -> *mut core::ffi::c_void;
298        }
299        Self(unsafe { &mut *vtkAnnulus_new() })
300    }
301    #[cfg(test)]
302    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
303        unsafe extern "C" {
304            fn vtkAnnulus_get_ptr(
305                sself: *mut core::ffi::c_void,
306            ) -> *mut core::ffi::c_void;
307        }
308        unsafe { vtkAnnulus_get_ptr(self.0) }
309    }
310}
311impl std::default::Default for vtkAnnulus {
312    fn default() -> Self {
313        Self::new()
314    }
315}
316impl Drop for vtkAnnulus {
317    fn drop(&mut self) {
318        unsafe extern "C" {
319            fn vtkAnnulus_destructor(sself: *mut core::ffi::c_void);
320        }
321        unsafe { vtkAnnulus_destructor(self.0) }
322        self.0 = core::ptr::null_mut();
323    }
324}
325#[test]
326fn test_vtkAnnulus_create_drop() {
327    let obj = vtkAnnulus::new();
328    let ptr = obj.0;
329    assert!(!ptr.is_null());
330    assert!(unsafe { !obj._get_ptr().is_null() });
331    drop(obj);
332    let new_obj = vtkAnnulus(ptr);
333    assert!(unsafe { new_obj._get_ptr().is_null() });
334}
335/// Pipeline data object that contains multiple vtkArray objects.
336///
337///
338///
339/// Because vtkArray cannot be stored as attributes of data objects (yet), a "carrier"
340/// object is needed to pass vtkArray through the pipeline.  vtkArrayData acts as a
341/// container of zero-to-many vtkArray instances, which can be retrieved via a zero-based
342/// index.  Note that a collection of arrays stored in vtkArrayData may-or-may-not have related
343/// types, dimensions, or extents.
344///
345/// @sa
346/// vtkArrayDataAlgorithm, vtkArray
347///
348/// @par Thanks:
349/// Developed by Timothy M. Shead (tshead@sandia.gov) at Sandia National Laboratories.
350#[allow(non_camel_case_types)]
351pub struct vtkArrayData(*mut core::ffi::c_void);
352impl vtkArrayData {
353    /// Creates a new [vtkArrayData] wrapped inside `vtkNew`
354    #[doc(alias = "vtkArrayData")]
355    pub fn new() -> Self {
356        unsafe extern "C" {
357            fn vtkArrayData_new() -> *mut core::ffi::c_void;
358        }
359        Self(unsafe { &mut *vtkArrayData_new() })
360    }
361    #[cfg(test)]
362    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
363        unsafe extern "C" {
364            fn vtkArrayData_get_ptr(
365                sself: *mut core::ffi::c_void,
366            ) -> *mut core::ffi::c_void;
367        }
368        unsafe { vtkArrayData_get_ptr(self.0) }
369    }
370}
371impl std::default::Default for vtkArrayData {
372    fn default() -> Self {
373        Self::new()
374    }
375}
376impl Drop for vtkArrayData {
377    fn drop(&mut self) {
378        unsafe extern "C" {
379            fn vtkArrayData_destructor(sself: *mut core::ffi::c_void);
380        }
381        unsafe { vtkArrayData_destructor(self.0) }
382        self.0 = core::ptr::null_mut();
383    }
384}
385#[test]
386fn test_vtkArrayData_create_drop() {
387    let obj = vtkArrayData::new();
388    let ptr = obj.0;
389    assert!(!ptr.is_null());
390    assert!(unsafe { !obj._get_ptr().is_null() });
391    drop(obj);
392    let new_obj = vtkArrayData(ptr);
393    assert!(unsafe { new_obj._get_ptr().is_null() });
394}
395/// Objects that compute
396///
397/// attribute-based error during cell tessellation.
398///
399///
400/// It is a concrete error metric, based on an attribute criterium:
401/// the variation of the active attribute/component value from a linear ramp
402///
403/// @sa
404/// vtkGenericCellTessellator vtkGenericSubdivisionErrorMetric
405#[allow(non_camel_case_types)]
406pub struct vtkAttributesErrorMetric(*mut core::ffi::c_void);
407impl vtkAttributesErrorMetric {
408    /// Creates a new [vtkAttributesErrorMetric] wrapped inside `vtkNew`
409    #[doc(alias = "vtkAttributesErrorMetric")]
410    pub fn new() -> Self {
411        unsafe extern "C" {
412            fn vtkAttributesErrorMetric_new() -> *mut core::ffi::c_void;
413        }
414        Self(unsafe { &mut *vtkAttributesErrorMetric_new() })
415    }
416    #[cfg(test)]
417    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
418        unsafe extern "C" {
419            fn vtkAttributesErrorMetric_get_ptr(
420                sself: *mut core::ffi::c_void,
421            ) -> *mut core::ffi::c_void;
422        }
423        unsafe { vtkAttributesErrorMetric_get_ptr(self.0) }
424    }
425}
426impl std::default::Default for vtkAttributesErrorMetric {
427    fn default() -> Self {
428        Self::new()
429    }
430}
431impl Drop for vtkAttributesErrorMetric {
432    fn drop(&mut self) {
433        unsafe extern "C" {
434            fn vtkAttributesErrorMetric_destructor(sself: *mut core::ffi::c_void);
435        }
436        unsafe { vtkAttributesErrorMetric_destructor(self.0) }
437        self.0 = core::ptr::null_mut();
438    }
439}
440#[test]
441fn test_vtkAttributesErrorMetric_create_drop() {
442    let obj = vtkAttributesErrorMetric::new();
443    let ptr = obj.0;
444    assert!(!ptr.is_null());
445    assert!(unsafe { !obj._get_ptr().is_null() });
446    drop(obj);
447    let new_obj = vtkAttributesErrorMetric(ptr);
448    assert!(unsafe { new_obj._get_ptr().is_null() });
449}
450/// This class represents an axis-aligned Binary Spatial
451///
452/// Partitioning of a 3D space.
453///
454///
455/// This class converts between the vtkKdTree
456/// representation of a tree of vtkKdNodes (used by vtkDistributedDataFilter)
457/// and a compact array representation that might be provided by a
458/// graph partitioning library like Zoltan.  Such a representation
459/// could be used in message passing.
460///
461/// @sa
462/// vtkKdTree vtkKdNode vtkDistributedDataFilter
463#[allow(non_camel_case_types)]
464pub struct vtkBSPCuts(*mut core::ffi::c_void);
465impl vtkBSPCuts {
466    /// Creates a new [vtkBSPCuts] wrapped inside `vtkNew`
467    #[doc(alias = "vtkBSPCuts")]
468    pub fn new() -> Self {
469        unsafe extern "C" {
470            fn vtkBSPCuts_new() -> *mut core::ffi::c_void;
471        }
472        Self(unsafe { &mut *vtkBSPCuts_new() })
473    }
474    #[cfg(test)]
475    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
476        unsafe extern "C" {
477            fn vtkBSPCuts_get_ptr(
478                sself: *mut core::ffi::c_void,
479            ) -> *mut core::ffi::c_void;
480        }
481        unsafe { vtkBSPCuts_get_ptr(self.0) }
482    }
483}
484impl std::default::Default for vtkBSPCuts {
485    fn default() -> Self {
486        Self::new()
487    }
488}
489impl Drop for vtkBSPCuts {
490    fn drop(&mut self) {
491        unsafe extern "C" {
492            fn vtkBSPCuts_destructor(sself: *mut core::ffi::c_void);
493        }
494        unsafe { vtkBSPCuts_destructor(self.0) }
495        self.0 = core::ptr::null_mut();
496    }
497}
498#[test]
499fn test_vtkBSPCuts_create_drop() {
500    let obj = vtkBSPCuts::new();
501    let ptr = obj.0;
502    assert!(!ptr.is_null());
503    assert!(unsafe { !obj._get_ptr().is_null() });
504    drop(obj);
505    let new_obj = vtkBSPCuts(ptr);
506    assert!(unsafe { new_obj._get_ptr().is_null() });
507}
508/// Perform calculations (mostly intersection
509///
510/// calculations) on regions of a 3D binary spatial partitioning.
511///
512///
513/// Given an axis aligned binary spatial partitioning described by a
514/// vtkBSPCuts object, perform intersection queries on various
515/// geometric entities with regions of the spatial partitioning.
516///
517/// @sa
518/// vtkBSPCuts  vtkKdTree
519#[allow(non_camel_case_types)]
520pub struct vtkBSPIntersections(*mut core::ffi::c_void);
521impl vtkBSPIntersections {
522    /// Creates a new [vtkBSPIntersections] wrapped inside `vtkNew`
523    #[doc(alias = "vtkBSPIntersections")]
524    pub fn new() -> Self {
525        unsafe extern "C" {
526            fn vtkBSPIntersections_new() -> *mut core::ffi::c_void;
527        }
528        Self(unsafe { &mut *vtkBSPIntersections_new() })
529    }
530    #[cfg(test)]
531    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
532        unsafe extern "C" {
533            fn vtkBSPIntersections_get_ptr(
534                sself: *mut core::ffi::c_void,
535            ) -> *mut core::ffi::c_void;
536        }
537        unsafe { vtkBSPIntersections_get_ptr(self.0) }
538    }
539}
540impl std::default::Default for vtkBSPIntersections {
541    fn default() -> Self {
542        Self::new()
543    }
544}
545impl Drop for vtkBSPIntersections {
546    fn drop(&mut self) {
547        unsafe extern "C" {
548            fn vtkBSPIntersections_destructor(sself: *mut core::ffi::c_void);
549        }
550        unsafe { vtkBSPIntersections_destructor(self.0) }
551        self.0 = core::ptr::null_mut();
552    }
553}
554#[test]
555fn test_vtkBSPIntersections_create_drop() {
556    let obj = vtkBSPIntersections::new();
557    let ptr = obj.0;
558    assert!(!ptr.is_null());
559    assert!(unsafe { !obj._get_ptr().is_null() });
560    drop(obj);
561    let new_obj = vtkBSPIntersections(ptr);
562    assert!(unsafe { new_obj._get_ptr().is_null() });
563}
564///
565#[allow(non_camel_case_types)]
566pub struct vtkBezierCurve(*mut core::ffi::c_void);
567impl vtkBezierCurve {
568    /// Creates a new [vtkBezierCurve] wrapped inside `vtkNew`
569    #[doc(alias = "vtkBezierCurve")]
570    pub fn new() -> Self {
571        unsafe extern "C" {
572            fn vtkBezierCurve_new() -> *mut core::ffi::c_void;
573        }
574        Self(unsafe { &mut *vtkBezierCurve_new() })
575    }
576    #[cfg(test)]
577    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
578        unsafe extern "C" {
579            fn vtkBezierCurve_get_ptr(
580                sself: *mut core::ffi::c_void,
581            ) -> *mut core::ffi::c_void;
582        }
583        unsafe { vtkBezierCurve_get_ptr(self.0) }
584    }
585}
586impl std::default::Default for vtkBezierCurve {
587    fn default() -> Self {
588        Self::new()
589    }
590}
591impl Drop for vtkBezierCurve {
592    fn drop(&mut self) {
593        unsafe extern "C" {
594            fn vtkBezierCurve_destructor(sself: *mut core::ffi::c_void);
595        }
596        unsafe { vtkBezierCurve_destructor(self.0) }
597        self.0 = core::ptr::null_mut();
598    }
599}
600#[test]
601fn test_vtkBezierCurve_create_drop() {
602    let obj = vtkBezierCurve::new();
603    let ptr = obj.0;
604    assert!(!ptr.is_null());
605    assert!(unsafe { !obj._get_ptr().is_null() });
606    drop(obj);
607    let new_obj = vtkBezierCurve(ptr);
608    assert!(unsafe { new_obj._get_ptr().is_null() });
609}
610/// A 3D cell that represents an arbitrary order Bezier hex
611///
612///
613/// vtkBezierHexahedron is a concrete implementation of vtkCell to represent a
614/// 3D hexahedron using Bezier shape functions of user specified order.
615///
616/// @sa
617/// vtkHexahedron
618#[allow(non_camel_case_types)]
619pub struct vtkBezierHexahedron(*mut core::ffi::c_void);
620impl vtkBezierHexahedron {
621    /// Creates a new [vtkBezierHexahedron] wrapped inside `vtkNew`
622    #[doc(alias = "vtkBezierHexahedron")]
623    pub fn new() -> Self {
624        unsafe extern "C" {
625            fn vtkBezierHexahedron_new() -> *mut core::ffi::c_void;
626        }
627        Self(unsafe { &mut *vtkBezierHexahedron_new() })
628    }
629    #[cfg(test)]
630    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
631        unsafe extern "C" {
632            fn vtkBezierHexahedron_get_ptr(
633                sself: *mut core::ffi::c_void,
634            ) -> *mut core::ffi::c_void;
635        }
636        unsafe { vtkBezierHexahedron_get_ptr(self.0) }
637    }
638}
639impl std::default::Default for vtkBezierHexahedron {
640    fn default() -> Self {
641        Self::new()
642    }
643}
644impl Drop for vtkBezierHexahedron {
645    fn drop(&mut self) {
646        unsafe extern "C" {
647            fn vtkBezierHexahedron_destructor(sself: *mut core::ffi::c_void);
648        }
649        unsafe { vtkBezierHexahedron_destructor(self.0) }
650        self.0 = core::ptr::null_mut();
651    }
652}
653#[test]
654fn test_vtkBezierHexahedron_create_drop() {
655    let obj = vtkBezierHexahedron::new();
656    let ptr = obj.0;
657    assert!(!ptr.is_null());
658    assert!(unsafe { !obj._get_ptr().is_null() });
659    drop(obj);
660    let new_obj = vtkBezierHexahedron(ptr);
661    assert!(unsafe { new_obj._get_ptr().is_null() });
662}
663///
664#[allow(non_camel_case_types)]
665pub struct vtkBezierInterpolation(*mut core::ffi::c_void);
666impl vtkBezierInterpolation {
667    /// Creates a new [vtkBezierInterpolation] wrapped inside `vtkNew`
668    #[doc(alias = "vtkBezierInterpolation")]
669    pub fn new() -> Self {
670        unsafe extern "C" {
671            fn vtkBezierInterpolation_new() -> *mut core::ffi::c_void;
672        }
673        Self(unsafe { &mut *vtkBezierInterpolation_new() })
674    }
675    #[cfg(test)]
676    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
677        unsafe extern "C" {
678            fn vtkBezierInterpolation_get_ptr(
679                sself: *mut core::ffi::c_void,
680            ) -> *mut core::ffi::c_void;
681        }
682        unsafe { vtkBezierInterpolation_get_ptr(self.0) }
683    }
684}
685impl std::default::Default for vtkBezierInterpolation {
686    fn default() -> Self {
687        Self::new()
688    }
689}
690impl Drop for vtkBezierInterpolation {
691    fn drop(&mut self) {
692        unsafe extern "C" {
693            fn vtkBezierInterpolation_destructor(sself: *mut core::ffi::c_void);
694        }
695        unsafe { vtkBezierInterpolation_destructor(self.0) }
696        self.0 = core::ptr::null_mut();
697    }
698}
699#[test]
700fn test_vtkBezierInterpolation_create_drop() {
701    let obj = vtkBezierInterpolation::new();
702    let ptr = obj.0;
703    assert!(!ptr.is_null());
704    assert!(unsafe { !obj._get_ptr().is_null() });
705    drop(obj);
706    let new_obj = vtkBezierInterpolation(ptr);
707    assert!(unsafe { new_obj._get_ptr().is_null() });
708}
709///
710#[allow(non_camel_case_types)]
711pub struct vtkBezierQuadrilateral(*mut core::ffi::c_void);
712impl vtkBezierQuadrilateral {
713    /// Creates a new [vtkBezierQuadrilateral] wrapped inside `vtkNew`
714    #[doc(alias = "vtkBezierQuadrilateral")]
715    pub fn new() -> Self {
716        unsafe extern "C" {
717            fn vtkBezierQuadrilateral_new() -> *mut core::ffi::c_void;
718        }
719        Self(unsafe { &mut *vtkBezierQuadrilateral_new() })
720    }
721    #[cfg(test)]
722    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
723        unsafe extern "C" {
724            fn vtkBezierQuadrilateral_get_ptr(
725                sself: *mut core::ffi::c_void,
726            ) -> *mut core::ffi::c_void;
727        }
728        unsafe { vtkBezierQuadrilateral_get_ptr(self.0) }
729    }
730}
731impl std::default::Default for vtkBezierQuadrilateral {
732    fn default() -> Self {
733        Self::new()
734    }
735}
736impl Drop for vtkBezierQuadrilateral {
737    fn drop(&mut self) {
738        unsafe extern "C" {
739            fn vtkBezierQuadrilateral_destructor(sself: *mut core::ffi::c_void);
740        }
741        unsafe { vtkBezierQuadrilateral_destructor(self.0) }
742        self.0 = core::ptr::null_mut();
743    }
744}
745#[test]
746fn test_vtkBezierQuadrilateral_create_drop() {
747    let obj = vtkBezierQuadrilateral::new();
748    let ptr = obj.0;
749    assert!(!ptr.is_null());
750    assert!(unsafe { !obj._get_ptr().is_null() });
751    drop(obj);
752    let new_obj = vtkBezierQuadrilateral(ptr);
753    assert!(unsafe { new_obj._get_ptr().is_null() });
754}
755/// A 3D cell that represents an arbitrary order Bezier tetrahedron
756///
757///
758/// vtkBezierTetra is a concrete implementation of vtkCell to represent a
759/// 3D tetrahedron using Bezier shape functions of user specified order.
760///
761/// The number of points in a Bezier cell determines the order over which they
762/// are iterated relative to the parametric coordinate system of the cell. The
763/// first points that are reported are vertices. They appear in the same order in
764/// which they would appear in linear cells. Mid-edge points are reported next.
765/// They are reported in sequence. For two- and three-dimensional (3D) cells, the
766/// following set of points to be reported are face points. Finally, 3D cells
767/// report points interior to their volume.
768#[allow(non_camel_case_types)]
769pub struct vtkBezierTetra(*mut core::ffi::c_void);
770impl vtkBezierTetra {
771    /// Creates a new [vtkBezierTetra] wrapped inside `vtkNew`
772    #[doc(alias = "vtkBezierTetra")]
773    pub fn new() -> Self {
774        unsafe extern "C" {
775            fn vtkBezierTetra_new() -> *mut core::ffi::c_void;
776        }
777        Self(unsafe { &mut *vtkBezierTetra_new() })
778    }
779    #[cfg(test)]
780    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
781        unsafe extern "C" {
782            fn vtkBezierTetra_get_ptr(
783                sself: *mut core::ffi::c_void,
784            ) -> *mut core::ffi::c_void;
785        }
786        unsafe { vtkBezierTetra_get_ptr(self.0) }
787    }
788}
789impl std::default::Default for vtkBezierTetra {
790    fn default() -> Self {
791        Self::new()
792    }
793}
794impl Drop for vtkBezierTetra {
795    fn drop(&mut self) {
796        unsafe extern "C" {
797            fn vtkBezierTetra_destructor(sself: *mut core::ffi::c_void);
798        }
799        unsafe { vtkBezierTetra_destructor(self.0) }
800        self.0 = core::ptr::null_mut();
801    }
802}
803#[test]
804fn test_vtkBezierTetra_create_drop() {
805    let obj = vtkBezierTetra::new();
806    let ptr = obj.0;
807    assert!(!ptr.is_null());
808    assert!(unsafe { !obj._get_ptr().is_null() });
809    drop(obj);
810    let new_obj = vtkBezierTetra(ptr);
811    assert!(unsafe { new_obj._get_ptr().is_null() });
812}
813/// A 2D cell that represents an arbitrary order Bezier triangle
814///
815///
816/// vtkBezierTriangle is a concrete implementation of vtkCell to represent a
817/// 2D triangle using Bezier shape functions of user specified order.
818///
819/// The number of points in a Bezier cell determines the order over which they
820/// are iterated relative to the parametric coordinate system of the cell. The
821/// first points that are reported are vertices. They appear in the same order in
822/// which they would appear in linear cells. Mid-edge points are reported next.
823/// They are reported in sequence. For two- and three-dimensional (3D) cells, the
824/// following set of points to be reported are face points. Finally, 3D cells
825/// report points interior to their volume.
826#[allow(non_camel_case_types)]
827pub struct vtkBezierTriangle(*mut core::ffi::c_void);
828impl vtkBezierTriangle {
829    /// Creates a new [vtkBezierTriangle] wrapped inside `vtkNew`
830    #[doc(alias = "vtkBezierTriangle")]
831    pub fn new() -> Self {
832        unsafe extern "C" {
833            fn vtkBezierTriangle_new() -> *mut core::ffi::c_void;
834        }
835        Self(unsafe { &mut *vtkBezierTriangle_new() })
836    }
837    #[cfg(test)]
838    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
839        unsafe extern "C" {
840            fn vtkBezierTriangle_get_ptr(
841                sself: *mut core::ffi::c_void,
842            ) -> *mut core::ffi::c_void;
843        }
844        unsafe { vtkBezierTriangle_get_ptr(self.0) }
845    }
846}
847impl std::default::Default for vtkBezierTriangle {
848    fn default() -> Self {
849        Self::new()
850    }
851}
852impl Drop for vtkBezierTriangle {
853    fn drop(&mut self) {
854        unsafe extern "C" {
855            fn vtkBezierTriangle_destructor(sself: *mut core::ffi::c_void);
856        }
857        unsafe { vtkBezierTriangle_destructor(self.0) }
858        self.0 = core::ptr::null_mut();
859    }
860}
861#[test]
862fn test_vtkBezierTriangle_create_drop() {
863    let obj = vtkBezierTriangle::new();
864    let ptr = obj.0;
865    assert!(!ptr.is_null());
866    assert!(unsafe { !obj._get_ptr().is_null() });
867    drop(obj);
868    let new_obj = vtkBezierTriangle(ptr);
869    assert!(unsafe { new_obj._get_ptr().is_null() });
870}
871/// A 3D cell that represents an arbitrary order Bezier wedge
872///
873///
874/// vtkBezierWedge is a concrete implementation of vtkCell to represent a
875/// 3D wedge using Bezier shape functions of user specified order.
876/// A wedge consists of two triangular and three quadrilateral faces.
877/// The first six points of the wedge (0-5) are the "corner" points
878/// where the first three points are the base of the wedge. This wedge
879/// point ordering is opposite the vtkWedge ordering though in that
880/// the base of the wedge defined by the first three points (0,1,2) form
881/// a triangle whose normal points inward (toward the triangular face (3,4,5)).
882/// While this is opposite the vtkWedge convention it is consistent with
883/// every other cell type in VTK. The first 2 parametric coordinates of the
884/// Bezier wedge or for the triangular base and vary between 0 and 1. The
885/// third parametric coordinate is between the two triangular faces and goes
886/// from 0 to 1 as well.
887#[allow(non_camel_case_types)]
888pub struct vtkBezierWedge(*mut core::ffi::c_void);
889impl vtkBezierWedge {
890    /// Creates a new [vtkBezierWedge] wrapped inside `vtkNew`
891    #[doc(alias = "vtkBezierWedge")]
892    pub fn new() -> Self {
893        unsafe extern "C" {
894            fn vtkBezierWedge_new() -> *mut core::ffi::c_void;
895        }
896        Self(unsafe { &mut *vtkBezierWedge_new() })
897    }
898    #[cfg(test)]
899    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
900        unsafe extern "C" {
901            fn vtkBezierWedge_get_ptr(
902                sself: *mut core::ffi::c_void,
903            ) -> *mut core::ffi::c_void;
904        }
905        unsafe { vtkBezierWedge_get_ptr(self.0) }
906    }
907}
908impl std::default::Default for vtkBezierWedge {
909    fn default() -> Self {
910        Self::new()
911    }
912}
913impl Drop for vtkBezierWedge {
914    fn drop(&mut self) {
915        unsafe extern "C" {
916            fn vtkBezierWedge_destructor(sself: *mut core::ffi::c_void);
917        }
918        unsafe { vtkBezierWedge_destructor(self.0) }
919        self.0 = core::ptr::null_mut();
920    }
921}
922#[test]
923fn test_vtkBezierWedge_create_drop() {
924    let obj = vtkBezierWedge::new();
925    let ptr = obj.0;
926    assert!(!ptr.is_null());
927    assert!(unsafe { !obj._get_ptr().is_null() });
928    drop(obj);
929    let new_obj = vtkBezierWedge(ptr);
930    assert!(unsafe { new_obj._get_ptr().is_null() });
931}
932/// cell represents a parabolic, 9-node
933///
934/// isoparametric quad
935///
936/// vtkQuadraticQuad is a concrete implementation of vtkNonLinearCell to
937/// represent a two-dimensional, 9-node isoparametric parabolic quadrilateral
938/// element with a Centerpoint. The interpolation is the standard finite
939/// element, quadratic isoparametric shape function. The cell includes a
940/// mid-edge node for each of the four edges of the cell and a center node at
941/// the surface. The ordering of the eight points defining the cell are point
942/// ids (0-3,4-8) where ids 0-3 define the four corner vertices of the quad;
943/// ids 4-7 define the midedge nodes (0,1), (1,2), (2,3), (3,0) and 8 define
944/// the face center node.
945///
946/// @sa
947/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
948/// vtkQuadraticHexahedron vtkQuadraticWedge vtkQuadraticPyramid
949/// vtkQuadraticQuad
950///
951/// @par Thanks:
952/// Thanks to Soeren Gebbert who developed this class and
953/// integrated it into VTK 5.0.
954#[allow(non_camel_case_types)]
955pub struct vtkBiQuadraticQuad(*mut core::ffi::c_void);
956impl vtkBiQuadraticQuad {
957    /// Creates a new [vtkBiQuadraticQuad] wrapped inside `vtkNew`
958    #[doc(alias = "vtkBiQuadraticQuad")]
959    pub fn new() -> Self {
960        unsafe extern "C" {
961            fn vtkBiQuadraticQuad_new() -> *mut core::ffi::c_void;
962        }
963        Self(unsafe { &mut *vtkBiQuadraticQuad_new() })
964    }
965    #[cfg(test)]
966    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
967        unsafe extern "C" {
968            fn vtkBiQuadraticQuad_get_ptr(
969                sself: *mut core::ffi::c_void,
970            ) -> *mut core::ffi::c_void;
971        }
972        unsafe { vtkBiQuadraticQuad_get_ptr(self.0) }
973    }
974}
975impl std::default::Default for vtkBiQuadraticQuad {
976    fn default() -> Self {
977        Self::new()
978    }
979}
980impl Drop for vtkBiQuadraticQuad {
981    fn drop(&mut self) {
982        unsafe extern "C" {
983            fn vtkBiQuadraticQuad_destructor(sself: *mut core::ffi::c_void);
984        }
985        unsafe { vtkBiQuadraticQuad_destructor(self.0) }
986        self.0 = core::ptr::null_mut();
987    }
988}
989#[test]
990fn test_vtkBiQuadraticQuad_create_drop() {
991    let obj = vtkBiQuadraticQuad::new();
992    let ptr = obj.0;
993    assert!(!ptr.is_null());
994    assert!(unsafe { !obj._get_ptr().is_null() });
995    drop(obj);
996    let new_obj = vtkBiQuadraticQuad(ptr);
997    assert!(unsafe { new_obj._get_ptr().is_null() });
998}
999/// cell represents a biquadratic,
1000///
1001/// 24-node isoparametric hexahedron
1002///
1003/// vtkBiQuadraticQuadraticHexahedron is a concrete implementation of vtkNonLinearCell to
1004/// represent a three-dimensional, 24-node isoparametric biquadratic
1005/// hexahedron. The interpolation is the standard finite element,
1006/// biquadratic-quadratic
1007/// isoparametric shape function. The cell includes mid-edge and center-face nodes. The
1008/// ordering of the 24 points defining the cell is point ids (0-7,8-19, 20-23)
1009/// where point ids 0-7 are the eight corner vertices of the cube; followed by
1010/// twelve midedge nodes (8-19), nodes 20-23 are the center-face nodes. Note that
1011/// these midedge nodes correspond lie
1012/// on the edges defined by (0,1), (1,2), (2,3), (3,0), (4,5), (5,6), (6,7),
1013/// (7,4), (0,4), (1,5), (2,6), (3,7). The center face nodes laying in quad
1014/// 22-(0,1,5,4), 21-(1,2,6,5), 23-(2,3,7,6) and 22-(3,0,4,7)
1015///
1016/// \verbatim
1017///
1018/// top
1019/// 7--14--6
1020/// |      |
1021/// 15      13
1022/// |      |
1023/// 4--12--5
1024///
1025/// middle
1026/// 19--23--18
1027/// |      |
1028/// 20      21
1029/// |      |
1030/// 16--22--17
1031///
1032/// bottom
1033/// 3--10--2
1034/// |      |
1035/// 11      9
1036/// |      |
1037/// 0-- 8--1
1038///
1039/// \endverbatim
1040///
1041///
1042/// @sa
1043/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
1044/// vtkQuadraticQuad vtkQuadraticPyramid vtkQuadraticWedge
1045///
1046/// @par Thanks:
1047/// Thanks to Soeren Gebbert  who developed this class and
1048/// integrated it into VTK 5.0.
1049#[allow(non_camel_case_types)]
1050pub struct vtkBiQuadraticQuadraticHexahedron(*mut core::ffi::c_void);
1051impl vtkBiQuadraticQuadraticHexahedron {
1052    /// Creates a new [vtkBiQuadraticQuadraticHexahedron] wrapped inside `vtkNew`
1053    #[doc(alias = "vtkBiQuadraticQuadraticHexahedron")]
1054    pub fn new() -> Self {
1055        unsafe extern "C" {
1056            fn vtkBiQuadraticQuadraticHexahedron_new() -> *mut core::ffi::c_void;
1057        }
1058        Self(unsafe { &mut *vtkBiQuadraticQuadraticHexahedron_new() })
1059    }
1060    #[cfg(test)]
1061    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1062        unsafe extern "C" {
1063            fn vtkBiQuadraticQuadraticHexahedron_get_ptr(
1064                sself: *mut core::ffi::c_void,
1065            ) -> *mut core::ffi::c_void;
1066        }
1067        unsafe { vtkBiQuadraticQuadraticHexahedron_get_ptr(self.0) }
1068    }
1069}
1070impl std::default::Default for vtkBiQuadraticQuadraticHexahedron {
1071    fn default() -> Self {
1072        Self::new()
1073    }
1074}
1075impl Drop for vtkBiQuadraticQuadraticHexahedron {
1076    fn drop(&mut self) {
1077        unsafe extern "C" {
1078            fn vtkBiQuadraticQuadraticHexahedron_destructor(
1079                sself: *mut core::ffi::c_void,
1080            );
1081        }
1082        unsafe { vtkBiQuadraticQuadraticHexahedron_destructor(self.0) }
1083        self.0 = core::ptr::null_mut();
1084    }
1085}
1086#[test]
1087fn test_vtkBiQuadraticQuadraticHexahedron_create_drop() {
1088    let obj = vtkBiQuadraticQuadraticHexahedron::new();
1089    let ptr = obj.0;
1090    assert!(!ptr.is_null());
1091    assert!(unsafe { !obj._get_ptr().is_null() });
1092    drop(obj);
1093    let new_obj = vtkBiQuadraticQuadraticHexahedron(ptr);
1094    assert!(unsafe { new_obj._get_ptr().is_null() });
1095}
1096/// cell represents a parabolic, 18-node isoparametric wedge
1097///
1098///
1099/// vtkBiQuadraticQuadraticWedge is a concrete implementation of vtkNonLinearCell to
1100/// represent a three-dimensional, 18-node isoparametric biquadratic
1101/// wedge. The interpolation is the standard finite element,
1102/// biquadratic-quadratic isoparametric shape function plus the linear functions.
1103/// The cell includes a mid-edge node. The
1104/// ordering of the 18 points defining the cell is point ids (0-5,6-15, 16-18)
1105/// where point ids 0-5 are the six corner vertices of the wedge; followed by
1106/// nine midedge nodes (6-15) and 3 center-face nodes. Note that these midedge
1107/// nodes correspond lie
1108/// on the edges defined by (0,1), (1,2), (2,0), (3,4), (4,5), (5,3), (0,3),
1109/// (1,4), (2,5), and the center-face nodes are laying in quads 16-(0,1,4,3),
1110/// 17-(1,2,5,4) and (2,0,3,5).
1111///
1112/// @sa
1113/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
1114/// vtkQuadraticHexahedron vtkQuadraticQuad vtkQuadraticPyramid
1115///
1116/// @par Thanks:
1117/// Thanks to Soeren Gebbert who developed this class and
1118/// integrated it into VTK 5.0.
1119#[allow(non_camel_case_types)]
1120pub struct vtkBiQuadraticQuadraticWedge(*mut core::ffi::c_void);
1121impl vtkBiQuadraticQuadraticWedge {
1122    /// Creates a new [vtkBiQuadraticQuadraticWedge] wrapped inside `vtkNew`
1123    #[doc(alias = "vtkBiQuadraticQuadraticWedge")]
1124    pub fn new() -> Self {
1125        unsafe extern "C" {
1126            fn vtkBiQuadraticQuadraticWedge_new() -> *mut core::ffi::c_void;
1127        }
1128        Self(unsafe { &mut *vtkBiQuadraticQuadraticWedge_new() })
1129    }
1130    #[cfg(test)]
1131    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1132        unsafe extern "C" {
1133            fn vtkBiQuadraticQuadraticWedge_get_ptr(
1134                sself: *mut core::ffi::c_void,
1135            ) -> *mut core::ffi::c_void;
1136        }
1137        unsafe { vtkBiQuadraticQuadraticWedge_get_ptr(self.0) }
1138    }
1139}
1140impl std::default::Default for vtkBiQuadraticQuadraticWedge {
1141    fn default() -> Self {
1142        Self::new()
1143    }
1144}
1145impl Drop for vtkBiQuadraticQuadraticWedge {
1146    fn drop(&mut self) {
1147        unsafe extern "C" {
1148            fn vtkBiQuadraticQuadraticWedge_destructor(sself: *mut core::ffi::c_void);
1149        }
1150        unsafe { vtkBiQuadraticQuadraticWedge_destructor(self.0) }
1151        self.0 = core::ptr::null_mut();
1152    }
1153}
1154#[test]
1155fn test_vtkBiQuadraticQuadraticWedge_create_drop() {
1156    let obj = vtkBiQuadraticQuadraticWedge::new();
1157    let ptr = obj.0;
1158    assert!(!ptr.is_null());
1159    assert!(unsafe { !obj._get_ptr().is_null() });
1160    drop(obj);
1161    let new_obj = vtkBiQuadraticQuadraticWedge(ptr);
1162    assert!(unsafe { new_obj._get_ptr().is_null() });
1163}
1164/// cell represents a parabolic, isoparametric triangle
1165///
1166///
1167/// vtkBiQuadraticTriangle is a concrete implementation of vtkNonLinearCell to
1168/// represent a two-dimensional, 7-node, isoparametric parabolic triangle. The
1169/// interpolation is the standard finite element, bi-quadratic isoparametric
1170/// shape function. The cell includes three mid-edge nodes besides the three
1171/// triangle vertices and a center node. The ordering of the three points defining the cell is
1172/// point ids (0-2,3-6) where id #3 is the midedge node between points
1173/// (0,1); id #4 is the midedge node between points (1,2); and id #5 is the
1174/// midedge node between points (2,0). id #6 is the center node of the cell.
1175///
1176/// @sa
1177/// vtkTriangle vtkQuadraticTriangle
1178/// vtkBiQuadraticQuad vtkBiQuadraticQuadraticWedge vtkBiQuadraticQuadraticHexahedron
1179/// @par Thanks:
1180/// @verbatim
1181/// This file has been developed by Oxalya - www.oxalya.com
1182/// @endverbatim
1183#[allow(non_camel_case_types)]
1184pub struct vtkBiQuadraticTriangle(*mut core::ffi::c_void);
1185impl vtkBiQuadraticTriangle {
1186    /// Creates a new [vtkBiQuadraticTriangle] wrapped inside `vtkNew`
1187    #[doc(alias = "vtkBiQuadraticTriangle")]
1188    pub fn new() -> Self {
1189        unsafe extern "C" {
1190            fn vtkBiQuadraticTriangle_new() -> *mut core::ffi::c_void;
1191        }
1192        Self(unsafe { &mut *vtkBiQuadraticTriangle_new() })
1193    }
1194    #[cfg(test)]
1195    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1196        unsafe extern "C" {
1197            fn vtkBiQuadraticTriangle_get_ptr(
1198                sself: *mut core::ffi::c_void,
1199            ) -> *mut core::ffi::c_void;
1200        }
1201        unsafe { vtkBiQuadraticTriangle_get_ptr(self.0) }
1202    }
1203}
1204impl std::default::Default for vtkBiQuadraticTriangle {
1205    fn default() -> Self {
1206        Self::new()
1207    }
1208}
1209impl Drop for vtkBiQuadraticTriangle {
1210    fn drop(&mut self) {
1211        unsafe extern "C" {
1212            fn vtkBiQuadraticTriangle_destructor(sself: *mut core::ffi::c_void);
1213        }
1214        unsafe { vtkBiQuadraticTriangle_destructor(self.0) }
1215        self.0 = core::ptr::null_mut();
1216    }
1217}
1218#[test]
1219fn test_vtkBiQuadraticTriangle_create_drop() {
1220    let obj = vtkBiQuadraticTriangle::new();
1221    let ptr = obj.0;
1222    assert!(!ptr.is_null());
1223    assert!(unsafe { !obj._get_ptr().is_null() });
1224    drop(obj);
1225    let new_obj = vtkBiQuadraticTriangle(ptr);
1226    assert!(unsafe { new_obj._get_ptr().is_null() });
1227}
1228/// implicit function for a bounding box
1229///
1230///
1231/// vtkBox computes the implicit function and/or gradient for a axis-aligned
1232/// bounding box. (The superclasses transform can be used to modify this
1233/// orientation.) Each side of the box is orthogonal to all other sides
1234/// meeting along shared edges and all faces are orthogonal to the x-y-z
1235/// coordinate axes.  (If you wish to orient this box differently, recall that
1236/// the superclass vtkImplicitFunction supports a transformation matrix.)
1237/// vtkBox is a concrete implementation of vtkImplicitFunction.
1238///
1239/// @sa
1240/// vtkCubeSource vtkImplicitFunction vtkBoundingBox
1241#[allow(non_camel_case_types)]
1242pub struct vtkBox(*mut core::ffi::c_void);
1243impl vtkBox {
1244    /// Creates a new [vtkBox] wrapped inside `vtkNew`
1245    #[doc(alias = "vtkBox")]
1246    pub fn new() -> Self {
1247        unsafe extern "C" {
1248            fn vtkBox_new() -> *mut core::ffi::c_void;
1249        }
1250        Self(unsafe { &mut *vtkBox_new() })
1251    }
1252    #[cfg(test)]
1253    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1254        unsafe extern "C" {
1255            fn vtkBox_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
1256        }
1257        unsafe { vtkBox_get_ptr(self.0) }
1258    }
1259}
1260impl std::default::Default for vtkBox {
1261    fn default() -> Self {
1262        Self::new()
1263    }
1264}
1265impl Drop for vtkBox {
1266    fn drop(&mut self) {
1267        unsafe extern "C" {
1268            fn vtkBox_destructor(sself: *mut core::ffi::c_void);
1269        }
1270        unsafe { vtkBox_destructor(self.0) }
1271        self.0 = core::ptr::null_mut();
1272    }
1273}
1274#[test]
1275fn test_vtkBox_create_drop() {
1276    let obj = vtkBox::new();
1277    let ptr = obj.0;
1278    assert!(!ptr.is_null());
1279    assert!(unsafe { !obj._get_ptr().is_null() });
1280    drop(obj);
1281    let new_obj = vtkBox(ptr);
1282    assert!(unsafe { new_obj._get_ptr().is_null() });
1283}
1284/// object to represent cell connectivity
1285///
1286///
1287/// vtkCellArray stores dataset topologies as an explicit connectivity table
1288/// listing the point ids that make up each cell.
1289///
1290/// Internally, the connectivity table is represented as two arrays: Offsets and
1291/// Connectivity.
1292///
1293/// Offsets is an array of [numCells+1] values indicating the index in the
1294/// Connectivity array where each cell's points start. The last value is always
1295/// the length of the Connectivity array.
1296///
1297/// The Connectivity array stores the lists of point ids for each cell.
1298///
1299/// Thus, for a dataset consisting of 2 triangles, a quad, and a line, the
1300/// internal arrays will appear as follows:
1301///
1302/// ```cpp,ignore
1303/// Topology:
1304/// ---------
1305/// Cell 0: Triangle | point ids: {0, 1, 2}
1306/// Cell 1: Triangle | point ids: {5, 7, 2}
1307/// Cell 2: Quad     | point ids: {3, 4, 6, 7}
1308/// Cell 3: Line     | point ids: {5, 8}
1309///
1310/// vtkCellArray (current):
1311/// -----------------------
1312/// Offsets:      {0, 3, 6, 10, 12}
1313/// Connectivity: {0, 1, 2, 5, 7, 2, 3, 4, 6, 7, 5, 8}
1314/// ```
1315///
1316/// While this class provides traversal methods (the legacy InitTraversal(),
1317/// GetNextCell() methods, and the newer method GetCellAtId()) these are in
1318/// general not thread-safe. Whenever possible it is preferable to use a
1319/// local thread-safe, vtkCellArrayIterator object, which can be obtained via:
1320///
1321/// ```cpp,ignore
1322/// auto iter = vtk::TakeSmartPointer(cellArray->NewIterator());
1323/// for (iter->GoToFirstCell(); !iter->IsDoneWithTraversal(); iter->GoToNextCell())
1324/// {
1325/// // do work with iter
1326/// }
1327/// ```
1328/// (Note however that depending on the type and structure of internal
1329/// storage, a cell array iterator may be significantly slower than direct
1330/// traversal over the cell array due to extra data copying. Factors of 3-4X
1331/// are not uncommon. See vtkCellArrayIterator for more information. Also note
1332/// that an iterator may become invalid if the internal vtkCellArray storage
1333/// is modified.)
1334///
1335/// Other methods are also available for allocation and memory-related
1336/// management; insertion of new cells into the vtkCellArray; and limited
1337/// editing operations such as replacing one cell with a new cell of the
1338/// same size.
1339///
1340/// The internal arrays may store either 32- or 64-bit values, though most of
1341/// the API will prefer to use vtkIdType to refer to items in these
1342/// arrays. This enables significant memory savings when vtkIdType is 64-bit,
1343/// but 32 bits are sufficient to store all of the values in the connectivity
1344/// table. Using 64-bit storage with a 32-bit vtkIdType is permitted, but
1345/// values too large to fit in a 32-bit signed integer will be truncated when
1346/// accessed through the API. (The particular internal storage type has
1347/// implications on performance depending on vtkIdType. If the internal
1348/// storage is equivalent to vtkIdType, then methods that return pointers to
1349/// arrays of point ids can share the internal storage; otherwise a copy of
1350/// internal memory must be performed.)
1351///
1352/// Methods for managing the storage type are:
1353///
1354/// - `bool IsStorage64Bit()`
1355/// - `bool IsStorageShareable() // Can pointers to internal storage be shared`
1356/// - `void Use32BitStorage()`
1357/// - `void Use64BitStorage()`
1358/// - `void UseDefaultStorage() // Depends on vtkIdType`
1359/// - `bool CanConvertTo32BitStorage()`
1360/// - `bool CanConvertTo64BitStorage()`
1361/// - `bool CanConvertToDefaultStorage() // Depends on vtkIdType`
1362/// - `bool ConvertTo32BitStorage()`
1363/// - `bool ConvertTo64BitStorage()`
1364/// - `bool ConvertToDefaultStorage() // Depends on vtkIdType`
1365/// - `bool ConvertToSmallestStorage() // Depends on current values in arrays`
1366///
1367/// Note that some legacy methods are still available that reflect the
1368/// previous storage format of this data, which embedded the cell sizes into
1369/// the Connectivity array:
1370///
1371/// ```cpp,ignore
1372/// vtkCellArray (legacy):
1373/// ----------------------
1374/// Connectivity: {3, 0, 1, 2, 3, 5, 7, 2, 4, 3, 4, 6, 7, 2, 5, 8}
1375/// |--Cell 0--||--Cell 1--||----Cell 2---||--C3-|
1376/// ```
1377///
1378/// The methods require an external lookup table to allow random access, which
1379/// was historically stored in the vtkCellTypes object. The following methods in
1380/// vtkCellArray still support this style of indexing for compatibility
1381/// purposes, but these are slow as they must perform some complex computations
1382/// to convert the old "location" into the new "offset" and should be avoided.
1383/// These methods (and their modern equivalents) are:
1384///
1385/// - GetCell (Prefer GetCellAtId)
1386/// - GetInsertLocation (Prefer GetNumberOfCells)
1387/// - GetTraversalLocation (Prefer GetTraversalCellId, or better, NewIterator)
1388/// - SetTraversalLocation (Prefer SetTraversalLocation, or better, NewIterator)
1389/// - ReverseCell (Prefer ReverseCellAtId)
1390/// - ReplaceCell (Prefer ReplaceCellAtId)
1391/// - SetCells (Use ImportLegacyFormat, or SetData)
1392/// - GetData (Use ExportLegacyFormat, or Get[Offsets|Connectivity]Array[|32|64])
1393///
1394/// Some other legacy methods were completely removed, such as GetPointer() /
1395/// WritePointer(), since they are cannot be effectively emulated under the
1396/// current design. If external code needs to support both the old and new
1397/// version of the vtkCellArray API, the VTK_CELL_ARRAY_V2 preprocessor
1398/// definition may be used to detect which API is being compiled against.
1399///
1400/// @sa vtkAbstractCellArray vtkStructuredCellArray vtkCellTypes vtkCellLinks
1401#[allow(non_camel_case_types)]
1402pub struct vtkCellArray(*mut core::ffi::c_void);
1403impl vtkCellArray {
1404    /// Creates a new [vtkCellArray] wrapped inside `vtkNew`
1405    #[doc(alias = "vtkCellArray")]
1406    pub fn new() -> Self {
1407        unsafe extern "C" {
1408            fn vtkCellArray_new() -> *mut core::ffi::c_void;
1409        }
1410        Self(unsafe { &mut *vtkCellArray_new() })
1411    }
1412    #[cfg(test)]
1413    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1414        unsafe extern "C" {
1415            fn vtkCellArray_get_ptr(
1416                sself: *mut core::ffi::c_void,
1417            ) -> *mut core::ffi::c_void;
1418        }
1419        unsafe { vtkCellArray_get_ptr(self.0) }
1420    }
1421}
1422impl std::default::Default for vtkCellArray {
1423    fn default() -> Self {
1424        Self::new()
1425    }
1426}
1427impl Drop for vtkCellArray {
1428    fn drop(&mut self) {
1429        unsafe extern "C" {
1430            fn vtkCellArray_destructor(sself: *mut core::ffi::c_void);
1431        }
1432        unsafe { vtkCellArray_destructor(self.0) }
1433        self.0 = core::ptr::null_mut();
1434    }
1435}
1436#[test]
1437fn test_vtkCellArray_create_drop() {
1438    let obj = vtkCellArray::new();
1439    let ptr = obj.0;
1440    assert!(!ptr.is_null());
1441    assert!(unsafe { !obj._get_ptr().is_null() });
1442    drop(obj);
1443    let new_obj = vtkCellArray(ptr);
1444    assert!(unsafe { new_obj._get_ptr().is_null() });
1445}
1446/// Encapsulate traversal logic for vtkCellArray.
1447///
1448///
1449/// This is iterator for thread-safe traversal of a vtkCellArray. It provides
1450/// random access and forward iteration. Typical usage for forward iteration
1451/// looks like:
1452///
1453/// ```cpp,ignore
1454/// auto iter = vtk::TakeSmartPointer(cellArray->NewIterator());
1455/// for (iter->GoToFirstCell(); !iter->IsDoneWithTraversal(); iter->GoToNextCell())
1456/// {
1457/// // do work with iter
1458/// iter->GetCurrentCell(numCellPts, cellPts);
1459/// }
1460/// ```
1461///
1462/// Typical usage for random access looks like:
1463///
1464/// ```cpp,ignore
1465/// auto iter = vtk::TakeSmartPointer(cellArray->NewIterator());
1466/// iter->GetCellAtId(cellId, numCellPts, cellPts);
1467/// ```
1468///
1469/// Here @a cellId is the id of the ith cell in the vtkCellArray;
1470/// @a numCellPts is the number of points defining the cell represented
1471/// as vtkIdType; and @a cellPts is a pointer to the point ids defined
1472/// as vtkIdType const*&.
1473///
1474/// Internally the iterator may copy data from the vtkCellArray, or reference
1475/// the internal vtkCellArray storage. This depends on the relationship of
1476/// vtkIdType to the type and structure of internal storage. If the type of
1477/// storage is the same as vtkIdType, and the storage is a single-component
1478/// AOS array (i.e., a 1D array), then shared access to the vtkCellArray
1479/// storage is provided. Otherwise, the data from storage is copied into an
1480/// internal iterator buffer. (Of course copying is slower and can result in
1481/// 3-4x reduction in traversal performance. On the other hand, the
1482/// vtkCellArray can use the appropriate storage to save memory, perform
1483/// zero-copy, and/or efficiently represent the cell connectivity
1484/// information.) Note that referencing internal vtkCellArray storage has
1485/// implications on the validity of the iterator. If the underlying
1486/// vtkCellArray storage changes while iterating, and the iterator is
1487/// referencing this storage, unpredictable and catastrophic results are
1488/// likely - hence do not modify the vtkCellArray while iterating.
1489///
1490/// @sa
1491/// vtkCellArray
1492#[allow(non_camel_case_types)]
1493pub struct vtkCellArrayIterator(*mut core::ffi::c_void);
1494impl vtkCellArrayIterator {
1495    /// Creates a new [vtkCellArrayIterator] wrapped inside `vtkNew`
1496    #[doc(alias = "vtkCellArrayIterator")]
1497    pub fn new() -> Self {
1498        unsafe extern "C" {
1499            fn vtkCellArrayIterator_new() -> *mut core::ffi::c_void;
1500        }
1501        Self(unsafe { &mut *vtkCellArrayIterator_new() })
1502    }
1503    #[cfg(test)]
1504    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1505        unsafe extern "C" {
1506            fn vtkCellArrayIterator_get_ptr(
1507                sself: *mut core::ffi::c_void,
1508            ) -> *mut core::ffi::c_void;
1509        }
1510        unsafe { vtkCellArrayIterator_get_ptr(self.0) }
1511    }
1512}
1513impl std::default::Default for vtkCellArrayIterator {
1514    fn default() -> Self {
1515        Self::new()
1516    }
1517}
1518impl Drop for vtkCellArrayIterator {
1519    fn drop(&mut self) {
1520        unsafe extern "C" {
1521            fn vtkCellArrayIterator_destructor(sself: *mut core::ffi::c_void);
1522        }
1523        unsafe { vtkCellArrayIterator_destructor(self.0) }
1524        self.0 = core::ptr::null_mut();
1525    }
1526}
1527#[test]
1528fn test_vtkCellArrayIterator_create_drop() {
1529    let obj = vtkCellArrayIterator::new();
1530    let ptr = obj.0;
1531    assert!(!ptr.is_null());
1532    assert!(unsafe { !obj._get_ptr().is_null() });
1533    drop(obj);
1534    let new_obj = vtkCellArrayIterator(ptr);
1535    assert!(unsafe { new_obj._get_ptr().is_null() });
1536}
1537/// A function defined over the physical domain of a vtkCellGrid.
1538///
1539///
1540/// This is a base class for attributes (functions) defined on the space
1541/// discretized by a vtkCellGrid. A vtkCellAttribute class must handle
1542/// cells of all types present in the grid.
1543///
1544/// @sa vtkCellGrid
1545#[allow(non_camel_case_types)]
1546pub struct vtkCellAttribute(*mut core::ffi::c_void);
1547impl vtkCellAttribute {
1548    /// Creates a new [vtkCellAttribute] wrapped inside `vtkNew`
1549    #[doc(alias = "vtkCellAttribute")]
1550    pub fn new() -> Self {
1551        unsafe extern "C" {
1552            fn vtkCellAttribute_new() -> *mut core::ffi::c_void;
1553        }
1554        Self(unsafe { &mut *vtkCellAttribute_new() })
1555    }
1556    #[cfg(test)]
1557    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1558        unsafe extern "C" {
1559            fn vtkCellAttribute_get_ptr(
1560                sself: *mut core::ffi::c_void,
1561            ) -> *mut core::ffi::c_void;
1562        }
1563        unsafe { vtkCellAttribute_get_ptr(self.0) }
1564    }
1565}
1566impl std::default::Default for vtkCellAttribute {
1567    fn default() -> Self {
1568        Self::new()
1569    }
1570}
1571impl Drop for vtkCellAttribute {
1572    fn drop(&mut self) {
1573        unsafe extern "C" {
1574            fn vtkCellAttribute_destructor(sself: *mut core::ffi::c_void);
1575        }
1576        unsafe { vtkCellAttribute_destructor(self.0) }
1577        self.0 = core::ptr::null_mut();
1578    }
1579}
1580#[test]
1581fn test_vtkCellAttribute_create_drop() {
1582    let obj = vtkCellAttribute::new();
1583    let ptr = obj.0;
1584    assert!(!ptr.is_null());
1585    assert!(unsafe { !obj._get_ptr().is_null() });
1586    drop(obj);
1587    let new_obj = vtkCellAttribute(ptr);
1588    assert!(unsafe { new_obj._get_ptr().is_null() });
1589}
1590/// Perform a per-cell calculation on a vtkCellAttribute.
1591///
1592///
1593/// This empty class serves as a common base class for calculators that
1594/// compute quantities based on cell-attribute data.
1595///
1596/// Examples of calculators include
1597/// + computing interpolated values;
1598/// + computing spatial derivatives (such as the Jacobian or Hessian matrices); or
1599/// + computing integrals over an entire cell.
1600///
1601/// Each type of calculator provides its own abstract subclass with virtual methods
1602/// and then per-cell-type, per-attribute-type concrete implementations.
1603///
1604/// @sa vtkCellGridAttribute
1605#[allow(non_camel_case_types)]
1606pub struct vtkCellAttributeCalculator(*mut core::ffi::c_void);
1607impl vtkCellAttributeCalculator {
1608    /// Creates a new [vtkCellAttributeCalculator] wrapped inside `vtkNew`
1609    #[doc(alias = "vtkCellAttributeCalculator")]
1610    pub fn new() -> Self {
1611        unsafe extern "C" {
1612            fn vtkCellAttributeCalculator_new() -> *mut core::ffi::c_void;
1613        }
1614        Self(unsafe { &mut *vtkCellAttributeCalculator_new() })
1615    }
1616    #[cfg(test)]
1617    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1618        unsafe extern "C" {
1619            fn vtkCellAttributeCalculator_get_ptr(
1620                sself: *mut core::ffi::c_void,
1621            ) -> *mut core::ffi::c_void;
1622        }
1623        unsafe { vtkCellAttributeCalculator_get_ptr(self.0) }
1624    }
1625}
1626impl std::default::Default for vtkCellAttributeCalculator {
1627    fn default() -> Self {
1628        Self::new()
1629    }
1630}
1631impl Drop for vtkCellAttributeCalculator {
1632    fn drop(&mut self) {
1633        unsafe extern "C" {
1634            fn vtkCellAttributeCalculator_destructor(sself: *mut core::ffi::c_void);
1635        }
1636        unsafe { vtkCellAttributeCalculator_destructor(self.0) }
1637        self.0 = core::ptr::null_mut();
1638    }
1639}
1640#[test]
1641fn test_vtkCellAttributeCalculator_create_drop() {
1642    let obj = vtkCellAttributeCalculator::new();
1643    let ptr = obj.0;
1644    assert!(!ptr.is_null());
1645    assert!(unsafe { !obj._get_ptr().is_null() });
1646    drop(obj);
1647    let new_obj = vtkCellAttributeCalculator(ptr);
1648    assert!(unsafe { new_obj._get_ptr().is_null() });
1649}
1650/// represent and manipulate cell attribute data
1651///
1652///
1653/// vtkCellData is a class that is used to represent and manipulate
1654/// cell attribute data (e.g., scalars, vectors, normals, texture
1655/// coordinates, etc.) Special methods are provided to work with filter
1656/// objects, such as passing data through filter, copying data from one
1657/// cell to another, and interpolating data given cell interpolation weights.
1658///
1659/// By default, `GhostTypesToSkip` is set to `DUPLICATECELL | HIDDENCELL | REFINEDCELL`.
1660/// See `vtkDataSetAttributes` for the definition of those constants.
1661#[allow(non_camel_case_types)]
1662pub struct vtkCellData(*mut core::ffi::c_void);
1663impl vtkCellData {
1664    /// Creates a new [vtkCellData] wrapped inside `vtkNew`
1665    #[doc(alias = "vtkCellData")]
1666    pub fn new() -> Self {
1667        unsafe extern "C" {
1668            fn vtkCellData_new() -> *mut core::ffi::c_void;
1669        }
1670        Self(unsafe { &mut *vtkCellData_new() })
1671    }
1672    #[cfg(test)]
1673    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1674        unsafe extern "C" {
1675            fn vtkCellData_get_ptr(
1676                sself: *mut core::ffi::c_void,
1677            ) -> *mut core::ffi::c_void;
1678        }
1679        unsafe { vtkCellData_get_ptr(self.0) }
1680    }
1681}
1682impl std::default::Default for vtkCellData {
1683    fn default() -> Self {
1684        Self::new()
1685    }
1686}
1687impl Drop for vtkCellData {
1688    fn drop(&mut self) {
1689        unsafe extern "C" {
1690            fn vtkCellData_destructor(sself: *mut core::ffi::c_void);
1691        }
1692        unsafe { vtkCellData_destructor(self.0) }
1693        self.0 = core::ptr::null_mut();
1694    }
1695}
1696#[test]
1697fn test_vtkCellData_create_drop() {
1698    let obj = vtkCellData::new();
1699    let ptr = obj.0;
1700    assert!(!ptr.is_null());
1701    assert!(unsafe { !obj._get_ptr().is_null() });
1702    drop(obj);
1703    let new_obj = vtkCellData(ptr);
1704    assert!(unsafe { new_obj._get_ptr().is_null() });
1705}
1706/// Visualization data composed of cells of arbitrary type.
1707///
1708///
1709/// vtkCellGrid inherits vtkDataObject in order to introduce the concept
1710/// of cells that, instead of relying on spatial points to specify their
1711/// shape, rely on degrees of freedom (which may or may not be embedded
1712/// in a world coordinate system).
1713///
1714/// The degrees of freedom that define cells and the functions using those
1715/// cells as their domain are provided in data arrays.
1716/// The arrays are partitioned into groups (vtkDataSetAttributes) by the
1717/// registered cell types. Each array in a group has the same number of tuples.
1718///
1719/// @sa vtkDataObject vtkDataSetAttributes
1720#[allow(non_camel_case_types)]
1721pub struct vtkCellGrid(*mut core::ffi::c_void);
1722impl vtkCellGrid {
1723    /// Creates a new [vtkCellGrid] wrapped inside `vtkNew`
1724    #[doc(alias = "vtkCellGrid")]
1725    pub fn new() -> Self {
1726        unsafe extern "C" {
1727            fn vtkCellGrid_new() -> *mut core::ffi::c_void;
1728        }
1729        Self(unsafe { &mut *vtkCellGrid_new() })
1730    }
1731    #[cfg(test)]
1732    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1733        unsafe extern "C" {
1734            fn vtkCellGrid_get_ptr(
1735                sself: *mut core::ffi::c_void,
1736            ) -> *mut core::ffi::c_void;
1737        }
1738        unsafe { vtkCellGrid_get_ptr(self.0) }
1739    }
1740}
1741impl std::default::Default for vtkCellGrid {
1742    fn default() -> Self {
1743        Self::new()
1744    }
1745}
1746impl Drop for vtkCellGrid {
1747    fn drop(&mut self) {
1748        unsafe extern "C" {
1749            fn vtkCellGrid_destructor(sself: *mut core::ffi::c_void);
1750        }
1751        unsafe { vtkCellGrid_destructor(self.0) }
1752        self.0 = core::ptr::null_mut();
1753    }
1754}
1755#[test]
1756fn test_vtkCellGrid_create_drop() {
1757    let obj = vtkCellGrid::new();
1758    let ptr = obj.0;
1759    assert!(!ptr.is_null());
1760    assert!(unsafe { !obj._get_ptr().is_null() });
1761    drop(obj);
1762    let new_obj = vtkCellGrid(ptr);
1763    assert!(unsafe { new_obj._get_ptr().is_null() });
1764}
1765/// Compute the geometric bounds of a cell-grid.
1766///
1767///
1768/// If no cells are present, invalid bounds will be returned
1769/// (i.e., bds[1] < bds[0] after calling `GetBounds(bds)`).
1770#[allow(non_camel_case_types)]
1771pub struct vtkCellGridBoundsQuery(*mut core::ffi::c_void);
1772impl vtkCellGridBoundsQuery {
1773    /// Creates a new [vtkCellGridBoundsQuery] wrapped inside `vtkNew`
1774    #[doc(alias = "vtkCellGridBoundsQuery")]
1775    pub fn new() -> Self {
1776        unsafe extern "C" {
1777            fn vtkCellGridBoundsQuery_new() -> *mut core::ffi::c_void;
1778        }
1779        Self(unsafe { &mut *vtkCellGridBoundsQuery_new() })
1780    }
1781    #[cfg(test)]
1782    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1783        unsafe extern "C" {
1784            fn vtkCellGridBoundsQuery_get_ptr(
1785                sself: *mut core::ffi::c_void,
1786            ) -> *mut core::ffi::c_void;
1787        }
1788        unsafe { vtkCellGridBoundsQuery_get_ptr(self.0) }
1789    }
1790}
1791impl std::default::Default for vtkCellGridBoundsQuery {
1792    fn default() -> Self {
1793        Self::new()
1794    }
1795}
1796impl Drop for vtkCellGridBoundsQuery {
1797    fn drop(&mut self) {
1798        unsafe extern "C" {
1799            fn vtkCellGridBoundsQuery_destructor(sself: *mut core::ffi::c_void);
1800        }
1801        unsafe { vtkCellGridBoundsQuery_destructor(self.0) }
1802        self.0 = core::ptr::null_mut();
1803    }
1804}
1805#[test]
1806fn test_vtkCellGridBoundsQuery_create_drop() {
1807    let obj = vtkCellGridBoundsQuery::new();
1808    let ptr = obj.0;
1809    assert!(!ptr.is_null());
1810    assert!(unsafe { !obj._get_ptr().is_null() });
1811    drop(obj);
1812    let new_obj = vtkCellGridBoundsQuery(ptr);
1813    assert!(unsafe { new_obj._get_ptr().is_null() });
1814}
1815/// Copy the cell metadata and attribute(s) of one cell-grid into another.
1816///
1817///
1818/// Note that this query is run by vtkCellGrid::ShallowCopy(), vtkCellGrid::DeepCOpy(),
1819/// and vtkCellGrid::CopyStructure().
1820///
1821/// In general, there are five types of information in cell grids that may
1822/// be transferred from the source cell-grid to the target. Here are
1823/// the types of information and the options which control how that
1824/// information is copied. Exactly how these flags on the query are used is
1825/// up to each responder.
1826///
1827/// + **Cell metadata records.** These records are always copied.
1828/// In the future, there may be an option to omit cells of specific types.
1829///
1830/// + **Individual cells.** If subclasses of vtkCellMetadata contain
1831/// further information, you may use SetCopyCells() to control
1832/// whether that is copied or whether the new vtkCellMetadata
1833/// instance is left uninitialized.
1834/// When GetCopyCells() is enabled, the cell topology should be copied
1835/// (though not necessarily the shape attribute's arrays);
1836/// CopyCells overrides the copying of topological arrays even if
1837/// CopyArrays is turned off.
1838/// This way, if CopyCells is on, you should expect the source and
1839/// target to report the same number of cells.
1840///
1841/// + **Cell attributes.** You may request that only the shape attribute
1842/// is copied from the source to the target with CopyOnlyShapeOn()
1843/// or control which attributes are copied by calling
1844/// AddSourceCellAttributeId() with the ID of each source attribute
1845/// you wish copied.
1846///
1847/// + **Cell-attribute arrays.** For each cell-attribute that is copied,
1848/// zero or more arrays may be associated the attribute. You can
1849/// control how the arrays are copied like so:
1850///
1851/// + SetCopyArrays() controls whether arrays should be created or not.
1852/// How the arrays are copied depends on whether CopyArrayValues and
1853/// DeepCopyArrays are enabled. Note that this setting should be
1854/// ignored when copying cell topology (as opposed to attribute) arrays
1855/// as CopyCells should control whether cells are present in the output.
1856/// If cell-topology arrays are referenced by a cell attribute, be aware
1857/// that disabling CopyArrays may still produce some entries for topology
1858/// arrays.
1859/// + SetCopyArrayValues() controls whether arrays should be (a) created
1860/// but left empty or (b) created and populated with the source-array's
1861/// values. This is useful for creating an empty copy that has all
1862/// the necessary arrays prepared but no tuples so that further
1863/// processing can insert new cells and attribute data.
1864/// + SetDeepCopyArrays() controls whether to create deep copies of
1865/// arrays or shallow copies, but only when GetCopyArrayValues()
1866/// returns true.
1867///
1868/// + **Schema and content version.** A cell-grid may advertise that its
1869/// data adheres to a formal specification (which is indicated by a
1870/// name and version number). If you wish to copy this information,
1871/// ensure CopySchemaOn() has been called.
1872/// If GetCopySchema() is true and the source has a content version
1873/// number, the target cell-grid will have its content version
1874/// incremented past the source's content version.
1875/// Incrementing the content version even when the grids are otherwise
1876/// identical improves track-ability, since the version number informs
1877/// which grid preceded the other.
1878///
1879/// ## For Callers
1880///
1881/// You **must** execute this query on the source cell-grid, not the target.
1882/// Only the source is guaranteed to have cells of the proper types present;
1883/// the query iterates over each cell-type, so they must be present.
1884///
1885/// Executing this query will overwrite the target cell-grid with the source,
1886/// erasing all of its cell metadata.
1887/// In the future, this class may offer more control over which types of
1888/// cells to copy from the source to the target.
1889///
1890/// ## For Responders
1891///
1892/// Responders to this query may call the helper methods provided
1893/// to copy a cell-attribute's arrays and create/update a cell-attribute.
1894/// These calls update maps from source to target arrays and attributes,
1895/// which you can inspect by calling GetArrayMap() and GetAttributeMap(),
1896/// respectively.
1897/// The latter is important since distinct attributes may have identical
1898/// names (though this is not advised).
1899#[allow(non_camel_case_types)]
1900pub struct vtkCellGridCopyQuery(*mut core::ffi::c_void);
1901impl vtkCellGridCopyQuery {
1902    /// Creates a new [vtkCellGridCopyQuery] wrapped inside `vtkNew`
1903    #[doc(alias = "vtkCellGridCopyQuery")]
1904    pub fn new() -> Self {
1905        unsafe extern "C" {
1906            fn vtkCellGridCopyQuery_new() -> *mut core::ffi::c_void;
1907        }
1908        Self(unsafe { &mut *vtkCellGridCopyQuery_new() })
1909    }
1910    #[cfg(test)]
1911    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
1912        unsafe extern "C" {
1913            fn vtkCellGridCopyQuery_get_ptr(
1914                sself: *mut core::ffi::c_void,
1915            ) -> *mut core::ffi::c_void;
1916        }
1917        unsafe { vtkCellGridCopyQuery_get_ptr(self.0) }
1918    }
1919}
1920impl std::default::Default for vtkCellGridCopyQuery {
1921    fn default() -> Self {
1922        Self::new()
1923    }
1924}
1925impl Drop for vtkCellGridCopyQuery {
1926    fn drop(&mut self) {
1927        unsafe extern "C" {
1928            fn vtkCellGridCopyQuery_destructor(sself: *mut core::ffi::c_void);
1929        }
1930        unsafe { vtkCellGridCopyQuery_destructor(self.0) }
1931        self.0 = core::ptr::null_mut();
1932    }
1933}
1934#[test]
1935fn test_vtkCellGridCopyQuery_create_drop() {
1936    let obj = vtkCellGridCopyQuery::new();
1937    let ptr = obj.0;
1938    assert!(!ptr.is_null());
1939    assert!(unsafe { !obj._get_ptr().is_null() });
1940    drop(obj);
1941    let new_obj = vtkCellGridCopyQuery(ptr);
1942    assert!(unsafe { new_obj._get_ptr().is_null() });
1943}
1944/// Evaluate a field (vtkCellAttribute) at some points inside cells.
1945///
1946///
1947/// This class is a cell-grid query whose purpose is to determine the
1948/// value a vtkCellAttribute takes on at one or more points inside
1949/// the domain of a vtkCellGrid.
1950///
1951/// This class performs its work in two phases:
1952/// + Classification. Input points are classified by the type and index
1953/// of cell in the grid in which they lie.
1954/// + Attribute/field interpolation. Each cell is asked to interpolate
1955/// the value of a cell-attribute at each point classified to it.
1956///
1957/// As an example, consider a cell-grid holding 10 triangles and 20 quads
1958/// and a query that is provided 5 points. The first phase will identify
1959/// which of the 5 points are insides triangles, which lie in quadrilaterals,
1960/// and which lie in neither. Say that 2 lie inside triangles, 2 inside
1961/// quadrilaterals, and 1 is outside the domain.
1962/// Furthermore, the first phase will identify which particular triangles
1963/// or quadrilaterals contain the input points. The two points which
1964/// lie in triangles will report a number in [0,10[ while the two points
1965/// which lie in quadrilaterals will report a number in [0, 20[.
1966/// Finally, for cells which have a reference element, the parametric
1967/// coordinates of each input point are computed.
1968///
1969/// The second phase additionally interpolates a cell-attribute (let's
1970/// say "Velocity" in our example) at each input point.
1971///
1972/// You may configure the query to skip either phase (classification or
1973/// interpolation). If you skip classification, you must provide the
1974/// the classification information for the input points.
1975/// The method you call (ClassifyPoints, InterpolatePoints, or
1976/// InterpolateCellParameters) determines which phase(s) are applied
1977/// during evaluation.
1978///
1979/// When running in InterpolatePoints mode (both classification and
1980/// interpolation phases are performed), the output from our example
1981/// is reported like so:
1982///
1983/// + `GetClassifierCellTypes()` – returns an array with a cell-type hash
1984/// for each type of cell containing an input point. The hash value can
1985/// be used to construct a vtkStringToken.
1986/// Our example would return an array with 3 values which might be
1987/// ordered: "vtkDGTri"_hash, "vtkDGQuad"_hash, and 0 (an "invalid" hash).
1988/// + `GetClassifierCellOffsets()` – returns an array with the same number
1989/// of values as the call above. Each value specifies the start of
1990/// reporting for points contained in the corresponding cell type.
1991/// Our example would return [0, 2, 4] to match the values above.
1992/// + `GetClassifierPointIDs()` – returns an array whose length matches
1993/// the number of input points. Each value is the index of an input
1994/// point. Input points do not have their order preserved so that
1995/// all the points contained in a single cell can be reported together.
1996/// Our example might return [4, 2, 1, 0, 3]. This will always be a
1997/// permutation of the counting integers and, for our example, always
1998/// hold integers in [0, 5[.
1999/// + `GetClassifierCellIndices()` – returns an array whose length matches
2000/// the number of input points. Each value is the index into cells
2001/// of the corresponding type, indicating which cell contains
2002/// the input point.
2003/// For our example, the first two numbers will be in [0, 10[, the second
2004/// two will be in [0, 20[, and the last will be -1. (This is because
2005/// we have two points inside 10 triangles, two points inside 20 quads,
2006/// and one un-classifiable input point.)
2007/// + `GetClassifierPointParameters()` – returns an array whose length
2008/// matches the number of input points. Each value is a 3-tuple of
2009/// reference-cell coordinates (or indeterminate if the cell type does
2010/// not provide a reference cell).
2011/// + `GetInterpolatedValues()` – returns an array whose number of tuples
2012/// matches the number of input points and whose number of components
2013/// matches the number of components of the requested cell-attribute.
2014/// For our example, an array with 5 tuples of 3 components each would be
2015/// returned; it would be named "Velocity" (matching the cell-attribute's
2016/// name).
2017///
2018/// Note that because you can pass in the arrays above (except the interpolated
2019/// values) to short-circuit classification, it is possible to evaluate
2020/// multiple cell-attributes without duplicating the classification work.
2021///
2022/// In InterpolateCellParameters mode, calling the methods above which begin
2023/// with `GetClassifier…` will simply return the input arrays you passed to
2024/// configure the query.
2025///
2026/// ## Warnings
2027///
2028/// The output arrays above generally match the number of input points, but
2029/// will sometimes exceed the number of input points. This will occur when
2030/// multiple cells contain an input point (either on a shared boundary or
2031/// because the cells overlap).
2032///
2033/// Note that the output should never have fewer points than the input as
2034/// even points outside the cells will be classified as such.
2035///
2036/// Currently, this class is limited to evaluating numeric attributes;
2037/// string or variant arrays are not supported.
2038#[allow(non_camel_case_types)]
2039pub struct vtkCellGridEvaluator(*mut core::ffi::c_void);
2040impl vtkCellGridEvaluator {
2041    /// Creates a new [vtkCellGridEvaluator] wrapped inside `vtkNew`
2042    #[doc(alias = "vtkCellGridEvaluator")]
2043    pub fn new() -> Self {
2044        unsafe extern "C" {
2045            fn vtkCellGridEvaluator_new() -> *mut core::ffi::c_void;
2046        }
2047        Self(unsafe { &mut *vtkCellGridEvaluator_new() })
2048    }
2049    #[cfg(test)]
2050    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2051        unsafe extern "C" {
2052            fn vtkCellGridEvaluator_get_ptr(
2053                sself: *mut core::ffi::c_void,
2054            ) -> *mut core::ffi::c_void;
2055        }
2056        unsafe { vtkCellGridEvaluator_get_ptr(self.0) }
2057    }
2058}
2059impl std::default::Default for vtkCellGridEvaluator {
2060    fn default() -> Self {
2061        Self::new()
2062    }
2063}
2064impl Drop for vtkCellGridEvaluator {
2065    fn drop(&mut self) {
2066        unsafe extern "C" {
2067            fn vtkCellGridEvaluator_destructor(sself: *mut core::ffi::c_void);
2068        }
2069        unsafe { vtkCellGridEvaluator_destructor(self.0) }
2070        self.0 = core::ptr::null_mut();
2071    }
2072}
2073#[test]
2074fn test_vtkCellGridEvaluator_create_drop() {
2075    let obj = vtkCellGridEvaluator::new();
2076    let ptr = obj.0;
2077    assert!(!ptr.is_null());
2078    assert!(unsafe { !obj._get_ptr().is_null() });
2079    drop(obj);
2080    let new_obj = vtkCellGridEvaluator(ptr);
2081    assert!(unsafe { new_obj._get_ptr().is_null() });
2082}
2083/// Compute the range of a component of some vtkCellAttribute.
2084///
2085///
2086/// If \a FiniteRange is true, then the range will omit any NaN or ±Inf
2087/// values present in the data. Otherwise (the default), the range may
2088/// contain these exceptional values.
2089///
2090/// If \a Component is
2091/// + -2 (the default), the range of L₂-norms is computed.
2092/// + -1, the range of L₁-norms is computed.
2093/// + out of bounds, then an invalid range will be returned ([1, 0]).
2094///
2095/// Note that this query is intended to be run by vtkCellGrid::GetRange()
2096/// since the cell-grid holds a cache of ranges. You may run it outside
2097/// of this method, but that may cause unnecessary re-computation of ranges.
2098#[allow(non_camel_case_types)]
2099pub struct vtkCellGridRangeQuery(*mut core::ffi::c_void);
2100impl vtkCellGridRangeQuery {
2101    /// Creates a new [vtkCellGridRangeQuery] wrapped inside `vtkNew`
2102    #[doc(alias = "vtkCellGridRangeQuery")]
2103    pub fn new() -> Self {
2104        unsafe extern "C" {
2105            fn vtkCellGridRangeQuery_new() -> *mut core::ffi::c_void;
2106        }
2107        Self(unsafe { &mut *vtkCellGridRangeQuery_new() })
2108    }
2109    #[cfg(test)]
2110    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2111        unsafe extern "C" {
2112            fn vtkCellGridRangeQuery_get_ptr(
2113                sself: *mut core::ffi::c_void,
2114            ) -> *mut core::ffi::c_void;
2115        }
2116        unsafe { vtkCellGridRangeQuery_get_ptr(self.0) }
2117    }
2118}
2119impl std::default::Default for vtkCellGridRangeQuery {
2120    fn default() -> Self {
2121        Self::new()
2122    }
2123}
2124impl Drop for vtkCellGridRangeQuery {
2125    fn drop(&mut self) {
2126        unsafe extern "C" {
2127            fn vtkCellGridRangeQuery_destructor(sself: *mut core::ffi::c_void);
2128        }
2129        unsafe { vtkCellGridRangeQuery_destructor(self.0) }
2130        self.0 = core::ptr::null_mut();
2131    }
2132}
2133#[test]
2134fn test_vtkCellGridRangeQuery_create_drop() {
2135    let obj = vtkCellGridRangeQuery::new();
2136    let ptr = obj.0;
2137    assert!(!ptr.is_null());
2138    assert!(unsafe { !obj._get_ptr().is_null() });
2139    drop(obj);
2140    let new_obj = vtkCellGridRangeQuery(ptr);
2141    assert!(unsafe { new_obj._get_ptr().is_null() });
2142}
2143/// A container that holds objects able to respond to queries
2144///
2145/// specialized for particular vtkCellMetadata types.
2146///
2147/// This class holds sets of responders for vtkCellGridQuery and for
2148/// vtkCellAttributeQuery.
2149///
2150/// ## Cell-grid query responders
2151///
2152/// vtkCellGridResponders holds a list of objects statically registered to
2153/// the vtkCellMetadata subclass. These objects respond to
2154/// queries for information (e.g., a bounding box) or processing
2155/// (e.g., rendering, picking, generating isocontours) for one cell
2156/// type (and subclasses of that cell type if no more specific
2157/// responder is registered).
2158///
2159/// Application code (such as a plugin) can register subclasses of
2160/// vtkCellGridResponse which accept the API of a particular
2161/// vtkCellGridQuery for that cell type.
2162/// Then, when a query is passed to the cell, this collection will
2163/// identify matching responders for the query and invoke them until
2164/// one returns true (indicating success).
2165/// Multiple matches can exist as a responder can be registered to a
2166/// common base cell class and/or to handle common base query classes.
2167///
2168/// If a given cell type cannot respond to a query, its superclasses
2169/// are asked to respond. If no superclass can respond to the query,
2170/// then query's superclasses are searched for responders.
2171///
2172/// Because queries can be registered to cell types at any time,
2173/// existing cell types can be extended to support new features
2174/// by additional libraries.
2175///
2176/// ## Cell-attribute calculators
2177///
2178/// In order to support the evaluation of vtkCellAttribute data
2179/// on any vtkCellMetadata (cell type), this class also holds
2180/// "calculators" grouped by both attribute and cell type.
2181/// This API is different that vtkCellGridQuery because
2182/// vtkCellAttribute is not subclassed by attribute type but
2183/// rather uses vtkStringToken data to determine the nature of the
2184/// attribute (e.g., Lagrange; Nedelec; Raviart-Thomas; etc.).
2185///
2186/// It is also different in that these objects are expected to be
2187/// used inside vtkCellGridQuery to evaluate a single cell at a
2188/// time rather than longer-running queries across all cells.
2189///
2190/// @sa vtkCellMetadata vtkCellGrid vtkCellAttribute
2191#[allow(non_camel_case_types)]
2192pub struct vtkCellGridResponders(*mut core::ffi::c_void);
2193impl vtkCellGridResponders {
2194    /// Creates a new [vtkCellGridResponders] wrapped inside `vtkNew`
2195    #[doc(alias = "vtkCellGridResponders")]
2196    pub fn new() -> Self {
2197        unsafe extern "C" {
2198            fn vtkCellGridResponders_new() -> *mut core::ffi::c_void;
2199        }
2200        Self(unsafe { &mut *vtkCellGridResponders_new() })
2201    }
2202    #[cfg(test)]
2203    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2204        unsafe extern "C" {
2205            fn vtkCellGridResponders_get_ptr(
2206                sself: *mut core::ffi::c_void,
2207            ) -> *mut core::ffi::c_void;
2208        }
2209        unsafe { vtkCellGridResponders_get_ptr(self.0) }
2210    }
2211}
2212impl std::default::Default for vtkCellGridResponders {
2213    fn default() -> Self {
2214        Self::new()
2215    }
2216}
2217impl Drop for vtkCellGridResponders {
2218    fn drop(&mut self) {
2219        unsafe extern "C" {
2220            fn vtkCellGridResponders_destructor(sself: *mut core::ffi::c_void);
2221        }
2222        unsafe { vtkCellGridResponders_destructor(self.0) }
2223        self.0 = core::ptr::null_mut();
2224    }
2225}
2226#[test]
2227fn test_vtkCellGridResponders_create_drop() {
2228    let obj = vtkCellGridResponders::new();
2229    let ptr = obj.0;
2230    assert!(!ptr.is_null());
2231    assert!(unsafe { !obj._get_ptr().is_null() });
2232    drop(obj);
2233    let new_obj = vtkCellGridResponders(ptr);
2234    assert!(unsafe { new_obj._get_ptr().is_null() });
2235}
2236/// Hold a map from hash-ids (representing sides of cells of multiple types)
2237///
2238/// to details on the cells that claim the corresponding side.
2239///
2240/// This class is created by filters such as vtkCellGridComputeSides and
2241/// vtkCellGridExtractCrinkle; it can be re-used by the same filter and
2242/// any others that process the same input (since it is stored in a
2243/// cache available to them).
2244#[allow(non_camel_case_types)]
2245pub struct vtkCellGridSidesCache(*mut core::ffi::c_void);
2246impl vtkCellGridSidesCache {
2247    /// Creates a new [vtkCellGridSidesCache] wrapped inside `vtkNew`
2248    #[doc(alias = "vtkCellGridSidesCache")]
2249    pub fn new() -> Self {
2250        unsafe extern "C" {
2251            fn vtkCellGridSidesCache_new() -> *mut core::ffi::c_void;
2252        }
2253        Self(unsafe { &mut *vtkCellGridSidesCache_new() })
2254    }
2255    #[cfg(test)]
2256    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2257        unsafe extern "C" {
2258            fn vtkCellGridSidesCache_get_ptr(
2259                sself: *mut core::ffi::c_void,
2260            ) -> *mut core::ffi::c_void;
2261        }
2262        unsafe { vtkCellGridSidesCache_get_ptr(self.0) }
2263    }
2264}
2265impl std::default::Default for vtkCellGridSidesCache {
2266    fn default() -> Self {
2267        Self::new()
2268    }
2269}
2270impl Drop for vtkCellGridSidesCache {
2271    fn drop(&mut self) {
2272        unsafe extern "C" {
2273            fn vtkCellGridSidesCache_destructor(sself: *mut core::ffi::c_void);
2274        }
2275        unsafe { vtkCellGridSidesCache_destructor(self.0) }
2276        self.0 = core::ptr::null_mut();
2277    }
2278}
2279#[test]
2280fn test_vtkCellGridSidesCache_create_drop() {
2281    let obj = vtkCellGridSidesCache::new();
2282    let ptr = obj.0;
2283    assert!(!ptr.is_null());
2284    assert!(unsafe { !obj._get_ptr().is_null() });
2285    drop(obj);
2286    let new_obj = vtkCellGridSidesCache(ptr);
2287    assert!(unsafe { new_obj._get_ptr().is_null() });
2288}
2289///
2290/// \brief A cell-grid query for enumerating sides of cells.
2291///
2292/// This query runs in 3 passes (see vtkCellGridSidesQuery::PassWork):
2293///
2294/// + In the first pass, responders invoke the AddSides() method on
2295/// this query, entries are added to this->Hashes storage indicating
2296/// the cells which are bounded by a given shape + connectivity.
2297/// + In the second pass, responders mark the entries created above and
2298/// add entries in this->Sides. This reorganizes the hashes into groups
2299/// more amenable to output as side arrays. This pass is called
2300/// "Summarization," since not every input side identified will be
2301/// output.
2302/// + In the third and final pass, responders create new cells in
2303/// the output cell-grid that correspond to the selected sides of
2304/// the input.
2305#[allow(non_camel_case_types)]
2306pub struct vtkCellGridSidesQuery(*mut core::ffi::c_void);
2307impl vtkCellGridSidesQuery {
2308    /// Creates a new [vtkCellGridSidesQuery] wrapped inside `vtkNew`
2309    #[doc(alias = "vtkCellGridSidesQuery")]
2310    pub fn new() -> Self {
2311        unsafe extern "C" {
2312            fn vtkCellGridSidesQuery_new() -> *mut core::ffi::c_void;
2313        }
2314        Self(unsafe { &mut *vtkCellGridSidesQuery_new() })
2315    }
2316    #[cfg(test)]
2317    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2318        unsafe extern "C" {
2319            fn vtkCellGridSidesQuery_get_ptr(
2320                sself: *mut core::ffi::c_void,
2321            ) -> *mut core::ffi::c_void;
2322        }
2323        unsafe { vtkCellGridSidesQuery_get_ptr(self.0) }
2324    }
2325}
2326impl std::default::Default for vtkCellGridSidesQuery {
2327    fn default() -> Self {
2328        Self::new()
2329    }
2330}
2331impl Drop for vtkCellGridSidesQuery {
2332    fn drop(&mut self) {
2333        unsafe extern "C" {
2334            fn vtkCellGridSidesQuery_destructor(sself: *mut core::ffi::c_void);
2335        }
2336        unsafe { vtkCellGridSidesQuery_destructor(self.0) }
2337        self.0 = core::ptr::null_mut();
2338    }
2339}
2340#[test]
2341fn test_vtkCellGridSidesQuery_create_drop() {
2342    let obj = vtkCellGridSidesQuery::new();
2343    let ptr = obj.0;
2344    assert!(!ptr.is_null());
2345    assert!(unsafe { !obj._get_ptr().is_null() });
2346    drop(obj);
2347    let new_obj = vtkCellGridSidesQuery(ptr);
2348    assert!(unsafe { new_obj._get_ptr().is_null() });
2349}
2350/// object represents upward pointers from points to list of cells using each point
2351///
2352///
2353/// vtkCellLinks is a supplemental object to vtkCellArray and vtkCellTypes,
2354/// enabling access from points to the cells using the points. vtkCellLinks is
2355/// a list of cell ids, each such link representing a dynamic list of cell ids
2356/// using the point. The information provided by this object can be used to
2357/// determine neighbors and construct other local topological information.
2358///
2359/// @warning
2360/// vtkCellLinks supports incremental (i.e., "editable") operations such as
2361/// inserting a new cell, or deleting a point. Because of this, it is less
2362/// memory efficient, and slower to construct and delete than static classes
2363/// such as vtkStaticCellLinks or vtkStaticCellLinksTemplate. However these
2364/// other classes are typically meant for one-time (static) construction.
2365///
2366/// @sa
2367/// vtkCellArray vtkCellTypes vtkStaticCellLinks vtkStaticCellLinksTemplate
2368#[allow(non_camel_case_types)]
2369pub struct vtkCellLinks(*mut core::ffi::c_void);
2370impl vtkCellLinks {
2371    /// Creates a new [vtkCellLinks] wrapped inside `vtkNew`
2372    #[doc(alias = "vtkCellLinks")]
2373    pub fn new() -> Self {
2374        unsafe extern "C" {
2375            fn vtkCellLinks_new() -> *mut core::ffi::c_void;
2376        }
2377        Self(unsafe { &mut *vtkCellLinks_new() })
2378    }
2379    #[cfg(test)]
2380    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2381        unsafe extern "C" {
2382            fn vtkCellLinks_get_ptr(
2383                sself: *mut core::ffi::c_void,
2384            ) -> *mut core::ffi::c_void;
2385        }
2386        unsafe { vtkCellLinks_get_ptr(self.0) }
2387    }
2388}
2389impl std::default::Default for vtkCellLinks {
2390    fn default() -> Self {
2391        Self::new()
2392    }
2393}
2394impl Drop for vtkCellLinks {
2395    fn drop(&mut self) {
2396        unsafe extern "C" {
2397            fn vtkCellLinks_destructor(sself: *mut core::ffi::c_void);
2398        }
2399        unsafe { vtkCellLinks_destructor(self.0) }
2400        self.0 = core::ptr::null_mut();
2401    }
2402}
2403#[test]
2404fn test_vtkCellLinks_create_drop() {
2405    let obj = vtkCellLinks::new();
2406    let ptr = obj.0;
2407    assert!(!ptr.is_null());
2408    assert!(unsafe { !obj._get_ptr().is_null() });
2409    drop(obj);
2410    let new_obj = vtkCellLinks(ptr);
2411    assert!(unsafe { new_obj._get_ptr().is_null() });
2412}
2413/// octree-based spatial search object to quickly locate cells
2414///
2415///
2416/// vtkCellLocator is a spatial search object to quickly locate cells in 3D.
2417/// vtkCellLocator uses a uniform-level octree subdivision, where each octant
2418/// (an octant is also referred to as a bucket) carries an indication of
2419/// whether it is empty or not, and each leaf octant carries a list of the
2420/// cells inside of it. (An octant is not empty if it has one or more cells
2421/// inside of it.)  Typical operations are intersection with a line to return
2422/// candidate cells, or intersection with another vtkCellLocator to return
2423/// candidate cells.
2424///
2425/// @warning
2426/// vtkCellLocator utilizes the following parent class parameters:
2427/// - Automatic                   (default true)
2428/// - Level                       (default 8)
2429/// - MaxLevel                    (default 8)
2430/// - NumberOfCellsPerNode        (default 25)
2431/// - CacheCellBounds             (default true)
2432/// - UseExistingSearchStructure  (default false)
2433///
2434/// vtkCellLocator does NOT utilize the following parameters:
2435/// - Tolerance
2436/// - RetainCellLists
2437///
2438/// @sa
2439/// vtkAbstractCellLocator vtkStaticCellLocator vtkCellTreeLocator vtkModifiedBSPTree vtkOBBTree
2440#[allow(non_camel_case_types)]
2441pub struct vtkCellLocator(*mut core::ffi::c_void);
2442impl vtkCellLocator {
2443    /// Creates a new [vtkCellLocator] wrapped inside `vtkNew`
2444    #[doc(alias = "vtkCellLocator")]
2445    pub fn new() -> Self {
2446        unsafe extern "C" {
2447            fn vtkCellLocator_new() -> *mut core::ffi::c_void;
2448        }
2449        Self(unsafe { &mut *vtkCellLocator_new() })
2450    }
2451    #[cfg(test)]
2452    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2453        unsafe extern "C" {
2454            fn vtkCellLocator_get_ptr(
2455                sself: *mut core::ffi::c_void,
2456            ) -> *mut core::ffi::c_void;
2457        }
2458        unsafe { vtkCellLocator_get_ptr(self.0) }
2459    }
2460}
2461impl std::default::Default for vtkCellLocator {
2462    fn default() -> Self {
2463        Self::new()
2464    }
2465}
2466impl Drop for vtkCellLocator {
2467    fn drop(&mut self) {
2468        unsafe extern "C" {
2469            fn vtkCellLocator_destructor(sself: *mut core::ffi::c_void);
2470        }
2471        unsafe { vtkCellLocator_destructor(self.0) }
2472        self.0 = core::ptr::null_mut();
2473    }
2474}
2475#[test]
2476fn test_vtkCellLocator_create_drop() {
2477    let obj = vtkCellLocator::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 = vtkCellLocator(ptr);
2483    assert!(unsafe { new_obj._get_ptr().is_null() });
2484}
2485/// implement a specific vtkPointSet::FindCell() strategy based
2486///
2487/// on using a cell locator
2488///
2489/// vtkCellLocatorStrategy is implements a FindCell() strategy based on
2490/// using the FindCell() method in a cell locator. This is often the
2491/// slowest strategy, but the most robust.
2492///
2493/// @sa
2494/// vtkFindCellStrategy vtkPointSet
2495#[allow(non_camel_case_types)]
2496pub struct vtkCellLocatorStrategy(*mut core::ffi::c_void);
2497impl vtkCellLocatorStrategy {
2498    /// Creates a new [vtkCellLocatorStrategy] wrapped inside `vtkNew`
2499    #[doc(alias = "vtkCellLocatorStrategy")]
2500    pub fn new() -> Self {
2501        unsafe extern "C" {
2502            fn vtkCellLocatorStrategy_new() -> *mut core::ffi::c_void;
2503        }
2504        Self(unsafe { &mut *vtkCellLocatorStrategy_new() })
2505    }
2506    #[cfg(test)]
2507    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2508        unsafe extern "C" {
2509            fn vtkCellLocatorStrategy_get_ptr(
2510                sself: *mut core::ffi::c_void,
2511            ) -> *mut core::ffi::c_void;
2512        }
2513        unsafe { vtkCellLocatorStrategy_get_ptr(self.0) }
2514    }
2515}
2516impl std::default::Default for vtkCellLocatorStrategy {
2517    fn default() -> Self {
2518        Self::new()
2519    }
2520}
2521impl Drop for vtkCellLocatorStrategy {
2522    fn drop(&mut self) {
2523        unsafe extern "C" {
2524            fn vtkCellLocatorStrategy_destructor(sself: *mut core::ffi::c_void);
2525        }
2526        unsafe { vtkCellLocatorStrategy_destructor(self.0) }
2527        self.0 = core::ptr::null_mut();
2528    }
2529}
2530#[test]
2531fn test_vtkCellLocatorStrategy_create_drop() {
2532    let obj = vtkCellLocatorStrategy::new();
2533    let ptr = obj.0;
2534    assert!(!ptr.is_null());
2535    assert!(unsafe { !obj._get_ptr().is_null() });
2536    drop(obj);
2537    let new_obj = vtkCellLocatorStrategy(ptr);
2538    assert!(unsafe { new_obj._get_ptr().is_null() });
2539}
2540/// This class implements the data structures, construction
2541///
2542/// algorithms for fast cell location.
2543///
2544/// Cell Tree is a bounding interval hierarchy based data structure, where child boxes
2545/// do not form an exact split of the parent boxes along a dimension.  Therefore two axis-
2546/// aligned bounding planes (left max and right min) are stored for each node along a
2547/// dimension. This class implements the data structure (Cell Tree Node) and its build
2548/// and traversal algorithms described in the paper.
2549/// Some methods in building and traversing the cell tree in this class were derived
2550/// from avtCellLocatorBIH class in the VisIT Visualization Tool.
2551///
2552/// vtkCellTreeLocator utilizes the following parent class parameters:
2553/// - NumberOfCellsPerNode        (default 8)
2554/// - CacheCellBounds             (default true)
2555/// - UseExistingSearchStructure  (default false)
2556///
2557/// vtkCellTreeLocator does NOT utilize the following parameters:
2558/// - Automatic
2559/// - Level
2560/// - MaxLevel
2561/// - Tolerance
2562/// - RetainCellLists
2563///
2564/// @warning
2565/// This class is templated. It may run slower than serial execution if the code
2566/// is not optimized during compilation. Build in Release or ReleaseWithDebugInfo.
2567///
2568/// From the article: "Fast, Memory-Efficient Cell location in Unstructured Grids for Visualization"
2569/// by Christoph Garth and Kenneth I. Joy in VisWeek, 2011.
2570///
2571/// @sa
2572/// vtkAbstractCellLocator vtkCellLocator vtkStaticCellLocator vtkModifiedBSPTree vtkOBBTree
2573#[allow(non_camel_case_types)]
2574pub struct vtkCellTreeLocator(*mut core::ffi::c_void);
2575impl vtkCellTreeLocator {
2576    /// Creates a new [vtkCellTreeLocator] wrapped inside `vtkNew`
2577    #[doc(alias = "vtkCellTreeLocator")]
2578    pub fn new() -> Self {
2579        unsafe extern "C" {
2580            fn vtkCellTreeLocator_new() -> *mut core::ffi::c_void;
2581        }
2582        Self(unsafe { &mut *vtkCellTreeLocator_new() })
2583    }
2584    #[cfg(test)]
2585    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2586        unsafe extern "C" {
2587            fn vtkCellTreeLocator_get_ptr(
2588                sself: *mut core::ffi::c_void,
2589            ) -> *mut core::ffi::c_void;
2590        }
2591        unsafe { vtkCellTreeLocator_get_ptr(self.0) }
2592    }
2593}
2594impl std::default::Default for vtkCellTreeLocator {
2595    fn default() -> Self {
2596        Self::new()
2597    }
2598}
2599impl Drop for vtkCellTreeLocator {
2600    fn drop(&mut self) {
2601        unsafe extern "C" {
2602            fn vtkCellTreeLocator_destructor(sself: *mut core::ffi::c_void);
2603        }
2604        unsafe { vtkCellTreeLocator_destructor(self.0) }
2605        self.0 = core::ptr::null_mut();
2606    }
2607}
2608#[test]
2609fn test_vtkCellTreeLocator_create_drop() {
2610    let obj = vtkCellTreeLocator::new();
2611    let ptr = obj.0;
2612    assert!(!ptr.is_null());
2613    assert!(unsafe { !obj._get_ptr().is_null() });
2614    drop(obj);
2615    let new_obj = vtkCellTreeLocator(ptr);
2616    assert!(unsafe { new_obj._get_ptr().is_null() });
2617}
2618/// object provides direct access to cells in vtkCellArray and type information
2619///
2620///
2621/// This class is a supplemental object to vtkCellArray to allow random access
2622/// into cells as well as representing cell type information.  The "location"
2623/// field is the location in the vtkCellArray list in terms of an integer
2624/// offset.  An integer offset was used instead of a pointer for easy storage
2625/// and inter-process communication. The type information is defined in the
2626/// file vtkCellType.h.
2627///
2628/// @warning
2629/// Sometimes this class is used to pass type information independent of the
2630/// random access (i.e., location) information. For example, see
2631/// vtkDataSet::GetCellTypes(). If you use the class in this way, you can use
2632/// a location value of -1.
2633///
2634/// @sa
2635/// vtkCellArray vtkCellLinks
2636#[allow(non_camel_case_types)]
2637pub struct vtkCellTypes(*mut core::ffi::c_void);
2638impl vtkCellTypes {
2639    /// Creates a new [vtkCellTypes] wrapped inside `vtkNew`
2640    #[doc(alias = "vtkCellTypes")]
2641    pub fn new() -> Self {
2642        unsafe extern "C" {
2643            fn vtkCellTypes_new() -> *mut core::ffi::c_void;
2644        }
2645        Self(unsafe { &mut *vtkCellTypes_new() })
2646    }
2647    #[cfg(test)]
2648    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2649        unsafe extern "C" {
2650            fn vtkCellTypes_get_ptr(
2651                sself: *mut core::ffi::c_void,
2652            ) -> *mut core::ffi::c_void;
2653        }
2654        unsafe { vtkCellTypes_get_ptr(self.0) }
2655    }
2656}
2657impl std::default::Default for vtkCellTypes {
2658    fn default() -> Self {
2659        Self::new()
2660    }
2661}
2662impl Drop for vtkCellTypes {
2663    fn drop(&mut self) {
2664        unsafe extern "C" {
2665            fn vtkCellTypes_destructor(sself: *mut core::ffi::c_void);
2666        }
2667        unsafe { vtkCellTypes_destructor(self.0) }
2668        self.0 = core::ptr::null_mut();
2669    }
2670}
2671#[test]
2672fn test_vtkCellTypes_create_drop() {
2673    let obj = vtkCellTypes::new();
2674    let ptr = obj.0;
2675    assert!(!ptr.is_null());
2676    assert!(unsafe { !obj._get_ptr().is_null() });
2677    drop(obj);
2678    let new_obj = vtkCellTypes(ptr);
2679    assert!(unsafe { new_obj._get_ptr().is_null() });
2680}
2681/// implement a specific vtkPointSet::FindCell() strategy based
2682///
2683/// on the N closest points
2684///
2685/// vtkClosestNPointsStrategy is implements a FindCell() strategy based on
2686/// locating the closest N points in a dataset, and then searching attached
2687/// cells. This class extends its superclass vtkClosestPointStrategy by looking
2688/// at the additional N points.
2689///
2690/// @sa
2691/// vtkFindCellStrategy vtkPointSet
2692#[allow(non_camel_case_types)]
2693pub struct vtkClosestNPointsStrategy(*mut core::ffi::c_void);
2694impl vtkClosestNPointsStrategy {
2695    /// Creates a new [vtkClosestNPointsStrategy] wrapped inside `vtkNew`
2696    #[doc(alias = "vtkClosestNPointsStrategy")]
2697    pub fn new() -> Self {
2698        unsafe extern "C" {
2699            fn vtkClosestNPointsStrategy_new() -> *mut core::ffi::c_void;
2700        }
2701        Self(unsafe { &mut *vtkClosestNPointsStrategy_new() })
2702    }
2703    #[cfg(test)]
2704    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2705        unsafe extern "C" {
2706            fn vtkClosestNPointsStrategy_get_ptr(
2707                sself: *mut core::ffi::c_void,
2708            ) -> *mut core::ffi::c_void;
2709        }
2710        unsafe { vtkClosestNPointsStrategy_get_ptr(self.0) }
2711    }
2712}
2713impl std::default::Default for vtkClosestNPointsStrategy {
2714    fn default() -> Self {
2715        Self::new()
2716    }
2717}
2718impl Drop for vtkClosestNPointsStrategy {
2719    fn drop(&mut self) {
2720        unsafe extern "C" {
2721            fn vtkClosestNPointsStrategy_destructor(sself: *mut core::ffi::c_void);
2722        }
2723        unsafe { vtkClosestNPointsStrategy_destructor(self.0) }
2724        self.0 = core::ptr::null_mut();
2725    }
2726}
2727#[test]
2728fn test_vtkClosestNPointsStrategy_create_drop() {
2729    let obj = vtkClosestNPointsStrategy::new();
2730    let ptr = obj.0;
2731    assert!(!ptr.is_null());
2732    assert!(unsafe { !obj._get_ptr().is_null() });
2733    drop(obj);
2734    let new_obj = vtkClosestNPointsStrategy(ptr);
2735    assert!(unsafe { new_obj._get_ptr().is_null() });
2736}
2737/// implement a specific vtkPointSet::FindCell() strategy based
2738///
2739/// on closest point
2740///
2741/// vtkClosestPointStrategy is implements a FindCell() strategy based on
2742/// locating the closest point in a dataset, and then searching the attached
2743/// cells. While relatively fast, it does not always return the correct result
2744/// (it may not find a cell, since the closest cell may not be connected to the
2745/// closest point). vtkCellLocatorStrategy or vtkClosestNPointsStrategy will
2746/// produce better results at the cost of speed.
2747///
2748/// @sa
2749/// vtkFindCellStrategy vtkPointSet vtkCellLocatorStrategy
2750/// vtkClosestNPointsStrategy
2751#[allow(non_camel_case_types)]
2752pub struct vtkClosestPointStrategy(*mut core::ffi::c_void);
2753impl vtkClosestPointStrategy {
2754    /// Creates a new [vtkClosestPointStrategy] wrapped inside `vtkNew`
2755    #[doc(alias = "vtkClosestPointStrategy")]
2756    pub fn new() -> Self {
2757        unsafe extern "C" {
2758            fn vtkClosestPointStrategy_new() -> *mut core::ffi::c_void;
2759        }
2760        Self(unsafe { &mut *vtkClosestPointStrategy_new() })
2761    }
2762    #[cfg(test)]
2763    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2764        unsafe extern "C" {
2765            fn vtkClosestPointStrategy_get_ptr(
2766                sself: *mut core::ffi::c_void,
2767            ) -> *mut core::ffi::c_void;
2768        }
2769        unsafe { vtkClosestPointStrategy_get_ptr(self.0) }
2770    }
2771}
2772impl std::default::Default for vtkClosestPointStrategy {
2773    fn default() -> Self {
2774        Self::new()
2775    }
2776}
2777impl Drop for vtkClosestPointStrategy {
2778    fn drop(&mut self) {
2779        unsafe extern "C" {
2780            fn vtkClosestPointStrategy_destructor(sself: *mut core::ffi::c_void);
2781        }
2782        unsafe { vtkClosestPointStrategy_destructor(self.0) }
2783        self.0 = core::ptr::null_mut();
2784    }
2785}
2786#[test]
2787fn test_vtkClosestPointStrategy_create_drop() {
2788    let obj = vtkClosestPointStrategy::new();
2789    let ptr = obj.0;
2790    assert!(!ptr.is_null());
2791    assert!(unsafe { !obj._get_ptr().is_null() });
2792    drop(obj);
2793    let new_obj = vtkClosestPointStrategy(ptr);
2794    assert!(unsafe { new_obj._get_ptr().is_null() });
2795}
2796/// implicit function for a cone
2797///
2798///
2799/// vtkCone computes the implicit function and function gradient for a cone.
2800/// vtkCone is a concrete implementation of vtkImplicitFunction. By default, the cone vertex
2801/// is located at the origin with axis of rotation coincident with x-axis. You can use
2802/// the superclass' vtkImplicitFunction transformation matrix to reposition. You can alternatively
2803/// use the accessors provided by this class, which will cause the transform to be recomputed. to
2804/// reposition/orient the cone. The angle specifies the angle between the axis of rotation and the
2805/// side of the cone.
2806///
2807/// @warning
2808/// The cone is infinite in extent (on both sides if IsDoubleCone is set to true). To truncate the
2809/// cone use the vtkImplicitBoolean in combination with clipping planes.
2810#[allow(non_camel_case_types)]
2811pub struct vtkCone(*mut core::ffi::c_void);
2812impl vtkCone {
2813    /// Creates a new [vtkCone] wrapped inside `vtkNew`
2814    #[doc(alias = "vtkCone")]
2815    pub fn new() -> Self {
2816        unsafe extern "C" {
2817            fn vtkCone_new() -> *mut core::ffi::c_void;
2818        }
2819        Self(unsafe { &mut *vtkCone_new() })
2820    }
2821    #[cfg(test)]
2822    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2823        unsafe extern "C" {
2824            fn vtkCone_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
2825        }
2826        unsafe { vtkCone_get_ptr(self.0) }
2827    }
2828}
2829impl std::default::Default for vtkCone {
2830    fn default() -> Self {
2831        Self::new()
2832    }
2833}
2834impl Drop for vtkCone {
2835    fn drop(&mut self) {
2836        unsafe extern "C" {
2837            fn vtkCone_destructor(sself: *mut core::ffi::c_void);
2838        }
2839        unsafe { vtkCone_destructor(self.0) }
2840        self.0 = core::ptr::null_mut();
2841    }
2842}
2843#[test]
2844fn test_vtkCone_create_drop() {
2845    let obj = vtkCone::new();
2846    let ptr = obj.0;
2847    assert!(!ptr.is_null());
2848    assert!(unsafe { !obj._get_ptr().is_null() });
2849    drop(obj);
2850    let new_obj = vtkCone(ptr);
2851    assert!(unsafe { new_obj._get_ptr().is_null() });
2852}
2853/// a 3D cell defined by a set of convex points
2854///
2855///
2856/// vtkConvexPointSet is a concrete implementation that represents a 3D cell
2857/// defined by a convex set of points. An example of such a cell is an octant
2858/// (from an octree). vtkConvexPointSet uses the ordered triangulations
2859/// approach (vtkOrderedTriangulator) to create triangulations guaranteed to
2860/// be compatible across shared faces. This allows a general approach to
2861/// processing complex, convex cell types.
2862///
2863/// @sa
2864/// vtkHexahedron vtkPyramid vtkTetra vtkVoxel vtkWedge
2865#[allow(non_camel_case_types)]
2866pub struct vtkConvexPointSet(*mut core::ffi::c_void);
2867impl vtkConvexPointSet {
2868    /// Creates a new [vtkConvexPointSet] wrapped inside `vtkNew`
2869    #[doc(alias = "vtkConvexPointSet")]
2870    pub fn new() -> Self {
2871        unsafe extern "C" {
2872            fn vtkConvexPointSet_new() -> *mut core::ffi::c_void;
2873        }
2874        Self(unsafe { &mut *vtkConvexPointSet_new() })
2875    }
2876    #[cfg(test)]
2877    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2878        unsafe extern "C" {
2879            fn vtkConvexPointSet_get_ptr(
2880                sself: *mut core::ffi::c_void,
2881            ) -> *mut core::ffi::c_void;
2882        }
2883        unsafe { vtkConvexPointSet_get_ptr(self.0) }
2884    }
2885}
2886impl std::default::Default for vtkConvexPointSet {
2887    fn default() -> Self {
2888        Self::new()
2889    }
2890}
2891impl Drop for vtkConvexPointSet {
2892    fn drop(&mut self) {
2893        unsafe extern "C" {
2894            fn vtkConvexPointSet_destructor(sself: *mut core::ffi::c_void);
2895        }
2896        unsafe { vtkConvexPointSet_destructor(self.0) }
2897        self.0 = core::ptr::null_mut();
2898    }
2899}
2900#[test]
2901fn test_vtkConvexPointSet_create_drop() {
2902    let obj = vtkConvexPointSet::new();
2903    let ptr = obj.0;
2904    assert!(!ptr.is_null());
2905    assert!(unsafe { !obj._get_ptr().is_null() });
2906    drop(obj);
2907    let new_obj = vtkConvexPointSet(ptr);
2908    assert!(unsafe { new_obj._get_ptr().is_null() });
2909}
2910/// implicit function for a right-handed coordinate system
2911///
2912///
2913/// vtkCoordinateFrame computes an implicit function and function gradient
2914/// for a set of 3 orthogonal planes.
2915///
2916/// The function evaluates to a combination of quartic spherical harmonic
2917/// basis functions:
2918/// \f$\sqrt(\frac{7}{12})*Y_{4,0} + \sqrt(\frac{5}{12})*Y_{4,4}\f$
2919/// that – when evaluated on a unit sphere centered at the coordinate frame's
2920/// origin – form a 6-lobed function with a maximum along each of the
2921/// 6 axes (3 positive, 3 negative).
2922/// This function is frequently used in frame-field design.
2923///
2924/// See the paper "On Smooth Frame Field Design" by Nicolas Ray and
2925/// Dmitry Sokolov (2016, hal-01245657,
2926/// https://hal.inria.fr/hal-01245657/file/framefield.pdf ) for more
2927/// information.
2928#[allow(non_camel_case_types)]
2929pub struct vtkCoordinateFrame(*mut core::ffi::c_void);
2930impl vtkCoordinateFrame {
2931    /// Creates a new [vtkCoordinateFrame] wrapped inside `vtkNew`
2932    #[doc(alias = "vtkCoordinateFrame")]
2933    pub fn new() -> Self {
2934        unsafe extern "C" {
2935            fn vtkCoordinateFrame_new() -> *mut core::ffi::c_void;
2936        }
2937        Self(unsafe { &mut *vtkCoordinateFrame_new() })
2938    }
2939    #[cfg(test)]
2940    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
2941        unsafe extern "C" {
2942            fn vtkCoordinateFrame_get_ptr(
2943                sself: *mut core::ffi::c_void,
2944            ) -> *mut core::ffi::c_void;
2945        }
2946        unsafe { vtkCoordinateFrame_get_ptr(self.0) }
2947    }
2948}
2949impl std::default::Default for vtkCoordinateFrame {
2950    fn default() -> Self {
2951        Self::new()
2952    }
2953}
2954impl Drop for vtkCoordinateFrame {
2955    fn drop(&mut self) {
2956        unsafe extern "C" {
2957            fn vtkCoordinateFrame_destructor(sself: *mut core::ffi::c_void);
2958        }
2959        unsafe { vtkCoordinateFrame_destructor(self.0) }
2960        self.0 = core::ptr::null_mut();
2961    }
2962}
2963#[test]
2964fn test_vtkCoordinateFrame_create_drop() {
2965    let obj = vtkCoordinateFrame::new();
2966    let ptr = obj.0;
2967    assert!(!ptr.is_null());
2968    assert!(unsafe { !obj._get_ptr().is_null() });
2969    drop(obj);
2970    let new_obj = vtkCoordinateFrame(ptr);
2971    assert!(unsafe { new_obj._get_ptr().is_null() });
2972}
2973/// cell represents a cubic , isoparametric 1D line
2974///
2975///
2976/// vtkCubicLine is a concrete implementation of vtkNonLinearCell to represent a 1D Cubic line.
2977/// The Cubic Line is the 4 nodes isoparametric parabolic line . The
2978/// interpolation is the standard finite element, cubic isoparametric
2979/// shape function. The cell includes two mid-edge nodes. The ordering of the
2980/// four points defining the cell is point ids (0,1,2,3) where id #2 and #3 are the
2981/// mid-edge nodes. Please note that the parametric coordinates lie between -1 and 1
2982/// in accordance with most standard documentations.
2983/// @par Thanks:
2984/// \verbatim
2985/// This file has been developed by Oxalya - www.oxalya.com
2986/// \endverbatim
2987#[allow(non_camel_case_types)]
2988pub struct vtkCubicLine(*mut core::ffi::c_void);
2989impl vtkCubicLine {
2990    /// Creates a new [vtkCubicLine] wrapped inside `vtkNew`
2991    #[doc(alias = "vtkCubicLine")]
2992    pub fn new() -> Self {
2993        unsafe extern "C" {
2994            fn vtkCubicLine_new() -> *mut core::ffi::c_void;
2995        }
2996        Self(unsafe { &mut *vtkCubicLine_new() })
2997    }
2998    #[cfg(test)]
2999    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3000        unsafe extern "C" {
3001            fn vtkCubicLine_get_ptr(
3002                sself: *mut core::ffi::c_void,
3003            ) -> *mut core::ffi::c_void;
3004        }
3005        unsafe { vtkCubicLine_get_ptr(self.0) }
3006    }
3007}
3008impl std::default::Default for vtkCubicLine {
3009    fn default() -> Self {
3010        Self::new()
3011    }
3012}
3013impl Drop for vtkCubicLine {
3014    fn drop(&mut self) {
3015        unsafe extern "C" {
3016            fn vtkCubicLine_destructor(sself: *mut core::ffi::c_void);
3017        }
3018        unsafe { vtkCubicLine_destructor(self.0) }
3019        self.0 = core::ptr::null_mut();
3020    }
3021}
3022#[test]
3023fn test_vtkCubicLine_create_drop() {
3024    let obj = vtkCubicLine::new();
3025    let ptr = obj.0;
3026    assert!(!ptr.is_null());
3027    assert!(unsafe { !obj._get_ptr().is_null() });
3028    drop(obj);
3029    let new_obj = vtkCubicLine(ptr);
3030    assert!(unsafe { new_obj._get_ptr().is_null() });
3031}
3032/// implicit function for a cylinder
3033///
3034///
3035/// vtkCylinder computes the implicit function and function gradient
3036/// for a cylinder using F(r)=r^2-Radius^2. vtkCylinder is a concrete
3037/// implementation of vtkImplicitFunction. By default the Cylinder is
3038/// centered at the origin and the axis of rotation is along the
3039/// y-axis. You can redefine the center and axis of rotation by setting
3040/// the Center and Axis data members. (Note that it is also possible to
3041/// use the superclass' vtkImplicitFunction transformation matrix if
3042/// necessary to reposition by using FunctionValue() and
3043/// FunctionGradient().)
3044///
3045/// @warning
3046/// The cylinder is infinite in extent. To truncate the cylinder in
3047/// modeling operations use the vtkImplicitBoolean in combination with
3048/// clipping planes.
3049///
3050/// @sa
3051/// vtkCylinderSource
3052#[allow(non_camel_case_types)]
3053pub struct vtkCylinder(*mut core::ffi::c_void);
3054impl vtkCylinder {
3055    /// Creates a new [vtkCylinder] wrapped inside `vtkNew`
3056    #[doc(alias = "vtkCylinder")]
3057    pub fn new() -> Self {
3058        unsafe extern "C" {
3059            fn vtkCylinder_new() -> *mut core::ffi::c_void;
3060        }
3061        Self(unsafe { &mut *vtkCylinder_new() })
3062    }
3063    #[cfg(test)]
3064    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3065        unsafe extern "C" {
3066            fn vtkCylinder_get_ptr(
3067                sself: *mut core::ffi::c_void,
3068            ) -> *mut core::ffi::c_void;
3069        }
3070        unsafe { vtkCylinder_get_ptr(self.0) }
3071    }
3072}
3073impl std::default::Default for vtkCylinder {
3074    fn default() -> Self {
3075        Self::new()
3076    }
3077}
3078impl Drop for vtkCylinder {
3079    fn drop(&mut self) {
3080        unsafe extern "C" {
3081            fn vtkCylinder_destructor(sself: *mut core::ffi::c_void);
3082        }
3083        unsafe { vtkCylinder_destructor(self.0) }
3084        self.0 = core::ptr::null_mut();
3085    }
3086}
3087#[test]
3088fn test_vtkCylinder_create_drop() {
3089    let obj = vtkCylinder::new();
3090    let ptr = obj.0;
3091    assert!(!ptr.is_null());
3092    assert!(unsafe { !obj._get_ptr().is_null() });
3093    drop(obj);
3094    let new_obj = vtkCylinder(ptr);
3095    assert!(unsafe { new_obj._get_ptr().is_null() });
3096}
3097/// hierarchical representation to use with
3098///
3099/// vtkPartitionedDataSetCollection
3100///
3101/// vtkDataAssembly is a mechanism to represent hierarchical organization of
3102/// items (or vtkPartitionedDataSet instances) in a vtkPartitionedDataSetCollection.
3103/// vtkPartitionedDataSetCollection is similar to a vtkMultiBlockDataSet since it
3104/// provides a means for putting together multiple non-composite datasets.
3105/// However, vtkPartitionedDataSetCollection itself doesn't provide any mechanism
3106/// to define relationships between items in the collections. That is done using
3107/// vtkDataAssembly.
3108///
3109/// @section Overview Overview
3110///
3111/// At its core, vtkDataAssembly is simply a tree of nodes starting
3112/// with the root node. Each node has a unique id and a string name (names need not
3113/// be unique). On initialization with `vtkDataAssembly::Initialize`, an empty tree
3114/// with a root node is created. The root node's id and name can be obtained
3115/// using `vtkDataAssembly::GetRootNode` and `vtkDataAssembly::GetRootNodeName`.
3116/// The root node's id is fixed (vtkDataAssembly::GetRootNode), however the name
3117/// can be changed using `vtkDataAssembly::SetRootNodeName`.
3118///
3119/// Child nodes can be added using `vtkDataAssembly::AddNode` or
3120/// `vtkDataAssembly::AddNodes`, each of which returns the ids for every child
3121/// node added. A non-root node can be removed using `vtkDataAssembly::RemoveNode`.
3122///
3123/// Each node in the tree (including the root node) can have associated dataset
3124/// indices. For a vtkDataAssembly associated with a
3125/// vtkPartitionedDataSetCollection, these indices refer to the item index, or
3126/// partitioned-dataset-index for items in the collection. Dataset indices can be
3127/// specified using `vtkDataAssembly::AddDataSetIndex`,
3128/// `vtkDataAssembly::AddDataSetIndices` and removed using `vtkDataAssembly::RemoveDataSetIndex`,
3129/// `vtkDataAssembly::RemoveAllDataSetIndices`.
3130/// `vtkDataAssembly::GetDataSetIndices` provides a mechanism to get the
3131/// database indices associated with a node, and optionally, the entire subtree
3132/// rooted at the chosen node.
3133///
3134/// @section Searching Searching
3135///
3136/// Each node in the vtkDataAssembly is assigned a unique id.
3137/// `vtkDataAssembly::FindFirstNodeWithName` and
3138/// `vtkDataAssembly::FindNodesWithName` can be used to get the id(s) for
3139/// node(s) with given name.
3140///
3141/// `vtkDataAssembly::SelectNodes` provides a
3142/// more flexible mechanism to find nodes using name-based queries. Section
3143/// @ref DataAssemblyPathQueries covers supported queries.
3144///
3145/// @section Traversal Traversal
3146///
3147/// `vtkDataAssemblyVisitor` defines a visitor API. An instance of a concretized
3148/// `vtkDataAssemblyVisitor` subclass can be passed to `vtkDataAssembly::Visit`
3149/// to traverse the data-assembly hierarchy either in depth-first or
3150/// breadth-first order.
3151///
3152/// @section DataAssemblyPathQueries Supported Path Queries
3153///
3154/// `vtkDataAssembly::SelectNodes` can be used find nodes that match the
3155/// specified query (or queries) using XPath 1.0 syntax.
3156///
3157/// For example:
3158///
3159/// * '/' is used as the path separator. If a node name has a `/` it must be
3160/// escaped using `\\` in the query. Note, escaping is not necessary when using
3161/// `SetNodeName`/`GetNodeName`.
3162///
3163/// * '/' selects the root node.
3164///
3165/// * '/nodename' selects all child nodes of the root with the name 'nodename'.
3166///
3167/// * '//nodename' selects all nodes with 'nodename' that are descendants of the
3168/// root; thus, this this will traverse the entire tree.
3169///
3170/// * '/nodename/' selects all child nodes of all nodes named 'nodename' under
3171/// the root; thus, ending a query with '/' selects the children of the found
3172/// nodes rather than the nodes themselves.
3173///
3174/// * '/nodename1/nodename2' selects all nodes named 'nodename2' which are
3175/// children of nodes with name 'nodename1' that are themselves children of
3176/// the root node.
3177///
3178/// * '//nodename1/nodename2' finds all nodes in the tree named 'nodename1' and
3179/// then selects all children of these found nodes that are named 'nodename2'.
3180///
3181/// @section Applications Applications
3182///
3183/// The separation of dataset storage (vtkPartitionedDataSetCollection) and
3184/// organization (vtkDataAssembly) enables development of algorithms that can
3185/// expose APIs that are not tightly coupled to dataset storage. Together,
3186/// vtkPartitionedDataSetCollection and vtkDataAssembly can be thought of as a
3187/// different way of organizing data that was previously organized as a
3188/// vtkMultiBlockDataSet. The advantage of the this newer approach is that
3189/// filters can support specifying parameters using paths or path queries
3190/// rather than composite indices. The composite indices suffered from the fact
3191/// that they made no sense except for the specific vtkMultiBlockDataSet they
3192/// were applied too. Thus, if the filters input was changed, the composite ids
3193/// rarely made any sense and needed to be updated. Paths and path queries,
3194/// however, do not suffer from this issue.
3195#[allow(non_camel_case_types)]
3196pub struct vtkDataAssembly(*mut core::ffi::c_void);
3197impl vtkDataAssembly {
3198    /// Creates a new [vtkDataAssembly] wrapped inside `vtkNew`
3199    #[doc(alias = "vtkDataAssembly")]
3200    pub fn new() -> Self {
3201        unsafe extern "C" {
3202            fn vtkDataAssembly_new() -> *mut core::ffi::c_void;
3203        }
3204        Self(unsafe { &mut *vtkDataAssembly_new() })
3205    }
3206    #[cfg(test)]
3207    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3208        unsafe extern "C" {
3209            fn vtkDataAssembly_get_ptr(
3210                sself: *mut core::ffi::c_void,
3211            ) -> *mut core::ffi::c_void;
3212        }
3213        unsafe { vtkDataAssembly_get_ptr(self.0) }
3214    }
3215}
3216impl std::default::Default for vtkDataAssembly {
3217    fn default() -> Self {
3218        Self::new()
3219    }
3220}
3221impl Drop for vtkDataAssembly {
3222    fn drop(&mut self) {
3223        unsafe extern "C" {
3224            fn vtkDataAssembly_destructor(sself: *mut core::ffi::c_void);
3225        }
3226        unsafe { vtkDataAssembly_destructor(self.0) }
3227        self.0 = core::ptr::null_mut();
3228    }
3229}
3230#[test]
3231fn test_vtkDataAssembly_create_drop() {
3232    let obj = vtkDataAssembly::new();
3233    let ptr = obj.0;
3234    assert!(!ptr.is_null());
3235    assert!(unsafe { !obj._get_ptr().is_null() });
3236    drop(obj);
3237    let new_obj = vtkDataAssembly(ptr);
3238    assert!(unsafe { new_obj._get_ptr().is_null() });
3239}
3240/// collections of utilities for vtkDataAssembly
3241///
3242///
3243/// vtkDataAssemblyUtilities provides useful utilities for working with
3244/// vtkDataAssembly.
3245#[allow(non_camel_case_types)]
3246pub struct vtkDataAssemblyUtilities(*mut core::ffi::c_void);
3247impl vtkDataAssemblyUtilities {
3248    /// Creates a new [vtkDataAssemblyUtilities] wrapped inside `vtkNew`
3249    #[doc(alias = "vtkDataAssemblyUtilities")]
3250    pub fn new() -> Self {
3251        unsafe extern "C" {
3252            fn vtkDataAssemblyUtilities_new() -> *mut core::ffi::c_void;
3253        }
3254        Self(unsafe { &mut *vtkDataAssemblyUtilities_new() })
3255    }
3256    #[cfg(test)]
3257    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3258        unsafe extern "C" {
3259            fn vtkDataAssemblyUtilities_get_ptr(
3260                sself: *mut core::ffi::c_void,
3261            ) -> *mut core::ffi::c_void;
3262        }
3263        unsafe { vtkDataAssemblyUtilities_get_ptr(self.0) }
3264    }
3265}
3266impl std::default::Default for vtkDataAssemblyUtilities {
3267    fn default() -> Self {
3268        Self::new()
3269    }
3270}
3271impl Drop for vtkDataAssemblyUtilities {
3272    fn drop(&mut self) {
3273        unsafe extern "C" {
3274            fn vtkDataAssemblyUtilities_destructor(sself: *mut core::ffi::c_void);
3275        }
3276        unsafe { vtkDataAssemblyUtilities_destructor(self.0) }
3277        self.0 = core::ptr::null_mut();
3278    }
3279}
3280#[test]
3281fn test_vtkDataAssemblyUtilities_create_drop() {
3282    let obj = vtkDataAssemblyUtilities::new();
3283    let ptr = obj.0;
3284    assert!(!ptr.is_null());
3285    assert!(unsafe { !obj._get_ptr().is_null() });
3286    drop(obj);
3287    let new_obj = vtkDataAssemblyUtilities(ptr);
3288    assert!(unsafe { new_obj._get_ptr().is_null() });
3289}
3290/// general representation of visualization data
3291///
3292///
3293/// vtkDataObject is an general representation of visualization data. It serves
3294/// to encapsulate instance variables and methods for visualization network
3295/// execution, as well as representing data consisting of a field (i.e., just
3296/// an unstructured pile of data). This is to be compared with a vtkDataSet,
3297/// which is data with geometric and/or topological structure.
3298///
3299/// vtkDataObjects are used to represent arbitrary repositories of data via the
3300/// vtkFieldData instance variable. These data must be eventually mapped into a
3301/// concrete subclass of vtkDataSet before they can actually be displayed.
3302///
3303/// @sa
3304/// vtkDataSet vtkFieldData vtkDataObjectToDataSetFilter
3305/// vtkFieldDataToAttributeDataFilter
3306#[allow(non_camel_case_types)]
3307pub struct vtkDataObject(*mut core::ffi::c_void);
3308impl vtkDataObject {
3309    /// Creates a new [vtkDataObject] wrapped inside `vtkNew`
3310    #[doc(alias = "vtkDataObject")]
3311    pub fn new() -> Self {
3312        unsafe extern "C" {
3313            fn vtkDataObject_new() -> *mut core::ffi::c_void;
3314        }
3315        Self(unsafe { &mut *vtkDataObject_new() })
3316    }
3317    #[cfg(test)]
3318    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3319        unsafe extern "C" {
3320            fn vtkDataObject_get_ptr(
3321                sself: *mut core::ffi::c_void,
3322            ) -> *mut core::ffi::c_void;
3323        }
3324        unsafe { vtkDataObject_get_ptr(self.0) }
3325    }
3326}
3327impl std::default::Default for vtkDataObject {
3328    fn default() -> Self {
3329        Self::new()
3330    }
3331}
3332impl Drop for vtkDataObject {
3333    fn drop(&mut self) {
3334        unsafe extern "C" {
3335            fn vtkDataObject_destructor(sself: *mut core::ffi::c_void);
3336        }
3337        unsafe { vtkDataObject_destructor(self.0) }
3338        self.0 = core::ptr::null_mut();
3339    }
3340}
3341#[test]
3342fn test_vtkDataObject_create_drop() {
3343    let obj = vtkDataObject::new();
3344    let ptr = obj.0;
3345    assert!(!ptr.is_null());
3346    assert!(unsafe { !obj._get_ptr().is_null() });
3347    drop(obj);
3348    let new_obj = vtkDataObject(ptr);
3349    assert!(unsafe { new_obj._get_ptr().is_null() });
3350}
3351/// maintain an unordered list of data objects
3352///
3353///
3354/// vtkDataObjectCollection is an object that creates and manipulates ordered
3355/// lists of data objects. See also vtkCollection and subclasses.
3356#[allow(non_camel_case_types)]
3357pub struct vtkDataObjectCollection(*mut core::ffi::c_void);
3358impl vtkDataObjectCollection {
3359    /// Creates a new [vtkDataObjectCollection] wrapped inside `vtkNew`
3360    #[doc(alias = "vtkDataObjectCollection")]
3361    pub fn new() -> Self {
3362        unsafe extern "C" {
3363            fn vtkDataObjectCollection_new() -> *mut core::ffi::c_void;
3364        }
3365        Self(unsafe { &mut *vtkDataObjectCollection_new() })
3366    }
3367    #[cfg(test)]
3368    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3369        unsafe extern "C" {
3370            fn vtkDataObjectCollection_get_ptr(
3371                sself: *mut core::ffi::c_void,
3372            ) -> *mut core::ffi::c_void;
3373        }
3374        unsafe { vtkDataObjectCollection_get_ptr(self.0) }
3375    }
3376}
3377impl std::default::Default for vtkDataObjectCollection {
3378    fn default() -> Self {
3379        Self::new()
3380    }
3381}
3382impl Drop for vtkDataObjectCollection {
3383    fn drop(&mut self) {
3384        unsafe extern "C" {
3385            fn vtkDataObjectCollection_destructor(sself: *mut core::ffi::c_void);
3386        }
3387        unsafe { vtkDataObjectCollection_destructor(self.0) }
3388        self.0 = core::ptr::null_mut();
3389    }
3390}
3391#[test]
3392fn test_vtkDataObjectCollection_create_drop() {
3393    let obj = vtkDataObjectCollection::new();
3394    let ptr = obj.0;
3395    assert!(!ptr.is_null());
3396    assert!(unsafe { !obj._get_ptr().is_null() });
3397    drop(obj);
3398    let new_obj = vtkDataObjectCollection(ptr);
3399    assert!(unsafe { new_obj._get_ptr().is_null() });
3400}
3401/// superclass for composite data iterators
3402///
3403///
3404/// vtkDataObjectTreeIterator provides an interface for accessing datasets
3405/// in a collection (vtkDataObjectTreeIterator).
3406#[allow(non_camel_case_types)]
3407pub struct vtkDataObjectTreeIterator(*mut core::ffi::c_void);
3408impl vtkDataObjectTreeIterator {
3409    /// Creates a new [vtkDataObjectTreeIterator] wrapped inside `vtkNew`
3410    #[doc(alias = "vtkDataObjectTreeIterator")]
3411    pub fn new() -> Self {
3412        unsafe extern "C" {
3413            fn vtkDataObjectTreeIterator_new() -> *mut core::ffi::c_void;
3414        }
3415        Self(unsafe { &mut *vtkDataObjectTreeIterator_new() })
3416    }
3417    #[cfg(test)]
3418    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3419        unsafe extern "C" {
3420            fn vtkDataObjectTreeIterator_get_ptr(
3421                sself: *mut core::ffi::c_void,
3422            ) -> *mut core::ffi::c_void;
3423        }
3424        unsafe { vtkDataObjectTreeIterator_get_ptr(self.0) }
3425    }
3426}
3427impl std::default::Default for vtkDataObjectTreeIterator {
3428    fn default() -> Self {
3429        Self::new()
3430    }
3431}
3432impl Drop for vtkDataObjectTreeIterator {
3433    fn drop(&mut self) {
3434        unsafe extern "C" {
3435            fn vtkDataObjectTreeIterator_destructor(sself: *mut core::ffi::c_void);
3436        }
3437        unsafe { vtkDataObjectTreeIterator_destructor(self.0) }
3438        self.0 = core::ptr::null_mut();
3439    }
3440}
3441#[test]
3442fn test_vtkDataObjectTreeIterator_create_drop() {
3443    let obj = vtkDataObjectTreeIterator::new();
3444    let ptr = obj.0;
3445    assert!(!ptr.is_null());
3446    assert!(unsafe { !obj._get_ptr().is_null() });
3447    drop(obj);
3448    let new_obj = vtkDataObjectTreeIterator(ptr);
3449    assert!(unsafe { new_obj._get_ptr().is_null() });
3450}
3451///
3452#[allow(non_camel_case_types)]
3453pub struct vtkDataObjectTypes(*mut core::ffi::c_void);
3454impl vtkDataObjectTypes {
3455    /// Creates a new [vtkDataObjectTypes] wrapped inside `vtkNew`
3456    #[doc(alias = "vtkDataObjectTypes")]
3457    pub fn new() -> Self {
3458        unsafe extern "C" {
3459            fn vtkDataObjectTypes_new() -> *mut core::ffi::c_void;
3460        }
3461        Self(unsafe { &mut *vtkDataObjectTypes_new() })
3462    }
3463    #[cfg(test)]
3464    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3465        unsafe extern "C" {
3466            fn vtkDataObjectTypes_get_ptr(
3467                sself: *mut core::ffi::c_void,
3468            ) -> *mut core::ffi::c_void;
3469        }
3470        unsafe { vtkDataObjectTypes_get_ptr(self.0) }
3471    }
3472}
3473impl std::default::Default for vtkDataObjectTypes {
3474    fn default() -> Self {
3475        Self::new()
3476    }
3477}
3478impl Drop for vtkDataObjectTypes {
3479    fn drop(&mut self) {
3480        unsafe extern "C" {
3481            fn vtkDataObjectTypes_destructor(sself: *mut core::ffi::c_void);
3482        }
3483        unsafe { vtkDataObjectTypes_destructor(self.0) }
3484        self.0 = core::ptr::null_mut();
3485    }
3486}
3487#[test]
3488fn test_vtkDataObjectTypes_create_drop() {
3489    let obj = vtkDataObjectTypes::new();
3490    let ptr = obj.0;
3491    assert!(!ptr.is_null());
3492    assert!(unsafe { !obj._get_ptr().is_null() });
3493    drop(obj);
3494    let new_obj = vtkDataObjectTypes(ptr);
3495    assert!(unsafe { new_obj._get_ptr().is_null() });
3496}
3497/// represent and manipulate attribute data in a dataset
3498///
3499///
3500/// vtkDataSetAttributes is a class that is used to represent and manipulate
3501/// attribute data (e.g., scalars, vectors, normals, texture coordinates,
3502/// tensors, global ids, pedigree ids, and field data).
3503///
3504/// This adds to vtkFieldData the ability to pick one of the arrays from the
3505/// field as the currently active array for each attribute type. In other
3506/// words, you pick one array to be called "THE" Scalars, and then filters down
3507/// the pipeline will treat that array specially. For example vtkContourFilter
3508/// will contour "THE" Scalar array unless a different array is asked for.
3509///
3510/// Additionally vtkDataSetAttributes provides methods that filters call to
3511/// pass data through, copy data into, and interpolate from Fields. PassData
3512/// passes entire arrays from the source to the destination. Copy passes
3513/// through some subset of the tuples from the source to the destination.
3514/// Interpolate interpolates from the chosen tuple(s) in the source data, using
3515/// the provided weights, to produce new tuples in the destination.
3516/// Each attribute type has pass, copy and interpolate "copy" flags that
3517/// can be set in the destination to choose which attribute arrays will be
3518/// transferred from the source to the destination.
3519///
3520/// Finally this class provides a mechanism to determine which attributes a
3521/// group of sources have in common, and to copy tuples from a source into
3522/// the destination, for only those attributes that are held by all.
3523///
3524/// @warning
3525/// vtkDataSetAttributes is not in general thread safe due to the use of its
3526/// vtkFieldData::BasicIterator RequiredArrays data member. The class
3527/// vtkArrayListTemplate augments vtkDataSetAttributes for thread safety.
3528///
3529/// @sa vtkArrayListTemplate
3530#[allow(non_camel_case_types)]
3531pub struct vtkDataSetAttributes(*mut core::ffi::c_void);
3532impl vtkDataSetAttributes {
3533    /// Creates a new [vtkDataSetAttributes] wrapped inside `vtkNew`
3534    #[doc(alias = "vtkDataSetAttributes")]
3535    pub fn new() -> Self {
3536        unsafe extern "C" {
3537            fn vtkDataSetAttributes_new() -> *mut core::ffi::c_void;
3538        }
3539        Self(unsafe { &mut *vtkDataSetAttributes_new() })
3540    }
3541    #[cfg(test)]
3542    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3543        unsafe extern "C" {
3544            fn vtkDataSetAttributes_get_ptr(
3545                sself: *mut core::ffi::c_void,
3546            ) -> *mut core::ffi::c_void;
3547        }
3548        unsafe { vtkDataSetAttributes_get_ptr(self.0) }
3549    }
3550}
3551impl std::default::Default for vtkDataSetAttributes {
3552    fn default() -> Self {
3553        Self::new()
3554    }
3555}
3556impl Drop for vtkDataSetAttributes {
3557    fn drop(&mut self) {
3558        unsafe extern "C" {
3559            fn vtkDataSetAttributes_destructor(sself: *mut core::ffi::c_void);
3560        }
3561        unsafe { vtkDataSetAttributes_destructor(self.0) }
3562        self.0 = core::ptr::null_mut();
3563    }
3564}
3565#[test]
3566fn test_vtkDataSetAttributes_create_drop() {
3567    let obj = vtkDataSetAttributes::new();
3568    let ptr = obj.0;
3569    assert!(!ptr.is_null());
3570    assert!(unsafe { !obj._get_ptr().is_null() });
3571    drop(obj);
3572    let new_obj = vtkDataSetAttributes(ptr);
3573    assert!(unsafe { new_obj._get_ptr().is_null() });
3574}
3575/// Implementation of vtkCellIterator using
3576///
3577/// vtkDataSet API.
3578#[allow(non_camel_case_types)]
3579pub struct vtkDataSetCellIterator(*mut core::ffi::c_void);
3580impl vtkDataSetCellIterator {
3581    /// Creates a new [vtkDataSetCellIterator] wrapped inside `vtkNew`
3582    #[doc(alias = "vtkDataSetCellIterator")]
3583    pub fn new() -> Self {
3584        unsafe extern "C" {
3585            fn vtkDataSetCellIterator_new() -> *mut core::ffi::c_void;
3586        }
3587        Self(unsafe { &mut *vtkDataSetCellIterator_new() })
3588    }
3589    #[cfg(test)]
3590    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3591        unsafe extern "C" {
3592            fn vtkDataSetCellIterator_get_ptr(
3593                sself: *mut core::ffi::c_void,
3594            ) -> *mut core::ffi::c_void;
3595        }
3596        unsafe { vtkDataSetCellIterator_get_ptr(self.0) }
3597    }
3598}
3599impl std::default::Default for vtkDataSetCellIterator {
3600    fn default() -> Self {
3601        Self::new()
3602    }
3603}
3604impl Drop for vtkDataSetCellIterator {
3605    fn drop(&mut self) {
3606        unsafe extern "C" {
3607            fn vtkDataSetCellIterator_destructor(sself: *mut core::ffi::c_void);
3608        }
3609        unsafe { vtkDataSetCellIterator_destructor(self.0) }
3610        self.0 = core::ptr::null_mut();
3611    }
3612}
3613#[test]
3614fn test_vtkDataSetCellIterator_create_drop() {
3615    let obj = vtkDataSetCellIterator::new();
3616    let ptr = obj.0;
3617    assert!(!ptr.is_null());
3618    assert!(unsafe { !obj._get_ptr().is_null() });
3619    drop(obj);
3620    let new_obj = vtkDataSetCellIterator(ptr);
3621    assert!(unsafe { new_obj._get_ptr().is_null() });
3622}
3623/// maintain an unordered list of dataset objects
3624///
3625///
3626/// vtkDataSetCollection is an object that creates and manipulates ordered
3627/// lists of datasets. See also vtkCollection and subclasses.
3628#[allow(non_camel_case_types)]
3629pub struct vtkDataSetCollection(*mut core::ffi::c_void);
3630impl vtkDataSetCollection {
3631    /// Creates a new [vtkDataSetCollection] wrapped inside `vtkNew`
3632    #[doc(alias = "vtkDataSetCollection")]
3633    pub fn new() -> Self {
3634        unsafe extern "C" {
3635            fn vtkDataSetCollection_new() -> *mut core::ffi::c_void;
3636        }
3637        Self(unsafe { &mut *vtkDataSetCollection_new() })
3638    }
3639    #[cfg(test)]
3640    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3641        unsafe extern "C" {
3642            fn vtkDataSetCollection_get_ptr(
3643                sself: *mut core::ffi::c_void,
3644            ) -> *mut core::ffi::c_void;
3645        }
3646        unsafe { vtkDataSetCollection_get_ptr(self.0) }
3647    }
3648}
3649impl std::default::Default for vtkDataSetCollection {
3650    fn default() -> Self {
3651        Self::new()
3652    }
3653}
3654impl Drop for vtkDataSetCollection {
3655    fn drop(&mut self) {
3656        unsafe extern "C" {
3657            fn vtkDataSetCollection_destructor(sself: *mut core::ffi::c_void);
3658        }
3659        unsafe { vtkDataSetCollection_destructor(self.0) }
3660        self.0 = core::ptr::null_mut();
3661    }
3662}
3663#[test]
3664fn test_vtkDataSetCollection_create_drop() {
3665    let obj = vtkDataSetCollection::new();
3666    let ptr = obj.0;
3667    assert!(!ptr.is_null());
3668    assert!(unsafe { !obj._get_ptr().is_null() });
3669    drop(obj);
3670    let new_obj = vtkDataSetCollection(ptr);
3671    assert!(unsafe { new_obj._get_ptr().is_null() });
3672}
3673/// A rooted tree data structure.
3674///
3675///
3676///
3677/// vtkDirectedAcyclicGraph is a connected directed graph with no cycles. A tree is a type of
3678/// directed graph, so works with all graph algorithms.
3679///
3680/// vtkDirectedAcyclicGraph is a read-only data structure.
3681/// To construct a tree, create an instance of vtkMutableDirectedGraph.
3682/// Add vertices and edges with AddVertex() and AddEdge(). You may alternately
3683/// start by adding a single vertex as the root then call graph->AddChild(parent)
3684/// which adds a new vertex and connects the parent to the child.
3685/// The tree MUST have all edges in the proper direction, from parent to child.
3686/// After building the tree, call tree->CheckedShallowCopy(graph) to copy the
3687/// structure into a vtkDirectedAcyclicGraph. This method will return false if the graph is
3688/// an invalid tree.
3689///
3690/// vtkDirectedAcyclicGraph provides some convenience methods for obtaining the parent and
3691/// children of a vertex, for finding the root, and determining if a vertex
3692/// is a leaf (a vertex with no children).
3693///
3694/// @sa
3695/// vtkDirectedGraph vtkMutableDirectedGraph vtkGraph
3696#[allow(non_camel_case_types)]
3697pub struct vtkDirectedAcyclicGraph(*mut core::ffi::c_void);
3698impl vtkDirectedAcyclicGraph {
3699    /// Creates a new [vtkDirectedAcyclicGraph] wrapped inside `vtkNew`
3700    #[doc(alias = "vtkDirectedAcyclicGraph")]
3701    pub fn new() -> Self {
3702        unsafe extern "C" {
3703            fn vtkDirectedAcyclicGraph_new() -> *mut core::ffi::c_void;
3704        }
3705        Self(unsafe { &mut *vtkDirectedAcyclicGraph_new() })
3706    }
3707    #[cfg(test)]
3708    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3709        unsafe extern "C" {
3710            fn vtkDirectedAcyclicGraph_get_ptr(
3711                sself: *mut core::ffi::c_void,
3712            ) -> *mut core::ffi::c_void;
3713        }
3714        unsafe { vtkDirectedAcyclicGraph_get_ptr(self.0) }
3715    }
3716}
3717impl std::default::Default for vtkDirectedAcyclicGraph {
3718    fn default() -> Self {
3719        Self::new()
3720    }
3721}
3722impl Drop for vtkDirectedAcyclicGraph {
3723    fn drop(&mut self) {
3724        unsafe extern "C" {
3725            fn vtkDirectedAcyclicGraph_destructor(sself: *mut core::ffi::c_void);
3726        }
3727        unsafe { vtkDirectedAcyclicGraph_destructor(self.0) }
3728        self.0 = core::ptr::null_mut();
3729    }
3730}
3731#[test]
3732fn test_vtkDirectedAcyclicGraph_create_drop() {
3733    let obj = vtkDirectedAcyclicGraph::new();
3734    let ptr = obj.0;
3735    assert!(!ptr.is_null());
3736    assert!(unsafe { !obj._get_ptr().is_null() });
3737    drop(obj);
3738    let new_obj = vtkDirectedAcyclicGraph(ptr);
3739    assert!(unsafe { new_obj._get_ptr().is_null() });
3740}
3741/// A directed graph.
3742///
3743///
3744///
3745/// vtkDirectedGraph is a collection of vertices along with a collection of
3746/// directed edges (edges that have a source and target). ShallowCopy()
3747/// and DeepCopy() (and CheckedShallowCopy(), CheckedDeepCopy())
3748/// accept instances of vtkTree and vtkMutableDirectedGraph.
3749///
3750/// vtkDirectedGraph is read-only. To create an undirected graph,
3751/// use an instance of vtkMutableDirectedGraph, then you may set the
3752/// structure to a vtkDirectedGraph using ShallowCopy().
3753///
3754/// @sa
3755/// vtkGraph vtkMutableDirectedGraph
3756#[allow(non_camel_case_types)]
3757pub struct vtkDirectedGraph(*mut core::ffi::c_void);
3758impl vtkDirectedGraph {
3759    /// Creates a new [vtkDirectedGraph] wrapped inside `vtkNew`
3760    #[doc(alias = "vtkDirectedGraph")]
3761    pub fn new() -> Self {
3762        unsafe extern "C" {
3763            fn vtkDirectedGraph_new() -> *mut core::ffi::c_void;
3764        }
3765        Self(unsafe { &mut *vtkDirectedGraph_new() })
3766    }
3767    #[cfg(test)]
3768    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3769        unsafe extern "C" {
3770            fn vtkDirectedGraph_get_ptr(
3771                sself: *mut core::ffi::c_void,
3772            ) -> *mut core::ffi::c_void;
3773        }
3774        unsafe { vtkDirectedGraph_get_ptr(self.0) }
3775    }
3776}
3777impl std::default::Default for vtkDirectedGraph {
3778    fn default() -> Self {
3779        Self::new()
3780    }
3781}
3782impl Drop for vtkDirectedGraph {
3783    fn drop(&mut self) {
3784        unsafe extern "C" {
3785            fn vtkDirectedGraph_destructor(sself: *mut core::ffi::c_void);
3786        }
3787        unsafe { vtkDirectedGraph_destructor(self.0) }
3788        self.0 = core::ptr::null_mut();
3789    }
3790}
3791#[test]
3792fn test_vtkDirectedGraph_create_drop() {
3793    let obj = vtkDirectedGraph::new();
3794    let ptr = obj.0;
3795    assert!(!ptr.is_null());
3796    assert!(unsafe { !obj._get_ptr().is_null() });
3797    drop(obj);
3798    let new_obj = vtkDirectedGraph(ptr);
3799    assert!(unsafe { new_obj._get_ptr().is_null() });
3800}
3801/// Iterates through all edges in a graph.
3802///
3803///
3804///
3805/// vtkEdgeListIterator iterates through all the edges in a graph, by traversing
3806/// the adjacency list for each vertex. You may instantiate this class directly
3807/// and call SetGraph() to traverse a certain graph. You may also call the graph's
3808/// GetEdges() method to set up the iterator for a certain graph.
3809///
3810/// Note that this class does NOT guarantee that the edges will be processed in
3811/// order of their ids (i.e. it will not necessarily return edge 0, then edge 1,
3812/// etc.).
3813///
3814/// @sa
3815/// vtkGraph
3816#[allow(non_camel_case_types)]
3817pub struct vtkEdgeListIterator(*mut core::ffi::c_void);
3818impl vtkEdgeListIterator {
3819    /// Creates a new [vtkEdgeListIterator] wrapped inside `vtkNew`
3820    #[doc(alias = "vtkEdgeListIterator")]
3821    pub fn new() -> Self {
3822        unsafe extern "C" {
3823            fn vtkEdgeListIterator_new() -> *mut core::ffi::c_void;
3824        }
3825        Self(unsafe { &mut *vtkEdgeListIterator_new() })
3826    }
3827    #[cfg(test)]
3828    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3829        unsafe extern "C" {
3830            fn vtkEdgeListIterator_get_ptr(
3831                sself: *mut core::ffi::c_void,
3832            ) -> *mut core::ffi::c_void;
3833        }
3834        unsafe { vtkEdgeListIterator_get_ptr(self.0) }
3835    }
3836}
3837impl std::default::Default for vtkEdgeListIterator {
3838    fn default() -> Self {
3839        Self::new()
3840    }
3841}
3842impl Drop for vtkEdgeListIterator {
3843    fn drop(&mut self) {
3844        unsafe extern "C" {
3845            fn vtkEdgeListIterator_destructor(sself: *mut core::ffi::c_void);
3846        }
3847        unsafe { vtkEdgeListIterator_destructor(self.0) }
3848        self.0 = core::ptr::null_mut();
3849    }
3850}
3851#[test]
3852fn test_vtkEdgeListIterator_create_drop() {
3853    let obj = vtkEdgeListIterator::new();
3854    let ptr = obj.0;
3855    assert!(!ptr.is_null());
3856    assert!(unsafe { !obj._get_ptr().is_null() });
3857    drop(obj);
3858    let new_obj = vtkEdgeListIterator(ptr);
3859    assert!(unsafe { new_obj._get_ptr().is_null() });
3860}
3861/// keep track of edges (edge is pair of integer id's)
3862///
3863///
3864/// vtkEdgeTable is a general object for keeping track of lists of edges. An
3865/// edge is defined by the pair of point id's (p1,p2). Methods are available
3866/// to insert edges, check if edges exist, and traverse the list of edges.
3867/// Also, it's possible to associate attribute information with each edge.
3868/// The attribute information may take the form of vtkIdType id's, void*
3869/// pointers, or points. To store attributes, make sure that
3870/// InitEdgeInsertion() is invoked with the storeAttributes flag set properly.
3871/// If points are inserted, use the methods InitPointInsertion() and
3872/// InsertUniquePoint().
3873#[allow(non_camel_case_types)]
3874pub struct vtkEdgeTable(*mut core::ffi::c_void);
3875impl vtkEdgeTable {
3876    /// Creates a new [vtkEdgeTable] wrapped inside `vtkNew`
3877    #[doc(alias = "vtkEdgeTable")]
3878    pub fn new() -> Self {
3879        unsafe extern "C" {
3880            fn vtkEdgeTable_new() -> *mut core::ffi::c_void;
3881        }
3882        Self(unsafe { &mut *vtkEdgeTable_new() })
3883    }
3884    #[cfg(test)]
3885    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3886        unsafe extern "C" {
3887            fn vtkEdgeTable_get_ptr(
3888                sself: *mut core::ffi::c_void,
3889            ) -> *mut core::ffi::c_void;
3890        }
3891        unsafe { vtkEdgeTable_get_ptr(self.0) }
3892    }
3893}
3894impl std::default::Default for vtkEdgeTable {
3895    fn default() -> Self {
3896        Self::new()
3897    }
3898}
3899impl Drop for vtkEdgeTable {
3900    fn drop(&mut self) {
3901        unsafe extern "C" {
3902            fn vtkEdgeTable_destructor(sself: *mut core::ffi::c_void);
3903        }
3904        unsafe { vtkEdgeTable_destructor(self.0) }
3905        self.0 = core::ptr::null_mut();
3906    }
3907}
3908#[test]
3909fn test_vtkEdgeTable_create_drop() {
3910    let obj = vtkEdgeTable::new();
3911    let ptr = obj.0;
3912    assert!(!ptr.is_null());
3913    assert!(unsafe { !obj._get_ptr().is_null() });
3914    drop(obj);
3915    let new_obj = vtkEdgeTable(ptr);
3916    assert!(unsafe { new_obj._get_ptr().is_null() });
3917}
3918/// an empty cell used as a place-holder during processing
3919///
3920///
3921/// vtkEmptyCell is a concrete implementation of vtkCell. It is used
3922/// during processing to represented a deleted element.
3923#[allow(non_camel_case_types)]
3924pub struct vtkEmptyCell(*mut core::ffi::c_void);
3925impl vtkEmptyCell {
3926    /// Creates a new [vtkEmptyCell] wrapped inside `vtkNew`
3927    #[doc(alias = "vtkEmptyCell")]
3928    pub fn new() -> Self {
3929        unsafe extern "C" {
3930            fn vtkEmptyCell_new() -> *mut core::ffi::c_void;
3931        }
3932        Self(unsafe { &mut *vtkEmptyCell_new() })
3933    }
3934    #[cfg(test)]
3935    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
3936        unsafe extern "C" {
3937            fn vtkEmptyCell_get_ptr(
3938                sself: *mut core::ffi::c_void,
3939            ) -> *mut core::ffi::c_void;
3940        }
3941        unsafe { vtkEmptyCell_get_ptr(self.0) }
3942    }
3943}
3944impl std::default::Default for vtkEmptyCell {
3945    fn default() -> Self {
3946        Self::new()
3947    }
3948}
3949impl Drop for vtkEmptyCell {
3950    fn drop(&mut self) {
3951        unsafe extern "C" {
3952            fn vtkEmptyCell_destructor(sself: *mut core::ffi::c_void);
3953        }
3954        unsafe { vtkEmptyCell_destructor(self.0) }
3955        self.0 = core::ptr::null_mut();
3956    }
3957}
3958#[test]
3959fn test_vtkEmptyCell_create_drop() {
3960    let obj = vtkEmptyCell::new();
3961    let ptr = obj.0;
3962    assert!(!ptr.is_null());
3963    assert!(unsafe { !obj._get_ptr().is_null() });
3964    drop(obj);
3965    let new_obj = vtkEmptyCell(ptr);
3966    assert!(unsafe { new_obj._get_ptr().is_null() });
3967}
3968/// structured grid with explicit topology and geometry
3969///
3970///
3971/// vtkExplicitStructuredGrid is a data object that is a concrete implementation
3972/// of vtkDataSet. vtkExplicitStructuredGrid represents a geometric structure
3973/// that is a topologically regular array of hexahedron. The topology is that of
3974/// a cube that has been subdivided into a regular array of smaller cubes.
3975/// Each cell can be addressed with i-j-k indices, however neighbor hexahedrons
3976/// does not necessarily share a face and hexahedron can be blanked (turned-off).
3977///
3978/// Like unstructured grid, vtkExplicitStructuredGrid has explicit point coordinates
3979/// and cell to point indexing.
3980/// Unlike unstructured grid, vtkExplicitStructuredGrid does not keep a cell type
3981/// list as all visible cells are known to be hexahedra.
3982/// vtkExplicitStructuredGrid can take advantage of its layout to perform operations
3983/// based on the i, j, k parameters, similar to structured grid. This makes some
3984/// operations faster on this class, without losing the flexibility of the
3985/// cell -> points mapping.
3986/// The most common use of this class would be in situations where you have all
3987/// hexahedra but the points used by the cells are not exactly defined by the
3988/// i, j, k parameters. One example of this is a structured grid with a half voxel
3989/// shift occurring in the middle of it such as with a geologic fault.
3990///
3991/// The order and number of points is arbitrary.
3992/// The order and number of cells must match that specified by the dimensions
3993/// of the grid minus 1, because in vtk structured datasets the dimensions
3994/// correspond to the points.
3995/// The cells order increases in i fastest (from 0 <= i <= dims[0] - 2),
3996/// then j (0 <= j <= dims[1] - 2), then k ( 0 <= k <= dims[2] - 2) where dims[]
3997/// are the dimensions of the grid in the i-j-k topological directions.
3998/// The number of cells is (dims[0] - 1) * (dims[1] - 1) * (dims[2] - 1).
3999///
4000/// In order for an ESG to be usable by most other ESG specific filters,
4001/// it is needed to call the ComputeFacesConnectivityFlagsArray method.
4002/// It is also recommended to call CheckAndReorderFaces method to fix any
4003/// faces issues in the dataset.
4004#[allow(non_camel_case_types)]
4005pub struct vtkExplicitStructuredGrid(*mut core::ffi::c_void);
4006impl vtkExplicitStructuredGrid {
4007    /// Creates a new [vtkExplicitStructuredGrid] wrapped inside `vtkNew`
4008    #[doc(alias = "vtkExplicitStructuredGrid")]
4009    pub fn new() -> Self {
4010        unsafe extern "C" {
4011            fn vtkExplicitStructuredGrid_new() -> *mut core::ffi::c_void;
4012        }
4013        Self(unsafe { &mut *vtkExplicitStructuredGrid_new() })
4014    }
4015    #[cfg(test)]
4016    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4017        unsafe extern "C" {
4018            fn vtkExplicitStructuredGrid_get_ptr(
4019                sself: *mut core::ffi::c_void,
4020            ) -> *mut core::ffi::c_void;
4021        }
4022        unsafe { vtkExplicitStructuredGrid_get_ptr(self.0) }
4023    }
4024}
4025impl std::default::Default for vtkExplicitStructuredGrid {
4026    fn default() -> Self {
4027        Self::new()
4028    }
4029}
4030impl Drop for vtkExplicitStructuredGrid {
4031    fn drop(&mut self) {
4032        unsafe extern "C" {
4033            fn vtkExplicitStructuredGrid_destructor(sself: *mut core::ffi::c_void);
4034        }
4035        unsafe { vtkExplicitStructuredGrid_destructor(self.0) }
4036        self.0 = core::ptr::null_mut();
4037    }
4038}
4039#[test]
4040fn test_vtkExplicitStructuredGrid_create_drop() {
4041    let obj = vtkExplicitStructuredGrid::new();
4042    let ptr = obj.0;
4043    assert!(!ptr.is_null());
4044    assert!(unsafe { !obj._get_ptr().is_null() });
4045    drop(obj);
4046    let new_obj = vtkExplicitStructuredGrid(ptr);
4047    assert!(unsafe { new_obj._get_ptr().is_null() });
4048}
4049/// helper for extracting/sub-sampling
4050///
4051/// structured datasets.
4052///
4053///
4054/// vtkExtractStructuredGridHelper provides some common functionality that is
4055/// used by filters that extract and sub-sample structured data. Specifically,
4056/// it provides functionality for calculating the mapping from the output extent
4057/// of each process to the input extent.
4058///
4059/// @sa
4060/// vtkExtractGrid vtkExtractVOI vtkExtractRectilinearGrid
4061#[allow(non_camel_case_types)]
4062pub struct vtkExtractStructuredGridHelper(*mut core::ffi::c_void);
4063impl vtkExtractStructuredGridHelper {
4064    /// Creates a new [vtkExtractStructuredGridHelper] wrapped inside `vtkNew`
4065    #[doc(alias = "vtkExtractStructuredGridHelper")]
4066    pub fn new() -> Self {
4067        unsafe extern "C" {
4068            fn vtkExtractStructuredGridHelper_new() -> *mut core::ffi::c_void;
4069        }
4070        Self(unsafe { &mut *vtkExtractStructuredGridHelper_new() })
4071    }
4072    #[cfg(test)]
4073    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4074        unsafe extern "C" {
4075            fn vtkExtractStructuredGridHelper_get_ptr(
4076                sself: *mut core::ffi::c_void,
4077            ) -> *mut core::ffi::c_void;
4078        }
4079        unsafe { vtkExtractStructuredGridHelper_get_ptr(self.0) }
4080    }
4081}
4082impl std::default::Default for vtkExtractStructuredGridHelper {
4083    fn default() -> Self {
4084        Self::new()
4085    }
4086}
4087impl Drop for vtkExtractStructuredGridHelper {
4088    fn drop(&mut self) {
4089        unsafe extern "C" {
4090            fn vtkExtractStructuredGridHelper_destructor(sself: *mut core::ffi::c_void);
4091        }
4092        unsafe { vtkExtractStructuredGridHelper_destructor(self.0) }
4093        self.0 = core::ptr::null_mut();
4094    }
4095}
4096#[test]
4097fn test_vtkExtractStructuredGridHelper_create_drop() {
4098    let obj = vtkExtractStructuredGridHelper::new();
4099    let ptr = obj.0;
4100    assert!(!ptr.is_null());
4101    assert!(unsafe { !obj._get_ptr().is_null() });
4102    drop(obj);
4103    let new_obj = vtkExtractStructuredGridHelper(ptr);
4104    assert!(unsafe { new_obj._get_ptr().is_null() });
4105}
4106/// represent and manipulate fields of data
4107///
4108///
4109/// vtkFieldData represents and manipulates fields of data. The model of a field
4110/// is a m x n matrix of data values, where m is the number of tuples, and n
4111/// is the number of components. (A tuple is a row of n components in the
4112/// matrix.) The field is assumed to be composed of a set of one or more data
4113/// arrays, where the data in the arrays are of different types (e.g., int,
4114/// double, char, etc.), and there may be variable numbers of components in
4115/// each array. Note that each data array is assumed to be "m" in length
4116/// (i.e., number of tuples), which typically corresponds to the number of
4117/// points or cells in a dataset. Also, each data array must have a
4118/// character-string name. (This is used to manipulate data.)
4119///
4120/// There are two ways of manipulating and interfacing to fields. You can do
4121/// it generically by manipulating components/tuples via a double-type data
4122/// exchange, or you can do it by grabbing the arrays and manipulating them
4123/// directly. The former is simpler but performs type conversion, which is bad
4124/// if your data has non-castable types like (void) pointers, or you lose
4125/// information as a result of the cast. The more efficient method means
4126/// managing each array in the field.  Using this method you can create
4127/// faster, more efficient algorithms that do not lose information.
4128///
4129/// @sa
4130/// vtkAbstractArray vtkDataSetAttributes vtkPointData vtkCellData
4131#[allow(non_camel_case_types)]
4132pub struct vtkFieldData(*mut core::ffi::c_void);
4133impl vtkFieldData {
4134    /// Creates a new [vtkFieldData] wrapped inside `vtkNew`
4135    #[doc(alias = "vtkFieldData")]
4136    pub fn new() -> Self {
4137        unsafe extern "C" {
4138            fn vtkFieldData_new() -> *mut core::ffi::c_void;
4139        }
4140        Self(unsafe { &mut *vtkFieldData_new() })
4141    }
4142    #[cfg(test)]
4143    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4144        unsafe extern "C" {
4145            fn vtkFieldData_get_ptr(
4146                sself: *mut core::ffi::c_void,
4147            ) -> *mut core::ffi::c_void;
4148        }
4149        unsafe { vtkFieldData_get_ptr(self.0) }
4150    }
4151}
4152impl std::default::Default for vtkFieldData {
4153    fn default() -> Self {
4154        Self::new()
4155    }
4156}
4157impl Drop for vtkFieldData {
4158    fn drop(&mut self) {
4159        unsafe extern "C" {
4160            fn vtkFieldData_destructor(sself: *mut core::ffi::c_void);
4161        }
4162        unsafe { vtkFieldData_destructor(self.0) }
4163        self.0 = core::ptr::null_mut();
4164    }
4165}
4166#[test]
4167fn test_vtkFieldData_create_drop() {
4168    let obj = vtkFieldData::new();
4169    let ptr = obj.0;
4170    assert!(!ptr.is_null());
4171    assert!(unsafe { !obj._get_ptr().is_null() });
4172    drop(obj);
4173    let new_obj = vtkFieldData(ptr);
4174    assert!(unsafe { new_obj._get_ptr().is_null() });
4175}
4176/// a collection of attributes
4177///
4178///
4179/// vtkGenericAttributeCollection is a class that collects attributes
4180/// (represented by vtkGenericAttribute).
4181#[allow(non_camel_case_types)]
4182pub struct vtkGenericAttributeCollection(*mut core::ffi::c_void);
4183impl vtkGenericAttributeCollection {
4184    /// Creates a new [vtkGenericAttributeCollection] wrapped inside `vtkNew`
4185    #[doc(alias = "vtkGenericAttributeCollection")]
4186    pub fn new() -> Self {
4187        unsafe extern "C" {
4188            fn vtkGenericAttributeCollection_new() -> *mut core::ffi::c_void;
4189        }
4190        Self(unsafe { &mut *vtkGenericAttributeCollection_new() })
4191    }
4192    #[cfg(test)]
4193    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4194        unsafe extern "C" {
4195            fn vtkGenericAttributeCollection_get_ptr(
4196                sself: *mut core::ffi::c_void,
4197            ) -> *mut core::ffi::c_void;
4198        }
4199        unsafe { vtkGenericAttributeCollection_get_ptr(self.0) }
4200    }
4201}
4202impl std::default::Default for vtkGenericAttributeCollection {
4203    fn default() -> Self {
4204        Self::new()
4205    }
4206}
4207impl Drop for vtkGenericAttributeCollection {
4208    fn drop(&mut self) {
4209        unsafe extern "C" {
4210            fn vtkGenericAttributeCollection_destructor(sself: *mut core::ffi::c_void);
4211        }
4212        unsafe { vtkGenericAttributeCollection_destructor(self.0) }
4213        self.0 = core::ptr::null_mut();
4214    }
4215}
4216#[test]
4217fn test_vtkGenericAttributeCollection_create_drop() {
4218    let obj = vtkGenericAttributeCollection::new();
4219    let ptr = obj.0;
4220    assert!(!ptr.is_null());
4221    assert!(unsafe { !obj._get_ptr().is_null() });
4222    drop(obj);
4223    let new_obj = vtkGenericAttributeCollection(ptr);
4224    assert!(unsafe { new_obj._get_ptr().is_null() });
4225}
4226/// provides thread-safe access to cells
4227///
4228///
4229/// vtkGenericCell is a class that provides access to concrete types of cells.
4230/// It's main purpose is to allow thread-safe access to cells, supporting
4231/// the vtkDataSet::GetCell(vtkGenericCell *) method. vtkGenericCell acts
4232/// like any type of cell, it just dereferences an internal representation.
4233/// The SetCellType() methods use \#define constants; these are defined in
4234/// the file vtkCellType.h.
4235///
4236/// @sa
4237/// vtkCell vtkDataSet
4238#[allow(non_camel_case_types)]
4239pub struct vtkGenericCell(*mut core::ffi::c_void);
4240impl vtkGenericCell {
4241    /// Creates a new [vtkGenericCell] wrapped inside `vtkNew`
4242    #[doc(alias = "vtkGenericCell")]
4243    pub fn new() -> Self {
4244        unsafe extern "C" {
4245            fn vtkGenericCell_new() -> *mut core::ffi::c_void;
4246        }
4247        Self(unsafe { &mut *vtkGenericCell_new() })
4248    }
4249    #[cfg(test)]
4250    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4251        unsafe extern "C" {
4252            fn vtkGenericCell_get_ptr(
4253                sself: *mut core::ffi::c_void,
4254            ) -> *mut core::ffi::c_void;
4255        }
4256        unsafe { vtkGenericCell_get_ptr(self.0) }
4257    }
4258}
4259impl std::default::Default for vtkGenericCell {
4260    fn default() -> Self {
4261        Self::new()
4262    }
4263}
4264impl Drop for vtkGenericCell {
4265    fn drop(&mut self) {
4266        unsafe extern "C" {
4267            fn vtkGenericCell_destructor(sself: *mut core::ffi::c_void);
4268        }
4269        unsafe { vtkGenericCell_destructor(self.0) }
4270        self.0 = core::ptr::null_mut();
4271    }
4272}
4273#[test]
4274fn test_vtkGenericCell_create_drop() {
4275    let obj = vtkGenericCell::new();
4276    let ptr = obj.0;
4277    assert!(!ptr.is_null());
4278    assert!(unsafe { !obj._get_ptr().is_null() });
4279    drop(obj);
4280    let new_obj = vtkGenericCell(ptr);
4281    assert!(unsafe { new_obj._get_ptr().is_null() });
4282}
4283/// keep track of edges (defined by pair of integer id's)
4284///
4285///
4286/// vtkGenericEdgeTable is used to indicate the existence of and hold
4287/// information about edges. Similar to vtkEdgeTable, this class is
4288/// more sophisticated in that it uses reference counting to keep track
4289/// of when information about an edge should be deleted.
4290///
4291/// vtkGenericEdgeTable is a helper class used in the adaptor framework.  It
4292/// is used during the tessellation process to hold information about the
4293/// error metric on each edge. This avoids recomputing the error metric each
4294/// time the same edge is visited.
4295#[allow(non_camel_case_types)]
4296pub struct vtkGenericEdgeTable(*mut core::ffi::c_void);
4297impl vtkGenericEdgeTable {
4298    /// Creates a new [vtkGenericEdgeTable] wrapped inside `vtkNew`
4299    #[doc(alias = "vtkGenericEdgeTable")]
4300    pub fn new() -> Self {
4301        unsafe extern "C" {
4302            fn vtkGenericEdgeTable_new() -> *mut core::ffi::c_void;
4303        }
4304        Self(unsafe { &mut *vtkGenericEdgeTable_new() })
4305    }
4306    #[cfg(test)]
4307    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4308        unsafe extern "C" {
4309            fn vtkGenericEdgeTable_get_ptr(
4310                sself: *mut core::ffi::c_void,
4311            ) -> *mut core::ffi::c_void;
4312        }
4313        unsafe { vtkGenericEdgeTable_get_ptr(self.0) }
4314    }
4315}
4316impl std::default::Default for vtkGenericEdgeTable {
4317    fn default() -> Self {
4318        Self::new()
4319    }
4320}
4321impl Drop for vtkGenericEdgeTable {
4322    fn drop(&mut self) {
4323        unsafe extern "C" {
4324            fn vtkGenericEdgeTable_destructor(sself: *mut core::ffi::c_void);
4325        }
4326        unsafe { vtkGenericEdgeTable_destructor(self.0) }
4327        self.0 = core::ptr::null_mut();
4328    }
4329}
4330#[test]
4331fn test_vtkGenericEdgeTable_create_drop() {
4332    let obj = vtkGenericEdgeTable::new();
4333    let ptr = obj.0;
4334    assert!(!ptr.is_null());
4335    assert!(unsafe { !obj._get_ptr().is_null() });
4336    drop(obj);
4337    let new_obj = vtkGenericEdgeTable(ptr);
4338    assert!(unsafe { new_obj._get_ptr().is_null() });
4339}
4340/// Interface for obtaining
4341///
4342/// interpolated velocity values
4343///
4344/// vtkGenericInterpolatedVelocityField acts as a continuous velocity field
4345/// by performing cell interpolation on the underlying vtkDataSet.
4346/// This is a concrete sub-class of vtkFunctionSet with
4347/// NumberOfIndependentVariables = 4 (x,y,z,t) and
4348/// NumberOfFunctions = 3 (u,v,w). Normally, every time an evaluation
4349/// is performed, the cell which contains the point (x,y,z) has to
4350/// be found by calling FindCell. This is a computationally expansive
4351/// operation. In certain cases, the cell search can be avoided or shortened
4352/// by providing a guess for the cell iterator. For example, in streamline
4353/// integration, the next evaluation is usually in the same or a neighbour
4354/// cell. For this reason, vtkGenericInterpolatedVelocityField stores the last
4355/// cell iterator. If caching is turned on, it uses this iterator as the
4356/// starting point.
4357///
4358/// @warning
4359/// vtkGenericInterpolatedVelocityField is not thread safe. A new instance
4360/// should be created by each thread.
4361///
4362/// @sa
4363/// vtkFunctionSet vtkGenericStreamTracer
4364#[allow(non_camel_case_types)]
4365pub struct vtkGenericInterpolatedVelocityField(*mut core::ffi::c_void);
4366impl vtkGenericInterpolatedVelocityField {
4367    /// Creates a new [vtkGenericInterpolatedVelocityField] wrapped inside `vtkNew`
4368    #[doc(alias = "vtkGenericInterpolatedVelocityField")]
4369    pub fn new() -> Self {
4370        unsafe extern "C" {
4371            fn vtkGenericInterpolatedVelocityField_new() -> *mut core::ffi::c_void;
4372        }
4373        Self(unsafe { &mut *vtkGenericInterpolatedVelocityField_new() })
4374    }
4375    #[cfg(test)]
4376    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4377        unsafe extern "C" {
4378            fn vtkGenericInterpolatedVelocityField_get_ptr(
4379                sself: *mut core::ffi::c_void,
4380            ) -> *mut core::ffi::c_void;
4381        }
4382        unsafe { vtkGenericInterpolatedVelocityField_get_ptr(self.0) }
4383    }
4384}
4385impl std::default::Default for vtkGenericInterpolatedVelocityField {
4386    fn default() -> Self {
4387        Self::new()
4388    }
4389}
4390impl Drop for vtkGenericInterpolatedVelocityField {
4391    fn drop(&mut self) {
4392        unsafe extern "C" {
4393            fn vtkGenericInterpolatedVelocityField_destructor(
4394                sself: *mut core::ffi::c_void,
4395            );
4396        }
4397        unsafe { vtkGenericInterpolatedVelocityField_destructor(self.0) }
4398        self.0 = core::ptr::null_mut();
4399    }
4400}
4401#[test]
4402fn test_vtkGenericInterpolatedVelocityField_create_drop() {
4403    let obj = vtkGenericInterpolatedVelocityField::new();
4404    let ptr = obj.0;
4405    assert!(!ptr.is_null());
4406    assert!(unsafe { !obj._get_ptr().is_null() });
4407    drop(obj);
4408    let new_obj = vtkGenericInterpolatedVelocityField(ptr);
4409    assert!(unsafe { new_obj._get_ptr().is_null() });
4410}
4411/// Objects that compute
4412///
4413/// geometry-based error during cell tessellation.
4414///
4415///
4416/// It is a concrete error metric, based on a geometric criterium:
4417/// the variation of the edge from a straight line.
4418///
4419/// @sa
4420/// vtkGenericCellTessellator vtkGenericSubdivisionErrorMetric
4421#[allow(non_camel_case_types)]
4422pub struct vtkGeometricErrorMetric(*mut core::ffi::c_void);
4423impl vtkGeometricErrorMetric {
4424    /// Creates a new [vtkGeometricErrorMetric] wrapped inside `vtkNew`
4425    #[doc(alias = "vtkGeometricErrorMetric")]
4426    pub fn new() -> Self {
4427        unsafe extern "C" {
4428            fn vtkGeometricErrorMetric_new() -> *mut core::ffi::c_void;
4429        }
4430        Self(unsafe { &mut *vtkGeometricErrorMetric_new() })
4431    }
4432    #[cfg(test)]
4433    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4434        unsafe extern "C" {
4435            fn vtkGeometricErrorMetric_get_ptr(
4436                sself: *mut core::ffi::c_void,
4437            ) -> *mut core::ffi::c_void;
4438        }
4439        unsafe { vtkGeometricErrorMetric_get_ptr(self.0) }
4440    }
4441}
4442impl std::default::Default for vtkGeometricErrorMetric {
4443    fn default() -> Self {
4444        Self::new()
4445    }
4446}
4447impl Drop for vtkGeometricErrorMetric {
4448    fn drop(&mut self) {
4449        unsafe extern "C" {
4450            fn vtkGeometricErrorMetric_destructor(sself: *mut core::ffi::c_void);
4451        }
4452        unsafe { vtkGeometricErrorMetric_destructor(self.0) }
4453        self.0 = core::ptr::null_mut();
4454    }
4455}
4456#[test]
4457fn test_vtkGeometricErrorMetric_create_drop() {
4458    let obj = vtkGeometricErrorMetric::new();
4459    let ptr = obj.0;
4460    assert!(!ptr.is_null());
4461    assert!(unsafe { !obj._get_ptr().is_null() });
4462    drop(obj);
4463    let new_obj = vtkGeometricErrorMetric(ptr);
4464    assert!(unsafe { new_obj._get_ptr().is_null() });
4465}
4466/// Representation of a single graph edge.
4467///
4468///
4469///
4470/// A heavy-weight (vtkObject subclass) graph edge object that may be used
4471/// instead of the vtkEdgeType struct, for use with wrappers.
4472/// The edge contains the source and target vertex ids, and the edge id.
4473///
4474/// @sa
4475/// vtkGraph
4476#[allow(non_camel_case_types)]
4477pub struct vtkGraphEdge(*mut core::ffi::c_void);
4478impl vtkGraphEdge {
4479    /// Creates a new [vtkGraphEdge] wrapped inside `vtkNew`
4480    #[doc(alias = "vtkGraphEdge")]
4481    pub fn new() -> Self {
4482        unsafe extern "C" {
4483            fn vtkGraphEdge_new() -> *mut core::ffi::c_void;
4484        }
4485        Self(unsafe { &mut *vtkGraphEdge_new() })
4486    }
4487    #[cfg(test)]
4488    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4489        unsafe extern "C" {
4490            fn vtkGraphEdge_get_ptr(
4491                sself: *mut core::ffi::c_void,
4492            ) -> *mut core::ffi::c_void;
4493        }
4494        unsafe { vtkGraphEdge_get_ptr(self.0) }
4495    }
4496}
4497impl std::default::Default for vtkGraphEdge {
4498    fn default() -> Self {
4499        Self::new()
4500    }
4501}
4502impl Drop for vtkGraphEdge {
4503    fn drop(&mut self) {
4504        unsafe extern "C" {
4505            fn vtkGraphEdge_destructor(sself: *mut core::ffi::c_void);
4506        }
4507        unsafe { vtkGraphEdge_destructor(self.0) }
4508        self.0 = core::ptr::null_mut();
4509    }
4510}
4511#[test]
4512fn test_vtkGraphEdge_create_drop() {
4513    let obj = vtkGraphEdge::new();
4514    let ptr = obj.0;
4515    assert!(!ptr.is_null());
4516    assert!(unsafe { !obj._get_ptr().is_null() });
4517    drop(obj);
4518    let new_obj = vtkGraphEdge(ptr);
4519    assert!(unsafe { new_obj._get_ptr().is_null() });
4520}
4521/// Internal representation of vtkGraph
4522///
4523///
4524///
4525/// This is the internal representation of vtkGraph, used only in rare cases
4526/// where one must modify that representation.
4527#[allow(non_camel_case_types)]
4528pub struct vtkGraphInternals(*mut core::ffi::c_void);
4529impl vtkGraphInternals {
4530    /// Creates a new [vtkGraphInternals] wrapped inside `vtkNew`
4531    #[doc(alias = "vtkGraphInternals")]
4532    pub fn new() -> Self {
4533        unsafe extern "C" {
4534            fn vtkGraphInternals_new() -> *mut core::ffi::c_void;
4535        }
4536        Self(unsafe { &mut *vtkGraphInternals_new() })
4537    }
4538    #[cfg(test)]
4539    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4540        unsafe extern "C" {
4541            fn vtkGraphInternals_get_ptr(
4542                sself: *mut core::ffi::c_void,
4543            ) -> *mut core::ffi::c_void;
4544        }
4545        unsafe { vtkGraphInternals_get_ptr(self.0) }
4546    }
4547}
4548impl std::default::Default for vtkGraphInternals {
4549    fn default() -> Self {
4550        Self::new()
4551    }
4552}
4553impl Drop for vtkGraphInternals {
4554    fn drop(&mut self) {
4555        unsafe extern "C" {
4556            fn vtkGraphInternals_destructor(sself: *mut core::ffi::c_void);
4557        }
4558        unsafe { vtkGraphInternals_destructor(self.0) }
4559        self.0 = core::ptr::null_mut();
4560    }
4561}
4562#[test]
4563fn test_vtkGraphInternals_create_drop() {
4564    let obj = vtkGraphInternals::new();
4565    let ptr = obj.0;
4566    assert!(!ptr.is_null());
4567    assert!(unsafe { !obj._get_ptr().is_null() });
4568    drop(obj);
4569    let new_obj = vtkGraphInternals(ptr);
4570    assert!(unsafe { new_obj._get_ptr().is_null() });
4571}
4572/// a 3D cell that represents a prism with
4573///
4574/// hexagonal base
4575///
4576/// vtkHexagonalPrism is a concrete implementation of vtkCell to represent a
4577/// linear 3D prism with hexagonal base. Such prism is defined by the twelve points
4578/// (0-12) where (0,1,2,3,4,5) is the base of the prism which, using the right
4579/// hand rule, forms a hexagon whose normal points is in the direction of the
4580/// opposite face (6,7,8,9,10,11).
4581///
4582/// @par Thanks:
4583/// Thanks to Philippe Guerville who developed this class.
4584/// Thanks to Charles Pignerol (CEA-DAM, France) who ported this class under
4585/// VTK 4.
4586/// Thanks to Jean Favre (CSCS, Switzerland) who contributed to integrate this
4587/// class in VTK.
4588/// Please address all comments to Jean Favre (jfavre at cscs.ch).
4589#[allow(non_camel_case_types)]
4590pub struct vtkHexagonalPrism(*mut core::ffi::c_void);
4591impl vtkHexagonalPrism {
4592    /// Creates a new [vtkHexagonalPrism] wrapped inside `vtkNew`
4593    #[doc(alias = "vtkHexagonalPrism")]
4594    pub fn new() -> Self {
4595        unsafe extern "C" {
4596            fn vtkHexagonalPrism_new() -> *mut core::ffi::c_void;
4597        }
4598        Self(unsafe { &mut *vtkHexagonalPrism_new() })
4599    }
4600    #[cfg(test)]
4601    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4602        unsafe extern "C" {
4603            fn vtkHexagonalPrism_get_ptr(
4604                sself: *mut core::ffi::c_void,
4605            ) -> *mut core::ffi::c_void;
4606        }
4607        unsafe { vtkHexagonalPrism_get_ptr(self.0) }
4608    }
4609}
4610impl std::default::Default for vtkHexagonalPrism {
4611    fn default() -> Self {
4612        Self::new()
4613    }
4614}
4615impl Drop for vtkHexagonalPrism {
4616    fn drop(&mut self) {
4617        unsafe extern "C" {
4618            fn vtkHexagonalPrism_destructor(sself: *mut core::ffi::c_void);
4619        }
4620        unsafe { vtkHexagonalPrism_destructor(self.0) }
4621        self.0 = core::ptr::null_mut();
4622    }
4623}
4624#[test]
4625fn test_vtkHexagonalPrism_create_drop() {
4626    let obj = vtkHexagonalPrism::new();
4627    let ptr = obj.0;
4628    assert!(!ptr.is_null());
4629    assert!(unsafe { !obj._get_ptr().is_null() });
4630    drop(obj);
4631    let new_obj = vtkHexagonalPrism(ptr);
4632    assert!(unsafe { new_obj._get_ptr().is_null() });
4633}
4634/// a cell that represents a linear 3D hexahedron
4635///
4636///
4637/// vtkHexahedron is a concrete implementation of vtkCell to represent a
4638/// linear, 3D rectangular hexahedron (e.g., "brick" topology). vtkHexahedron
4639/// uses the standard isoparametric shape functions for a linear
4640/// hexahedron. The hexahedron is defined by the eight points (0-7) where
4641/// (0,1,2,3) is the base of the hexahedron which, using the right hand rule,
4642/// forms a quadrilaterial whose normal points in the direction of the
4643/// opposite face (4,5,6,7).
4644///
4645/// @sa
4646/// vtkConvexPointSet vtkPyramid vtkTetra vtkVoxel vtkWedge
4647#[allow(non_camel_case_types)]
4648pub struct vtkHexahedron(*mut core::ffi::c_void);
4649impl vtkHexahedron {
4650    /// Creates a new [vtkHexahedron] wrapped inside `vtkNew`
4651    #[doc(alias = "vtkHexahedron")]
4652    pub fn new() -> Self {
4653        unsafe extern "C" {
4654            fn vtkHexahedron_new() -> *mut core::ffi::c_void;
4655        }
4656        Self(unsafe { &mut *vtkHexahedron_new() })
4657    }
4658    #[cfg(test)]
4659    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4660        unsafe extern "C" {
4661            fn vtkHexahedron_get_ptr(
4662                sself: *mut core::ffi::c_void,
4663            ) -> *mut core::ffi::c_void;
4664        }
4665        unsafe { vtkHexahedron_get_ptr(self.0) }
4666    }
4667}
4668impl std::default::Default for vtkHexahedron {
4669    fn default() -> Self {
4670        Self::new()
4671    }
4672}
4673impl Drop for vtkHexahedron {
4674    fn drop(&mut self) {
4675        unsafe extern "C" {
4676            fn vtkHexahedron_destructor(sself: *mut core::ffi::c_void);
4677        }
4678        unsafe { vtkHexahedron_destructor(self.0) }
4679        self.0 = core::ptr::null_mut();
4680    }
4681}
4682#[test]
4683fn test_vtkHexahedron_create_drop() {
4684    let obj = vtkHexahedron::new();
4685    let ptr = obj.0;
4686    assert!(!ptr.is_null());
4687    assert!(unsafe { !obj._get_ptr().is_null() });
4688    drop(obj);
4689    let new_obj = vtkHexahedron(ptr);
4690    assert!(unsafe { new_obj._get_ptr().is_null() });
4691}
4692/// Backwards compatibility class
4693///
4694///
4695///
4696/// An empty class for backwards compatibility
4697///
4698/// @sa
4699/// vtkUniformGridAM vtkOverlappingAMR vtkNonOverlappingAMR
4700#[allow(non_camel_case_types)]
4701pub struct vtkHierarchicalBoxDataSet(*mut core::ffi::c_void);
4702impl vtkHierarchicalBoxDataSet {
4703    /// Creates a new [vtkHierarchicalBoxDataSet] wrapped inside `vtkNew`
4704    #[doc(alias = "vtkHierarchicalBoxDataSet")]
4705    pub fn new() -> Self {
4706        unsafe extern "C" {
4707            fn vtkHierarchicalBoxDataSet_new() -> *mut core::ffi::c_void;
4708        }
4709        Self(unsafe { &mut *vtkHierarchicalBoxDataSet_new() })
4710    }
4711    #[cfg(test)]
4712    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4713        unsafe extern "C" {
4714            fn vtkHierarchicalBoxDataSet_get_ptr(
4715                sself: *mut core::ffi::c_void,
4716            ) -> *mut core::ffi::c_void;
4717        }
4718        unsafe { vtkHierarchicalBoxDataSet_get_ptr(self.0) }
4719    }
4720}
4721impl std::default::Default for vtkHierarchicalBoxDataSet {
4722    fn default() -> Self {
4723        Self::new()
4724    }
4725}
4726impl Drop for vtkHierarchicalBoxDataSet {
4727    fn drop(&mut self) {
4728        unsafe extern "C" {
4729            fn vtkHierarchicalBoxDataSet_destructor(sself: *mut core::ffi::c_void);
4730        }
4731        unsafe { vtkHierarchicalBoxDataSet_destructor(self.0) }
4732        self.0 = core::ptr::null_mut();
4733    }
4734}
4735#[test]
4736fn test_vtkHierarchicalBoxDataSet_create_drop() {
4737    let obj = vtkHierarchicalBoxDataSet::new();
4738    let ptr = obj.0;
4739    assert!(!ptr.is_null());
4740    assert!(unsafe { !obj._get_ptr().is_null() });
4741    drop(obj);
4742    let new_obj = vtkHierarchicalBoxDataSet(ptr);
4743    assert!(unsafe { new_obj._get_ptr().is_null() });
4744}
4745/// A dataset containing a grid of vtkHyperTree instances
4746///
4747/// arranged as a rectilinear grid.
4748///
4749///
4750/// An hypertree grid is a dataset containing a rectilinear grid of root nodes,
4751/// each of which can be refined as a vtkHyperTree grid. This organization of the
4752/// root nodes allows for the definition of tree-based AMR grids that do not have
4753/// uniform geometry.
4754/// Some filters can be applied on this dataset: contour, outline, geometry.
4755///
4756/// The order and number of points must match that specified by the dimensions
4757/// of the grid. The point order increases in i fastest (from 0<=i<dims[0]),
4758/// then j (0<=j<dims[1]), then k (0<=k<dims[2]) where dims[] are the
4759/// dimensions of the grid in the i-j-k topological directions. The number of
4760/// points is dims[0]*dims[1]*dims[2]. The same is true for the cells of the
4761/// grid. The order and number of cells must match that specified by the
4762/// dimensions of the grid. The cell order increases in i fastest (from
4763/// 0<=i<(dims[0]-1)), then j (0<=j<(dims[1]-1)), then k (0<=k<(dims[2]-1))
4764/// The number of cells is (dims[0]-1)*(dims[1]-1)*(dims[2]-1).
4765///
4766/// Dimensions : number of points by direction of rectilinear grid
4767/// CellDims : number of cells by directions of rectilinear grid
4768/// (1 for each dimensions 1)
4769///
4770/// @warning
4771/// It is not a spatial search object. If you are looking for this kind of
4772/// octree see vtkCellLocator instead.
4773/// Extent support is not finished yet.
4774///
4775/// @sa
4776/// vtkHyperTree vtkRectilinearGrid
4777///
4778/// @par Thanks:
4779/// This class was written by Philippe Pebay, Joachim Pouderoux, and Charles Law, Kitware 2013
4780/// This class was modified by Guenole Harel and Jacques-Bernard Lekien 2014
4781/// This class was rewritten by Philippe Pebay, 2016
4782/// This class was modified by Jacques-Bernard Lekien 2018
4783/// This work was supported by Commissariat a l'Energie Atomique
4784/// CEA, DAM, DIF, F-91297 Arpajon, France.
4785#[allow(non_camel_case_types)]
4786pub struct vtkHyperTreeGrid(*mut core::ffi::c_void);
4787impl vtkHyperTreeGrid {
4788    /// Creates a new [vtkHyperTreeGrid] wrapped inside `vtkNew`
4789    #[doc(alias = "vtkHyperTreeGrid")]
4790    pub fn new() -> Self {
4791        unsafe extern "C" {
4792            fn vtkHyperTreeGrid_new() -> *mut core::ffi::c_void;
4793        }
4794        Self(unsafe { &mut *vtkHyperTreeGrid_new() })
4795    }
4796    #[cfg(test)]
4797    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4798        unsafe extern "C" {
4799            fn vtkHyperTreeGrid_get_ptr(
4800                sself: *mut core::ffi::c_void,
4801            ) -> *mut core::ffi::c_void;
4802        }
4803        unsafe { vtkHyperTreeGrid_get_ptr(self.0) }
4804    }
4805}
4806impl std::default::Default for vtkHyperTreeGrid {
4807    fn default() -> Self {
4808        Self::new()
4809    }
4810}
4811impl Drop for vtkHyperTreeGrid {
4812    fn drop(&mut self) {
4813        unsafe extern "C" {
4814            fn vtkHyperTreeGrid_destructor(sself: *mut core::ffi::c_void);
4815        }
4816        unsafe { vtkHyperTreeGrid_destructor(self.0) }
4817        self.0 = core::ptr::null_mut();
4818    }
4819}
4820#[test]
4821fn test_vtkHyperTreeGrid_create_drop() {
4822    let obj = vtkHyperTreeGrid::new();
4823    let ptr = obj.0;
4824    assert!(!ptr.is_null());
4825    assert!(unsafe { !obj._get_ptr().is_null() });
4826    drop(obj);
4827    let new_obj = vtkHyperTreeGrid(ptr);
4828    assert!(unsafe { new_obj._get_ptr().is_null() });
4829}
4830/// class that implements accelerated searches through HyperTree Grids (HTGs) using geometric
4831///
4832/// information
4833///
4834/// The goal of this class is to implement a geometric locator search through the HTG structure. Its
4835/// main feature should be to expose a generic interface to finding the HTG cells that contain a
4836/// given geometric object. The search through the HTG is implemented using a
4837/// vtkHyperTreeGridNonOrientedGeometricCursor. The arborescent structure of the HTG should be
4838/// sufficient to accelerate the search and achieve good performance in general.
4839///
4840/// All methods in this class should be thread safe since it is meant to be used in a multi-threaded
4841/// environment out of the box (except SetHTG which should be called outside any multi-threaded
4842/// setting).
4843///
4844/// @sa
4845/// vtkHyperTreeGridLocator, vtkHyperTreeGrid, vtkHyperTree, vtkHyperTreeGridOrientedCursor,
4846/// vtkHyperTreeGridNonOrientedCursor
4847#[allow(non_camel_case_types)]
4848pub struct vtkHyperTreeGridGeometricLocator(*mut core::ffi::c_void);
4849impl vtkHyperTreeGridGeometricLocator {
4850    /// Creates a new [vtkHyperTreeGridGeometricLocator] wrapped inside `vtkNew`
4851    #[doc(alias = "vtkHyperTreeGridGeometricLocator")]
4852    pub fn new() -> Self {
4853        unsafe extern "C" {
4854            fn vtkHyperTreeGridGeometricLocator_new() -> *mut core::ffi::c_void;
4855        }
4856        Self(unsafe { &mut *vtkHyperTreeGridGeometricLocator_new() })
4857    }
4858    #[cfg(test)]
4859    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4860        unsafe extern "C" {
4861            fn vtkHyperTreeGridGeometricLocator_get_ptr(
4862                sself: *mut core::ffi::c_void,
4863            ) -> *mut core::ffi::c_void;
4864        }
4865        unsafe { vtkHyperTreeGridGeometricLocator_get_ptr(self.0) }
4866    }
4867}
4868impl std::default::Default for vtkHyperTreeGridGeometricLocator {
4869    fn default() -> Self {
4870        Self::new()
4871    }
4872}
4873impl Drop for vtkHyperTreeGridGeometricLocator {
4874    fn drop(&mut self) {
4875        unsafe extern "C" {
4876            fn vtkHyperTreeGridGeometricLocator_destructor(
4877                sself: *mut core::ffi::c_void,
4878            );
4879        }
4880        unsafe { vtkHyperTreeGridGeometricLocator_destructor(self.0) }
4881        self.0 = core::ptr::null_mut();
4882    }
4883}
4884#[test]
4885fn test_vtkHyperTreeGridGeometricLocator_create_drop() {
4886    let obj = vtkHyperTreeGridGeometricLocator::new();
4887    let ptr = obj.0;
4888    assert!(!ptr.is_null());
4889    assert!(unsafe { !obj._get_ptr().is_null() });
4890    drop(obj);
4891    let new_obj = vtkHyperTreeGridGeometricLocator(ptr);
4892    assert!(unsafe { new_obj._get_ptr().is_null() });
4893}
4894/// Objects for traversal a HyperTreeGrid.
4895///
4896///
4897/// Objects that can perform depth traversal of a hyper tree grid,
4898/// take into account more parameters (related to the grid structure) than
4899/// the compact hyper tree cursor implemented in vtkHyperTree can.
4900/// This is an abstract class.
4901/// Cursors are created by the HyperTreeGrid implementation.
4902///
4903/// Non-oriented cursors have the ability to come back to their parents
4904/// and to go to the root.
4905///
4906/// @sa
4907/// vtkHyperTree vtkHyperTreeGrid
4908///
4909/// @par Thanks:
4910/// This class was written by Guenole Harel and Jacques-Bernard Lekien, 2014.
4911/// This class was re-written by Philippe Pebay, 2016.
4912/// This class was re-written for more optimisation by Jacques-Bernard Lekien,
4913/// Guenole Harel and Jerome Dubois, 2018.
4914/// This work was supported by Commissariat a l'Energie Atomique
4915/// CEA, DAM, DIF, F-91297 Arpajon, France.
4916#[allow(non_camel_case_types)]
4917pub struct vtkHyperTreeGridNonOrientedCursor(*mut core::ffi::c_void);
4918impl vtkHyperTreeGridNonOrientedCursor {
4919    /// Creates a new [vtkHyperTreeGridNonOrientedCursor] wrapped inside `vtkNew`
4920    #[doc(alias = "vtkHyperTreeGridNonOrientedCursor")]
4921    pub fn new() -> Self {
4922        unsafe extern "C" {
4923            fn vtkHyperTreeGridNonOrientedCursor_new() -> *mut core::ffi::c_void;
4924        }
4925        Self(unsafe { &mut *vtkHyperTreeGridNonOrientedCursor_new() })
4926    }
4927    #[cfg(test)]
4928    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4929        unsafe extern "C" {
4930            fn vtkHyperTreeGridNonOrientedCursor_get_ptr(
4931                sself: *mut core::ffi::c_void,
4932            ) -> *mut core::ffi::c_void;
4933        }
4934        unsafe { vtkHyperTreeGridNonOrientedCursor_get_ptr(self.0) }
4935    }
4936}
4937impl std::default::Default for vtkHyperTreeGridNonOrientedCursor {
4938    fn default() -> Self {
4939        Self::new()
4940    }
4941}
4942impl Drop for vtkHyperTreeGridNonOrientedCursor {
4943    fn drop(&mut self) {
4944        unsafe extern "C" {
4945            fn vtkHyperTreeGridNonOrientedCursor_destructor(
4946                sself: *mut core::ffi::c_void,
4947            );
4948        }
4949        unsafe { vtkHyperTreeGridNonOrientedCursor_destructor(self.0) }
4950        self.0 = core::ptr::null_mut();
4951    }
4952}
4953#[test]
4954fn test_vtkHyperTreeGridNonOrientedCursor_create_drop() {
4955    let obj = vtkHyperTreeGridNonOrientedCursor::new();
4956    let ptr = obj.0;
4957    assert!(!ptr.is_null());
4958    assert!(unsafe { !obj._get_ptr().is_null() });
4959    drop(obj);
4960    let new_obj = vtkHyperTreeGridNonOrientedCursor(ptr);
4961    assert!(unsafe { new_obj._get_ptr().is_null() });
4962}
4963/// Objects for traversal a HyperTreeGrid.
4964///
4965///
4966/// NonOriented ne peut pas remonter plus haut qu'a sa creation.
4967/// Objects that can perform depth traversal of a hyper tree grid,
4968/// take into account more parameters (related to the grid structure) than
4969/// the compact hyper tree cursor implemented in vtkHyperTree can.
4970/// This is an abstract class.
4971/// Cursors are created by the HyperTreeGrid implementation.
4972///
4973/// Geometry cursors allow to retrieve origin, size, bounds
4974/// and central points
4975///
4976/// @sa
4977/// vtkHyperTree vtkHyperTreeGrid
4978///
4979/// @par Thanks:
4980/// This class was written by Guenole Harel and Jacques-Bernard Lekien, 2014.
4981/// This class was re-written by Philippe Pebay, 2016.
4982/// This class was re-written for more optimisation by Jacques-Bernard Lekien,
4983/// Guenole Harel and Jerome Dubois, 2018.
4984/// This work was supported by Commissariat a l'Energie Atomique
4985/// CEA, DAM, DIF, F-91297 Arpajon, France.
4986#[allow(non_camel_case_types)]
4987pub struct vtkHyperTreeGridNonOrientedGeometryCursor(*mut core::ffi::c_void);
4988impl vtkHyperTreeGridNonOrientedGeometryCursor {
4989    /// Creates a new [vtkHyperTreeGridNonOrientedGeometryCursor] wrapped inside `vtkNew`
4990    #[doc(alias = "vtkHyperTreeGridNonOrientedGeometryCursor")]
4991    pub fn new() -> Self {
4992        unsafe extern "C" {
4993            fn vtkHyperTreeGridNonOrientedGeometryCursor_new() -> *mut core::ffi::c_void;
4994        }
4995        Self(unsafe { &mut *vtkHyperTreeGridNonOrientedGeometryCursor_new() })
4996    }
4997    #[cfg(test)]
4998    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
4999        unsafe extern "C" {
5000            fn vtkHyperTreeGridNonOrientedGeometryCursor_get_ptr(
5001                sself: *mut core::ffi::c_void,
5002            ) -> *mut core::ffi::c_void;
5003        }
5004        unsafe { vtkHyperTreeGridNonOrientedGeometryCursor_get_ptr(self.0) }
5005    }
5006}
5007impl std::default::Default for vtkHyperTreeGridNonOrientedGeometryCursor {
5008    fn default() -> Self {
5009        Self::new()
5010    }
5011}
5012impl Drop for vtkHyperTreeGridNonOrientedGeometryCursor {
5013    fn drop(&mut self) {
5014        unsafe extern "C" {
5015            fn vtkHyperTreeGridNonOrientedGeometryCursor_destructor(
5016                sself: *mut core::ffi::c_void,
5017            );
5018        }
5019        unsafe { vtkHyperTreeGridNonOrientedGeometryCursor_destructor(self.0) }
5020        self.0 = core::ptr::null_mut();
5021    }
5022}
5023#[test]
5024fn test_vtkHyperTreeGridNonOrientedGeometryCursor_create_drop() {
5025    let obj = vtkHyperTreeGridNonOrientedGeometryCursor::new();
5026    let ptr = obj.0;
5027    assert!(!ptr.is_null());
5028    assert!(unsafe { !obj._get_ptr().is_null() });
5029    drop(obj);
5030    let new_obj = vtkHyperTreeGridNonOrientedGeometryCursor(ptr);
5031    assert!(unsafe { new_obj._get_ptr().is_null() });
5032}
5033/// Objects for traversal a HyperTreeGrid.
5034///
5035///
5036/// Objects that can perform depth traversal of a hyper tree grid,
5037/// take into account more parameters (related to the grid structure) than
5038/// the compact hyper tree cursor implemented in vtkHyperTree can.
5039/// This is an abstract class.
5040/// Cursors are created by the HyperTreeGrid implementation.
5041///
5042/// @sa
5043/// vtkHyperTree vtkHyperTreeGrid
5044///
5045/// This supercursor allows to visit all neighbors including diagonal ones.
5046///
5047/// @par Thanks:
5048/// This class was written by Guenole Harel and Jacques-Bernard Lekien, 2014.
5049/// This class was re-written by Philippe Pebay, 2016.
5050/// This class was re-written and optimized by Jacques-Bernard Lekien,
5051/// Guenole Harel and Jerome Dubois, 2018.
5052/// This work was supported by Commissariat a l'Energie Atomique
5053/// CEA, DAM, DIF, F-91297 Arpajon, France.
5054#[allow(non_camel_case_types)]
5055pub struct vtkHyperTreeGridNonOrientedMooreSuperCursor(*mut core::ffi::c_void);
5056impl vtkHyperTreeGridNonOrientedMooreSuperCursor {
5057    /// Creates a new [vtkHyperTreeGridNonOrientedMooreSuperCursor] wrapped inside `vtkNew`
5058    #[doc(alias = "vtkHyperTreeGridNonOrientedMooreSuperCursor")]
5059    pub fn new() -> Self {
5060        unsafe extern "C" {
5061            fn vtkHyperTreeGridNonOrientedMooreSuperCursor_new() -> *mut core::ffi::c_void;
5062        }
5063        Self(unsafe { &mut *vtkHyperTreeGridNonOrientedMooreSuperCursor_new() })
5064    }
5065    #[cfg(test)]
5066    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5067        unsafe extern "C" {
5068            fn vtkHyperTreeGridNonOrientedMooreSuperCursor_get_ptr(
5069                sself: *mut core::ffi::c_void,
5070            ) -> *mut core::ffi::c_void;
5071        }
5072        unsafe { vtkHyperTreeGridNonOrientedMooreSuperCursor_get_ptr(self.0) }
5073    }
5074}
5075impl std::default::Default for vtkHyperTreeGridNonOrientedMooreSuperCursor {
5076    fn default() -> Self {
5077        Self::new()
5078    }
5079}
5080impl Drop for vtkHyperTreeGridNonOrientedMooreSuperCursor {
5081    fn drop(&mut self) {
5082        unsafe extern "C" {
5083            fn vtkHyperTreeGridNonOrientedMooreSuperCursor_destructor(
5084                sself: *mut core::ffi::c_void,
5085            );
5086        }
5087        unsafe { vtkHyperTreeGridNonOrientedMooreSuperCursor_destructor(self.0) }
5088        self.0 = core::ptr::null_mut();
5089    }
5090}
5091#[test]
5092fn test_vtkHyperTreeGridNonOrientedMooreSuperCursor_create_drop() {
5093    let obj = vtkHyperTreeGridNonOrientedMooreSuperCursor::new();
5094    let ptr = obj.0;
5095    assert!(!ptr.is_null());
5096    assert!(unsafe { !obj._get_ptr().is_null() });
5097    drop(obj);
5098    let new_obj = vtkHyperTreeGridNonOrientedMooreSuperCursor(ptr);
5099    assert!(unsafe { new_obj._get_ptr().is_null() });
5100}
5101/// Objects for traversal a HyperTreeGrid.
5102///
5103///
5104/// Objects that can perform depth traversal of a hyper tree grid,
5105/// take into account more parameters (related to the grid structure) than
5106/// the compact hyper tree cursor implemented in vtkHyperTree can.
5107/// This is an abstract class.
5108/// Cursors are created by the HyperTreeGrid implementation.
5109///
5110/// @sa
5111/// vtkHyperTree vtkHyperTreeGrid
5112///
5113/// @par Thanks:
5114/// This class was written by Guenole Harel and Jacques-Bernard Lekien, 2014.
5115/// This class was re-written by Philippe Pebay, 2016.
5116/// This class was re-written and optimized by Jacques-Bernard Lekien,
5117/// Guenole Harel and Jerome Dubois, 2018.
5118/// This work was supported by Commissariat a l'Energie Atomique
5119/// CEA, DAM, DIF, F-91297 Arpajon, France.
5120#[allow(non_camel_case_types)]
5121pub struct vtkHyperTreeGridNonOrientedMooreSuperCursorLight(*mut core::ffi::c_void);
5122impl vtkHyperTreeGridNonOrientedMooreSuperCursorLight {
5123    /// Creates a new [vtkHyperTreeGridNonOrientedMooreSuperCursorLight] wrapped inside `vtkNew`
5124    #[doc(alias = "vtkHyperTreeGridNonOrientedMooreSuperCursorLight")]
5125    pub fn new() -> Self {
5126        unsafe extern "C" {
5127            fn vtkHyperTreeGridNonOrientedMooreSuperCursorLight_new() -> *mut core::ffi::c_void;
5128        }
5129        Self(unsafe { &mut *vtkHyperTreeGridNonOrientedMooreSuperCursorLight_new() })
5130    }
5131    #[cfg(test)]
5132    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5133        unsafe extern "C" {
5134            fn vtkHyperTreeGridNonOrientedMooreSuperCursorLight_get_ptr(
5135                sself: *mut core::ffi::c_void,
5136            ) -> *mut core::ffi::c_void;
5137        }
5138        unsafe { vtkHyperTreeGridNonOrientedMooreSuperCursorLight_get_ptr(self.0) }
5139    }
5140}
5141impl std::default::Default for vtkHyperTreeGridNonOrientedMooreSuperCursorLight {
5142    fn default() -> Self {
5143        Self::new()
5144    }
5145}
5146impl Drop for vtkHyperTreeGridNonOrientedMooreSuperCursorLight {
5147    fn drop(&mut self) {
5148        unsafe extern "C" {
5149            fn vtkHyperTreeGridNonOrientedMooreSuperCursorLight_destructor(
5150                sself: *mut core::ffi::c_void,
5151            );
5152        }
5153        unsafe { vtkHyperTreeGridNonOrientedMooreSuperCursorLight_destructor(self.0) }
5154        self.0 = core::ptr::null_mut();
5155    }
5156}
5157#[test]
5158fn test_vtkHyperTreeGridNonOrientedMooreSuperCursorLight_create_drop() {
5159    let obj = vtkHyperTreeGridNonOrientedMooreSuperCursorLight::new();
5160    let ptr = obj.0;
5161    assert!(!ptr.is_null());
5162    assert!(unsafe { !obj._get_ptr().is_null() });
5163    drop(obj);
5164    let new_obj = vtkHyperTreeGridNonOrientedMooreSuperCursorLight(ptr);
5165    assert!(unsafe { new_obj._get_ptr().is_null() });
5166}
5167/// Objects for traversal a HyperTreeGrid.
5168///
5169///
5170/// NonOriented ne peut pas remonter plus haut qu'a sa creation.
5171/// Objects that can perform depth traversal of a hyper tree grid,
5172/// take into account more parameters (related to the grid structure) than
5173/// the compact hyper tree cursor implemented in vtkHyperTree can.
5174/// This is an abstract class.
5175/// Cursors are created by the HyperTreeGrid implementation.
5176///
5177/// Geometry cursors allow to retrieve origin, size, bounds
5178/// and central points
5179///
5180/// @sa
5181/// vtkHyperTree vtkHyperTreeGrid
5182///
5183/// @par Thanks:
5184/// This class was written by Guenole Harel and Jacques-Bernard Lekien, 2014.
5185/// This class was re-written by Philippe Pebay, 2016.
5186/// This class was re-written for more optimisation by Jacques-Bernard Lekien,
5187/// Guenole Harel and Jerome Dubois, 2018.
5188/// This work was supported by Commissariat a l'Energie Atomique
5189/// CEA, DAM, DIF, F-91297 Arpajon, France.
5190#[allow(non_camel_case_types)]
5191pub struct vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor(*mut core::ffi::c_void);
5192impl vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor {
5193    /// Creates a new [vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor] wrapped inside `vtkNew`
5194    #[doc(alias = "vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor")]
5195    pub fn new() -> Self {
5196        unsafe extern "C" {
5197            fn vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_new() -> *mut core::ffi::c_void;
5198        }
5199        Self(unsafe { &mut *vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_new() })
5200    }
5201    #[cfg(test)]
5202    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5203        unsafe extern "C" {
5204            fn vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_get_ptr(
5205                sself: *mut core::ffi::c_void,
5206            ) -> *mut core::ffi::c_void;
5207        }
5208        unsafe { vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_get_ptr(self.0) }
5209    }
5210}
5211impl std::default::Default for vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor {
5212    fn default() -> Self {
5213        Self::new()
5214    }
5215}
5216impl Drop for vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor {
5217    fn drop(&mut self) {
5218        unsafe extern "C" {
5219            fn vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_destructor(
5220                sself: *mut core::ffi::c_void,
5221            );
5222        }
5223        unsafe { vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_destructor(self.0) }
5224        self.0 = core::ptr::null_mut();
5225    }
5226}
5227#[test]
5228fn test_vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_create_drop() {
5229    let obj = vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor::new();
5230    let ptr = obj.0;
5231    assert!(!ptr.is_null());
5232    assert!(unsafe { !obj._get_ptr().is_null() });
5233    drop(obj);
5234    let new_obj = vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor(ptr);
5235    assert!(unsafe { new_obj._get_ptr().is_null() });
5236}
5237/// Specific Moore super cursor that can subdivied neighborhood
5238///
5239///
5240/// This supercursor behave like the Moore supercursor but relies on the
5241/// vtkHyperTreeGridNonOrientedUnlimitedSuperCursor so the neighborhood
5242/// can be refined to reach the level of the current cell in any case.
5243///
5244/// @sa
5245/// vtkHyperTree vtkHyperTreeGrid vtkHyperTreeGridNonOrientedMooreSuperCursor
5246#[allow(non_camel_case_types)]
5247pub struct vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor(*mut core::ffi::c_void);
5248impl vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor {
5249    /// Creates a new [vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor] wrapped inside `vtkNew`
5250    #[doc(alias = "vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor")]
5251    pub fn new() -> Self {
5252        unsafe extern "C" {
5253            fn vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor_new() -> *mut core::ffi::c_void;
5254        }
5255        Self(unsafe { &mut *vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor_new() })
5256    }
5257    #[cfg(test)]
5258    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5259        unsafe extern "C" {
5260            fn vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor_get_ptr(
5261                sself: *mut core::ffi::c_void,
5262            ) -> *mut core::ffi::c_void;
5263        }
5264        unsafe { vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor_get_ptr(self.0) }
5265    }
5266}
5267impl std::default::Default for vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor {
5268    fn default() -> Self {
5269        Self::new()
5270    }
5271}
5272impl Drop for vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor {
5273    fn drop(&mut self) {
5274        unsafe extern "C" {
5275            fn vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor_destructor(
5276                sself: *mut core::ffi::c_void,
5277            );
5278        }
5279        unsafe {
5280            vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor_destructor(self.0)
5281        }
5282        self.0 = core::ptr::null_mut();
5283    }
5284}
5285#[test]
5286fn test_vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor_create_drop() {
5287    let obj = vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor::new();
5288    let ptr = obj.0;
5289    assert!(!ptr.is_null());
5290    assert!(unsafe { !obj._get_ptr().is_null() });
5291    drop(obj);
5292    let new_obj = vtkHyperTreeGridNonOrientedUnlimitedMooreSuperCursor(ptr);
5293    assert!(unsafe { new_obj._get_ptr().is_null() });
5294}
5295/// Objects for traversal a HyperTreeGrid.
5296///
5297///
5298/// Objects that can perform depth traversal of a hyper tree grid,
5299/// take into account more parameters (related to the grid structure) than
5300/// the compact hyper tree cursor implemented in vtkHyperTree can.
5301/// This is an abstract class.
5302/// Cursors are created by the HyperTreeGrid implementation.
5303///
5304/// @sa
5305/// vtkHyperTree vtkHyperTreeGrid
5306///
5307/// This supercursor allows to traverse neighbors attached to coface of
5308/// the current position.
5309///
5310/// @par Thanks:
5311/// This class was written by Guenole Harel and Jacques-Bernard Lekien, 2014.
5312/// This class was re-written by Philippe Pebay, 2016.
5313/// This class was re-written and optimized by Jacques-Bernard Lekien,
5314/// Guenole Harel and Jerome Dubois, 2018.
5315/// This work was supported by Commissariat a l'Energie Atomique
5316/// CEA, DAM, DIF, F-91297 Arpajon, France.
5317#[allow(non_camel_case_types)]
5318pub struct vtkHyperTreeGridNonOrientedVonNeumannSuperCursor(*mut core::ffi::c_void);
5319impl vtkHyperTreeGridNonOrientedVonNeumannSuperCursor {
5320    /// Creates a new [vtkHyperTreeGridNonOrientedVonNeumannSuperCursor] wrapped inside `vtkNew`
5321    #[doc(alias = "vtkHyperTreeGridNonOrientedVonNeumannSuperCursor")]
5322    pub fn new() -> Self {
5323        unsafe extern "C" {
5324            fn vtkHyperTreeGridNonOrientedVonNeumannSuperCursor_new() -> *mut core::ffi::c_void;
5325        }
5326        Self(unsafe { &mut *vtkHyperTreeGridNonOrientedVonNeumannSuperCursor_new() })
5327    }
5328    #[cfg(test)]
5329    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5330        unsafe extern "C" {
5331            fn vtkHyperTreeGridNonOrientedVonNeumannSuperCursor_get_ptr(
5332                sself: *mut core::ffi::c_void,
5333            ) -> *mut core::ffi::c_void;
5334        }
5335        unsafe { vtkHyperTreeGridNonOrientedVonNeumannSuperCursor_get_ptr(self.0) }
5336    }
5337}
5338impl std::default::Default for vtkHyperTreeGridNonOrientedVonNeumannSuperCursor {
5339    fn default() -> Self {
5340        Self::new()
5341    }
5342}
5343impl Drop for vtkHyperTreeGridNonOrientedVonNeumannSuperCursor {
5344    fn drop(&mut self) {
5345        unsafe extern "C" {
5346            fn vtkHyperTreeGridNonOrientedVonNeumannSuperCursor_destructor(
5347                sself: *mut core::ffi::c_void,
5348            );
5349        }
5350        unsafe { vtkHyperTreeGridNonOrientedVonNeumannSuperCursor_destructor(self.0) }
5351        self.0 = core::ptr::null_mut();
5352    }
5353}
5354#[test]
5355fn test_vtkHyperTreeGridNonOrientedVonNeumannSuperCursor_create_drop() {
5356    let obj = vtkHyperTreeGridNonOrientedVonNeumannSuperCursor::new();
5357    let ptr = obj.0;
5358    assert!(!ptr.is_null());
5359    assert!(unsafe { !obj._get_ptr().is_null() });
5360    drop(obj);
5361    let new_obj = vtkHyperTreeGridNonOrientedVonNeumannSuperCursor(ptr);
5362    assert!(unsafe { new_obj._get_ptr().is_null() });
5363}
5364/// Objects for traversal a HyperTreeGrid.
5365///
5366///
5367/// Objects that can perform depth traversal of a hyper tree grid,
5368/// take into account more parameters (related to the grid structure) than
5369/// the compact hyper tree cursor implemented in vtkHyperTree can.
5370/// This is an abstract class.
5371/// Cursors are created by the HyperTreeGrid implementation.
5372///
5373/// @sa
5374/// vtkHyperTree vtkHyperTreeGrid
5375///
5376/// @par Thanks:
5377/// This class was written by Guenole Harel and Jacques-Bernard Lekien, 2014.
5378/// This class was re-written by Philippe Pebay, 2016.
5379/// This class was re-written and optimized by Jacques-Bernard Lekien,
5380/// Guenole Harel and Jerome Dubois, 2018.
5381/// This work was supported by Commissariat a l'Energie Atomique
5382/// CEA, DAM, DIF, F-91297 Arpajon, France.
5383#[allow(non_camel_case_types)]
5384pub struct vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight(*mut core::ffi::c_void);
5385impl vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight {
5386    /// Creates a new [vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight] wrapped inside `vtkNew`
5387    #[doc(alias = "vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight")]
5388    pub fn new() -> Self {
5389        unsafe extern "C" {
5390            fn vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight_new() -> *mut core::ffi::c_void;
5391        }
5392        Self(unsafe {
5393            &mut *vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight_new()
5394        })
5395    }
5396    #[cfg(test)]
5397    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5398        unsafe extern "C" {
5399            fn vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight_get_ptr(
5400                sself: *mut core::ffi::c_void,
5401            ) -> *mut core::ffi::c_void;
5402        }
5403        unsafe { vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight_get_ptr(self.0) }
5404    }
5405}
5406impl std::default::Default for vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight {
5407    fn default() -> Self {
5408        Self::new()
5409    }
5410}
5411impl Drop for vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight {
5412    fn drop(&mut self) {
5413        unsafe extern "C" {
5414            fn vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight_destructor(
5415                sself: *mut core::ffi::c_void,
5416            );
5417        }
5418        unsafe {
5419            vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight_destructor(self.0)
5420        }
5421        self.0 = core::ptr::null_mut();
5422    }
5423}
5424#[test]
5425fn test_vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight_create_drop() {
5426    let obj = vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight::new();
5427    let ptr = obj.0;
5428    assert!(!ptr.is_null());
5429    assert!(unsafe { !obj._get_ptr().is_null() });
5430    drop(obj);
5431    let new_obj = vtkHyperTreeGridNonOrientedVonNeumannSuperCursorLight(ptr);
5432    assert!(unsafe { new_obj._get_ptr().is_null() });
5433}
5434/// Objects for traversal a HyperTreeGrid.
5435///
5436///
5437/// Objects that can perform depth traversal of a hyper tree grid,
5438/// take into account more parameters (related to the grid structure) than
5439/// the compact hyper tree cursor implemented in vtkHyperTree can.
5440/// This is an abstract class.
5441/// Cursors are created by the HyperTreeGrid implementation.
5442///
5443/// oriented cursors are used for simple recursive DFS. A cursor has no
5444/// knowledge of its parent, only its children.
5445///
5446/// @sa
5447/// vtkHyperTree vtkHyperTreeGrid
5448///
5449/// @par Thanks:
5450/// This class was written by Guenole Harel and Jacques-Bernard Lekien, 2014.
5451/// This class was re-written by Philippe Pebay, 2016.
5452/// This class was re-written for more optimisation by Jacques-Bernard Lekien,
5453/// Guenole Harel and Jerome Dubois, 2018.
5454/// This work was supported by Commissariat a l'Energie Atomique
5455/// CEA, DAM, DIF, F-91297 Arpajon, France.
5456#[allow(non_camel_case_types)]
5457pub struct vtkHyperTreeGridOrientedCursor(*mut core::ffi::c_void);
5458impl vtkHyperTreeGridOrientedCursor {
5459    /// Creates a new [vtkHyperTreeGridOrientedCursor] wrapped inside `vtkNew`
5460    #[doc(alias = "vtkHyperTreeGridOrientedCursor")]
5461    pub fn new() -> Self {
5462        unsafe extern "C" {
5463            fn vtkHyperTreeGridOrientedCursor_new() -> *mut core::ffi::c_void;
5464        }
5465        Self(unsafe { &mut *vtkHyperTreeGridOrientedCursor_new() })
5466    }
5467    #[cfg(test)]
5468    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5469        unsafe extern "C" {
5470            fn vtkHyperTreeGridOrientedCursor_get_ptr(
5471                sself: *mut core::ffi::c_void,
5472            ) -> *mut core::ffi::c_void;
5473        }
5474        unsafe { vtkHyperTreeGridOrientedCursor_get_ptr(self.0) }
5475    }
5476}
5477impl std::default::Default for vtkHyperTreeGridOrientedCursor {
5478    fn default() -> Self {
5479        Self::new()
5480    }
5481}
5482impl Drop for vtkHyperTreeGridOrientedCursor {
5483    fn drop(&mut self) {
5484        unsafe extern "C" {
5485            fn vtkHyperTreeGridOrientedCursor_destructor(sself: *mut core::ffi::c_void);
5486        }
5487        unsafe { vtkHyperTreeGridOrientedCursor_destructor(self.0) }
5488        self.0 = core::ptr::null_mut();
5489    }
5490}
5491#[test]
5492fn test_vtkHyperTreeGridOrientedCursor_create_drop() {
5493    let obj = vtkHyperTreeGridOrientedCursor::new();
5494    let ptr = obj.0;
5495    assert!(!ptr.is_null());
5496    assert!(unsafe { !obj._get_ptr().is_null() });
5497    drop(obj);
5498    let new_obj = vtkHyperTreeGridOrientedCursor(ptr);
5499    assert!(unsafe { new_obj._get_ptr().is_null() });
5500}
5501/// Objects for traversal a HyperTreeGrid.
5502///
5503///
5504/// NonOriented ne peut pas remonter plus haut qu'a sa creation.
5505/// Objects that can perform depth traversal of a hyper tree grid,
5506/// take into account more parameters (related to the grid structure) than
5507/// the compact hyper tree cursor implemented in vtkHyperTree can.
5508/// This is an abstract class.
5509/// Cursors are created by the HyperTreeGrid implementation.
5510///
5511/// @sa
5512/// vtkHyperTree vtkHyperTreeGrid
5513///
5514/// @par Thanks:
5515/// This class was written by Guenole Harel and Jacques-Bernard Lekien, 2014.
5516/// This class was re-written by Philippe Pebay, 2016.
5517/// This class was re-written for more optimisation by Jacques-Bernard Lekien,
5518/// Guenole Harel and Jerome Dubois, 2018.
5519/// This work was supported by Commissariat a l'Energie Atomique
5520/// CEA, DAM, DIF, F-91297 Arpajon, France.
5521#[allow(non_camel_case_types)]
5522pub struct vtkHyperTreeGridOrientedGeometryCursor(*mut core::ffi::c_void);
5523impl vtkHyperTreeGridOrientedGeometryCursor {
5524    /// Creates a new [vtkHyperTreeGridOrientedGeometryCursor] wrapped inside `vtkNew`
5525    #[doc(alias = "vtkHyperTreeGridOrientedGeometryCursor")]
5526    pub fn new() -> Self {
5527        unsafe extern "C" {
5528            fn vtkHyperTreeGridOrientedGeometryCursor_new() -> *mut core::ffi::c_void;
5529        }
5530        Self(unsafe { &mut *vtkHyperTreeGridOrientedGeometryCursor_new() })
5531    }
5532    #[cfg(test)]
5533    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5534        unsafe extern "C" {
5535            fn vtkHyperTreeGridOrientedGeometryCursor_get_ptr(
5536                sself: *mut core::ffi::c_void,
5537            ) -> *mut core::ffi::c_void;
5538        }
5539        unsafe { vtkHyperTreeGridOrientedGeometryCursor_get_ptr(self.0) }
5540    }
5541}
5542impl std::default::Default for vtkHyperTreeGridOrientedGeometryCursor {
5543    fn default() -> Self {
5544        Self::new()
5545    }
5546}
5547impl Drop for vtkHyperTreeGridOrientedGeometryCursor {
5548    fn drop(&mut self) {
5549        unsafe extern "C" {
5550            fn vtkHyperTreeGridOrientedGeometryCursor_destructor(
5551                sself: *mut core::ffi::c_void,
5552            );
5553        }
5554        unsafe { vtkHyperTreeGridOrientedGeometryCursor_destructor(self.0) }
5555        self.0 = core::ptr::null_mut();
5556    }
5557}
5558#[test]
5559fn test_vtkHyperTreeGridOrientedGeometryCursor_create_drop() {
5560    let obj = vtkHyperTreeGridOrientedGeometryCursor::new();
5561    let ptr = obj.0;
5562    assert!(!ptr.is_null());
5563    assert!(unsafe { !obj._get_ptr().is_null() });
5564    drop(obj);
5565    let new_obj = vtkHyperTreeGridOrientedGeometryCursor(ptr);
5566    assert!(unsafe { new_obj._get_ptr().is_null() });
5567}
5568/// topologically and geometrically regular array of data
5569///
5570///
5571/// vtkImageData is a data object that is a concrete implementation of
5572/// vtkDataSet. vtkImageData represents a geometric structure that is
5573/// a topological and geometrical regular array of points. Examples include
5574/// volumes (voxel data) and pixmaps. This representation supports images
5575/// up to three dimensions. The image may also be oriented (see the
5576/// DirectionMatrices and related transformation methods). Note however,
5577/// that not all filters support oriented images.
5578///
5579/// @sa
5580/// vtkImageTransform
5581#[allow(non_camel_case_types)]
5582pub struct vtkImageData(*mut core::ffi::c_void);
5583impl vtkImageData {
5584    /// Creates a new [vtkImageData] wrapped inside `vtkNew`
5585    #[doc(alias = "vtkImageData")]
5586    pub fn new() -> Self {
5587        unsafe extern "C" {
5588            fn vtkImageData_new() -> *mut core::ffi::c_void;
5589        }
5590        Self(unsafe { &mut *vtkImageData_new() })
5591    }
5592    #[cfg(test)]
5593    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5594        unsafe extern "C" {
5595            fn vtkImageData_get_ptr(
5596                sself: *mut core::ffi::c_void,
5597            ) -> *mut core::ffi::c_void;
5598        }
5599        unsafe { vtkImageData_get_ptr(self.0) }
5600    }
5601}
5602impl std::default::Default for vtkImageData {
5603    fn default() -> Self {
5604        Self::new()
5605    }
5606}
5607impl Drop for vtkImageData {
5608    fn drop(&mut self) {
5609        unsafe extern "C" {
5610            fn vtkImageData_destructor(sself: *mut core::ffi::c_void);
5611        }
5612        unsafe { vtkImageData_destructor(self.0) }
5613        self.0 = core::ptr::null_mut();
5614    }
5615}
5616#[test]
5617fn test_vtkImageData_create_drop() {
5618    let obj = vtkImageData::new();
5619    let ptr = obj.0;
5620    assert!(!ptr.is_null());
5621    assert!(unsafe { !obj._get_ptr().is_null() });
5622    drop(obj);
5623    let new_obj = vtkImageData(ptr);
5624    assert!(unsafe { new_obj._get_ptr().is_null() });
5625}
5626/// helper class to transform output of non-axis-aligned images
5627///
5628///
5629/// vtkImageTransform is a helper class to transform the output of
5630/// image filters (i.e., filter that input vtkImageData) by applying the
5631/// Index to Physical transformation from the input image, which can
5632/// include origin, spacing, direction. The transformation process is
5633/// threaded with vtkSMPTools for performance.
5634///
5635/// Typically in application the single method TransformPointSet() is
5636/// invoked to transform the output of an image algorithm (assuming
5637/// that the image's direction/orientation matrix is non-identity).
5638/// Note that vtkPointSets encompass vtkPolyData as well
5639/// as vtkUnstructuredGrids. In the future other output types may be
5640/// added. Note that specific methods for transforming points, normals,
5641/// and vectors is also provided by this class in case additional
5642/// output data arrays need to be transformed (since
5643/// TransformPointSet() only processes data arrays labeled as points,
5644/// normals, and vectors).
5645///
5646/// @warning
5647/// This class assumes that any vectors are gradients, and vector arrays
5648/// will therefore be transformed by first dividing by the spacing and
5649/// then applying the inverse transpose of the direction matrix.
5650///
5651/// @warning
5652/// This class has been threaded with vtkSMPTools. Using TBB or other
5653/// non-sequential type (set in the CMake variable
5654/// VTK_SMP_IMPLEMENTATION_TYPE) may improve performance significantly.
5655#[allow(non_camel_case_types)]
5656pub struct vtkImageTransform(*mut core::ffi::c_void);
5657impl vtkImageTransform {
5658    /// Creates a new [vtkImageTransform] wrapped inside `vtkNew`
5659    #[doc(alias = "vtkImageTransform")]
5660    pub fn new() -> Self {
5661        unsafe extern "C" {
5662            fn vtkImageTransform_new() -> *mut core::ffi::c_void;
5663        }
5664        Self(unsafe { &mut *vtkImageTransform_new() })
5665    }
5666    #[cfg(test)]
5667    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5668        unsafe extern "C" {
5669            fn vtkImageTransform_get_ptr(
5670                sself: *mut core::ffi::c_void,
5671            ) -> *mut core::ffi::c_void;
5672        }
5673        unsafe { vtkImageTransform_get_ptr(self.0) }
5674    }
5675}
5676impl std::default::Default for vtkImageTransform {
5677    fn default() -> Self {
5678        Self::new()
5679    }
5680}
5681impl Drop for vtkImageTransform {
5682    fn drop(&mut self) {
5683        unsafe extern "C" {
5684            fn vtkImageTransform_destructor(sself: *mut core::ffi::c_void);
5685        }
5686        unsafe { vtkImageTransform_destructor(self.0) }
5687        self.0 = core::ptr::null_mut();
5688    }
5689}
5690#[test]
5691fn test_vtkImageTransform_create_drop() {
5692    let obj = vtkImageTransform::new();
5693    let ptr = obj.0;
5694    assert!(!ptr.is_null());
5695    assert!(unsafe { !obj._get_ptr().is_null() });
5696    drop(obj);
5697    let new_obj = vtkImageTransform(ptr);
5698    assert!(unsafe { new_obj._get_ptr().is_null() });
5699}
5700/// implicit function consisting of boolean combinations of implicit functions
5701///
5702///
5703/// vtkImplicitBoolean is an implicit function consisting of boolean
5704/// combinations of implicit functions. The class has a list of functions
5705/// (FunctionList) that are combined according to a specified operator
5706/// (VTK_UNION or VTK_INTERSECTION or VTK_DIFFERENCE). You can use nested
5707/// combinations of vtkImplicitFunction's (and/or vtkImplicitBoolean) to create
5708/// elaborate implicit functions.  vtkImplicitBoolean is a concrete
5709/// implementation of vtkImplicitFunction.
5710///
5711/// The operators work as follows. The VTK_UNION operator takes the minimum
5712/// value of all implicit functions. The VTK_INTERSECTION operator takes the
5713/// maximum value of all implicit functions. The VTK_DIFFERENCE operator
5714/// subtracts the 2nd through last implicit functions from the first. The
5715/// VTK_UNION_OF_MAGNITUDES takes the minimum absolute value of the
5716/// implicit functions.
5717#[allow(non_camel_case_types)]
5718pub struct vtkImplicitBoolean(*mut core::ffi::c_void);
5719impl vtkImplicitBoolean {
5720    /// Creates a new [vtkImplicitBoolean] wrapped inside `vtkNew`
5721    #[doc(alias = "vtkImplicitBoolean")]
5722    pub fn new() -> Self {
5723        unsafe extern "C" {
5724            fn vtkImplicitBoolean_new() -> *mut core::ffi::c_void;
5725        }
5726        Self(unsafe { &mut *vtkImplicitBoolean_new() })
5727    }
5728    #[cfg(test)]
5729    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5730        unsafe extern "C" {
5731            fn vtkImplicitBoolean_get_ptr(
5732                sself: *mut core::ffi::c_void,
5733            ) -> *mut core::ffi::c_void;
5734        }
5735        unsafe { vtkImplicitBoolean_get_ptr(self.0) }
5736    }
5737}
5738impl std::default::Default for vtkImplicitBoolean {
5739    fn default() -> Self {
5740        Self::new()
5741    }
5742}
5743impl Drop for vtkImplicitBoolean {
5744    fn drop(&mut self) {
5745        unsafe extern "C" {
5746            fn vtkImplicitBoolean_destructor(sself: *mut core::ffi::c_void);
5747        }
5748        unsafe { vtkImplicitBoolean_destructor(self.0) }
5749        self.0 = core::ptr::null_mut();
5750    }
5751}
5752#[test]
5753fn test_vtkImplicitBoolean_create_drop() {
5754    let obj = vtkImplicitBoolean::new();
5755    let ptr = obj.0;
5756    assert!(!ptr.is_null());
5757    assert!(unsafe { !obj._get_ptr().is_null() });
5758    drop(obj);
5759    let new_obj = vtkImplicitBoolean(ptr);
5760    assert!(unsafe { new_obj._get_ptr().is_null() });
5761}
5762/// treat a dataset as if it were an implicit function
5763///
5764///
5765/// vtkImplicitDataSet treats any type of dataset as if it were an
5766/// implicit function. This means it computes a function value and
5767/// gradient. vtkImplicitDataSet is a concrete implementation of
5768/// vtkImplicitFunction.
5769///
5770/// vtkImplicitDataSet computes the function (at the point x) by performing
5771/// cell interpolation. That is, it finds the cell containing x, and then
5772/// uses the cell's interpolation functions to compute an interpolated
5773/// scalar value at x. (A similar approach is used to find the
5774/// gradient, if requested.) Points outside of the dataset are assigned
5775/// the value of the ivar OutValue, and the gradient value OutGradient.
5776///
5777/// @warning
5778/// Any type of dataset can be used as an implicit function as long as it
5779/// has scalar data associated with it.
5780///
5781/// @sa
5782/// vtkImplicitFunction vtkImplicitVolume vtkClipPolyData vtkCutter
5783/// vtkImplicitWindowFunction
5784#[allow(non_camel_case_types)]
5785pub struct vtkImplicitDataSet(*mut core::ffi::c_void);
5786impl vtkImplicitDataSet {
5787    /// Creates a new [vtkImplicitDataSet] wrapped inside `vtkNew`
5788    #[doc(alias = "vtkImplicitDataSet")]
5789    pub fn new() -> Self {
5790        unsafe extern "C" {
5791            fn vtkImplicitDataSet_new() -> *mut core::ffi::c_void;
5792        }
5793        Self(unsafe { &mut *vtkImplicitDataSet_new() })
5794    }
5795    #[cfg(test)]
5796    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5797        unsafe extern "C" {
5798            fn vtkImplicitDataSet_get_ptr(
5799                sself: *mut core::ffi::c_void,
5800            ) -> *mut core::ffi::c_void;
5801        }
5802        unsafe { vtkImplicitDataSet_get_ptr(self.0) }
5803    }
5804}
5805impl std::default::Default for vtkImplicitDataSet {
5806    fn default() -> Self {
5807        Self::new()
5808    }
5809}
5810impl Drop for vtkImplicitDataSet {
5811    fn drop(&mut self) {
5812        unsafe extern "C" {
5813            fn vtkImplicitDataSet_destructor(sself: *mut core::ffi::c_void);
5814        }
5815        unsafe { vtkImplicitDataSet_destructor(self.0) }
5816        self.0 = core::ptr::null_mut();
5817    }
5818}
5819#[test]
5820fn test_vtkImplicitDataSet_create_drop() {
5821    let obj = vtkImplicitDataSet::new();
5822    let ptr = obj.0;
5823    assert!(!ptr.is_null());
5824    assert!(unsafe { !obj._get_ptr().is_null() });
5825    drop(obj);
5826    let new_obj = vtkImplicitDataSet(ptr);
5827    assert!(unsafe { new_obj._get_ptr().is_null() });
5828}
5829/// maintain a list of implicit functions
5830///
5831///
5832/// vtkImplicitFunctionCollection is an object that creates and manipulates
5833/// lists of objects of type vtkImplicitFunction.
5834/// @sa
5835/// vtkCollection vtkPlaneCollection
5836#[allow(non_camel_case_types)]
5837pub struct vtkImplicitFunctionCollection(*mut core::ffi::c_void);
5838impl vtkImplicitFunctionCollection {
5839    /// Creates a new [vtkImplicitFunctionCollection] wrapped inside `vtkNew`
5840    #[doc(alias = "vtkImplicitFunctionCollection")]
5841    pub fn new() -> Self {
5842        unsafe extern "C" {
5843            fn vtkImplicitFunctionCollection_new() -> *mut core::ffi::c_void;
5844        }
5845        Self(unsafe { &mut *vtkImplicitFunctionCollection_new() })
5846    }
5847    #[cfg(test)]
5848    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5849        unsafe extern "C" {
5850            fn vtkImplicitFunctionCollection_get_ptr(
5851                sself: *mut core::ffi::c_void,
5852            ) -> *mut core::ffi::c_void;
5853        }
5854        unsafe { vtkImplicitFunctionCollection_get_ptr(self.0) }
5855    }
5856}
5857impl std::default::Default for vtkImplicitFunctionCollection {
5858    fn default() -> Self {
5859        Self::new()
5860    }
5861}
5862impl Drop for vtkImplicitFunctionCollection {
5863    fn drop(&mut self) {
5864        unsafe extern "C" {
5865            fn vtkImplicitFunctionCollection_destructor(sself: *mut core::ffi::c_void);
5866        }
5867        unsafe { vtkImplicitFunctionCollection_destructor(self.0) }
5868        self.0 = core::ptr::null_mut();
5869    }
5870}
5871#[test]
5872fn test_vtkImplicitFunctionCollection_create_drop() {
5873    let obj = vtkImplicitFunctionCollection::new();
5874    let ptr = obj.0;
5875    assert!(!ptr.is_null());
5876    assert!(unsafe { !obj._get_ptr().is_null() });
5877    drop(obj);
5878    let new_obj = vtkImplicitFunctionCollection(ptr);
5879    assert!(unsafe { new_obj._get_ptr().is_null() });
5880}
5881/// implicit function for an halo
5882///
5883///
5884/// vtkImplicitHalo evaluates to 1.0 for each position in the sphere of a
5885/// given center and radius Radius*(1-FadeOut). It evaluates to 0.0 for each
5886/// position out the sphere of a given Center and radius Radius. It fades out
5887/// linearly from 1.0 to 0.0 for points in a radius from Radius*(1-FadeOut) to
5888/// Radius.
5889/// vtkImplicitHalo is a concrete implementation of vtkImplicitFunction.
5890/// It is useful as an input to
5891/// vtkSampleFunction to generate an 2D image of an halo. It is used this way by
5892/// vtkShadowMapPass.
5893/// @warning
5894/// It does not implement the gradient.
5895#[allow(non_camel_case_types)]
5896pub struct vtkImplicitHalo(*mut core::ffi::c_void);
5897impl vtkImplicitHalo {
5898    /// Creates a new [vtkImplicitHalo] wrapped inside `vtkNew`
5899    #[doc(alias = "vtkImplicitHalo")]
5900    pub fn new() -> Self {
5901        unsafe extern "C" {
5902            fn vtkImplicitHalo_new() -> *mut core::ffi::c_void;
5903        }
5904        Self(unsafe { &mut *vtkImplicitHalo_new() })
5905    }
5906    #[cfg(test)]
5907    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5908        unsafe extern "C" {
5909            fn vtkImplicitHalo_get_ptr(
5910                sself: *mut core::ffi::c_void,
5911            ) -> *mut core::ffi::c_void;
5912        }
5913        unsafe { vtkImplicitHalo_get_ptr(self.0) }
5914    }
5915}
5916impl std::default::Default for vtkImplicitHalo {
5917    fn default() -> Self {
5918        Self::new()
5919    }
5920}
5921impl Drop for vtkImplicitHalo {
5922    fn drop(&mut self) {
5923        unsafe extern "C" {
5924            fn vtkImplicitHalo_destructor(sself: *mut core::ffi::c_void);
5925        }
5926        unsafe { vtkImplicitHalo_destructor(self.0) }
5927        self.0 = core::ptr::null_mut();
5928    }
5929}
5930#[test]
5931fn test_vtkImplicitHalo_create_drop() {
5932    let obj = vtkImplicitHalo::new();
5933    let ptr = obj.0;
5934    assert!(!ptr.is_null());
5935    assert!(unsafe { !obj._get_ptr().is_null() });
5936    drop(obj);
5937    let new_obj = vtkImplicitHalo(ptr);
5938    assert!(unsafe { new_obj._get_ptr().is_null() });
5939}
5940/// implicit function for a selection loop
5941///
5942///
5943/// vtkImplicitSelectionLoop computes the implicit function value and
5944/// function gradient for an irregular, cylinder-like object whose cross
5945/// section is defined by a set of points forming a loop. The loop need
5946/// not be convex nor its points coplanar. However, the loop must be
5947/// non-self-intersecting when projected onto the plane defined by the
5948/// accumulated cross product around the loop (i.e., the axis of the
5949/// loop). (Alternatively, you can specify the normal to use.)
5950///
5951/// The following procedure is used to compute the implicit function
5952/// value for a point x. Each point of the loop is first projected onto
5953/// the plane defined by the loop normal. This forms a polygon. Then,
5954/// to evaluate the implicit function value, inside/outside tests are
5955/// used to determine if x is inside the polygon, and the distance to
5956/// the loop boundary is computed (negative values are inside the
5957/// loop).
5958///
5959/// One example application of this implicit function class is to draw a
5960/// loop on the surface of a mesh, and use the loop to clip or extract
5961/// cells from within the loop. Remember, the selection loop is "infinite"
5962/// in length, you can use a plane (in boolean combination) to cap the extent
5963/// of the selection loop. Another trick is to use a connectivity filter to
5964/// extract the closest region to a given point (i.e., one of the points used
5965/// to define the selection loop).
5966///
5967/// @sa
5968/// vtkImplicitFunction vtkImplicitBoolean vtkExtractGeometry vtkClipPolyData
5969/// vtkConnectivityFilter vtkPolyDataConnectivityFilter
5970#[allow(non_camel_case_types)]
5971pub struct vtkImplicitSelectionLoop(*mut core::ffi::c_void);
5972impl vtkImplicitSelectionLoop {
5973    /// Creates a new [vtkImplicitSelectionLoop] wrapped inside `vtkNew`
5974    #[doc(alias = "vtkImplicitSelectionLoop")]
5975    pub fn new() -> Self {
5976        unsafe extern "C" {
5977            fn vtkImplicitSelectionLoop_new() -> *mut core::ffi::c_void;
5978        }
5979        Self(unsafe { &mut *vtkImplicitSelectionLoop_new() })
5980    }
5981    #[cfg(test)]
5982    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
5983        unsafe extern "C" {
5984            fn vtkImplicitSelectionLoop_get_ptr(
5985                sself: *mut core::ffi::c_void,
5986            ) -> *mut core::ffi::c_void;
5987        }
5988        unsafe { vtkImplicitSelectionLoop_get_ptr(self.0) }
5989    }
5990}
5991impl std::default::Default for vtkImplicitSelectionLoop {
5992    fn default() -> Self {
5993        Self::new()
5994    }
5995}
5996impl Drop for vtkImplicitSelectionLoop {
5997    fn drop(&mut self) {
5998        unsafe extern "C" {
5999            fn vtkImplicitSelectionLoop_destructor(sself: *mut core::ffi::c_void);
6000        }
6001        unsafe { vtkImplicitSelectionLoop_destructor(self.0) }
6002        self.0 = core::ptr::null_mut();
6003    }
6004}
6005#[test]
6006fn test_vtkImplicitSelectionLoop_create_drop() {
6007    let obj = vtkImplicitSelectionLoop::new();
6008    let ptr = obj.0;
6009    assert!(!ptr.is_null());
6010    assert!(unsafe { !obj._get_ptr().is_null() });
6011    drop(obj);
6012    let new_obj = vtkImplicitSelectionLoop(ptr);
6013    assert!(unsafe { new_obj._get_ptr().is_null() });
6014}
6015/// implicit sum of other implicit functions
6016///
6017///
6018/// vtkImplicitSum produces a linear combination of other implicit functions.
6019/// The contribution of each function is weighted by a scalar coefficient.
6020/// The NormalizeByWeight option normalizes the output so that the
6021/// scalar weights add up to 1. Note that this function gives accurate
6022/// sums and gradients only if the input functions are linear.
6023#[allow(non_camel_case_types)]
6024pub struct vtkImplicitSum(*mut core::ffi::c_void);
6025impl vtkImplicitSum {
6026    /// Creates a new [vtkImplicitSum] wrapped inside `vtkNew`
6027    #[doc(alias = "vtkImplicitSum")]
6028    pub fn new() -> Self {
6029        unsafe extern "C" {
6030            fn vtkImplicitSum_new() -> *mut core::ffi::c_void;
6031        }
6032        Self(unsafe { &mut *vtkImplicitSum_new() })
6033    }
6034    #[cfg(test)]
6035    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6036        unsafe extern "C" {
6037            fn vtkImplicitSum_get_ptr(
6038                sself: *mut core::ffi::c_void,
6039            ) -> *mut core::ffi::c_void;
6040        }
6041        unsafe { vtkImplicitSum_get_ptr(self.0) }
6042    }
6043}
6044impl std::default::Default for vtkImplicitSum {
6045    fn default() -> Self {
6046        Self::new()
6047    }
6048}
6049impl Drop for vtkImplicitSum {
6050    fn drop(&mut self) {
6051        unsafe extern "C" {
6052            fn vtkImplicitSum_destructor(sself: *mut core::ffi::c_void);
6053        }
6054        unsafe { vtkImplicitSum_destructor(self.0) }
6055        self.0 = core::ptr::null_mut();
6056    }
6057}
6058#[test]
6059fn test_vtkImplicitSum_create_drop() {
6060    let obj = vtkImplicitSum::new();
6061    let ptr = obj.0;
6062    assert!(!ptr.is_null());
6063    assert!(unsafe { !obj._get_ptr().is_null() });
6064    drop(obj);
6065    let new_obj = vtkImplicitSum(ptr);
6066    assert!(unsafe { new_obj._get_ptr().is_null() });
6067}
6068/// treat a volume as if it were an implicit function
6069///
6070///
6071/// vtkImplicitVolume treats a volume (e.g., structured point dataset)
6072/// as if it were an implicit function. This means it computes a function
6073/// value and gradient. vtkImplicitVolume is a concrete implementation of
6074/// vtkImplicitFunction.
6075///
6076/// vtkImplicitDataSet computes the function (at the point x) by performing
6077/// cell interpolation. That is, it finds the cell containing x, and then
6078/// uses the cell's interpolation functions to compute an interpolated
6079/// scalar value at x. (A similar approach is used to find the
6080/// gradient, if requested.) Points outside of the dataset are assigned
6081/// the value of the ivar OutValue, and the gradient value OutGradient.
6082///
6083/// @warning
6084/// The input volume data is only updated when GetMTime() is called.
6085/// Works for 3D structured points datasets, 0D-2D datasets won't work properly.
6086///
6087/// @sa
6088/// vtkImplicitFunction vtkImplicitDataSet vtkClipPolyData vtkCutter
6089/// vtkImplicitWindowFunction
6090#[allow(non_camel_case_types)]
6091pub struct vtkImplicitVolume(*mut core::ffi::c_void);
6092impl vtkImplicitVolume {
6093    /// Creates a new [vtkImplicitVolume] wrapped inside `vtkNew`
6094    #[doc(alias = "vtkImplicitVolume")]
6095    pub fn new() -> Self {
6096        unsafe extern "C" {
6097            fn vtkImplicitVolume_new() -> *mut core::ffi::c_void;
6098        }
6099        Self(unsafe { &mut *vtkImplicitVolume_new() })
6100    }
6101    #[cfg(test)]
6102    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6103        unsafe extern "C" {
6104            fn vtkImplicitVolume_get_ptr(
6105                sself: *mut core::ffi::c_void,
6106            ) -> *mut core::ffi::c_void;
6107        }
6108        unsafe { vtkImplicitVolume_get_ptr(self.0) }
6109    }
6110}
6111impl std::default::Default for vtkImplicitVolume {
6112    fn default() -> Self {
6113        Self::new()
6114    }
6115}
6116impl Drop for vtkImplicitVolume {
6117    fn drop(&mut self) {
6118        unsafe extern "C" {
6119            fn vtkImplicitVolume_destructor(sself: *mut core::ffi::c_void);
6120        }
6121        unsafe { vtkImplicitVolume_destructor(self.0) }
6122        self.0 = core::ptr::null_mut();
6123    }
6124}
6125#[test]
6126fn test_vtkImplicitVolume_create_drop() {
6127    let obj = vtkImplicitVolume::new();
6128    let ptr = obj.0;
6129    assert!(!ptr.is_null());
6130    assert!(unsafe { !obj._get_ptr().is_null() });
6131    drop(obj);
6132    let new_obj = vtkImplicitVolume(ptr);
6133    assert!(unsafe { new_obj._get_ptr().is_null() });
6134}
6135/// implicit function maps another implicit function to lie within a specified range
6136///
6137///
6138/// vtkImplicitWindowFunction is used to modify the output of another
6139/// implicit function to lie within a specified "window", or function
6140/// range. This can be used to add "thickness" to cutting or clipping
6141/// functions.
6142///
6143/// This class works as follows. First, it evaluates the function value of the
6144/// user-specified implicit function. Then, based on the window range specified,
6145/// it maps the function value into the window values specified.
6146///
6147///
6148/// @sa
6149/// vtkImplicitFunction
6150#[allow(non_camel_case_types)]
6151pub struct vtkImplicitWindowFunction(*mut core::ffi::c_void);
6152impl vtkImplicitWindowFunction {
6153    /// Creates a new [vtkImplicitWindowFunction] wrapped inside `vtkNew`
6154    #[doc(alias = "vtkImplicitWindowFunction")]
6155    pub fn new() -> Self {
6156        unsafe extern "C" {
6157            fn vtkImplicitWindowFunction_new() -> *mut core::ffi::c_void;
6158        }
6159        Self(unsafe { &mut *vtkImplicitWindowFunction_new() })
6160    }
6161    #[cfg(test)]
6162    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6163        unsafe extern "C" {
6164            fn vtkImplicitWindowFunction_get_ptr(
6165                sself: *mut core::ffi::c_void,
6166            ) -> *mut core::ffi::c_void;
6167        }
6168        unsafe { vtkImplicitWindowFunction_get_ptr(self.0) }
6169    }
6170}
6171impl std::default::Default for vtkImplicitWindowFunction {
6172    fn default() -> Self {
6173        Self::new()
6174    }
6175}
6176impl Drop for vtkImplicitWindowFunction {
6177    fn drop(&mut self) {
6178        unsafe extern "C" {
6179            fn vtkImplicitWindowFunction_destructor(sself: *mut core::ffi::c_void);
6180        }
6181        unsafe { vtkImplicitWindowFunction_destructor(self.0) }
6182        self.0 = core::ptr::null_mut();
6183    }
6184}
6185#[test]
6186fn test_vtkImplicitWindowFunction_create_drop() {
6187    let obj = vtkImplicitWindowFunction::new();
6188    let ptr = obj.0;
6189    assert!(!ptr.is_null());
6190    assert!(unsafe { !obj._get_ptr().is_null() });
6191    drop(obj);
6192    let new_obj = vtkImplicitWindowFunction(ptr);
6193    assert!(unsafe { new_obj._get_ptr().is_null() });
6194}
6195/// Iterates through all incoming edges to a vertex.
6196///
6197///
6198///
6199/// vtkInEdgeIterator iterates through all edges whose target is a particular
6200/// vertex. Instantiate this class directly and call Initialize() to traverse
6201/// the vertex of a graph. Alternately, use GetInEdges() on the graph to
6202/// initialize the iterator. it->Next() returns a vtkInEdgeType structure,
6203/// which contains Id, the edge's id, and Source, the edge's source vertex.
6204///
6205/// @sa
6206/// vtkGraph vtkOutEdgeIterator
6207#[allow(non_camel_case_types)]
6208pub struct vtkInEdgeIterator(*mut core::ffi::c_void);
6209impl vtkInEdgeIterator {
6210    /// Creates a new [vtkInEdgeIterator] wrapped inside `vtkNew`
6211    #[doc(alias = "vtkInEdgeIterator")]
6212    pub fn new() -> Self {
6213        unsafe extern "C" {
6214            fn vtkInEdgeIterator_new() -> *mut core::ffi::c_void;
6215        }
6216        Self(unsafe { &mut *vtkInEdgeIterator_new() })
6217    }
6218    #[cfg(test)]
6219    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6220        unsafe extern "C" {
6221            fn vtkInEdgeIterator_get_ptr(
6222                sself: *mut core::ffi::c_void,
6223            ) -> *mut core::ffi::c_void;
6224        }
6225        unsafe { vtkInEdgeIterator_get_ptr(self.0) }
6226    }
6227}
6228impl std::default::Default for vtkInEdgeIterator {
6229    fn default() -> Self {
6230        Self::new()
6231    }
6232}
6233impl Drop for vtkInEdgeIterator {
6234    fn drop(&mut self) {
6235        unsafe extern "C" {
6236            fn vtkInEdgeIterator_destructor(sself: *mut core::ffi::c_void);
6237        }
6238        unsafe { vtkInEdgeIterator_destructor(self.0) }
6239        self.0 = core::ptr::null_mut();
6240    }
6241}
6242#[test]
6243fn test_vtkInEdgeIterator_create_drop() {
6244    let obj = vtkInEdgeIterator::new();
6245    let ptr = obj.0;
6246    assert!(!ptr.is_null());
6247    assert!(unsafe { !obj._get_ptr().is_null() });
6248    drop(obj);
6249    let new_obj = vtkInEdgeIterator(ptr);
6250    assert!(unsafe { new_obj._get_ptr().is_null() });
6251}
6252/// Octree node constituting incremental
6253///
6254/// octree (in support of both point location and point insertion)
6255///
6256///
6257/// Octree nodes serve as spatial sub-division primitives to build the search
6258/// structure of an incremental octree in a recursive top-down manner. The
6259/// hierarchy takes the form of a tree-like representation by which a parent
6260/// node contains eight mutually non-overlapping child nodes. Each child is
6261/// assigned with an axis-aligned rectangular volume (Spatial Bounding Box)
6262/// and the eight children together cover exactly the same region as governed
6263/// by their parent. The eight child nodes / octants are ordered as
6264///
6265/// { (xBBoxMin, xBBoxMid] & (yBBoxMin, yBBoxMid] & (zBBoxMin, zBBoxMid] },
6266/// { (xBBoxMid, xBBoxMax] & (yBBoxMin, yBBoxMid] & (zBBoxMin, zBBoxMid] },
6267/// { (xBBoxMin, xBBoxMid] & (yBBoxMid, yBBoxMax] & (zBBoxMin, zBBoxMid] },
6268/// { (xBBoxMid, xBBoxMax] & (yBBoxMid, yBBoxMax] & (zBBoxMin, zBBoxMid] },
6269/// { (xBBoxMin, xBBoxMid] & (yBBoxMin, yBBoxMid] & (zBBoxMid, zBBoxMax] },
6270/// { (xBBoxMid, xBBoxMax] & (yBBoxMin, yBBoxMid] & (zBBoxMid, zBBoxMax] },
6271/// { (xBBoxMin, xBBoxMid] & (yBBoxMid, yBBoxMax] & (zBBoxMid, zBBoxMax] },
6272/// { (xBBoxMid, xBBoxMax] & (yBBoxMid, yBBoxMax] & (zBBoxMid, zBBoxMax] },
6273///
6274/// where { xrange & yRange & zRange } defines the region of each 3D octant.
6275/// In addition, the points falling within and registered, by means of point
6276/// indices, in the parent node are distributed to the child nodes for delegated
6277/// maintenance. In fact, only leaf nodes, i.e., those without any descendants,
6278/// actually store point indices while each node, regardless of a leaf or non-
6279/// leaf node, keeps a dynamically updated Data Bounding Box of the inhabitant
6280/// points, if any. Given a maximum number of points per leaf node, an octree
6281/// is initialized with an empty leaf node that is then recursively sub-divided,
6282/// but only on demand as points are incrementally inserted, to construct a
6283/// populated tree.
6284///
6285/// Please note that this octree node class is able to handle a large number
6286/// of EXACTLY duplicate points that is greater than the specified maximum
6287/// number of points per leaf node. In other words, as an exception, a leaf
6288/// node may maintain an arbitrary number of exactly duplicate points to deal
6289/// with possible extreme cases.
6290///
6291/// @sa
6292/// vtkIncrementalOctreePointLocator
6293#[allow(non_camel_case_types)]
6294pub struct vtkIncrementalOctreeNode(*mut core::ffi::c_void);
6295impl vtkIncrementalOctreeNode {
6296    /// Creates a new [vtkIncrementalOctreeNode] wrapped inside `vtkNew`
6297    #[doc(alias = "vtkIncrementalOctreeNode")]
6298    pub fn new() -> Self {
6299        unsafe extern "C" {
6300            fn vtkIncrementalOctreeNode_new() -> *mut core::ffi::c_void;
6301        }
6302        Self(unsafe { &mut *vtkIncrementalOctreeNode_new() })
6303    }
6304    #[cfg(test)]
6305    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6306        unsafe extern "C" {
6307            fn vtkIncrementalOctreeNode_get_ptr(
6308                sself: *mut core::ffi::c_void,
6309            ) -> *mut core::ffi::c_void;
6310        }
6311        unsafe { vtkIncrementalOctreeNode_get_ptr(self.0) }
6312    }
6313}
6314impl std::default::Default for vtkIncrementalOctreeNode {
6315    fn default() -> Self {
6316        Self::new()
6317    }
6318}
6319impl Drop for vtkIncrementalOctreeNode {
6320    fn drop(&mut self) {
6321        unsafe extern "C" {
6322            fn vtkIncrementalOctreeNode_destructor(sself: *mut core::ffi::c_void);
6323        }
6324        unsafe { vtkIncrementalOctreeNode_destructor(self.0) }
6325        self.0 = core::ptr::null_mut();
6326    }
6327}
6328#[test]
6329fn test_vtkIncrementalOctreeNode_create_drop() {
6330    let obj = vtkIncrementalOctreeNode::new();
6331    let ptr = obj.0;
6332    assert!(!ptr.is_null());
6333    assert!(unsafe { !obj._get_ptr().is_null() });
6334    drop(obj);
6335    let new_obj = vtkIncrementalOctreeNode(ptr);
6336    assert!(unsafe { new_obj._get_ptr().is_null() });
6337}
6338/// Incremental octree in support
6339///
6340/// of both point location and point insertion.
6341///
6342///
6343/// As opposed to the uniform bin-based search structure (adopted in class
6344/// vtkPointLocator) with a fixed spatial resolution, an octree mechanism
6345/// employs a hierarchy of tree-like sub-division of the 3D data domain. Thus
6346/// it enables data-aware multi-resolution and accordingly accelerated point
6347/// location as well as insertion, particularly when handling a radically
6348/// imbalanced layout of points as not uncommon in datasets defined on
6349/// adaptive meshes. Compared to a static point locator supporting pure
6350/// location functionalities through some search structure established from
6351/// a fixed set of points, an incremental point locator allows for, in addition,
6352/// point insertion capabilities, with the search structure maintaining a
6353/// dynamically increasing number of points.
6354/// Class vtkIncrementalOctreePointLocator is an octree-based accelerated
6355/// implementation of the functionalities of the uniform bin-based incremental
6356/// point locator vtkPointLocator. For point location, an octree is built by
6357/// accessing a vtkDataSet, specifically a vtkPointSet. For point insertion,
6358/// an empty octree is inited and then incrementally populated as points are
6359/// inserted. Three increasingly complex point insertion modes, i.e., direct
6360/// check-free insertion, zero tolerance insertion, and non-zero tolerance
6361/// insertion, are supported. In fact, the octree used in the point location
6362/// mode is actually constructed via direct check-free point insertion. This
6363/// class also provides a polygonal representation of the octree boundary.
6364///
6365/// @sa
6366/// vtkAbstractPointLocator, vtkIncrementalPointLocator, vtkPointLocator,
6367/// vtkMergePoints
6368#[allow(non_camel_case_types)]
6369pub struct vtkIncrementalOctreePointLocator(*mut core::ffi::c_void);
6370impl vtkIncrementalOctreePointLocator {
6371    /// Creates a new [vtkIncrementalOctreePointLocator] wrapped inside `vtkNew`
6372    #[doc(alias = "vtkIncrementalOctreePointLocator")]
6373    pub fn new() -> Self {
6374        unsafe extern "C" {
6375            fn vtkIncrementalOctreePointLocator_new() -> *mut core::ffi::c_void;
6376        }
6377        Self(unsafe { &mut *vtkIncrementalOctreePointLocator_new() })
6378    }
6379    #[cfg(test)]
6380    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6381        unsafe extern "C" {
6382            fn vtkIncrementalOctreePointLocator_get_ptr(
6383                sself: *mut core::ffi::c_void,
6384            ) -> *mut core::ffi::c_void;
6385        }
6386        unsafe { vtkIncrementalOctreePointLocator_get_ptr(self.0) }
6387    }
6388}
6389impl std::default::Default for vtkIncrementalOctreePointLocator {
6390    fn default() -> Self {
6391        Self::new()
6392    }
6393}
6394impl Drop for vtkIncrementalOctreePointLocator {
6395    fn drop(&mut self) {
6396        unsafe extern "C" {
6397            fn vtkIncrementalOctreePointLocator_destructor(
6398                sself: *mut core::ffi::c_void,
6399            );
6400        }
6401        unsafe { vtkIncrementalOctreePointLocator_destructor(self.0) }
6402        self.0 = core::ptr::null_mut();
6403    }
6404}
6405#[test]
6406fn test_vtkIncrementalOctreePointLocator_create_drop() {
6407    let obj = vtkIncrementalOctreePointLocator::new();
6408    let ptr = obj.0;
6409    assert!(!ptr.is_null());
6410    assert!(unsafe { !obj._get_ptr().is_null() });
6411    drop(obj);
6412    let new_obj = vtkIncrementalOctreePointLocator(ptr);
6413    assert!(unsafe { new_obj._get_ptr().is_null() });
6414}
6415/// Implementation of the ICP algorithm.
6416///
6417///
6418/// Match two surfaces using the iterative closest point (ICP) algorithm.
6419/// The core of the algorithm is to match each vertex in one surface with
6420/// the closest surface point on the other, then apply the transformation
6421/// that modify one surface to best match the other (in a least square sense).
6422/// This has to be iterated to get proper convergence of the surfaces.
6423/// @attention
6424/// Use vtkTransformPolyDataFilter to apply the resulting ICP transform to
6425/// your data. You might also set it to your actor's user transform.
6426/// @attention
6427/// This class makes use of vtkLandmarkTransform internally to compute the
6428/// best fit. Use the GetLandmarkTransform member to get a pointer to that
6429/// transform and set its parameters. You might, for example, constrain the
6430/// number of degrees of freedom of the solution (i.e. rigid body, similarity,
6431/// etc.) by checking the vtkLandmarkTransform documentation for its SetMode
6432/// member.
6433/// @sa
6434/// vtkLandmarkTransform
6435#[allow(non_camel_case_types)]
6436pub struct vtkIterativeClosestPointTransform(*mut core::ffi::c_void);
6437impl vtkIterativeClosestPointTransform {
6438    /// Creates a new [vtkIterativeClosestPointTransform] wrapped inside `vtkNew`
6439    #[doc(alias = "vtkIterativeClosestPointTransform")]
6440    pub fn new() -> Self {
6441        unsafe extern "C" {
6442            fn vtkIterativeClosestPointTransform_new() -> *mut core::ffi::c_void;
6443        }
6444        Self(unsafe { &mut *vtkIterativeClosestPointTransform_new() })
6445    }
6446    #[cfg(test)]
6447    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6448        unsafe extern "C" {
6449            fn vtkIterativeClosestPointTransform_get_ptr(
6450                sself: *mut core::ffi::c_void,
6451            ) -> *mut core::ffi::c_void;
6452        }
6453        unsafe { vtkIterativeClosestPointTransform_get_ptr(self.0) }
6454    }
6455}
6456impl std::default::Default for vtkIterativeClosestPointTransform {
6457    fn default() -> Self {
6458        Self::new()
6459    }
6460}
6461impl Drop for vtkIterativeClosestPointTransform {
6462    fn drop(&mut self) {
6463        unsafe extern "C" {
6464            fn vtkIterativeClosestPointTransform_destructor(
6465                sself: *mut core::ffi::c_void,
6466            );
6467        }
6468        unsafe { vtkIterativeClosestPointTransform_destructor(self.0) }
6469        self.0 = core::ptr::null_mut();
6470    }
6471}
6472#[test]
6473fn test_vtkIterativeClosestPointTransform_create_drop() {
6474    let obj = vtkIterativeClosestPointTransform::new();
6475    let ptr = obj.0;
6476    assert!(!ptr.is_null());
6477    assert!(unsafe { !obj._get_ptr().is_null() });
6478    drop(obj);
6479    let new_obj = vtkIterativeClosestPointTransform(ptr);
6480    assert!(unsafe { new_obj._get_ptr().is_null() });
6481}
6482/// This class represents a single spatial region
6483///
6484/// in an 3D axis aligned binary spatial partitioning.  It is assumed
6485/// the region bounds some set of points.  Regions are represented
6486/// as nodes in a binary tree.
6487///
6488///
6489///
6490/// @sa
6491/// vtkKdTree vtkOBSPCuts
6492#[allow(non_camel_case_types)]
6493pub struct vtkKdNode(*mut core::ffi::c_void);
6494impl vtkKdNode {
6495    /// Creates a new [vtkKdNode] wrapped inside `vtkNew`
6496    #[doc(alias = "vtkKdNode")]
6497    pub fn new() -> Self {
6498        unsafe extern "C" {
6499            fn vtkKdNode_new() -> *mut core::ffi::c_void;
6500        }
6501        Self(unsafe { &mut *vtkKdNode_new() })
6502    }
6503    #[cfg(test)]
6504    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6505        unsafe extern "C" {
6506            fn vtkKdNode_get_ptr(
6507                sself: *mut core::ffi::c_void,
6508            ) -> *mut core::ffi::c_void;
6509        }
6510        unsafe { vtkKdNode_get_ptr(self.0) }
6511    }
6512}
6513impl std::default::Default for vtkKdNode {
6514    fn default() -> Self {
6515        Self::new()
6516    }
6517}
6518impl Drop for vtkKdNode {
6519    fn drop(&mut self) {
6520        unsafe extern "C" {
6521            fn vtkKdNode_destructor(sself: *mut core::ffi::c_void);
6522        }
6523        unsafe { vtkKdNode_destructor(self.0) }
6524        self.0 = core::ptr::null_mut();
6525    }
6526}
6527#[test]
6528fn test_vtkKdNode_create_drop() {
6529    let obj = vtkKdNode::new();
6530    let ptr = obj.0;
6531    assert!(!ptr.is_null());
6532    assert!(unsafe { !obj._get_ptr().is_null() });
6533    drop(obj);
6534    let new_obj = vtkKdNode(ptr);
6535    assert!(unsafe { new_obj._get_ptr().is_null() });
6536}
6537/// a Kd-tree spatial decomposition of a set of points
6538///
6539///
6540///
6541/// Given one or more vtkDataSets, create a load balancing
6542/// k-d tree decomposition of the points at the center of the cells.
6543/// Or, create a k-d tree point locator from a list of points.
6544///
6545/// This class can also generate a PolyData representation of
6546/// the boundaries of the spatial regions in the decomposition.
6547///
6548/// It can sort the regions with respect to a viewing direction,
6549/// and it can decompose a list of regions into subsets, each
6550/// of which represent a convex spatial region (since many algorithms
6551/// require a convex region).
6552///
6553/// If the points were derived from cells, vtkKdTree
6554/// can create a list of cell Ids for each region for each data set.
6555/// Two lists are available - all cells with centroid in the region,
6556/// and all cells that intersect the region but whose centroid lies
6557/// in another region.
6558///
6559/// For the purpose of removing duplicate points quickly from large
6560/// data sets, or for finding nearby points, we added another mode for
6561/// building the locator.  BuildLocatorFromPoints will build a k-d tree
6562/// from one or more vtkPoints objects.  This can be followed by
6563/// BuildMapForDuplicatePoints which returns a mapping from the original
6564/// ids to a subset of the ids that is unique within a supplied
6565/// tolerance, or you can use FindPoint and FindClosestPoint to
6566/// locate points in the original set that the tree was built from.
6567///
6568/// @sa
6569/// vtkLocator vtkCellLocator vtkPKdTree
6570#[allow(non_camel_case_types)]
6571pub struct vtkKdTree(*mut core::ffi::c_void);
6572impl vtkKdTree {
6573    /// Creates a new [vtkKdTree] wrapped inside `vtkNew`
6574    #[doc(alias = "vtkKdTree")]
6575    pub fn new() -> Self {
6576        unsafe extern "C" {
6577            fn vtkKdTree_new() -> *mut core::ffi::c_void;
6578        }
6579        Self(unsafe { &mut *vtkKdTree_new() })
6580    }
6581    #[cfg(test)]
6582    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6583        unsafe extern "C" {
6584            fn vtkKdTree_get_ptr(
6585                sself: *mut core::ffi::c_void,
6586            ) -> *mut core::ffi::c_void;
6587        }
6588        unsafe { vtkKdTree_get_ptr(self.0) }
6589    }
6590}
6591impl std::default::Default for vtkKdTree {
6592    fn default() -> Self {
6593        Self::new()
6594    }
6595}
6596impl Drop for vtkKdTree {
6597    fn drop(&mut self) {
6598        unsafe extern "C" {
6599            fn vtkKdTree_destructor(sself: *mut core::ffi::c_void);
6600        }
6601        unsafe { vtkKdTree_destructor(self.0) }
6602        self.0 = core::ptr::null_mut();
6603    }
6604}
6605#[test]
6606fn test_vtkKdTree_create_drop() {
6607    let obj = vtkKdTree::new();
6608    let ptr = obj.0;
6609    assert!(!ptr.is_null());
6610    assert!(unsafe { !obj._get_ptr().is_null() });
6611    drop(obj);
6612    let new_obj = vtkKdTree(ptr);
6613    assert!(unsafe { new_obj._get_ptr().is_null() });
6614}
6615/// class to quickly locate points in 3-space
6616///
6617///
6618/// vtkKdTreePointLocator is a wrapper class that derives from
6619/// vtkAbstractPointLocator and calls the search functions in vtkKdTree.
6620///
6621/// @sa
6622/// vtkKdTree
6623#[allow(non_camel_case_types)]
6624pub struct vtkKdTreePointLocator(*mut core::ffi::c_void);
6625impl vtkKdTreePointLocator {
6626    /// Creates a new [vtkKdTreePointLocator] wrapped inside `vtkNew`
6627    #[doc(alias = "vtkKdTreePointLocator")]
6628    pub fn new() -> Self {
6629        unsafe extern "C" {
6630            fn vtkKdTreePointLocator_new() -> *mut core::ffi::c_void;
6631        }
6632        Self(unsafe { &mut *vtkKdTreePointLocator_new() })
6633    }
6634    #[cfg(test)]
6635    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6636        unsafe extern "C" {
6637            fn vtkKdTreePointLocator_get_ptr(
6638                sself: *mut core::ffi::c_void,
6639            ) -> *mut core::ffi::c_void;
6640        }
6641        unsafe { vtkKdTreePointLocator_get_ptr(self.0) }
6642    }
6643}
6644impl std::default::Default for vtkKdTreePointLocator {
6645    fn default() -> Self {
6646        Self::new()
6647    }
6648}
6649impl Drop for vtkKdTreePointLocator {
6650    fn drop(&mut self) {
6651        unsafe extern "C" {
6652            fn vtkKdTreePointLocator_destructor(sself: *mut core::ffi::c_void);
6653        }
6654        unsafe { vtkKdTreePointLocator_destructor(self.0) }
6655        self.0 = core::ptr::null_mut();
6656    }
6657}
6658#[test]
6659fn test_vtkKdTreePointLocator_create_drop() {
6660    let obj = vtkKdTreePointLocator::new();
6661    let ptr = obj.0;
6662    assert!(!ptr.is_null());
6663    assert!(unsafe { !obj._get_ptr().is_null() });
6664    drop(obj);
6665    let new_obj = vtkKdTreePointLocator(ptr);
6666    assert!(unsafe { new_obj._get_ptr().is_null() });
6667}
6668///
6669#[allow(non_camel_case_types)]
6670pub struct vtkLagrangeCurve(*mut core::ffi::c_void);
6671impl vtkLagrangeCurve {
6672    /// Creates a new [vtkLagrangeCurve] wrapped inside `vtkNew`
6673    #[doc(alias = "vtkLagrangeCurve")]
6674    pub fn new() -> Self {
6675        unsafe extern "C" {
6676            fn vtkLagrangeCurve_new() -> *mut core::ffi::c_void;
6677        }
6678        Self(unsafe { &mut *vtkLagrangeCurve_new() })
6679    }
6680    #[cfg(test)]
6681    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6682        unsafe extern "C" {
6683            fn vtkLagrangeCurve_get_ptr(
6684                sself: *mut core::ffi::c_void,
6685            ) -> *mut core::ffi::c_void;
6686        }
6687        unsafe { vtkLagrangeCurve_get_ptr(self.0) }
6688    }
6689}
6690impl std::default::Default for vtkLagrangeCurve {
6691    fn default() -> Self {
6692        Self::new()
6693    }
6694}
6695impl Drop for vtkLagrangeCurve {
6696    fn drop(&mut self) {
6697        unsafe extern "C" {
6698            fn vtkLagrangeCurve_destructor(sself: *mut core::ffi::c_void);
6699        }
6700        unsafe { vtkLagrangeCurve_destructor(self.0) }
6701        self.0 = core::ptr::null_mut();
6702    }
6703}
6704#[test]
6705fn test_vtkLagrangeCurve_create_drop() {
6706    let obj = vtkLagrangeCurve::new();
6707    let ptr = obj.0;
6708    assert!(!ptr.is_null());
6709    assert!(unsafe { !obj._get_ptr().is_null() });
6710    drop(obj);
6711    let new_obj = vtkLagrangeCurve(ptr);
6712    assert!(unsafe { new_obj._get_ptr().is_null() });
6713}
6714/// A 3D cell that represents an arbitrary order Lagrange hex
6715///
6716///
6717/// vtkLagrangeHexahedron is a concrete implementation of vtkCell to represent a
6718/// 3D hexahedron using Lagrange shape functions of user specified order.
6719///
6720/// @sa
6721/// vtkHexahedron
6722#[allow(non_camel_case_types)]
6723pub struct vtkLagrangeHexahedron(*mut core::ffi::c_void);
6724impl vtkLagrangeHexahedron {
6725    /// Creates a new [vtkLagrangeHexahedron] wrapped inside `vtkNew`
6726    #[doc(alias = "vtkLagrangeHexahedron")]
6727    pub fn new() -> Self {
6728        unsafe extern "C" {
6729            fn vtkLagrangeHexahedron_new() -> *mut core::ffi::c_void;
6730        }
6731        Self(unsafe { &mut *vtkLagrangeHexahedron_new() })
6732    }
6733    #[cfg(test)]
6734    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6735        unsafe extern "C" {
6736            fn vtkLagrangeHexahedron_get_ptr(
6737                sself: *mut core::ffi::c_void,
6738            ) -> *mut core::ffi::c_void;
6739        }
6740        unsafe { vtkLagrangeHexahedron_get_ptr(self.0) }
6741    }
6742}
6743impl std::default::Default for vtkLagrangeHexahedron {
6744    fn default() -> Self {
6745        Self::new()
6746    }
6747}
6748impl Drop for vtkLagrangeHexahedron {
6749    fn drop(&mut self) {
6750        unsafe extern "C" {
6751            fn vtkLagrangeHexahedron_destructor(sself: *mut core::ffi::c_void);
6752        }
6753        unsafe { vtkLagrangeHexahedron_destructor(self.0) }
6754        self.0 = core::ptr::null_mut();
6755    }
6756}
6757#[test]
6758fn test_vtkLagrangeHexahedron_create_drop() {
6759    let obj = vtkLagrangeHexahedron::new();
6760    let ptr = obj.0;
6761    assert!(!ptr.is_null());
6762    assert!(unsafe { !obj._get_ptr().is_null() });
6763    drop(obj);
6764    let new_obj = vtkLagrangeHexahedron(ptr);
6765    assert!(unsafe { new_obj._get_ptr().is_null() });
6766}
6767///
6768#[allow(non_camel_case_types)]
6769pub struct vtkLagrangeInterpolation(*mut core::ffi::c_void);
6770impl vtkLagrangeInterpolation {
6771    /// Creates a new [vtkLagrangeInterpolation] wrapped inside `vtkNew`
6772    #[doc(alias = "vtkLagrangeInterpolation")]
6773    pub fn new() -> Self {
6774        unsafe extern "C" {
6775            fn vtkLagrangeInterpolation_new() -> *mut core::ffi::c_void;
6776        }
6777        Self(unsafe { &mut *vtkLagrangeInterpolation_new() })
6778    }
6779    #[cfg(test)]
6780    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6781        unsafe extern "C" {
6782            fn vtkLagrangeInterpolation_get_ptr(
6783                sself: *mut core::ffi::c_void,
6784            ) -> *mut core::ffi::c_void;
6785        }
6786        unsafe { vtkLagrangeInterpolation_get_ptr(self.0) }
6787    }
6788}
6789impl std::default::Default for vtkLagrangeInterpolation {
6790    fn default() -> Self {
6791        Self::new()
6792    }
6793}
6794impl Drop for vtkLagrangeInterpolation {
6795    fn drop(&mut self) {
6796        unsafe extern "C" {
6797            fn vtkLagrangeInterpolation_destructor(sself: *mut core::ffi::c_void);
6798        }
6799        unsafe { vtkLagrangeInterpolation_destructor(self.0) }
6800        self.0 = core::ptr::null_mut();
6801    }
6802}
6803#[test]
6804fn test_vtkLagrangeInterpolation_create_drop() {
6805    let obj = vtkLagrangeInterpolation::new();
6806    let ptr = obj.0;
6807    assert!(!ptr.is_null());
6808    assert!(unsafe { !obj._get_ptr().is_null() });
6809    drop(obj);
6810    let new_obj = vtkLagrangeInterpolation(ptr);
6811    assert!(unsafe { new_obj._get_ptr().is_null() });
6812}
6813///
6814#[allow(non_camel_case_types)]
6815pub struct vtkLagrangeQuadrilateral(*mut core::ffi::c_void);
6816impl vtkLagrangeQuadrilateral {
6817    /// Creates a new [vtkLagrangeQuadrilateral] wrapped inside `vtkNew`
6818    #[doc(alias = "vtkLagrangeQuadrilateral")]
6819    pub fn new() -> Self {
6820        unsafe extern "C" {
6821            fn vtkLagrangeQuadrilateral_new() -> *mut core::ffi::c_void;
6822        }
6823        Self(unsafe { &mut *vtkLagrangeQuadrilateral_new() })
6824    }
6825    #[cfg(test)]
6826    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6827        unsafe extern "C" {
6828            fn vtkLagrangeQuadrilateral_get_ptr(
6829                sself: *mut core::ffi::c_void,
6830            ) -> *mut core::ffi::c_void;
6831        }
6832        unsafe { vtkLagrangeQuadrilateral_get_ptr(self.0) }
6833    }
6834}
6835impl std::default::Default for vtkLagrangeQuadrilateral {
6836    fn default() -> Self {
6837        Self::new()
6838    }
6839}
6840impl Drop for vtkLagrangeQuadrilateral {
6841    fn drop(&mut self) {
6842        unsafe extern "C" {
6843            fn vtkLagrangeQuadrilateral_destructor(sself: *mut core::ffi::c_void);
6844        }
6845        unsafe { vtkLagrangeQuadrilateral_destructor(self.0) }
6846        self.0 = core::ptr::null_mut();
6847    }
6848}
6849#[test]
6850fn test_vtkLagrangeQuadrilateral_create_drop() {
6851    let obj = vtkLagrangeQuadrilateral::new();
6852    let ptr = obj.0;
6853    assert!(!ptr.is_null());
6854    assert!(unsafe { !obj._get_ptr().is_null() });
6855    drop(obj);
6856    let new_obj = vtkLagrangeQuadrilateral(ptr);
6857    assert!(unsafe { new_obj._get_ptr().is_null() });
6858}
6859/// A 3D cell that represents an arbitrary order Lagrange tetrahedron
6860///
6861///
6862/// vtkLagrangeTetra is a concrete implementation of vtkCell to represent a
6863/// 3D tetrahedron using Lagrange shape functions of user specified order.
6864///
6865/// The number of points in a Lagrange cell determines the order over which they
6866/// are iterated relative to the parametric coordinate system of the cell. The
6867/// first points that are reported are vertices. They appear in the same order in
6868/// which they would appear in linear cells. Mid-edge points are reported next.
6869/// They are reported in sequence. For two- and three-dimensional (3D) cells, the
6870/// following set of points to be reported are face points. Finally, 3D cells
6871/// report points interior to their volume.
6872#[allow(non_camel_case_types)]
6873pub struct vtkLagrangeTetra(*mut core::ffi::c_void);
6874impl vtkLagrangeTetra {
6875    /// Creates a new [vtkLagrangeTetra] wrapped inside `vtkNew`
6876    #[doc(alias = "vtkLagrangeTetra")]
6877    pub fn new() -> Self {
6878        unsafe extern "C" {
6879            fn vtkLagrangeTetra_new() -> *mut core::ffi::c_void;
6880        }
6881        Self(unsafe { &mut *vtkLagrangeTetra_new() })
6882    }
6883    #[cfg(test)]
6884    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6885        unsafe extern "C" {
6886            fn vtkLagrangeTetra_get_ptr(
6887                sself: *mut core::ffi::c_void,
6888            ) -> *mut core::ffi::c_void;
6889        }
6890        unsafe { vtkLagrangeTetra_get_ptr(self.0) }
6891    }
6892}
6893impl std::default::Default for vtkLagrangeTetra {
6894    fn default() -> Self {
6895        Self::new()
6896    }
6897}
6898impl Drop for vtkLagrangeTetra {
6899    fn drop(&mut self) {
6900        unsafe extern "C" {
6901            fn vtkLagrangeTetra_destructor(sself: *mut core::ffi::c_void);
6902        }
6903        unsafe { vtkLagrangeTetra_destructor(self.0) }
6904        self.0 = core::ptr::null_mut();
6905    }
6906}
6907#[test]
6908fn test_vtkLagrangeTetra_create_drop() {
6909    let obj = vtkLagrangeTetra::new();
6910    let ptr = obj.0;
6911    assert!(!ptr.is_null());
6912    assert!(unsafe { !obj._get_ptr().is_null() });
6913    drop(obj);
6914    let new_obj = vtkLagrangeTetra(ptr);
6915    assert!(unsafe { new_obj._get_ptr().is_null() });
6916}
6917/// A 2D cell that represents an arbitrary order Lagrange triangle
6918///
6919///
6920/// vtkLagrangeTriangle is a concrete implementation of vtkCell to represent a
6921/// 2D triangle using Lagrange shape functions of user specified order.
6922///
6923/// The number of points in a Lagrange cell determines the order over which they
6924/// are iterated relative to the parametric coordinate system of the cell. The
6925/// first points that are reported are vertices. They appear in the same order in
6926/// which they would appear in linear cells. Mid-edge points are reported next.
6927/// They are reported in sequence. For two- and three-dimensional (3D) cells, the
6928/// following set of points to be reported are face points. Finally, 3D cells
6929/// report points interior to their volume.
6930#[allow(non_camel_case_types)]
6931pub struct vtkLagrangeTriangle(*mut core::ffi::c_void);
6932impl vtkLagrangeTriangle {
6933    /// Creates a new [vtkLagrangeTriangle] wrapped inside `vtkNew`
6934    #[doc(alias = "vtkLagrangeTriangle")]
6935    pub fn new() -> Self {
6936        unsafe extern "C" {
6937            fn vtkLagrangeTriangle_new() -> *mut core::ffi::c_void;
6938        }
6939        Self(unsafe { &mut *vtkLagrangeTriangle_new() })
6940    }
6941    #[cfg(test)]
6942    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
6943        unsafe extern "C" {
6944            fn vtkLagrangeTriangle_get_ptr(
6945                sself: *mut core::ffi::c_void,
6946            ) -> *mut core::ffi::c_void;
6947        }
6948        unsafe { vtkLagrangeTriangle_get_ptr(self.0) }
6949    }
6950}
6951impl std::default::Default for vtkLagrangeTriangle {
6952    fn default() -> Self {
6953        Self::new()
6954    }
6955}
6956impl Drop for vtkLagrangeTriangle {
6957    fn drop(&mut self) {
6958        unsafe extern "C" {
6959            fn vtkLagrangeTriangle_destructor(sself: *mut core::ffi::c_void);
6960        }
6961        unsafe { vtkLagrangeTriangle_destructor(self.0) }
6962        self.0 = core::ptr::null_mut();
6963    }
6964}
6965#[test]
6966fn test_vtkLagrangeTriangle_create_drop() {
6967    let obj = vtkLagrangeTriangle::new();
6968    let ptr = obj.0;
6969    assert!(!ptr.is_null());
6970    assert!(unsafe { !obj._get_ptr().is_null() });
6971    drop(obj);
6972    let new_obj = vtkLagrangeTriangle(ptr);
6973    assert!(unsafe { new_obj._get_ptr().is_null() });
6974}
6975/// A 3D cell that represents an arbitrary order Lagrange wedge
6976///
6977///
6978/// vtkLagrangeWedge is a concrete implementation of vtkCell to represent a
6979/// 3D wedge using Lagrange shape functions of user specified order.
6980/// A wedge consists of two triangular and three quadrilateral faces.
6981/// The first six points of the wedge (0-5) are the "corner" points
6982/// where the first three points are the base of the wedge. This wedge
6983/// point ordering is opposite the vtkWedge ordering though in that
6984/// the base of the wedge defined by the first three points (0,1,2) form
6985/// a triangle whose normal points inward (toward the triangular face (3,4,5)).
6986/// While this is opposite the vtkWedge convention it is consistent with
6987/// every other cell type in VTK. The first 2 parametric coordinates of the
6988/// Lagrange wedge or for the triangular base and vary between 0 and 1. The
6989/// third parametric coordinate is between the two triangular faces and goes
6990/// from 0 to 1 as well.
6991#[allow(non_camel_case_types)]
6992pub struct vtkLagrangeWedge(*mut core::ffi::c_void);
6993impl vtkLagrangeWedge {
6994    /// Creates a new [vtkLagrangeWedge] wrapped inside `vtkNew`
6995    #[doc(alias = "vtkLagrangeWedge")]
6996    pub fn new() -> Self {
6997        unsafe extern "C" {
6998            fn vtkLagrangeWedge_new() -> *mut core::ffi::c_void;
6999        }
7000        Self(unsafe { &mut *vtkLagrangeWedge_new() })
7001    }
7002    #[cfg(test)]
7003    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7004        unsafe extern "C" {
7005            fn vtkLagrangeWedge_get_ptr(
7006                sself: *mut core::ffi::c_void,
7007            ) -> *mut core::ffi::c_void;
7008        }
7009        unsafe { vtkLagrangeWedge_get_ptr(self.0) }
7010    }
7011}
7012impl std::default::Default for vtkLagrangeWedge {
7013    fn default() -> Self {
7014        Self::new()
7015    }
7016}
7017impl Drop for vtkLagrangeWedge {
7018    fn drop(&mut self) {
7019        unsafe extern "C" {
7020            fn vtkLagrangeWedge_destructor(sself: *mut core::ffi::c_void);
7021        }
7022        unsafe { vtkLagrangeWedge_destructor(self.0) }
7023        self.0 = core::ptr::null_mut();
7024    }
7025}
7026#[test]
7027fn test_vtkLagrangeWedge_create_drop() {
7028    let obj = vtkLagrangeWedge::new();
7029    let ptr = obj.0;
7030    assert!(!ptr.is_null());
7031    assert!(unsafe { !obj._get_ptr().is_null() });
7032    drop(obj);
7033    let new_obj = vtkLagrangeWedge(ptr);
7034    assert!(unsafe { new_obj._get_ptr().is_null() });
7035}
7036/// cell represents a 1D line
7037///
7038///
7039/// vtkLine is a concrete implementation of vtkCell to represent a 1D line.
7040#[allow(non_camel_case_types)]
7041pub struct vtkLine(*mut core::ffi::c_void);
7042impl vtkLine {
7043    /// Creates a new [vtkLine] wrapped inside `vtkNew`
7044    #[doc(alias = "vtkLine")]
7045    pub fn new() -> Self {
7046        unsafe extern "C" {
7047            fn vtkLine_new() -> *mut core::ffi::c_void;
7048        }
7049        Self(unsafe { &mut *vtkLine_new() })
7050    }
7051    #[cfg(test)]
7052    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7053        unsafe extern "C" {
7054            fn vtkLine_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
7055        }
7056        unsafe { vtkLine_get_ptr(self.0) }
7057    }
7058}
7059impl std::default::Default for vtkLine {
7060    fn default() -> Self {
7061        Self::new()
7062    }
7063}
7064impl Drop for vtkLine {
7065    fn drop(&mut self) {
7066        unsafe extern "C" {
7067            fn vtkLine_destructor(sself: *mut core::ffi::c_void);
7068        }
7069        unsafe { vtkLine_destructor(self.0) }
7070        self.0 = core::ptr::null_mut();
7071    }
7072}
7073#[test]
7074fn test_vtkLine_create_drop() {
7075    let obj = vtkLine::new();
7076    let ptr = obj.0;
7077    assert!(!ptr.is_null());
7078    assert!(unsafe { !obj._get_ptr().is_null() });
7079    drop(obj);
7080    let new_obj = vtkLine(ptr);
7081    assert!(unsafe { new_obj._get_ptr().is_null() });
7082}
7083/// compute interpolation computes
7084///
7085/// for closed triangular mesh
7086///
7087/// vtkMeanValueCoordinatesInterpolator computes interpolation weights for a
7088/// closed, manifold polyhedron mesh.  Once computed, the interpolation
7089/// weights can be used to interpolate data anywhere interior or exterior to
7090/// the mesh. This work implements two MVC algorithms. The first one is for
7091/// triangular meshes which is documented in the Siggraph 2005 paper by Tao Ju,
7092/// Scot Schaefer and Joe Warren from Rice University "Mean Value Coordinates
7093/// for Closed Triangular Meshes". The second one is for general polyhedron
7094/// mesh which is documented in the Eurographics Symposium on Geometry Processing
7095/// 2006 paper by Torsten Langer, Alexander Belyaev and Hans-Peter Seidel from
7096/// MPI Informatik "Spherical Barycentric Coordinates".
7097/// The filter will automatically choose which algorithm to use based on whether
7098/// the input mesh is triangulated or not.
7099///
7100/// In VTK this class was initially created to interpolate data across
7101/// polyhedral cells. In addition, the class can be used to interpolate
7102/// data values from a polyhedron mesh, and to smoothly deform a mesh from
7103/// an associated control mesh.
7104///
7105/// @sa
7106/// vtkPolyhedralCell
7107#[allow(non_camel_case_types)]
7108pub struct vtkMeanValueCoordinatesInterpolator(*mut core::ffi::c_void);
7109impl vtkMeanValueCoordinatesInterpolator {
7110    /// Creates a new [vtkMeanValueCoordinatesInterpolator] wrapped inside `vtkNew`
7111    #[doc(alias = "vtkMeanValueCoordinatesInterpolator")]
7112    pub fn new() -> Self {
7113        unsafe extern "C" {
7114            fn vtkMeanValueCoordinatesInterpolator_new() -> *mut core::ffi::c_void;
7115        }
7116        Self(unsafe { &mut *vtkMeanValueCoordinatesInterpolator_new() })
7117    }
7118    #[cfg(test)]
7119    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7120        unsafe extern "C" {
7121            fn vtkMeanValueCoordinatesInterpolator_get_ptr(
7122                sself: *mut core::ffi::c_void,
7123            ) -> *mut core::ffi::c_void;
7124        }
7125        unsafe { vtkMeanValueCoordinatesInterpolator_get_ptr(self.0) }
7126    }
7127}
7128impl std::default::Default for vtkMeanValueCoordinatesInterpolator {
7129    fn default() -> Self {
7130        Self::new()
7131    }
7132}
7133impl Drop for vtkMeanValueCoordinatesInterpolator {
7134    fn drop(&mut self) {
7135        unsafe extern "C" {
7136            fn vtkMeanValueCoordinatesInterpolator_destructor(
7137                sself: *mut core::ffi::c_void,
7138            );
7139        }
7140        unsafe { vtkMeanValueCoordinatesInterpolator_destructor(self.0) }
7141        self.0 = core::ptr::null_mut();
7142    }
7143}
7144#[test]
7145fn test_vtkMeanValueCoordinatesInterpolator_create_drop() {
7146    let obj = vtkMeanValueCoordinatesInterpolator::new();
7147    let ptr = obj.0;
7148    assert!(!ptr.is_null());
7149    assert!(unsafe { !obj._get_ptr().is_null() });
7150    drop(obj);
7151    let new_obj = vtkMeanValueCoordinatesInterpolator(ptr);
7152    assert!(unsafe { new_obj._get_ptr().is_null() });
7153}
7154/// merge exactly coincident points
7155///
7156///
7157/// vtkMergePoints is a locator object to quickly locate points in 3D.
7158/// The primary difference between vtkMergePoints and its superclass
7159/// vtkPointLocator is that vtkMergePoints merges precisely coincident points
7160/// and is therefore much faster.
7161/// @sa
7162/// vtkCleanPolyData
7163#[allow(non_camel_case_types)]
7164pub struct vtkMergePoints(*mut core::ffi::c_void);
7165impl vtkMergePoints {
7166    /// Creates a new [vtkMergePoints] wrapped inside `vtkNew`
7167    #[doc(alias = "vtkMergePoints")]
7168    pub fn new() -> Self {
7169        unsafe extern "C" {
7170            fn vtkMergePoints_new() -> *mut core::ffi::c_void;
7171        }
7172        Self(unsafe { &mut *vtkMergePoints_new() })
7173    }
7174    #[cfg(test)]
7175    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7176        unsafe extern "C" {
7177            fn vtkMergePoints_get_ptr(
7178                sself: *mut core::ffi::c_void,
7179            ) -> *mut core::ffi::c_void;
7180        }
7181        unsafe { vtkMergePoints_get_ptr(self.0) }
7182    }
7183}
7184impl std::default::Default for vtkMergePoints {
7185    fn default() -> Self {
7186        Self::new()
7187    }
7188}
7189impl Drop for vtkMergePoints {
7190    fn drop(&mut self) {
7191        unsafe extern "C" {
7192            fn vtkMergePoints_destructor(sself: *mut core::ffi::c_void);
7193        }
7194        unsafe { vtkMergePoints_destructor(self.0) }
7195        self.0 = core::ptr::null_mut();
7196    }
7197}
7198#[test]
7199fn test_vtkMergePoints_create_drop() {
7200    let obj = vtkMergePoints::new();
7201    let ptr = obj.0;
7202    assert!(!ptr.is_null());
7203    assert!(unsafe { !obj._get_ptr().is_null() });
7204    drop(obj);
7205    let new_obj = vtkMergePoints(ptr);
7206    assert!(unsafe { new_obj._get_ptr().is_null() });
7207}
7208/// class describing a molecule
7209///
7210///
7211///
7212///
7213/// vtkMolecule and the convenience classes vtkAtom and vtkBond
7214/// describe the geometry and connectivity of a molecule. The molecule
7215/// can be constructed using the AppendAtom() and AppendBond() methods in one
7216/// of two ways; either by fully specifying the atom/bond in a single
7217/// call, or by incrementally setting the various attributes using the
7218/// convenience vtkAtom and vtkBond classes:
7219///
7220/// Single call:
7221/// \code
7222/// vtkMolecule *mol = vtkMolecule::New();
7223/// vtkAtom h1 = mol->AppendAtom(1, 0.0, 0.0, -0.5);
7224/// vtkAtom h2 = mol->AppendAtom(1, 0.0, 0.0,  0.5);
7225/// vtkBond b  = mol->AppendBond(h1, h2, 1);
7226/// \endcode
7227///
7228/// Incremental:
7229/// \code
7230/// vtkMolecule *mol = vtkMolecule::New();
7231///
7232/// vtkAtom h1 = mol->AppendAtom();
7233/// h1.SetAtomicNumber(1);
7234/// h1.SetPosition(0.0, 0.0, -0.5);
7235///
7236/// vtkAtom h2 = mol->AppendAtom();
7237/// h2.SetAtomicNumber(1);
7238/// vtkVector3d displacement (0.0, 0.0, 1.0);
7239/// h2.SetPosition(h1.GetPositionAsVector3d() + displacement);
7240///
7241/// vtkBond b  = mol->AppendBond(h1, h2, 1);
7242/// \endcode
7243///
7244/// Both of the above methods will produce the same molecule, two
7245/// hydrogens connected with a 1.0 Angstrom single bond, aligned to the
7246/// z-axis. The second example also demonstrates the use of VTK's
7247/// vtkVector class, which is fully supported by the Chemistry kit.
7248///
7249/// The vtkMolecule object is intended to be used with the
7250/// vtkMoleculeMapper class for visualizing molecular structure using
7251/// common rendering techniques.
7252///
7253/// \warning While direct use of the underlying vtkUndirectedGraph
7254/// structure is possible due to vtkMolecule's public inheritance, this
7255/// should not be relied upon and may change in the future.
7256///
7257/// @sa
7258/// vtkAtom vtkBond vtkMoleculeMapper vtkPeriodicTable
7259#[allow(non_camel_case_types)]
7260pub struct vtkMolecule(*mut core::ffi::c_void);
7261impl vtkMolecule {
7262    /// Creates a new [vtkMolecule] wrapped inside `vtkNew`
7263    #[doc(alias = "vtkMolecule")]
7264    pub fn new() -> Self {
7265        unsafe extern "C" {
7266            fn vtkMolecule_new() -> *mut core::ffi::c_void;
7267        }
7268        Self(unsafe { &mut *vtkMolecule_new() })
7269    }
7270    #[cfg(test)]
7271    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7272        unsafe extern "C" {
7273            fn vtkMolecule_get_ptr(
7274                sself: *mut core::ffi::c_void,
7275            ) -> *mut core::ffi::c_void;
7276        }
7277        unsafe { vtkMolecule_get_ptr(self.0) }
7278    }
7279}
7280impl std::default::Default for vtkMolecule {
7281    fn default() -> Self {
7282        Self::new()
7283    }
7284}
7285impl Drop for vtkMolecule {
7286    fn drop(&mut self) {
7287        unsafe extern "C" {
7288            fn vtkMolecule_destructor(sself: *mut core::ffi::c_void);
7289        }
7290        unsafe { vtkMolecule_destructor(self.0) }
7291        self.0 = core::ptr::null_mut();
7292    }
7293}
7294#[test]
7295fn test_vtkMolecule_create_drop() {
7296    let obj = vtkMolecule::new();
7297    let ptr = obj.0;
7298    assert!(!ptr.is_null());
7299    assert!(unsafe { !obj._get_ptr().is_null() });
7300    drop(obj);
7301    let new_obj = vtkMolecule(ptr);
7302    assert!(unsafe { new_obj._get_ptr().is_null() });
7303}
7304/// Composite dataset that organizes datasets into
7305///
7306/// blocks.
7307///
7308/// vtkMultiBlockDataSet is a vtkCompositeDataSet that stores
7309/// a hierarchy of datasets. The dataset collection consists of
7310/// multiple blocks. Each block can itself be a vtkMultiBlockDataSet, thus
7311/// providing for a full tree structure.
7312/// Sub-blocks are usually used to distribute blocks across processors.
7313/// For example, a 1 block dataset can be distributed as following:
7314/// @verbatim
7315/// proc 0:
7316/// Block 0:
7317/// * ds 0
7318/// * (null)
7319///
7320/// proc 1:
7321/// Block 0:
7322/// * (null)
7323/// * ds 1
7324/// @endverbatim
7325#[allow(non_camel_case_types)]
7326pub struct vtkMultiBlockDataSet(*mut core::ffi::c_void);
7327impl vtkMultiBlockDataSet {
7328    /// Creates a new [vtkMultiBlockDataSet] wrapped inside `vtkNew`
7329    #[doc(alias = "vtkMultiBlockDataSet")]
7330    pub fn new() -> Self {
7331        unsafe extern "C" {
7332            fn vtkMultiBlockDataSet_new() -> *mut core::ffi::c_void;
7333        }
7334        Self(unsafe { &mut *vtkMultiBlockDataSet_new() })
7335    }
7336    #[cfg(test)]
7337    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7338        unsafe extern "C" {
7339            fn vtkMultiBlockDataSet_get_ptr(
7340                sself: *mut core::ffi::c_void,
7341            ) -> *mut core::ffi::c_void;
7342        }
7343        unsafe { vtkMultiBlockDataSet_get_ptr(self.0) }
7344    }
7345}
7346impl std::default::Default for vtkMultiBlockDataSet {
7347    fn default() -> Self {
7348        Self::new()
7349    }
7350}
7351impl Drop for vtkMultiBlockDataSet {
7352    fn drop(&mut self) {
7353        unsafe extern "C" {
7354            fn vtkMultiBlockDataSet_destructor(sself: *mut core::ffi::c_void);
7355        }
7356        unsafe { vtkMultiBlockDataSet_destructor(self.0) }
7357        self.0 = core::ptr::null_mut();
7358    }
7359}
7360#[test]
7361fn test_vtkMultiBlockDataSet_create_drop() {
7362    let obj = vtkMultiBlockDataSet::new();
7363    let ptr = obj.0;
7364    assert!(!ptr.is_null());
7365    assert!(unsafe { !obj._get_ptr().is_null() });
7366    drop(obj);
7367    let new_obj = vtkMultiBlockDataSet(ptr);
7368    assert!(unsafe { new_obj._get_ptr().is_null() });
7369}
7370/// composite dataset to encapsulates pieces of
7371///
7372/// dataset.
7373///
7374/// A vtkMultiPieceDataSet dataset groups multiple data pieces together.
7375/// For example, say that a simulation broke a volume into 16 piece so that
7376/// each piece can be processed with 1 process in parallel. We want to load
7377/// this volume in a visualization cluster of 4 nodes. Each node will get 4
7378/// pieces, not necessarily forming a whole rectangular piece. In this case,
7379/// it is not possible to append the 4 pieces together into a vtkImageData.
7380/// In this case, these 4 pieces can be collected together using a
7381/// vtkMultiPieceDataSet.
7382/// Note that vtkMultiPieceDataSet is intended to be included in other composite
7383/// datasets eg. vtkMultiBlockDataSet, vtkHierarchicalBoxDataSet. Hence the lack
7384/// of algorithms producing vtkMultiPieceDataSet.
7385#[allow(non_camel_case_types)]
7386pub struct vtkMultiPieceDataSet(*mut core::ffi::c_void);
7387impl vtkMultiPieceDataSet {
7388    /// Creates a new [vtkMultiPieceDataSet] wrapped inside `vtkNew`
7389    #[doc(alias = "vtkMultiPieceDataSet")]
7390    pub fn new() -> Self {
7391        unsafe extern "C" {
7392            fn vtkMultiPieceDataSet_new() -> *mut core::ffi::c_void;
7393        }
7394        Self(unsafe { &mut *vtkMultiPieceDataSet_new() })
7395    }
7396    #[cfg(test)]
7397    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7398        unsafe extern "C" {
7399            fn vtkMultiPieceDataSet_get_ptr(
7400                sself: *mut core::ffi::c_void,
7401            ) -> *mut core::ffi::c_void;
7402        }
7403        unsafe { vtkMultiPieceDataSet_get_ptr(self.0) }
7404    }
7405}
7406impl std::default::Default for vtkMultiPieceDataSet {
7407    fn default() -> Self {
7408        Self::new()
7409    }
7410}
7411impl Drop for vtkMultiPieceDataSet {
7412    fn drop(&mut self) {
7413        unsafe extern "C" {
7414            fn vtkMultiPieceDataSet_destructor(sself: *mut core::ffi::c_void);
7415        }
7416        unsafe { vtkMultiPieceDataSet_destructor(self.0) }
7417        self.0 = core::ptr::null_mut();
7418    }
7419}
7420#[test]
7421fn test_vtkMultiPieceDataSet_create_drop() {
7422    let obj = vtkMultiPieceDataSet::new();
7423    let ptr = obj.0;
7424    assert!(!ptr.is_null());
7425    assert!(unsafe { !obj._get_ptr().is_null() });
7426    drop(obj);
7427    let new_obj = vtkMultiPieceDataSet(ptr);
7428    assert!(unsafe { new_obj._get_ptr().is_null() });
7429}
7430/// An editable directed graph.
7431///
7432///
7433///
7434/// vtkMutableDirectedGraph is a directed graph which has additional methods
7435/// for adding edges and vertices. AddChild() is a convenience method for
7436/// constructing trees. ShallowCopy(), DeepCopy(), CheckedShallowCopy() and
7437/// CheckedDeepCopy() will succeed for instances of vtkDirectedGraph,
7438/// vtkMutableDirectedGraph and vtkTree.
7439///
7440/// @sa
7441/// vtkDirectedGraph vtkGraph vtkTree
7442#[allow(non_camel_case_types)]
7443pub struct vtkMutableDirectedGraph(*mut core::ffi::c_void);
7444impl vtkMutableDirectedGraph {
7445    /// Creates a new [vtkMutableDirectedGraph] wrapped inside `vtkNew`
7446    #[doc(alias = "vtkMutableDirectedGraph")]
7447    pub fn new() -> Self {
7448        unsafe extern "C" {
7449            fn vtkMutableDirectedGraph_new() -> *mut core::ffi::c_void;
7450        }
7451        Self(unsafe { &mut *vtkMutableDirectedGraph_new() })
7452    }
7453    #[cfg(test)]
7454    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7455        unsafe extern "C" {
7456            fn vtkMutableDirectedGraph_get_ptr(
7457                sself: *mut core::ffi::c_void,
7458            ) -> *mut core::ffi::c_void;
7459        }
7460        unsafe { vtkMutableDirectedGraph_get_ptr(self.0) }
7461    }
7462}
7463impl std::default::Default for vtkMutableDirectedGraph {
7464    fn default() -> Self {
7465        Self::new()
7466    }
7467}
7468impl Drop for vtkMutableDirectedGraph {
7469    fn drop(&mut self) {
7470        unsafe extern "C" {
7471            fn vtkMutableDirectedGraph_destructor(sself: *mut core::ffi::c_void);
7472        }
7473        unsafe { vtkMutableDirectedGraph_destructor(self.0) }
7474        self.0 = core::ptr::null_mut();
7475    }
7476}
7477#[test]
7478fn test_vtkMutableDirectedGraph_create_drop() {
7479    let obj = vtkMutableDirectedGraph::new();
7480    let ptr = obj.0;
7481    assert!(!ptr.is_null());
7482    assert!(unsafe { !obj._get_ptr().is_null() });
7483    drop(obj);
7484    let new_obj = vtkMutableDirectedGraph(ptr);
7485    assert!(unsafe { new_obj._get_ptr().is_null() });
7486}
7487/// An editable undirected graph.
7488///
7489///
7490///
7491/// vtkMutableUndirectedGraph is an undirected graph with additional functions
7492/// for adding vertices and edges. ShallowCopy(), DeepCopy(), CheckedShallowCopy(),
7493/// and CheckedDeepCopy() will succeed when the argument is a vtkUndirectedGraph
7494/// or vtkMutableUndirectedGraph.
7495///
7496/// @sa
7497/// vtkUndirectedGraph vtkGraph
7498#[allow(non_camel_case_types)]
7499pub struct vtkMutableUndirectedGraph(*mut core::ffi::c_void);
7500impl vtkMutableUndirectedGraph {
7501    /// Creates a new [vtkMutableUndirectedGraph] wrapped inside `vtkNew`
7502    #[doc(alias = "vtkMutableUndirectedGraph")]
7503    pub fn new() -> Self {
7504        unsafe extern "C" {
7505            fn vtkMutableUndirectedGraph_new() -> *mut core::ffi::c_void;
7506        }
7507        Self(unsafe { &mut *vtkMutableUndirectedGraph_new() })
7508    }
7509    #[cfg(test)]
7510    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7511        unsafe extern "C" {
7512            fn vtkMutableUndirectedGraph_get_ptr(
7513                sself: *mut core::ffi::c_void,
7514            ) -> *mut core::ffi::c_void;
7515        }
7516        unsafe { vtkMutableUndirectedGraph_get_ptr(self.0) }
7517    }
7518}
7519impl std::default::Default for vtkMutableUndirectedGraph {
7520    fn default() -> Self {
7521        Self::new()
7522    }
7523}
7524impl Drop for vtkMutableUndirectedGraph {
7525    fn drop(&mut self) {
7526        unsafe extern "C" {
7527            fn vtkMutableUndirectedGraph_destructor(sself: *mut core::ffi::c_void);
7528        }
7529        unsafe { vtkMutableUndirectedGraph_destructor(self.0) }
7530        self.0 = core::ptr::null_mut();
7531    }
7532}
7533#[test]
7534fn test_vtkMutableUndirectedGraph_create_drop() {
7535    let obj = vtkMutableUndirectedGraph::new();
7536    let ptr = obj.0;
7537    assert!(!ptr.is_null());
7538    assert!(unsafe { !obj._get_ptr().is_null() });
7539    drop(obj);
7540    let new_obj = vtkMutableUndirectedGraph(ptr);
7541    assert!(unsafe { new_obj._get_ptr().is_null() });
7542}
7543/// direct / check-free point insertion.
7544///
7545///
7546///
7547/// As a special sub-class of vtkPointLocator, vtkNonMergingPointLocator is
7548/// intended for direct / check-free insertion of points into a vtkPoints
7549/// object. In other words, any given point is always directly inserted.
7550/// The name emphasizes the difference between this class and its sibling
7551/// class vtkMergePoints in that the latter class performs check-based zero
7552/// tolerance point insertion (or to 'merge' exactly duplicate / coincident
7553/// points) by exploiting the uniform bin mechanism employed by the parent
7554/// class vtkPointLocator. vtkPointLocator allows for generic (zero and non-
7555/// zero) tolerance point insertion as well as point location.
7556///
7557/// @sa
7558/// vtkIncrementalPointLocator vtkPointLocator vtkMergePoints
7559#[allow(non_camel_case_types)]
7560pub struct vtkNonMergingPointLocator(*mut core::ffi::c_void);
7561impl vtkNonMergingPointLocator {
7562    /// Creates a new [vtkNonMergingPointLocator] wrapped inside `vtkNew`
7563    #[doc(alias = "vtkNonMergingPointLocator")]
7564    pub fn new() -> Self {
7565        unsafe extern "C" {
7566            fn vtkNonMergingPointLocator_new() -> *mut core::ffi::c_void;
7567        }
7568        Self(unsafe { &mut *vtkNonMergingPointLocator_new() })
7569    }
7570    #[cfg(test)]
7571    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7572        unsafe extern "C" {
7573            fn vtkNonMergingPointLocator_get_ptr(
7574                sself: *mut core::ffi::c_void,
7575            ) -> *mut core::ffi::c_void;
7576        }
7577        unsafe { vtkNonMergingPointLocator_get_ptr(self.0) }
7578    }
7579}
7580impl std::default::Default for vtkNonMergingPointLocator {
7581    fn default() -> Self {
7582        Self::new()
7583    }
7584}
7585impl Drop for vtkNonMergingPointLocator {
7586    fn drop(&mut self) {
7587        unsafe extern "C" {
7588            fn vtkNonMergingPointLocator_destructor(sself: *mut core::ffi::c_void);
7589        }
7590        unsafe { vtkNonMergingPointLocator_destructor(self.0) }
7591        self.0 = core::ptr::null_mut();
7592    }
7593}
7594#[test]
7595fn test_vtkNonMergingPointLocator_create_drop() {
7596    let obj = vtkNonMergingPointLocator::new();
7597    let ptr = obj.0;
7598    assert!(!ptr.is_null());
7599    assert!(unsafe { !obj._get_ptr().is_null() });
7600    drop(obj);
7601    let new_obj = vtkNonMergingPointLocator(ptr);
7602    assert!(unsafe { new_obj._get_ptr().is_null() });
7603}
7604/// A concrete instance of vtkUniformGridAMR to store uniform grids at different
7605///
7606/// levels of resolution that do not overlap with each other.
7607///
7608/// @sa
7609/// vtkUniformGridAMR
7610#[allow(non_camel_case_types)]
7611pub struct vtkNonOverlappingAMR(*mut core::ffi::c_void);
7612impl vtkNonOverlappingAMR {
7613    /// Creates a new [vtkNonOverlappingAMR] wrapped inside `vtkNew`
7614    #[doc(alias = "vtkNonOverlappingAMR")]
7615    pub fn new() -> Self {
7616        unsafe extern "C" {
7617            fn vtkNonOverlappingAMR_new() -> *mut core::ffi::c_void;
7618        }
7619        Self(unsafe { &mut *vtkNonOverlappingAMR_new() })
7620    }
7621    #[cfg(test)]
7622    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7623        unsafe extern "C" {
7624            fn vtkNonOverlappingAMR_get_ptr(
7625                sself: *mut core::ffi::c_void,
7626            ) -> *mut core::ffi::c_void;
7627        }
7628        unsafe { vtkNonOverlappingAMR_get_ptr(self.0) }
7629    }
7630}
7631impl std::default::Default for vtkNonOverlappingAMR {
7632    fn default() -> Self {
7633        Self::new()
7634    }
7635}
7636impl Drop for vtkNonOverlappingAMR {
7637    fn drop(&mut self) {
7638        unsafe extern "C" {
7639            fn vtkNonOverlappingAMR_destructor(sself: *mut core::ffi::c_void);
7640        }
7641        unsafe { vtkNonOverlappingAMR_destructor(self.0) }
7642        self.0 = core::ptr::null_mut();
7643    }
7644}
7645#[test]
7646fn test_vtkNonOverlappingAMR_create_drop() {
7647    let obj = vtkNonOverlappingAMR::new();
7648    let ptr = obj.0;
7649    assert!(!ptr.is_null());
7650    assert!(unsafe { !obj._get_ptr().is_null() });
7651    drop(obj);
7652    let new_obj = vtkNonOverlappingAMR(ptr);
7653    assert!(unsafe { new_obj._get_ptr().is_null() });
7654}
7655/// an octree spatial decomposition of a set of points
7656///
7657///
7658///
7659/// Given a vtkDataSet, create an octree that is locally refined
7660/// such that all leaf octants contain less than a certain
7661/// amount of points.  Note that there is no size constraint that
7662/// a leaf octant in relation to any of its neighbors.
7663///
7664/// This class can also generate a PolyData representation of
7665/// the boundaries of the spatial regions in the decomposition.
7666///
7667/// @sa
7668/// vtkLocator vtkPointLocator vtkOctreePointLocatorNode
7669#[allow(non_camel_case_types)]
7670pub struct vtkOctreePointLocator(*mut core::ffi::c_void);
7671impl vtkOctreePointLocator {
7672    /// Creates a new [vtkOctreePointLocator] wrapped inside `vtkNew`
7673    #[doc(alias = "vtkOctreePointLocator")]
7674    pub fn new() -> Self {
7675        unsafe extern "C" {
7676            fn vtkOctreePointLocator_new() -> *mut core::ffi::c_void;
7677        }
7678        Self(unsafe { &mut *vtkOctreePointLocator_new() })
7679    }
7680    #[cfg(test)]
7681    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7682        unsafe extern "C" {
7683            fn vtkOctreePointLocator_get_ptr(
7684                sself: *mut core::ffi::c_void,
7685            ) -> *mut core::ffi::c_void;
7686        }
7687        unsafe { vtkOctreePointLocator_get_ptr(self.0) }
7688    }
7689}
7690impl std::default::Default for vtkOctreePointLocator {
7691    fn default() -> Self {
7692        Self::new()
7693    }
7694}
7695impl Drop for vtkOctreePointLocator {
7696    fn drop(&mut self) {
7697        unsafe extern "C" {
7698            fn vtkOctreePointLocator_destructor(sself: *mut core::ffi::c_void);
7699        }
7700        unsafe { vtkOctreePointLocator_destructor(self.0) }
7701        self.0 = core::ptr::null_mut();
7702    }
7703}
7704#[test]
7705fn test_vtkOctreePointLocator_create_drop() {
7706    let obj = vtkOctreePointLocator::new();
7707    let ptr = obj.0;
7708    assert!(!ptr.is_null());
7709    assert!(unsafe { !obj._get_ptr().is_null() });
7710    drop(obj);
7711    let new_obj = vtkOctreePointLocator(ptr);
7712    assert!(unsafe { new_obj._get_ptr().is_null() });
7713}
7714/// Octree node that has 8 children each of equal size
7715///
7716///
7717///
7718/// This class represents a single spatial region in a 3D axis octant
7719/// partitioning.  It is intended to work efficiently with the
7720/// vtkOctreePointLocator and is not meant for general use.  It is assumed
7721/// the region bounds some set of points.  The ordering of the children is
7722/// (-x,-y,-z),(+x,-y,-z),(-x,+y,-z),(+x,+y,-z),(-x,-y,+z),(+x,-y,+z),
7723/// (-x,+y,+z),(+x,+y,+z).  The portion of the domain assigned to an
7724/// octant is Min < x <= Max.
7725///
7726/// @sa
7727/// vtkOctreePointLocator
7728#[allow(non_camel_case_types)]
7729pub struct vtkOctreePointLocatorNode(*mut core::ffi::c_void);
7730impl vtkOctreePointLocatorNode {
7731    /// Creates a new [vtkOctreePointLocatorNode] wrapped inside `vtkNew`
7732    #[doc(alias = "vtkOctreePointLocatorNode")]
7733    pub fn new() -> Self {
7734        unsafe extern "C" {
7735            fn vtkOctreePointLocatorNode_new() -> *mut core::ffi::c_void;
7736        }
7737        Self(unsafe { &mut *vtkOctreePointLocatorNode_new() })
7738    }
7739    #[cfg(test)]
7740    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7741        unsafe extern "C" {
7742            fn vtkOctreePointLocatorNode_get_ptr(
7743                sself: *mut core::ffi::c_void,
7744            ) -> *mut core::ffi::c_void;
7745        }
7746        unsafe { vtkOctreePointLocatorNode_get_ptr(self.0) }
7747    }
7748}
7749impl std::default::Default for vtkOctreePointLocatorNode {
7750    fn default() -> Self {
7751        Self::new()
7752    }
7753}
7754impl Drop for vtkOctreePointLocatorNode {
7755    fn drop(&mut self) {
7756        unsafe extern "C" {
7757            fn vtkOctreePointLocatorNode_destructor(sself: *mut core::ffi::c_void);
7758        }
7759        unsafe { vtkOctreePointLocatorNode_destructor(self.0) }
7760        self.0 = core::ptr::null_mut();
7761    }
7762}
7763#[test]
7764fn test_vtkOctreePointLocatorNode_create_drop() {
7765    let obj = vtkOctreePointLocatorNode::new();
7766    let ptr = obj.0;
7767    assert!(!ptr.is_null());
7768    assert!(unsafe { !obj._get_ptr().is_null() });
7769    drop(obj);
7770    let new_obj = vtkOctreePointLocatorNode(ptr);
7771    assert!(unsafe { new_obj._get_ptr().is_null() });
7772}
7773/// helper class to generate triangulations
7774///
7775///
7776/// This class is used to generate unique triangulations of points. The
7777/// uniqueness of the triangulation is controlled by the id of the inserted
7778/// points in combination with a Delaunay criterion. The class is designed to
7779/// be as fast as possible (since the algorithm can be slow) and uses block
7780/// memory allocations to support rapid triangulation generation. Also, the
7781/// assumption behind the class is that a maximum of hundreds of points are to
7782/// be triangulated. If you desire more robust triangulation methods use
7783/// vtkPolygon::Triangulate(), vtkDelaunay2D, or vtkDelaunay3D.
7784///
7785/// @par Background:
7786/// This work is documented in the technical paper: W.J. Schroeder, B. Geveci,
7787/// M. Malaterre. Compatible Triangulations of Spatial Decompositions. In
7788/// Proceedings of Visualization 2004, IEEE Press October 2004.
7789///
7790/// @par Background:
7791/// Delaunay triangulations are unique assuming a random distribution of input
7792/// points. The 3D Delaunay criterion is as follows: the circumsphere of each
7793/// tetrahedron contains no other points of the triangulation except for the
7794/// four points defining the tetrahedron.  In application this property is
7795/// hard to satisfy because objects like cubes are defined by eight points all
7796/// sharing the same circumsphere (center and radius); hence the Delaunay
7797/// triangulation is not unique.  These so-called degenerate situations are
7798/// typically resolved by arbitrary selecting a triangulation. This code does
7799/// something different: it resolves degenerate triangulations by modifying
7800/// the "InCircumsphere" method to use a slightly smaller radius. Hence,
7801/// degenerate points are always considered "out" of the circumsphere. This,
7802/// in combination with an ordering (based on id) of the input points,
7803/// guarantees a unique triangulation.
7804///
7805/// @par Background:
7806/// There is another related characteristic of Delaunay triangulations. Given
7807/// a N-dimensional Delaunay triangulation, points laying on a (N-1) dimensional
7808/// plane also form a (N-1) Delaunay triangulation. This means for example,
7809/// that if a 3D cell is defined by a set of (2D) planar faces, then the
7810/// face triangulations are Delaunay. Combining this with the method to
7811/// generate unique triangulations described previously, the triangulations
7812/// on the face are guaranteed unique. This fact can be used to triangulate
7813/// 3D objects in such a way to guarantee compatible face triangulations.
7814/// This is a very useful fact for parallel processing, or performing
7815/// operations like clipping that require compatible triangulations across
7816/// 3D cell faces. (See vtkClipVolume for an example.)
7817///
7818/// @par Background:
7819/// A special feature of this class is that it can generate triangulation
7820/// templates on the fly. If template triangulation is enabled, then the
7821/// ordered triangulator will first triangulate the cell using the slower
7822/// ordered Delaunay approach, and then store the result as a template.
7823/// Later, if the same cell type and cell configuration is encountered,
7824/// then the template is reused which greatly speeds the triangulation.
7825///
7826/// @warning
7827/// Duplicate vertices will be ignored, i.e., if two points have the same
7828/// coordinates the second one is discarded. The implications are that the
7829/// user of this class must prevent duplicate points. Because the precision
7830/// of this algorithm is double, it's also a good idea to merge points
7831/// that are within some epsilon of one another.
7832///
7833/// @warning
7834/// The triangulation is performed using the parametric coordinates of the
7835/// inserted points. Therefore the bounds (see InitTriangulation()) should
7836/// represent the range of the parametric coordinates of the inserted points.
7837///
7838/// @sa
7839/// vtkDelaunay2D vtkDelaunay3D vtkPolygon
7840#[allow(non_camel_case_types)]
7841pub struct vtkOrderedTriangulator(*mut core::ffi::c_void);
7842impl vtkOrderedTriangulator {
7843    /// Creates a new [vtkOrderedTriangulator] wrapped inside `vtkNew`
7844    #[doc(alias = "vtkOrderedTriangulator")]
7845    pub fn new() -> Self {
7846        unsafe extern "C" {
7847            fn vtkOrderedTriangulator_new() -> *mut core::ffi::c_void;
7848        }
7849        Self(unsafe { &mut *vtkOrderedTriangulator_new() })
7850    }
7851    #[cfg(test)]
7852    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7853        unsafe extern "C" {
7854            fn vtkOrderedTriangulator_get_ptr(
7855                sself: *mut core::ffi::c_void,
7856            ) -> *mut core::ffi::c_void;
7857        }
7858        unsafe { vtkOrderedTriangulator_get_ptr(self.0) }
7859    }
7860}
7861impl std::default::Default for vtkOrderedTriangulator {
7862    fn default() -> Self {
7863        Self::new()
7864    }
7865}
7866impl Drop for vtkOrderedTriangulator {
7867    fn drop(&mut self) {
7868        unsafe extern "C" {
7869            fn vtkOrderedTriangulator_destructor(sself: *mut core::ffi::c_void);
7870        }
7871        unsafe { vtkOrderedTriangulator_destructor(self.0) }
7872        self.0 = core::ptr::null_mut();
7873    }
7874}
7875#[test]
7876fn test_vtkOrderedTriangulator_create_drop() {
7877    let obj = vtkOrderedTriangulator::new();
7878    let ptr = obj.0;
7879    assert!(!ptr.is_null());
7880    assert!(unsafe { !obj._get_ptr().is_null() });
7881    drop(obj);
7882    let new_obj = vtkOrderedTriangulator(ptr);
7883    assert!(unsafe { new_obj._get_ptr().is_null() });
7884}
7885/// Iterates through all outgoing edges from a vertex.
7886///
7887///
7888///
7889/// vtkOutEdgeIterator iterates through all edges whose source is a particular
7890/// vertex. Instantiate this class directly and call Initialize() to traverse
7891/// the vertex of a graph. Alternately, use GetInEdges() on the graph to
7892/// initialize the iterator. it->Next() returns a vtkOutEdgeType structure,
7893/// which contains Id, the edge's id, and Target, the edge's target vertex.
7894///
7895/// @sa
7896/// vtkGraph vtkInEdgeIterator
7897#[allow(non_camel_case_types)]
7898pub struct vtkOutEdgeIterator(*mut core::ffi::c_void);
7899impl vtkOutEdgeIterator {
7900    /// Creates a new [vtkOutEdgeIterator] wrapped inside `vtkNew`
7901    #[doc(alias = "vtkOutEdgeIterator")]
7902    pub fn new() -> Self {
7903        unsafe extern "C" {
7904            fn vtkOutEdgeIterator_new() -> *mut core::ffi::c_void;
7905        }
7906        Self(unsafe { &mut *vtkOutEdgeIterator_new() })
7907    }
7908    #[cfg(test)]
7909    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7910        unsafe extern "C" {
7911            fn vtkOutEdgeIterator_get_ptr(
7912                sself: *mut core::ffi::c_void,
7913            ) -> *mut core::ffi::c_void;
7914        }
7915        unsafe { vtkOutEdgeIterator_get_ptr(self.0) }
7916    }
7917}
7918impl std::default::Default for vtkOutEdgeIterator {
7919    fn default() -> Self {
7920        Self::new()
7921    }
7922}
7923impl Drop for vtkOutEdgeIterator {
7924    fn drop(&mut self) {
7925        unsafe extern "C" {
7926            fn vtkOutEdgeIterator_destructor(sself: *mut core::ffi::c_void);
7927        }
7928        unsafe { vtkOutEdgeIterator_destructor(self.0) }
7929        self.0 = core::ptr::null_mut();
7930    }
7931}
7932#[test]
7933fn test_vtkOutEdgeIterator_create_drop() {
7934    let obj = vtkOutEdgeIterator::new();
7935    let ptr = obj.0;
7936    assert!(!ptr.is_null());
7937    assert!(unsafe { !obj._get_ptr().is_null() });
7938    drop(obj);
7939    let new_obj = vtkOutEdgeIterator(ptr);
7940    assert!(unsafe { new_obj._get_ptr().is_null() });
7941}
7942/// hierarchical dataset of vtkUniformGrids
7943///
7944///
7945///
7946/// vtkOverlappingAMR extends vtkUniformGridAMR by exposing access to the
7947/// amr meta data, which stores all structural information represented
7948/// by an vtkAMRInformation object
7949///
7950/// @sa
7951/// vtkAMRInformation
7952#[allow(non_camel_case_types)]
7953pub struct vtkOverlappingAMR(*mut core::ffi::c_void);
7954impl vtkOverlappingAMR {
7955    /// Creates a new [vtkOverlappingAMR] wrapped inside `vtkNew`
7956    #[doc(alias = "vtkOverlappingAMR")]
7957    pub fn new() -> Self {
7958        unsafe extern "C" {
7959            fn vtkOverlappingAMR_new() -> *mut core::ffi::c_void;
7960        }
7961        Self(unsafe { &mut *vtkOverlappingAMR_new() })
7962    }
7963    #[cfg(test)]
7964    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
7965        unsafe extern "C" {
7966            fn vtkOverlappingAMR_get_ptr(
7967                sself: *mut core::ffi::c_void,
7968            ) -> *mut core::ffi::c_void;
7969        }
7970        unsafe { vtkOverlappingAMR_get_ptr(self.0) }
7971    }
7972}
7973impl std::default::Default for vtkOverlappingAMR {
7974    fn default() -> Self {
7975        Self::new()
7976    }
7977}
7978impl Drop for vtkOverlappingAMR {
7979    fn drop(&mut self) {
7980        unsafe extern "C" {
7981            fn vtkOverlappingAMR_destructor(sself: *mut core::ffi::c_void);
7982        }
7983        unsafe { vtkOverlappingAMR_destructor(self.0) }
7984        self.0 = core::ptr::null_mut();
7985    }
7986}
7987#[test]
7988fn test_vtkOverlappingAMR_create_drop() {
7989    let obj = vtkOverlappingAMR::new();
7990    let ptr = obj.0;
7991    assert!(!ptr.is_null());
7992    assert!(unsafe { !obj._get_ptr().is_null() });
7993    drop(obj);
7994    let new_obj = vtkOverlappingAMR(ptr);
7995    assert!(unsafe { new_obj._get_ptr().is_null() });
7996}
7997/// composite dataset to encapsulates a dataset consisting of
7998///
7999/// partitions.
8000///
8001/// A vtkPartitionedDataSet dataset groups multiple datasets together.
8002/// For example, say a simulation running in parallel on 16 processes
8003/// generated 16 datasets that when considering together form a whole
8004/// dataset. These are referred to as the partitions of the whole dataset.
8005/// Now imagine that we want to load a volume of 16 partitions in a
8006/// visualization cluster of 4 nodes. Each node could get 4 partitions,
8007/// not necessarily forming a whole rectangular region. In this case,
8008/// it is not possible to append the 4 partitions together into a vtkImageData.
8009/// We can then collect these 4 partitions together using a
8010/// vtkPartitionedDataSet.
8011///
8012/// It is required that all non-empty partitions have the same arrays
8013/// and that they can be processed together as a whole by the same kind of
8014/// filter. However, it is not required that they are of the same type.
8015/// For example, it is possible to have structured datasets together with
8016/// unstructured datasets as long as they are compatible meshes (i.e. can
8017/// be processed together for the same kind of filter).
8018#[allow(non_camel_case_types)]
8019pub struct vtkPartitionedDataSet(*mut core::ffi::c_void);
8020impl vtkPartitionedDataSet {
8021    /// Creates a new [vtkPartitionedDataSet] wrapped inside `vtkNew`
8022    #[doc(alias = "vtkPartitionedDataSet")]
8023    pub fn new() -> Self {
8024        unsafe extern "C" {
8025            fn vtkPartitionedDataSet_new() -> *mut core::ffi::c_void;
8026        }
8027        Self(unsafe { &mut *vtkPartitionedDataSet_new() })
8028    }
8029    #[cfg(test)]
8030    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8031        unsafe extern "C" {
8032            fn vtkPartitionedDataSet_get_ptr(
8033                sself: *mut core::ffi::c_void,
8034            ) -> *mut core::ffi::c_void;
8035        }
8036        unsafe { vtkPartitionedDataSet_get_ptr(self.0) }
8037    }
8038}
8039impl std::default::Default for vtkPartitionedDataSet {
8040    fn default() -> Self {
8041        Self::new()
8042    }
8043}
8044impl Drop for vtkPartitionedDataSet {
8045    fn drop(&mut self) {
8046        unsafe extern "C" {
8047            fn vtkPartitionedDataSet_destructor(sself: *mut core::ffi::c_void);
8048        }
8049        unsafe { vtkPartitionedDataSet_destructor(self.0) }
8050        self.0 = core::ptr::null_mut();
8051    }
8052}
8053#[test]
8054fn test_vtkPartitionedDataSet_create_drop() {
8055    let obj = vtkPartitionedDataSet::new();
8056    let ptr = obj.0;
8057    assert!(!ptr.is_null());
8058    assert!(unsafe { !obj._get_ptr().is_null() });
8059    drop(obj);
8060    let new_obj = vtkPartitionedDataSet(ptr);
8061    assert!(unsafe { new_obj._get_ptr().is_null() });
8062}
8063/// Composite dataset that groups datasets as a collection.
8064///
8065///
8066/// vtkPartitionedDataSetCollection is a vtkCompositeDataSet that stores
8067/// a collection of non-null vtkPartitionedDataSets. These items can represent
8068/// different concepts depending on the context. For example, they can
8069/// represent region of different materials in a simulation or parts in
8070/// an assembly. It is not requires that items have anything in common.
8071/// For example, they can have completely different point or cell arrays.
8072#[allow(non_camel_case_types)]
8073pub struct vtkPartitionedDataSetCollection(*mut core::ffi::c_void);
8074impl vtkPartitionedDataSetCollection {
8075    /// Creates a new [vtkPartitionedDataSetCollection] wrapped inside `vtkNew`
8076    #[doc(alias = "vtkPartitionedDataSetCollection")]
8077    pub fn new() -> Self {
8078        unsafe extern "C" {
8079            fn vtkPartitionedDataSetCollection_new() -> *mut core::ffi::c_void;
8080        }
8081        Self(unsafe { &mut *vtkPartitionedDataSetCollection_new() })
8082    }
8083    #[cfg(test)]
8084    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8085        unsafe extern "C" {
8086            fn vtkPartitionedDataSetCollection_get_ptr(
8087                sself: *mut core::ffi::c_void,
8088            ) -> *mut core::ffi::c_void;
8089        }
8090        unsafe { vtkPartitionedDataSetCollection_get_ptr(self.0) }
8091    }
8092}
8093impl std::default::Default for vtkPartitionedDataSetCollection {
8094    fn default() -> Self {
8095        Self::new()
8096    }
8097}
8098impl Drop for vtkPartitionedDataSetCollection {
8099    fn drop(&mut self) {
8100        unsafe extern "C" {
8101            fn vtkPartitionedDataSetCollection_destructor(sself: *mut core::ffi::c_void);
8102        }
8103        unsafe { vtkPartitionedDataSetCollection_destructor(self.0) }
8104        self.0 = core::ptr::null_mut();
8105    }
8106}
8107#[test]
8108fn test_vtkPartitionedDataSetCollection_create_drop() {
8109    let obj = vtkPartitionedDataSetCollection::new();
8110    let ptr = obj.0;
8111    assert!(!ptr.is_null());
8112    assert!(unsafe { !obj._get_ptr().is_null() });
8113    drop(obj);
8114    let new_obj = vtkPartitionedDataSetCollection(ptr);
8115    assert!(unsafe { new_obj._get_ptr().is_null() });
8116}
8117/// concrete dataset representing a path defined by Bezier
8118///
8119/// curves.
8120///
8121/// vtkPath provides a container for paths composed of line segments,
8122/// 2nd-order (quadratic) and 3rd-order (cubic) Bezier curves.
8123#[allow(non_camel_case_types)]
8124pub struct vtkPath(*mut core::ffi::c_void);
8125impl vtkPath {
8126    /// Creates a new [vtkPath] wrapped inside `vtkNew`
8127    #[doc(alias = "vtkPath")]
8128    pub fn new() -> Self {
8129        unsafe extern "C" {
8130            fn vtkPath_new() -> *mut core::ffi::c_void;
8131        }
8132        Self(unsafe { &mut *vtkPath_new() })
8133    }
8134    #[cfg(test)]
8135    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8136        unsafe extern "C" {
8137            fn vtkPath_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
8138        }
8139        unsafe { vtkPath_get_ptr(self.0) }
8140    }
8141}
8142impl std::default::Default for vtkPath {
8143    fn default() -> Self {
8144        Self::new()
8145    }
8146}
8147impl Drop for vtkPath {
8148    fn drop(&mut self) {
8149        unsafe extern "C" {
8150            fn vtkPath_destructor(sself: *mut core::ffi::c_void);
8151        }
8152        unsafe { vtkPath_destructor(self.0) }
8153        self.0 = core::ptr::null_mut();
8154    }
8155}
8156#[test]
8157fn test_vtkPath_create_drop() {
8158    let obj = vtkPath::new();
8159    let ptr = obj.0;
8160    assert!(!ptr.is_null());
8161    assert!(unsafe { !obj._get_ptr().is_null() });
8162    drop(obj);
8163    let new_obj = vtkPath(ptr);
8164    assert!(unsafe { new_obj._get_ptr().is_null() });
8165}
8166/// a 3D cell that represents a convex prism with
8167///
8168/// pentagonal base
8169///
8170/// vtkPentagonalPrism is a concrete implementation of vtkCell to represent a
8171/// linear convex 3D prism with pentagonal base. Such prism is defined by the
8172/// ten points (0-9), where (0,1,2,3,4) is the base of the prism which, using
8173/// the right hand rule, forms a pentagon whose normal points is in the direction
8174/// of the opposite face (5,6,7,8,9).
8175///
8176/// @par Thanks:
8177/// Thanks to Philippe Guerville who developed this class.
8178/// Thanks to Charles Pignerol (CEA-DAM, France) who ported this class under
8179/// VTK 4. <br>
8180/// Thanks to Jean Favre (CSCS, Switzerland) who contributed to integrate this
8181/// class in VTK. <br>
8182/// Please address all comments to Jean Favre (jfavre at cscs.ch).
8183///
8184/// @par Thanks:
8185/// The Interpolation functions and derivatives were changed in June
8186/// 2015 by Bill Lorensen. These changes follow the formulation in:
8187/// http://dilbert.engr.ucdavis.edu/~suku/nem/papers/polyelas.pdf
8188/// NOTE: An additional copy of this paper is located at:
8189/// http://www.vtk.org/Wiki/File:ApplicationOfPolygonalFiniteElementsInLinearElasticity.pdf
8190#[allow(non_camel_case_types)]
8191pub struct vtkPentagonalPrism(*mut core::ffi::c_void);
8192impl vtkPentagonalPrism {
8193    /// Creates a new [vtkPentagonalPrism] wrapped inside `vtkNew`
8194    #[doc(alias = "vtkPentagonalPrism")]
8195    pub fn new() -> Self {
8196        unsafe extern "C" {
8197            fn vtkPentagonalPrism_new() -> *mut core::ffi::c_void;
8198        }
8199        Self(unsafe { &mut *vtkPentagonalPrism_new() })
8200    }
8201    #[cfg(test)]
8202    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8203        unsafe extern "C" {
8204            fn vtkPentagonalPrism_get_ptr(
8205                sself: *mut core::ffi::c_void,
8206            ) -> *mut core::ffi::c_void;
8207        }
8208        unsafe { vtkPentagonalPrism_get_ptr(self.0) }
8209    }
8210}
8211impl std::default::Default for vtkPentagonalPrism {
8212    fn default() -> Self {
8213        Self::new()
8214    }
8215}
8216impl Drop for vtkPentagonalPrism {
8217    fn drop(&mut self) {
8218        unsafe extern "C" {
8219            fn vtkPentagonalPrism_destructor(sself: *mut core::ffi::c_void);
8220        }
8221        unsafe { vtkPentagonalPrism_destructor(self.0) }
8222        self.0 = core::ptr::null_mut();
8223    }
8224}
8225#[test]
8226fn test_vtkPentagonalPrism_create_drop() {
8227    let obj = vtkPentagonalPrism::new();
8228    let ptr = obj.0;
8229    assert!(!ptr.is_null());
8230    assert!(unsafe { !obj._get_ptr().is_null() });
8231    drop(obj);
8232    let new_obj = vtkPentagonalPrism(ptr);
8233    assert!(unsafe { new_obj._get_ptr().is_null() });
8234}
8235/// an implicit function that implements Perlin noise
8236///
8237///
8238/// vtkPerlinNoise computes a Perlin noise field as an implicit function.
8239/// vtkPerlinNoise is a concrete implementation of vtkImplicitFunction.
8240/// Perlin noise, originally described by Ken Perlin, is a non-periodic and
8241/// continuous noise function useful for modeling real-world objects.
8242///
8243/// The amplitude and frequency of the noise pattern are adjustable.  This
8244/// implementation of Perlin noise is derived closely from Greg Ward's version
8245/// in Graphics Gems II.
8246///
8247/// @sa
8248/// vtkImplicitFunction
8249#[allow(non_camel_case_types)]
8250pub struct vtkPerlinNoise(*mut core::ffi::c_void);
8251impl vtkPerlinNoise {
8252    /// Creates a new [vtkPerlinNoise] wrapped inside `vtkNew`
8253    #[doc(alias = "vtkPerlinNoise")]
8254    pub fn new() -> Self {
8255        unsafe extern "C" {
8256            fn vtkPerlinNoise_new() -> *mut core::ffi::c_void;
8257        }
8258        Self(unsafe { &mut *vtkPerlinNoise_new() })
8259    }
8260    #[cfg(test)]
8261    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8262        unsafe extern "C" {
8263            fn vtkPerlinNoise_get_ptr(
8264                sself: *mut core::ffi::c_void,
8265            ) -> *mut core::ffi::c_void;
8266        }
8267        unsafe { vtkPerlinNoise_get_ptr(self.0) }
8268    }
8269}
8270impl std::default::Default for vtkPerlinNoise {
8271    fn default() -> Self {
8272        Self::new()
8273    }
8274}
8275impl Drop for vtkPerlinNoise {
8276    fn drop(&mut self) {
8277        unsafe extern "C" {
8278            fn vtkPerlinNoise_destructor(sself: *mut core::ffi::c_void);
8279        }
8280        unsafe { vtkPerlinNoise_destructor(self.0) }
8281        self.0 = core::ptr::null_mut();
8282    }
8283}
8284#[test]
8285fn test_vtkPerlinNoise_create_drop() {
8286    let obj = vtkPerlinNoise::new();
8287    let ptr = obj.0;
8288    assert!(!ptr.is_null());
8289    assert!(unsafe { !obj._get_ptr().is_null() });
8290    drop(obj);
8291    let new_obj = vtkPerlinNoise(ptr);
8292    assert!(unsafe { new_obj._get_ptr().is_null() });
8293}
8294/// Defines a 1D piecewise function.
8295///
8296///
8297///
8298/// Defines a piecewise function mapping. This mapping allows the addition
8299/// of control points, and allows the user to control the function between
8300/// the control points. A piecewise hermite curve is used between control
8301/// points, based on the sharpness and midpoint parameters. A sharpness of
8302/// 0 yields a piecewise linear function and a sharpness of 1 yields a
8303/// piecewise constant function. The midpoint is the normalized distance
8304/// between control points at which the curve reaches the median Y value.
8305/// The midpoint and sharpness values specified when adding a node are used
8306/// to control the transition to the next node (the last node's values are
8307/// ignored) Outside the range of nodes, the values are 0 if Clamping is off,
8308/// or the nearest node point if Clamping is on. Using the legacy methods for
8309/// adding points  (which do not have Sharpness and Midpoint parameters)
8310/// will default to Midpoint = 0.5 (halfway between the control points) and
8311/// Sharpness = 0.0 (linear).
8312#[allow(non_camel_case_types)]
8313pub struct vtkPiecewiseFunction(*mut core::ffi::c_void);
8314impl vtkPiecewiseFunction {
8315    /// Creates a new [vtkPiecewiseFunction] wrapped inside `vtkNew`
8316    #[doc(alias = "vtkPiecewiseFunction")]
8317    pub fn new() -> Self {
8318        unsafe extern "C" {
8319            fn vtkPiecewiseFunction_new() -> *mut core::ffi::c_void;
8320        }
8321        Self(unsafe { &mut *vtkPiecewiseFunction_new() })
8322    }
8323    #[cfg(test)]
8324    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8325        unsafe extern "C" {
8326            fn vtkPiecewiseFunction_get_ptr(
8327                sself: *mut core::ffi::c_void,
8328            ) -> *mut core::ffi::c_void;
8329        }
8330        unsafe { vtkPiecewiseFunction_get_ptr(self.0) }
8331    }
8332}
8333impl std::default::Default for vtkPiecewiseFunction {
8334    fn default() -> Self {
8335        Self::new()
8336    }
8337}
8338impl Drop for vtkPiecewiseFunction {
8339    fn drop(&mut self) {
8340        unsafe extern "C" {
8341            fn vtkPiecewiseFunction_destructor(sself: *mut core::ffi::c_void);
8342        }
8343        unsafe { vtkPiecewiseFunction_destructor(self.0) }
8344        self.0 = core::ptr::null_mut();
8345    }
8346}
8347#[test]
8348fn test_vtkPiecewiseFunction_create_drop() {
8349    let obj = vtkPiecewiseFunction::new();
8350    let ptr = obj.0;
8351    assert!(!ptr.is_null());
8352    assert!(unsafe { !obj._get_ptr().is_null() });
8353    drop(obj);
8354    let new_obj = vtkPiecewiseFunction(ptr);
8355    assert!(unsafe { new_obj._get_ptr().is_null() });
8356}
8357/// a cell that represents an orthogonal quadrilateral
8358///
8359///
8360/// vtkPixel is a concrete implementation of vtkCell to represent a 2D
8361/// orthogonal quadrilateral. Unlike vtkQuad, the corners are at right angles,
8362/// and aligned along x-y-z coordinate axes leading to large increases in
8363/// computational efficiency.
8364#[allow(non_camel_case_types)]
8365pub struct vtkPixel(*mut core::ffi::c_void);
8366impl vtkPixel {
8367    /// Creates a new [vtkPixel] wrapped inside `vtkNew`
8368    #[doc(alias = "vtkPixel")]
8369    pub fn new() -> Self {
8370        unsafe extern "C" {
8371            fn vtkPixel_new() -> *mut core::ffi::c_void;
8372        }
8373        Self(unsafe { &mut *vtkPixel_new() })
8374    }
8375    #[cfg(test)]
8376    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8377        unsafe extern "C" {
8378            fn vtkPixel_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
8379        }
8380        unsafe { vtkPixel_get_ptr(self.0) }
8381    }
8382}
8383impl std::default::Default for vtkPixel {
8384    fn default() -> Self {
8385        Self::new()
8386    }
8387}
8388impl Drop for vtkPixel {
8389    fn drop(&mut self) {
8390        unsafe extern "C" {
8391            fn vtkPixel_destructor(sself: *mut core::ffi::c_void);
8392        }
8393        unsafe { vtkPixel_destructor(self.0) }
8394        self.0 = core::ptr::null_mut();
8395    }
8396}
8397#[test]
8398fn test_vtkPixel_create_drop() {
8399    let obj = vtkPixel::new();
8400    let ptr = obj.0;
8401    assert!(!ptr.is_null());
8402    assert!(unsafe { !obj._get_ptr().is_null() });
8403    drop(obj);
8404    let new_obj = vtkPixel(ptr);
8405    assert!(unsafe { new_obj._get_ptr().is_null() });
8406}
8407/// perform various plane computations
8408///
8409///
8410/// vtkPlane provides methods for various plane computations. These include
8411/// projecting points onto a plane, evaluating the plane equation, and
8412/// returning plane normal. vtkPlane is a concrete implementation of the
8413/// abstract class vtkImplicitFunction.
8414#[allow(non_camel_case_types)]
8415pub struct vtkPlane(*mut core::ffi::c_void);
8416impl vtkPlane {
8417    /// Creates a new [vtkPlane] wrapped inside `vtkNew`
8418    #[doc(alias = "vtkPlane")]
8419    pub fn new() -> Self {
8420        unsafe extern "C" {
8421            fn vtkPlane_new() -> *mut core::ffi::c_void;
8422        }
8423        Self(unsafe { &mut *vtkPlane_new() })
8424    }
8425    #[cfg(test)]
8426    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8427        unsafe extern "C" {
8428            fn vtkPlane_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
8429        }
8430        unsafe { vtkPlane_get_ptr(self.0) }
8431    }
8432}
8433impl std::default::Default for vtkPlane {
8434    fn default() -> Self {
8435        Self::new()
8436    }
8437}
8438impl Drop for vtkPlane {
8439    fn drop(&mut self) {
8440        unsafe extern "C" {
8441            fn vtkPlane_destructor(sself: *mut core::ffi::c_void);
8442        }
8443        unsafe { vtkPlane_destructor(self.0) }
8444        self.0 = core::ptr::null_mut();
8445    }
8446}
8447#[test]
8448fn test_vtkPlane_create_drop() {
8449    let obj = vtkPlane::new();
8450    let ptr = obj.0;
8451    assert!(!ptr.is_null());
8452    assert!(unsafe { !obj._get_ptr().is_null() });
8453    drop(obj);
8454    let new_obj = vtkPlane(ptr);
8455    assert!(unsafe { new_obj._get_ptr().is_null() });
8456}
8457/// maintain a list of planes
8458///
8459///
8460/// vtkPlaneCollection is an object that creates and manipulates
8461/// lists of objects of type vtkPlane.
8462/// @sa
8463/// vtkCollection
8464#[allow(non_camel_case_types)]
8465pub struct vtkPlaneCollection(*mut core::ffi::c_void);
8466impl vtkPlaneCollection {
8467    /// Creates a new [vtkPlaneCollection] wrapped inside `vtkNew`
8468    #[doc(alias = "vtkPlaneCollection")]
8469    pub fn new() -> Self {
8470        unsafe extern "C" {
8471            fn vtkPlaneCollection_new() -> *mut core::ffi::c_void;
8472        }
8473        Self(unsafe { &mut *vtkPlaneCollection_new() })
8474    }
8475    #[cfg(test)]
8476    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8477        unsafe extern "C" {
8478            fn vtkPlaneCollection_get_ptr(
8479                sself: *mut core::ffi::c_void,
8480            ) -> *mut core::ffi::c_void;
8481        }
8482        unsafe { vtkPlaneCollection_get_ptr(self.0) }
8483    }
8484}
8485impl std::default::Default for vtkPlaneCollection {
8486    fn default() -> Self {
8487        Self::new()
8488    }
8489}
8490impl Drop for vtkPlaneCollection {
8491    fn drop(&mut self) {
8492        unsafe extern "C" {
8493            fn vtkPlaneCollection_destructor(sself: *mut core::ffi::c_void);
8494        }
8495        unsafe { vtkPlaneCollection_destructor(self.0) }
8496        self.0 = core::ptr::null_mut();
8497    }
8498}
8499#[test]
8500fn test_vtkPlaneCollection_create_drop() {
8501    let obj = vtkPlaneCollection::new();
8502    let ptr = obj.0;
8503    assert!(!ptr.is_null());
8504    assert!(unsafe { !obj._get_ptr().is_null() });
8505    drop(obj);
8506    let new_obj = vtkPlaneCollection(ptr);
8507    assert!(unsafe { new_obj._get_ptr().is_null() });
8508}
8509/// implicit function for convex set of planes
8510///
8511///
8512/// vtkPlanes computes the implicit function and function gradient for a set
8513/// of planes. The planes must define a convex space.
8514///
8515/// The function value is the intersection (i.e., maximum value) obtained by
8516/// evaluating the each of the supplied planes. Hence the value is the maximum
8517/// distance of a point to the convex region defined by the planes. The
8518/// function gradient is the plane normal at the function value.  Note that
8519/// the normals must point outside of the convex region. Thus, a negative
8520/// function value means that a point is inside the convex region.
8521///
8522/// There are several methods to define the set of planes. The most general is
8523/// to supply an instance of vtkPoints and an instance of vtkDataArray. (The
8524/// points define a point on the plane, and the normals corresponding plane
8525/// normals.) Two other specialized ways are to 1) supply six planes defining
8526/// the view frustrum of a camera, and 2) provide a bounding box.
8527///
8528/// @sa
8529/// vtkImplicitBoolean vtkSpheres vtkFrustrumSource vtkCamera
8530#[allow(non_camel_case_types)]
8531pub struct vtkPlanes(*mut core::ffi::c_void);
8532impl vtkPlanes {
8533    /// Creates a new [vtkPlanes] wrapped inside `vtkNew`
8534    #[doc(alias = "vtkPlanes")]
8535    pub fn new() -> Self {
8536        unsafe extern "C" {
8537            fn vtkPlanes_new() -> *mut core::ffi::c_void;
8538        }
8539        Self(unsafe { &mut *vtkPlanes_new() })
8540    }
8541    #[cfg(test)]
8542    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8543        unsafe extern "C" {
8544            fn vtkPlanes_get_ptr(
8545                sself: *mut core::ffi::c_void,
8546            ) -> *mut core::ffi::c_void;
8547        }
8548        unsafe { vtkPlanes_get_ptr(self.0) }
8549    }
8550}
8551impl std::default::Default for vtkPlanes {
8552    fn default() -> Self {
8553        Self::new()
8554    }
8555}
8556impl Drop for vtkPlanes {
8557    fn drop(&mut self) {
8558        unsafe extern "C" {
8559            fn vtkPlanes_destructor(sself: *mut core::ffi::c_void);
8560        }
8561        unsafe { vtkPlanes_destructor(self.0) }
8562        self.0 = core::ptr::null_mut();
8563    }
8564}
8565#[test]
8566fn test_vtkPlanes_create_drop() {
8567    let obj = vtkPlanes::new();
8568    let ptr = obj.0;
8569    assert!(!ptr.is_null());
8570    assert!(unsafe { !obj._get_ptr().is_null() });
8571    drop(obj);
8572    let new_obj = vtkPlanes(ptr);
8573    assert!(unsafe { new_obj._get_ptr().is_null() });
8574}
8575/// A vtkPlanesIntersection object is a
8576///
8577/// vtkPlanes object that can compute whether the arbitrary convex region
8578/// bounded by it's planes intersects an axis-aligned box.
8579///
8580///
8581/// A subclass of vtkPlanes, this class determines whether it
8582/// intersects an axis aligned box.   This is motivated by the
8583/// need to intersect the axis aligned region of a spatial
8584/// decomposition of volume data with various other regions.
8585/// It uses the algorithm from Graphics Gems IV, page 81.
8586///
8587/// @par Caveat:
8588/// An instance of vtkPlanes can be redefined by changing the planes,
8589/// but this subclass then will not know if the region vertices are
8590/// up to date.  (Region vertices can be specified in SetRegionVertices
8591/// or computed by the subclass.)  So Delete and recreate if you want
8592/// to change the set of planes.
8593#[allow(non_camel_case_types)]
8594pub struct vtkPlanesIntersection(*mut core::ffi::c_void);
8595impl vtkPlanesIntersection {
8596    /// Creates a new [vtkPlanesIntersection] wrapped inside `vtkNew`
8597    #[doc(alias = "vtkPlanesIntersection")]
8598    pub fn new() -> Self {
8599        unsafe extern "C" {
8600            fn vtkPlanesIntersection_new() -> *mut core::ffi::c_void;
8601        }
8602        Self(unsafe { &mut *vtkPlanesIntersection_new() })
8603    }
8604    #[cfg(test)]
8605    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8606        unsafe extern "C" {
8607            fn vtkPlanesIntersection_get_ptr(
8608                sself: *mut core::ffi::c_void,
8609            ) -> *mut core::ffi::c_void;
8610        }
8611        unsafe { vtkPlanesIntersection_get_ptr(self.0) }
8612    }
8613}
8614impl std::default::Default for vtkPlanesIntersection {
8615    fn default() -> Self {
8616        Self::new()
8617    }
8618}
8619impl Drop for vtkPlanesIntersection {
8620    fn drop(&mut self) {
8621        unsafe extern "C" {
8622            fn vtkPlanesIntersection_destructor(sself: *mut core::ffi::c_void);
8623        }
8624        unsafe { vtkPlanesIntersection_destructor(self.0) }
8625        self.0 = core::ptr::null_mut();
8626    }
8627}
8628#[test]
8629fn test_vtkPlanesIntersection_create_drop() {
8630    let obj = vtkPlanesIntersection::new();
8631    let ptr = obj.0;
8632    assert!(!ptr.is_null());
8633    assert!(unsafe { !obj._get_ptr().is_null() });
8634    drop(obj);
8635    let new_obj = vtkPlanesIntersection(ptr);
8636    assert!(unsafe { new_obj._get_ptr().is_null() });
8637}
8638/// represent and manipulate point attribute data
8639///
8640///
8641/// vtkPointData is a class that is used to represent and manipulate
8642/// point attribute data (e.g., scalars, vectors, normals, texture
8643/// coordinates, etc.) Most of the functionality is handled by
8644/// vtkDataSetAttributes.
8645///
8646/// By default, `GhostTypesToSkip` is set to `DUPLICATEPOINT | HIDDENPOINT`.
8647/// See `vtkDataSetAttributes` for the definition of those constants.
8648#[allow(non_camel_case_types)]
8649pub struct vtkPointData(*mut core::ffi::c_void);
8650impl vtkPointData {
8651    /// Creates a new [vtkPointData] wrapped inside `vtkNew`
8652    #[doc(alias = "vtkPointData")]
8653    pub fn new() -> Self {
8654        unsafe extern "C" {
8655            fn vtkPointData_new() -> *mut core::ffi::c_void;
8656        }
8657        Self(unsafe { &mut *vtkPointData_new() })
8658    }
8659    #[cfg(test)]
8660    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8661        unsafe extern "C" {
8662            fn vtkPointData_get_ptr(
8663                sself: *mut core::ffi::c_void,
8664            ) -> *mut core::ffi::c_void;
8665        }
8666        unsafe { vtkPointData_get_ptr(self.0) }
8667    }
8668}
8669impl std::default::Default for vtkPointData {
8670    fn default() -> Self {
8671        Self::new()
8672    }
8673}
8674impl Drop for vtkPointData {
8675    fn drop(&mut self) {
8676        unsafe extern "C" {
8677            fn vtkPointData_destructor(sself: *mut core::ffi::c_void);
8678        }
8679        unsafe { vtkPointData_destructor(self.0) }
8680        self.0 = core::ptr::null_mut();
8681    }
8682}
8683#[test]
8684fn test_vtkPointData_create_drop() {
8685    let obj = vtkPointData::new();
8686    let ptr = obj.0;
8687    assert!(!ptr.is_null());
8688    assert!(unsafe { !obj._get_ptr().is_null() });
8689    drop(obj);
8690    let new_obj = vtkPointData(ptr);
8691    assert!(unsafe { new_obj._get_ptr().is_null() });
8692}
8693/// quickly locate points in 3-space
8694///
8695///
8696/// vtkPointLocator is a spatial search object to quickly locate points in 3D.
8697/// vtkPointLocator works by dividing a specified region of space into a regular
8698/// array of "rectangular" buckets, and then keeping a list of points that
8699/// lie in each bucket. Typical operation involves giving a position in 3D
8700/// and finding the closest point.
8701///
8702/// vtkPointLocator has two distinct methods of interaction. In the first
8703/// method, you supply it with a dataset, and it operates on the points in
8704/// the dataset. In the second method, you supply it with an array of points,
8705/// and the object operates on the array.
8706///
8707/// @warning
8708/// Many other types of spatial locators have been developed such as
8709/// octrees and kd-trees. These are often more efficient for the
8710/// operations described here.
8711///
8712/// @warning
8713/// Frequently vtkStaticPointLocator is used in lieu of vtkPointLocator.
8714/// They are very similar in terms of algorithmic approach, however
8715/// vtkStaticCellLocator is threaded and is typically much faster for
8716/// a large number of points (on the order of 3-5x faster). For small numbers
8717/// of points, vtkPointLocator is just as fast as vtkStaticPointLocator.
8718///
8719/// @sa
8720/// vtkCellPicker vtkPointPicker vtkStaticPointLocator
8721#[allow(non_camel_case_types)]
8722pub struct vtkPointLocator(*mut core::ffi::c_void);
8723impl vtkPointLocator {
8724    /// Creates a new [vtkPointLocator] wrapped inside `vtkNew`
8725    #[doc(alias = "vtkPointLocator")]
8726    pub fn new() -> Self {
8727        unsafe extern "C" {
8728            fn vtkPointLocator_new() -> *mut core::ffi::c_void;
8729        }
8730        Self(unsafe { &mut *vtkPointLocator_new() })
8731    }
8732    #[cfg(test)]
8733    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8734        unsafe extern "C" {
8735            fn vtkPointLocator_get_ptr(
8736                sself: *mut core::ffi::c_void,
8737            ) -> *mut core::ffi::c_void;
8738        }
8739        unsafe { vtkPointLocator_get_ptr(self.0) }
8740    }
8741}
8742impl std::default::Default for vtkPointLocator {
8743    fn default() -> Self {
8744        Self::new()
8745    }
8746}
8747impl Drop for vtkPointLocator {
8748    fn drop(&mut self) {
8749        unsafe extern "C" {
8750            fn vtkPointLocator_destructor(sself: *mut core::ffi::c_void);
8751        }
8752        unsafe { vtkPointLocator_destructor(self.0) }
8753        self.0 = core::ptr::null_mut();
8754    }
8755}
8756#[test]
8757fn test_vtkPointLocator_create_drop() {
8758    let obj = vtkPointLocator::new();
8759    let ptr = obj.0;
8760    assert!(!ptr.is_null());
8761    assert!(unsafe { !obj._get_ptr().is_null() });
8762    drop(obj);
8763    let new_obj = vtkPointLocator(ptr);
8764    assert!(unsafe { new_obj._get_ptr().is_null() });
8765}
8766/// concrete class for storing a set of points
8767///
8768///
8769/// vtkPointSet is an concrete class representing a set of points
8770/// that specifies the interface for
8771/// datasets that explicitly use "point" arrays to represent geometry.
8772/// For example, vtkPolyData, vtkUnstructuredGrid, and vtkStructuredGrid
8773/// require point arrays to specify point positions, while vtkImageData
8774/// represents point positions implicitly (and hence is not a subclass
8775/// of vtkImageData).
8776///
8777/// Note: The vtkPolyData and vtkUnstructuredGrid datasets (derived classes of
8778/// vtkPointSet) are often used in geometric computation (e.g.,
8779/// vtkDelaunay2D).  In most cases during filter execution the output geometry
8780/// and/or topology is created once and provided as output; however in a very
8781/// few cases the underlying geometry/topology may be created and then
8782/// incrementally modified. This has implications on the use of supporting
8783/// classes like locators and cell links topological structures which may be
8784/// required to support incremental editing operations. Consequently, there is
8785/// a flag, Editable, that controls whether the dataset can be incrementally
8786/// edited after it is initially created. By default, and for performance
8787/// reasons, vtkPointSet derived classes are created as non-editable.  The few
8788/// methods that require incremental editing capabilities are documented in
8789/// derived classes.
8790///
8791/// Another important feature of vtkPointSet classes is the use of an internal
8792/// locator to speed up certain operations like FindCell(). Depending on the
8793/// application and desired performance, different locators (either a cell or
8794/// point locator) of different locator types may be used, along with different
8795/// strategies for using the locators to perform various operations. See
8796/// the class vtkFindCellStrategy for more information
8797///
8798/// @sa
8799/// vtkPolyData vtkStructuredGrid vtkUnstructuredGrid vtkFindCellStrategy
8800#[allow(non_camel_case_types)]
8801pub struct vtkPointSet(*mut core::ffi::c_void);
8802impl vtkPointSet {
8803    /// Creates a new [vtkPointSet] wrapped inside `vtkNew`
8804    #[doc(alias = "vtkPointSet")]
8805    pub fn new() -> Self {
8806        unsafe extern "C" {
8807            fn vtkPointSet_new() -> *mut core::ffi::c_void;
8808        }
8809        Self(unsafe { &mut *vtkPointSet_new() })
8810    }
8811    #[cfg(test)]
8812    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8813        unsafe extern "C" {
8814            fn vtkPointSet_get_ptr(
8815                sself: *mut core::ffi::c_void,
8816            ) -> *mut core::ffi::c_void;
8817        }
8818        unsafe { vtkPointSet_get_ptr(self.0) }
8819    }
8820}
8821impl std::default::Default for vtkPointSet {
8822    fn default() -> Self {
8823        Self::new()
8824    }
8825}
8826impl Drop for vtkPointSet {
8827    fn drop(&mut self) {
8828        unsafe extern "C" {
8829            fn vtkPointSet_destructor(sself: *mut core::ffi::c_void);
8830        }
8831        unsafe { vtkPointSet_destructor(self.0) }
8832        self.0 = core::ptr::null_mut();
8833    }
8834}
8835#[test]
8836fn test_vtkPointSet_create_drop() {
8837    let obj = vtkPointSet::new();
8838    let ptr = obj.0;
8839    assert!(!ptr.is_null());
8840    assert!(unsafe { !obj._get_ptr().is_null() });
8841    drop(obj);
8842    let new_obj = vtkPointSet(ptr);
8843    assert!(unsafe { new_obj._get_ptr().is_null() });
8844}
8845/// Implementation of vtkCellIterator using
8846///
8847/// vtkPointSet API.
8848#[allow(non_camel_case_types)]
8849pub struct vtkPointSetCellIterator(*mut core::ffi::c_void);
8850impl vtkPointSetCellIterator {
8851    /// Creates a new [vtkPointSetCellIterator] wrapped inside `vtkNew`
8852    #[doc(alias = "vtkPointSetCellIterator")]
8853    pub fn new() -> Self {
8854        unsafe extern "C" {
8855            fn vtkPointSetCellIterator_new() -> *mut core::ffi::c_void;
8856        }
8857        Self(unsafe { &mut *vtkPointSetCellIterator_new() })
8858    }
8859    #[cfg(test)]
8860    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8861        unsafe extern "C" {
8862            fn vtkPointSetCellIterator_get_ptr(
8863                sself: *mut core::ffi::c_void,
8864            ) -> *mut core::ffi::c_void;
8865        }
8866        unsafe { vtkPointSetCellIterator_get_ptr(self.0) }
8867    }
8868}
8869impl std::default::Default for vtkPointSetCellIterator {
8870    fn default() -> Self {
8871        Self::new()
8872    }
8873}
8874impl Drop for vtkPointSetCellIterator {
8875    fn drop(&mut self) {
8876        unsafe extern "C" {
8877            fn vtkPointSetCellIterator_destructor(sself: *mut core::ffi::c_void);
8878        }
8879        unsafe { vtkPointSetCellIterator_destructor(self.0) }
8880        self.0 = core::ptr::null_mut();
8881    }
8882}
8883#[test]
8884fn test_vtkPointSetCellIterator_create_drop() {
8885    let obj = vtkPointSetCellIterator::new();
8886    let ptr = obj.0;
8887    assert!(!ptr.is_null());
8888    assert!(unsafe { !obj._get_ptr().is_null() });
8889    drop(obj);
8890    let new_obj = vtkPointSetCellIterator(ptr);
8891    assert!(unsafe { new_obj._get_ptr().is_null() });
8892}
8893/// the convex hull of the orthogonal
8894///
8895/// projection of the vtkPoints in the 3 coordinate directions
8896///
8897/// a subclass of vtkPoints, it maintains the counter clockwise
8898/// convex hull of the points (projected orthogonally in the
8899/// three coordinate directions) and has a method to
8900/// test for intersection of that hull with an axis aligned
8901/// rectangle.  This is used for intersection tests of 3D volumes.
8902#[allow(non_camel_case_types)]
8903pub struct vtkPointsProjectedHull(*mut core::ffi::c_void);
8904impl vtkPointsProjectedHull {
8905    /// Creates a new [vtkPointsProjectedHull] wrapped inside `vtkNew`
8906    #[doc(alias = "vtkPointsProjectedHull")]
8907    pub fn new() -> Self {
8908        unsafe extern "C" {
8909            fn vtkPointsProjectedHull_new() -> *mut core::ffi::c_void;
8910        }
8911        Self(unsafe { &mut *vtkPointsProjectedHull_new() })
8912    }
8913    #[cfg(test)]
8914    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
8915        unsafe extern "C" {
8916            fn vtkPointsProjectedHull_get_ptr(
8917                sself: *mut core::ffi::c_void,
8918            ) -> *mut core::ffi::c_void;
8919        }
8920        unsafe { vtkPointsProjectedHull_get_ptr(self.0) }
8921    }
8922}
8923impl std::default::Default for vtkPointsProjectedHull {
8924    fn default() -> Self {
8925        Self::new()
8926    }
8927}
8928impl Drop for vtkPointsProjectedHull {
8929    fn drop(&mut self) {
8930        unsafe extern "C" {
8931            fn vtkPointsProjectedHull_destructor(sself: *mut core::ffi::c_void);
8932        }
8933        unsafe { vtkPointsProjectedHull_destructor(self.0) }
8934        self.0 = core::ptr::null_mut();
8935    }
8936}
8937#[test]
8938fn test_vtkPointsProjectedHull_create_drop() {
8939    let obj = vtkPointsProjectedHull::new();
8940    let ptr = obj.0;
8941    assert!(!ptr.is_null());
8942    assert!(unsafe { !obj._get_ptr().is_null() });
8943    drop(obj);
8944    let new_obj = vtkPointsProjectedHull(ptr);
8945    assert!(unsafe { new_obj._get_ptr().is_null() });
8946}
8947/// concrete dataset represents vertices, lines, polygons, and triangle strips
8948///
8949///
8950/// vtkPolyData is a data object that is a concrete implementation of
8951/// vtkDataSet. vtkPolyData represents a geometric structure consisting of
8952/// vertices, lines, polygons, and/or triangle strips. Point and cell
8953/// attribute values (e.g., scalars, vectors, etc.) also are represented.
8954///
8955/// The actual cell types (vtkCellType.h) supported by vtkPolyData are:
8956/// vtkVertex, vtkPolyVertex, vtkLine, vtkPolyLine, vtkTriangle, vtkQuad,
8957/// vtkPolygon, and vtkTriangleStrip.
8958///
8959/// One important feature of vtkPolyData objects is that special traversal and
8960/// data manipulation methods are available to process data. These methods are
8961/// generally more efficient than vtkDataSet methods and should be used
8962/// whenever possible. For example, traversing the cells in a dataset we would
8963/// use GetCell(). To traverse cells with vtkPolyData we would retrieve the
8964/// cell array object representing polygons (for example using GetPolys()) and
8965/// then use vtkCellArray's InitTraversal() and GetNextCell() methods.
8966///
8967/// @warning
8968/// Because vtkPolyData is implemented with four separate instances of
8969/// vtkCellArray to represent 0D vertices, 1D lines, 2D polygons, and 2D
8970/// triangle strips, it is possible to create vtkPolyData instances that
8971/// consist of a mixture of cell types. Because of the design of the class,
8972/// there are certain limitations on how mixed cell types are inserted into
8973/// the vtkPolyData, and in turn the order in which they are processed and
8974/// rendered. To preserve the consistency of cell ids, and to ensure that
8975/// cells with cell data are rendered properly, users must insert mixed cells
8976/// in the order of vertices (vtkVertex and vtkPolyVertex), lines (vtkLine and
8977/// vtkPolyLine), polygons (vtkTriangle, vtkQuad, vtkPolygon), and triangle
8978/// strips (vtkTriangleStrip).
8979///
8980/// @warning
8981/// Some filters when processing vtkPolyData with mixed cell types may process
8982/// the cells in differing ways. Some will convert one type into another
8983/// (e.g., vtkTriangleStrip into vtkTriangles) or expect a certain type
8984/// (vtkDecimatePro expects triangles or triangle strips; vtkTubeFilter
8985/// expects lines). Read the documentation for each filter carefully to
8986/// understand how each part of vtkPolyData is processed.
8987///
8988/// @warning
8989/// Some of the methods specified here function properly only when the dataset
8990/// has been specified as "Editable". They are documented as such.
8991#[allow(non_camel_case_types)]
8992pub struct vtkPolyData(*mut core::ffi::c_void);
8993impl vtkPolyData {
8994    /// Creates a new [vtkPolyData] wrapped inside `vtkNew`
8995    #[doc(alias = "vtkPolyData")]
8996    pub fn new() -> Self {
8997        unsafe extern "C" {
8998            fn vtkPolyData_new() -> *mut core::ffi::c_void;
8999        }
9000        Self(unsafe { &mut *vtkPolyData_new() })
9001    }
9002    #[cfg(test)]
9003    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9004        unsafe extern "C" {
9005            fn vtkPolyData_get_ptr(
9006                sself: *mut core::ffi::c_void,
9007            ) -> *mut core::ffi::c_void;
9008        }
9009        unsafe { vtkPolyData_get_ptr(self.0) }
9010    }
9011}
9012impl std::default::Default for vtkPolyData {
9013    fn default() -> Self {
9014        Self::new()
9015    }
9016}
9017impl Drop for vtkPolyData {
9018    fn drop(&mut self) {
9019        unsafe extern "C" {
9020            fn vtkPolyData_destructor(sself: *mut core::ffi::c_void);
9021        }
9022        unsafe { vtkPolyData_destructor(self.0) }
9023        self.0 = core::ptr::null_mut();
9024    }
9025}
9026#[test]
9027fn test_vtkPolyData_create_drop() {
9028    let obj = vtkPolyData::new();
9029    let ptr = obj.0;
9030    assert!(!ptr.is_null());
9031    assert!(unsafe { !obj._get_ptr().is_null() });
9032    drop(obj);
9033    let new_obj = vtkPolyData(ptr);
9034    assert!(unsafe { new_obj._get_ptr().is_null() });
9035}
9036/// maintain a list of polygonal data objects
9037///
9038///
9039/// vtkPolyDataCollection is an object that creates and manipulates ordered
9040/// lists of datasets of type vtkPolyData.
9041///
9042/// @sa
9043/// vtkDataSetCollection vtkCollection
9044#[allow(non_camel_case_types)]
9045pub struct vtkPolyDataCollection(*mut core::ffi::c_void);
9046impl vtkPolyDataCollection {
9047    /// Creates a new [vtkPolyDataCollection] wrapped inside `vtkNew`
9048    #[doc(alias = "vtkPolyDataCollection")]
9049    pub fn new() -> Self {
9050        unsafe extern "C" {
9051            fn vtkPolyDataCollection_new() -> *mut core::ffi::c_void;
9052        }
9053        Self(unsafe { &mut *vtkPolyDataCollection_new() })
9054    }
9055    #[cfg(test)]
9056    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9057        unsafe extern "C" {
9058            fn vtkPolyDataCollection_get_ptr(
9059                sself: *mut core::ffi::c_void,
9060            ) -> *mut core::ffi::c_void;
9061        }
9062        unsafe { vtkPolyDataCollection_get_ptr(self.0) }
9063    }
9064}
9065impl std::default::Default for vtkPolyDataCollection {
9066    fn default() -> Self {
9067        Self::new()
9068    }
9069}
9070impl Drop for vtkPolyDataCollection {
9071    fn drop(&mut self) {
9072        unsafe extern "C" {
9073            fn vtkPolyDataCollection_destructor(sself: *mut core::ffi::c_void);
9074        }
9075        unsafe { vtkPolyDataCollection_destructor(self.0) }
9076        self.0 = core::ptr::null_mut();
9077    }
9078}
9079#[test]
9080fn test_vtkPolyDataCollection_create_drop() {
9081    let obj = vtkPolyDataCollection::new();
9082    let ptr = obj.0;
9083    assert!(!ptr.is_null());
9084    assert!(unsafe { !obj._get_ptr().is_null() });
9085    drop(obj);
9086    let new_obj = vtkPolyDataCollection(ptr);
9087    assert!(unsafe { new_obj._get_ptr().is_null() });
9088}
9089/// cell represents a set of 1D lines
9090///
9091///
9092/// vtkPolyLine is a concrete implementation of vtkCell to represent a set
9093/// of 1D lines.
9094#[allow(non_camel_case_types)]
9095pub struct vtkPolyLine(*mut core::ffi::c_void);
9096impl vtkPolyLine {
9097    /// Creates a new [vtkPolyLine] wrapped inside `vtkNew`
9098    #[doc(alias = "vtkPolyLine")]
9099    pub fn new() -> Self {
9100        unsafe extern "C" {
9101            fn vtkPolyLine_new() -> *mut core::ffi::c_void;
9102        }
9103        Self(unsafe { &mut *vtkPolyLine_new() })
9104    }
9105    #[cfg(test)]
9106    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9107        unsafe extern "C" {
9108            fn vtkPolyLine_get_ptr(
9109                sself: *mut core::ffi::c_void,
9110            ) -> *mut core::ffi::c_void;
9111        }
9112        unsafe { vtkPolyLine_get_ptr(self.0) }
9113    }
9114}
9115impl std::default::Default for vtkPolyLine {
9116    fn default() -> Self {
9117        Self::new()
9118    }
9119}
9120impl Drop for vtkPolyLine {
9121    fn drop(&mut self) {
9122        unsafe extern "C" {
9123            fn vtkPolyLine_destructor(sself: *mut core::ffi::c_void);
9124        }
9125        unsafe { vtkPolyLine_destructor(self.0) }
9126        self.0 = core::ptr::null_mut();
9127    }
9128}
9129#[test]
9130fn test_vtkPolyLine_create_drop() {
9131    let obj = vtkPolyLine::new();
9132    let ptr = obj.0;
9133    assert!(!ptr.is_null());
9134    assert!(unsafe { !obj._get_ptr().is_null() });
9135    drop(obj);
9136    let new_obj = vtkPolyLine(ptr);
9137    assert!(unsafe { new_obj._get_ptr().is_null() });
9138}
9139/// Implicit function that is generated by extrusion of a polyline along the Z axis
9140///
9141///
9142/// vtkPolyPlane is, as the name suggests, an extrusion of a vtkPolyLine.
9143/// The extrusion direction is assumed to be the Z vector. It can be used in
9144/// combination with a vtkCutter to cut a dataset with a polyplane.
9145/// vtkPolyPlane is a concrete implementation of the abstract class
9146/// vtkImplicitFunction.
9147///
9148/// @todo
9149/// Generalize to extrusions along arbitrary directions.
9150#[allow(non_camel_case_types)]
9151pub struct vtkPolyPlane(*mut core::ffi::c_void);
9152impl vtkPolyPlane {
9153    /// Creates a new [vtkPolyPlane] wrapped inside `vtkNew`
9154    #[doc(alias = "vtkPolyPlane")]
9155    pub fn new() -> Self {
9156        unsafe extern "C" {
9157            fn vtkPolyPlane_new() -> *mut core::ffi::c_void;
9158        }
9159        Self(unsafe { &mut *vtkPolyPlane_new() })
9160    }
9161    #[cfg(test)]
9162    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9163        unsafe extern "C" {
9164            fn vtkPolyPlane_get_ptr(
9165                sself: *mut core::ffi::c_void,
9166            ) -> *mut core::ffi::c_void;
9167        }
9168        unsafe { vtkPolyPlane_get_ptr(self.0) }
9169    }
9170}
9171impl std::default::Default for vtkPolyPlane {
9172    fn default() -> Self {
9173        Self::new()
9174    }
9175}
9176impl Drop for vtkPolyPlane {
9177    fn drop(&mut self) {
9178        unsafe extern "C" {
9179            fn vtkPolyPlane_destructor(sself: *mut core::ffi::c_void);
9180        }
9181        unsafe { vtkPolyPlane_destructor(self.0) }
9182        self.0 = core::ptr::null_mut();
9183    }
9184}
9185#[test]
9186fn test_vtkPolyPlane_create_drop() {
9187    let obj = vtkPolyPlane::new();
9188    let ptr = obj.0;
9189    assert!(!ptr.is_null());
9190    assert!(unsafe { !obj._get_ptr().is_null() });
9191    drop(obj);
9192    let new_obj = vtkPolyPlane(ptr);
9193    assert!(unsafe { new_obj._get_ptr().is_null() });
9194}
9195/// cell represents a set of 0D vertices
9196///
9197///
9198/// vtkPolyVertex is a concrete implementation of vtkCell to represent a
9199/// set of 3D vertices.
9200#[allow(non_camel_case_types)]
9201pub struct vtkPolyVertex(*mut core::ffi::c_void);
9202impl vtkPolyVertex {
9203    /// Creates a new [vtkPolyVertex] wrapped inside `vtkNew`
9204    #[doc(alias = "vtkPolyVertex")]
9205    pub fn new() -> Self {
9206        unsafe extern "C" {
9207            fn vtkPolyVertex_new() -> *mut core::ffi::c_void;
9208        }
9209        Self(unsafe { &mut *vtkPolyVertex_new() })
9210    }
9211    #[cfg(test)]
9212    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9213        unsafe extern "C" {
9214            fn vtkPolyVertex_get_ptr(
9215                sself: *mut core::ffi::c_void,
9216            ) -> *mut core::ffi::c_void;
9217        }
9218        unsafe { vtkPolyVertex_get_ptr(self.0) }
9219    }
9220}
9221impl std::default::Default for vtkPolyVertex {
9222    fn default() -> Self {
9223        Self::new()
9224    }
9225}
9226impl Drop for vtkPolyVertex {
9227    fn drop(&mut self) {
9228        unsafe extern "C" {
9229            fn vtkPolyVertex_destructor(sself: *mut core::ffi::c_void);
9230        }
9231        unsafe { vtkPolyVertex_destructor(self.0) }
9232        self.0 = core::ptr::null_mut();
9233    }
9234}
9235#[test]
9236fn test_vtkPolyVertex_create_drop() {
9237    let obj = vtkPolyVertex::new();
9238    let ptr = obj.0;
9239    assert!(!ptr.is_null());
9240    assert!(unsafe { !obj._get_ptr().is_null() });
9241    drop(obj);
9242    let new_obj = vtkPolyVertex(ptr);
9243    assert!(unsafe { new_obj._get_ptr().is_null() });
9244}
9245/// a cell that represents an n-sided polygon
9246///
9247///
9248/// vtkPolygon is a concrete implementation of vtkCell to represent a 2D
9249/// n-sided polygon. The polygons cannot have any internal holes, and cannot
9250/// self-intersect. Define the polygon with n-points ordered in the counter-
9251/// clockwise direction; do not repeat the last point.
9252#[allow(non_camel_case_types)]
9253pub struct vtkPolygon(*mut core::ffi::c_void);
9254impl vtkPolygon {
9255    /// Creates a new [vtkPolygon] wrapped inside `vtkNew`
9256    #[doc(alias = "vtkPolygon")]
9257    pub fn new() -> Self {
9258        unsafe extern "C" {
9259            fn vtkPolygon_new() -> *mut core::ffi::c_void;
9260        }
9261        Self(unsafe { &mut *vtkPolygon_new() })
9262    }
9263    #[cfg(test)]
9264    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9265        unsafe extern "C" {
9266            fn vtkPolygon_get_ptr(
9267                sself: *mut core::ffi::c_void,
9268            ) -> *mut core::ffi::c_void;
9269        }
9270        unsafe { vtkPolygon_get_ptr(self.0) }
9271    }
9272}
9273impl std::default::Default for vtkPolygon {
9274    fn default() -> Self {
9275        Self::new()
9276    }
9277}
9278impl Drop for vtkPolygon {
9279    fn drop(&mut self) {
9280        unsafe extern "C" {
9281            fn vtkPolygon_destructor(sself: *mut core::ffi::c_void);
9282        }
9283        unsafe { vtkPolygon_destructor(self.0) }
9284        self.0 = core::ptr::null_mut();
9285    }
9286}
9287#[test]
9288fn test_vtkPolygon_create_drop() {
9289    let obj = vtkPolygon::new();
9290    let ptr = obj.0;
9291    assert!(!ptr.is_null());
9292    assert!(unsafe { !obj._get_ptr().is_null() });
9293    drop(obj);
9294    let new_obj = vtkPolygon(ptr);
9295    assert!(unsafe { new_obj._get_ptr().is_null() });
9296}
9297/// A 3D cell defined by a set of polygonal faces
9298///
9299///
9300/// @section Instantiation Instantiation
9301///
9302/// vtkPolyhedron is a concrete implementation of vtkCell that represents a 3D cell
9303/// defined by a set of polygonal faces.
9304///
9305/// To instantiate a vtkPolyhedron, like any vtkCell, one needs to define the
9306/// following structures:
9307/// - A list of point coordinates
9308/// - A list of global point IDs
9309///
9310/// Note that the ordering of points coordinates or IDs is not important.
9311/// However, it MUST be consistent between the two lists.
9312///
9313/// Unlike other kinds of cells (e.g. vtkVoxel), the topology is not directly deduced from points
9314/// coordinates or point IDs ordering; it must be explicitly defined by providing a list of faces
9315/// (see the SetFaces() method). Each face is represented as a sequence of global point Ids.
9316///
9317/// Once point coordinates, point IDs and faces are defined, the Initialize() method should be called
9318/// in order to setup the internal structures and finalize the construction of the polyhedron.
9319///
9320/// Here is an example of vtkPolyhedron instantiation:
9321/// @code{.cpp}
9322///
9323/// //  9 +------+.11
9324/// //    |`.    | `.
9325/// //    |13`+--+---+ 15
9326/// //    |   |  |   |
9327/// //  8 +---+--+.10|
9328/// //     `. |    `.|
9329/// //     12`+------+ 14
9330/// //
9331/// // (Global IDs are arbitrarily chosen between 8 and 15)
9332///
9333/// // Insert point coordinates
9334/// polyhedron->GetPoints()->SetNumberOfPoints(8);
9335/// polyhedron->GetPoints()->SetPoint(0, 0., 0., 0.); // 8
9336/// polyhedron->GetPoints()->SetPoint(1, 0., 1., 0.); // 9
9337/// polyhedron->GetPoints()->SetPoint(2, 1., 0., 0.); // 10
9338/// polyhedron->GetPoints()->SetPoint(3, 1., 1., 0.); // 11
9339/// polyhedron->GetPoints()->SetPoint(4, 0., 0., 1.); // 12
9340/// polyhedron->GetPoints()->SetPoint(5, 0., 1., 1.); // 13
9341/// polyhedron->GetPoints()->SetPoint(6, 1., 0., 1.); // 14
9342/// polyhedron->GetPoints()->SetPoint(7, 1., 1., 1.); // 15
9343///
9344/// // Insert point IDs (global IDs)
9345/// // Note that the canonical ordering (0, 1, ..., 8) is used
9346/// // to correlate point Ids and coordinates
9347/// polyhedron->GetPointIds()->Allocate(8);
9348/// for (int i = 8; i < 16; ++i)
9349/// {
9350/// polyhedron->GetPointIds()->InsertNextId(i);
9351/// }
9352///
9353/// // Describe faces, indexed on global IDs
9354/// vtkIdType faces[31] = { 6, // Number of faces
9355/// 4, 9 , 11, 10, 8 , // Number of points in the face + point IDs
9356/// 4, 11, 15, 14, 10, // Faces are described counter-clockwise
9357/// 4, 15, 13, 12, 14, // looking from the "outside" of the cell
9358/// 4, 13, 9 , 8 , 12,
9359/// 4, 14, 12, 8 , 10,
9360/// 4, 13, 15, 11, 9 };
9361///
9362/// polyhedron->SetFaces(faces);
9363///
9364/// // Initialize the polyhedron
9365/// // This will build internal structures and should be done before the proper
9366/// // use of the cell.
9367/// polyhedron->Initialize();
9368/// @endcode
9369///
9370/// @section Specifications Specifications
9371///
9372/// Polyhedrons described by this class must conform to some criteria in order to avoid errors and
9373/// guarantee good results in terms of visualization and processing.
9374///
9375/// These specifications are described as follows. Polyhedrons must:
9376/// - be watertight : the faces describing the polyhedron should define an enclosed volume
9377/// i.e. define the “inside” and the “outside” of the cell
9378/// - have planar faces : all points defining a face should be in the same 2D plane
9379/// - not be self-intersecting : for example, a face of the polyhedron can’t intersect other ones
9380/// - not contain zero-thickness portions : adjacent faces should not overlap each other even
9381/// partially
9382/// - not contain disconnected elements : detached vertice(s), edge(s) or face(s)
9383/// - be simply connected : vtkPolyhedron must describe a single polyhedron
9384/// - not contain duplicate elements : each point index and each face description should be unique
9385/// - not contain “internal” or “external” faces : for each face, one side should be “inside” the
9386/// cell, the other side “outside”
9387///
9388/// In a more global perspective, polyhedrons must be watertight and manifold.
9389/// In particular, each edge of the polyhedron must be adjacent to exactly two faces.
9390/// Several algorithms like contour, clip or slice will assume that each edge of the polyhedron
9391/// is adjacent to exactly two faces and will definitely lead to bad results (and generate numerous
9392/// warnings) if this criterion is not fulfilled.
9393///
9394/// @section Limitations Limitations
9395///
9396/// The class does not require the polyhedron to be convex. However, the support of concave
9397/// polyhedrons is currently limited. Concavity can lead to bad results with some filters,
9398/// including:
9399/// - Contour: the contour (surface) can be constructed outside of the cell,
9400/// - Triangulate: the current tetrahedralization algorithm can modify the initial
9401/// shape of the polygon (created tetrahedrons can change concave portions of the shape
9402/// to convex ones).
9403///
9404/// @section OtherDetails Other details
9405///
9406/// Interpolation functions and weights are defined / computed using the method of Mean Value
9407/// Coordinates (MVC). See the VTK class vtkMeanValueCoordinatesInterpolator for more information.
9408///
9409/// @sa
9410/// vtkCell3D vtkConvexPointSet vtkMeanValueCoordinatesInterpolator vtkPolyhedronUtilities
9411#[allow(non_camel_case_types)]
9412pub struct vtkPolyhedron(*mut core::ffi::c_void);
9413impl vtkPolyhedron {
9414    /// Creates a new [vtkPolyhedron] wrapped inside `vtkNew`
9415    #[doc(alias = "vtkPolyhedron")]
9416    pub fn new() -> Self {
9417        unsafe extern "C" {
9418            fn vtkPolyhedron_new() -> *mut core::ffi::c_void;
9419        }
9420        Self(unsafe { &mut *vtkPolyhedron_new() })
9421    }
9422    #[cfg(test)]
9423    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9424        unsafe extern "C" {
9425            fn vtkPolyhedron_get_ptr(
9426                sself: *mut core::ffi::c_void,
9427            ) -> *mut core::ffi::c_void;
9428        }
9429        unsafe { vtkPolyhedron_get_ptr(self.0) }
9430    }
9431}
9432impl std::default::Default for vtkPolyhedron {
9433    fn default() -> Self {
9434        Self::new()
9435    }
9436}
9437impl Drop for vtkPolyhedron {
9438    fn drop(&mut self) {
9439        unsafe extern "C" {
9440            fn vtkPolyhedron_destructor(sself: *mut core::ffi::c_void);
9441        }
9442        unsafe { vtkPolyhedron_destructor(self.0) }
9443        self.0 = core::ptr::null_mut();
9444    }
9445}
9446#[test]
9447fn test_vtkPolyhedron_create_drop() {
9448    let obj = vtkPolyhedron::new();
9449    let ptr = obj.0;
9450    assert!(!ptr.is_null());
9451    assert!(unsafe { !obj._get_ptr().is_null() });
9452    drop(obj);
9453    let new_obj = vtkPolyhedron(ptr);
9454    assert!(unsafe { new_obj._get_ptr().is_null() });
9455}
9456/// a 3D cell that represents a linear pyramid
9457///
9458///
9459/// vtkPyramid is a concrete implementation of vtkCell to represent a 3D
9460/// pyramid. A pyramid consists of a rectangular base with four triangular
9461/// faces. vtkPyramid uses the standard isoparametric shape functions for
9462/// a linear pyramid. The pyramid is defined by the five points (0-4) where
9463/// (0,1,2,3) is the base of the pyramid which, using the right hand rule,
9464/// forms a quadrilaterial whose normal points in the direction of the
9465/// pyramid apex at vertex #4. The parametric location of vertex #4 is [0, 0, 1].
9466///
9467/// @sa
9468/// vtkConvexPointSet vtkHexahedron vtkTetra vtkVoxel vtkWedge
9469#[allow(non_camel_case_types)]
9470pub struct vtkPyramid(*mut core::ffi::c_void);
9471impl vtkPyramid {
9472    /// Creates a new [vtkPyramid] wrapped inside `vtkNew`
9473    #[doc(alias = "vtkPyramid")]
9474    pub fn new() -> Self {
9475        unsafe extern "C" {
9476            fn vtkPyramid_new() -> *mut core::ffi::c_void;
9477        }
9478        Self(unsafe { &mut *vtkPyramid_new() })
9479    }
9480    #[cfg(test)]
9481    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9482        unsafe extern "C" {
9483            fn vtkPyramid_get_ptr(
9484                sself: *mut core::ffi::c_void,
9485            ) -> *mut core::ffi::c_void;
9486        }
9487        unsafe { vtkPyramid_get_ptr(self.0) }
9488    }
9489}
9490impl std::default::Default for vtkPyramid {
9491    fn default() -> Self {
9492        Self::new()
9493    }
9494}
9495impl Drop for vtkPyramid {
9496    fn drop(&mut self) {
9497        unsafe extern "C" {
9498            fn vtkPyramid_destructor(sself: *mut core::ffi::c_void);
9499        }
9500        unsafe { vtkPyramid_destructor(self.0) }
9501        self.0 = core::ptr::null_mut();
9502    }
9503}
9504#[test]
9505fn test_vtkPyramid_create_drop() {
9506    let obj = vtkPyramid::new();
9507    let ptr = obj.0;
9508    assert!(!ptr.is_null());
9509    assert!(unsafe { !obj._get_ptr().is_null() });
9510    drop(obj);
9511    let new_obj = vtkPyramid(ptr);
9512    assert!(unsafe { new_obj._get_ptr().is_null() });
9513}
9514/// a cell that represents a 2D quadrilateral
9515///
9516///
9517/// vtkQuad is a concrete implementation of vtkCell to represent a 2D
9518/// quadrilateral. vtkQuad is defined by the four points (0,1,2,3) in
9519/// counterclockwise order. vtkQuad uses the standard isoparametric
9520/// interpolation functions for a linear quadrilateral.
9521#[allow(non_camel_case_types)]
9522pub struct vtkQuad(*mut core::ffi::c_void);
9523impl vtkQuad {
9524    /// Creates a new [vtkQuad] wrapped inside `vtkNew`
9525    #[doc(alias = "vtkQuad")]
9526    pub fn new() -> Self {
9527        unsafe extern "C" {
9528            fn vtkQuad_new() -> *mut core::ffi::c_void;
9529        }
9530        Self(unsafe { &mut *vtkQuad_new() })
9531    }
9532    #[cfg(test)]
9533    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9534        unsafe extern "C" {
9535            fn vtkQuad_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
9536        }
9537        unsafe { vtkQuad_get_ptr(self.0) }
9538    }
9539}
9540impl std::default::Default for vtkQuad {
9541    fn default() -> Self {
9542        Self::new()
9543    }
9544}
9545impl Drop for vtkQuad {
9546    fn drop(&mut self) {
9547        unsafe extern "C" {
9548            fn vtkQuad_destructor(sself: *mut core::ffi::c_void);
9549        }
9550        unsafe { vtkQuad_destructor(self.0) }
9551        self.0 = core::ptr::null_mut();
9552    }
9553}
9554#[test]
9555fn test_vtkQuad_create_drop() {
9556    let obj = vtkQuad::new();
9557    let ptr = obj.0;
9558    assert!(!ptr.is_null());
9559    assert!(unsafe { !obj._get_ptr().is_null() });
9560    drop(obj);
9561    let new_obj = vtkQuad(ptr);
9562    assert!(unsafe { new_obj._get_ptr().is_null() });
9563}
9564/// cell represents a parabolic, isoparametric edge
9565///
9566///
9567/// vtkQuadraticEdge is a concrete implementation of vtkNonLinearCell to
9568/// represent a one-dimensional, 3-nodes, isoparametric parabolic line. The
9569/// interpolation is the standard finite element, quadratic isoparametric
9570/// shape function. The cell includes a mid-edge node. The ordering of the
9571/// three points defining the cell is point ids (0,1,2) where id #2 is the
9572/// midedge node.
9573///
9574/// @sa
9575/// vtkQuadraticTriangle vtkQuadraticTetra vtkQuadraticWedge
9576/// vtkQuadraticQuad vtkQuadraticHexahedron vtkQuadraticPyramid
9577#[allow(non_camel_case_types)]
9578pub struct vtkQuadraticEdge(*mut core::ffi::c_void);
9579impl vtkQuadraticEdge {
9580    /// Creates a new [vtkQuadraticEdge] wrapped inside `vtkNew`
9581    #[doc(alias = "vtkQuadraticEdge")]
9582    pub fn new() -> Self {
9583        unsafe extern "C" {
9584            fn vtkQuadraticEdge_new() -> *mut core::ffi::c_void;
9585        }
9586        Self(unsafe { &mut *vtkQuadraticEdge_new() })
9587    }
9588    #[cfg(test)]
9589    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9590        unsafe extern "C" {
9591            fn vtkQuadraticEdge_get_ptr(
9592                sself: *mut core::ffi::c_void,
9593            ) -> *mut core::ffi::c_void;
9594        }
9595        unsafe { vtkQuadraticEdge_get_ptr(self.0) }
9596    }
9597}
9598impl std::default::Default for vtkQuadraticEdge {
9599    fn default() -> Self {
9600        Self::new()
9601    }
9602}
9603impl Drop for vtkQuadraticEdge {
9604    fn drop(&mut self) {
9605        unsafe extern "C" {
9606            fn vtkQuadraticEdge_destructor(sself: *mut core::ffi::c_void);
9607        }
9608        unsafe { vtkQuadraticEdge_destructor(self.0) }
9609        self.0 = core::ptr::null_mut();
9610    }
9611}
9612#[test]
9613fn test_vtkQuadraticEdge_create_drop() {
9614    let obj = vtkQuadraticEdge::new();
9615    let ptr = obj.0;
9616    assert!(!ptr.is_null());
9617    assert!(unsafe { !obj._get_ptr().is_null() });
9618    drop(obj);
9619    let new_obj = vtkQuadraticEdge(ptr);
9620    assert!(unsafe { new_obj._get_ptr().is_null() });
9621}
9622/// cell represents a parabolic, 20-node isoparametric hexahedron
9623///
9624///
9625/// vtkQuadraticHexahedron is a concrete implementation of vtkNonLinearCell to
9626/// represent a three-dimensional, 20-node isoparametric parabolic
9627/// hexahedron. The interpolation is the standard finite element, quadratic
9628/// isoparametric shape function. The cell includes a mid-edge node. The
9629/// ordering of the twenty points defining the cell is point ids (0-7,8-19)
9630/// where point ids 0-7 are the eight corner vertices of the cube; followed by
9631/// twelve midedge nodes (8-19). Note that these midedge nodes correspond lie
9632/// on the edges defined by (0,1), (1,2), (2,3), (3,0), (4,5), (5,6), (6,7),
9633/// (7,4), (0,4), (1,5), (2,6), (3,7).
9634///
9635/// @sa
9636/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
9637/// vtkQuadraticQuad vtkQuadraticPyramid vtkQuadraticWedge
9638#[allow(non_camel_case_types)]
9639pub struct vtkQuadraticHexahedron(*mut core::ffi::c_void);
9640impl vtkQuadraticHexahedron {
9641    /// Creates a new [vtkQuadraticHexahedron] wrapped inside `vtkNew`
9642    #[doc(alias = "vtkQuadraticHexahedron")]
9643    pub fn new() -> Self {
9644        unsafe extern "C" {
9645            fn vtkQuadraticHexahedron_new() -> *mut core::ffi::c_void;
9646        }
9647        Self(unsafe { &mut *vtkQuadraticHexahedron_new() })
9648    }
9649    #[cfg(test)]
9650    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9651        unsafe extern "C" {
9652            fn vtkQuadraticHexahedron_get_ptr(
9653                sself: *mut core::ffi::c_void,
9654            ) -> *mut core::ffi::c_void;
9655        }
9656        unsafe { vtkQuadraticHexahedron_get_ptr(self.0) }
9657    }
9658}
9659impl std::default::Default for vtkQuadraticHexahedron {
9660    fn default() -> Self {
9661        Self::new()
9662    }
9663}
9664impl Drop for vtkQuadraticHexahedron {
9665    fn drop(&mut self) {
9666        unsafe extern "C" {
9667            fn vtkQuadraticHexahedron_destructor(sself: *mut core::ffi::c_void);
9668        }
9669        unsafe { vtkQuadraticHexahedron_destructor(self.0) }
9670        self.0 = core::ptr::null_mut();
9671    }
9672}
9673#[test]
9674fn test_vtkQuadraticHexahedron_create_drop() {
9675    let obj = vtkQuadraticHexahedron::new();
9676    let ptr = obj.0;
9677    assert!(!ptr.is_null());
9678    assert!(unsafe { !obj._get_ptr().is_null() });
9679    drop(obj);
9680    let new_obj = vtkQuadraticHexahedron(ptr);
9681    assert!(unsafe { new_obj._get_ptr().is_null() });
9682}
9683/// cell represents a quadratic-linear, 6-node isoparametric quad
9684///
9685///
9686/// vtkQuadraticQuad is a concrete implementation of vtkNonLinearCell to
9687/// represent a two-dimensional, 6-node isoparametric quadratic-linear quadrilateral
9688/// element. The interpolation is the standard finite element, quadratic-linear
9689/// isoparametric shape function. The cell includes a mid-edge node for two
9690/// of the four edges. The ordering of the six points defining
9691/// the cell are point ids (0-3,4-5) where ids 0-3 define the four corner
9692/// vertices of the quad; ids 4-7 define the midedge nodes (0,1) and (2,3) .
9693///
9694/// @sa
9695/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra vtkQuadraticQuad
9696/// vtkQuadraticHexahedron vtkQuadraticWedge vtkQuadraticPyramid
9697///
9698/// @par Thanks:
9699/// Thanks to Soeren Gebbert  who developed this class and
9700/// integrated it into VTK 5.0.
9701#[allow(non_camel_case_types)]
9702pub struct vtkQuadraticLinearQuad(*mut core::ffi::c_void);
9703impl vtkQuadraticLinearQuad {
9704    /// Creates a new [vtkQuadraticLinearQuad] wrapped inside `vtkNew`
9705    #[doc(alias = "vtkQuadraticLinearQuad")]
9706    pub fn new() -> Self {
9707        unsafe extern "C" {
9708            fn vtkQuadraticLinearQuad_new() -> *mut core::ffi::c_void;
9709        }
9710        Self(unsafe { &mut *vtkQuadraticLinearQuad_new() })
9711    }
9712    #[cfg(test)]
9713    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9714        unsafe extern "C" {
9715            fn vtkQuadraticLinearQuad_get_ptr(
9716                sself: *mut core::ffi::c_void,
9717            ) -> *mut core::ffi::c_void;
9718        }
9719        unsafe { vtkQuadraticLinearQuad_get_ptr(self.0) }
9720    }
9721}
9722impl std::default::Default for vtkQuadraticLinearQuad {
9723    fn default() -> Self {
9724        Self::new()
9725    }
9726}
9727impl Drop for vtkQuadraticLinearQuad {
9728    fn drop(&mut self) {
9729        unsafe extern "C" {
9730            fn vtkQuadraticLinearQuad_destructor(sself: *mut core::ffi::c_void);
9731        }
9732        unsafe { vtkQuadraticLinearQuad_destructor(self.0) }
9733        self.0 = core::ptr::null_mut();
9734    }
9735}
9736#[test]
9737fn test_vtkQuadraticLinearQuad_create_drop() {
9738    let obj = vtkQuadraticLinearQuad::new();
9739    let ptr = obj.0;
9740    assert!(!ptr.is_null());
9741    assert!(unsafe { !obj._get_ptr().is_null() });
9742    drop(obj);
9743    let new_obj = vtkQuadraticLinearQuad(ptr);
9744    assert!(unsafe { new_obj._get_ptr().is_null() });
9745}
9746/// cell represents a, 12-node isoparametric wedge
9747///
9748///
9749/// vtkQuadraticLinearWedge is a concrete implementation of vtkNonLinearCell to
9750/// represent a three-dimensional, 12-node isoparametric linear quadratic
9751/// wedge. The interpolation is the standard finite element, quadratic
9752/// isoparametric shape function in xy - layer and the linear functions in z - direction.
9753/// The cell includes mid-edge node in the triangle edges. The
9754/// ordering of the 12 points defining the cell is point ids (0-5,6-12)
9755/// where point ids 0-5 are the six corner vertices of the wedge; followed by
9756/// six midedge nodes (6-12). Note that these midedge nodes correspond lie
9757/// on the edges defined by (0,1), (1,2), (2,0), (3,4), (4,5), (5,3).
9758/// The Edges (0,3), (1,4), (2,5) don't have midedge nodes.
9759///
9760/// @sa
9761/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
9762/// vtkQuadraticHexahedron vtkQuadraticQuad vtkQuadraticPyramid
9763///
9764/// @par Thanks:
9765/// Thanks to Soeren Gebbert who developed this class and
9766/// integrated it into VTK 5.0.
9767#[allow(non_camel_case_types)]
9768pub struct vtkQuadraticLinearWedge(*mut core::ffi::c_void);
9769impl vtkQuadraticLinearWedge {
9770    /// Creates a new [vtkQuadraticLinearWedge] wrapped inside `vtkNew`
9771    #[doc(alias = "vtkQuadraticLinearWedge")]
9772    pub fn new() -> Self {
9773        unsafe extern "C" {
9774            fn vtkQuadraticLinearWedge_new() -> *mut core::ffi::c_void;
9775        }
9776        Self(unsafe { &mut *vtkQuadraticLinearWedge_new() })
9777    }
9778    #[cfg(test)]
9779    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9780        unsafe extern "C" {
9781            fn vtkQuadraticLinearWedge_get_ptr(
9782                sself: *mut core::ffi::c_void,
9783            ) -> *mut core::ffi::c_void;
9784        }
9785        unsafe { vtkQuadraticLinearWedge_get_ptr(self.0) }
9786    }
9787}
9788impl std::default::Default for vtkQuadraticLinearWedge {
9789    fn default() -> Self {
9790        Self::new()
9791    }
9792}
9793impl Drop for vtkQuadraticLinearWedge {
9794    fn drop(&mut self) {
9795        unsafe extern "C" {
9796            fn vtkQuadraticLinearWedge_destructor(sself: *mut core::ffi::c_void);
9797        }
9798        unsafe { vtkQuadraticLinearWedge_destructor(self.0) }
9799        self.0 = core::ptr::null_mut();
9800    }
9801}
9802#[test]
9803fn test_vtkQuadraticLinearWedge_create_drop() {
9804    let obj = vtkQuadraticLinearWedge::new();
9805    let ptr = obj.0;
9806    assert!(!ptr.is_null());
9807    assert!(unsafe { !obj._get_ptr().is_null() });
9808    drop(obj);
9809    let new_obj = vtkQuadraticLinearWedge(ptr);
9810    assert!(unsafe { new_obj._get_ptr().is_null() });
9811}
9812/// a cell that represents a parabolic n-sided polygon
9813///
9814///
9815/// vtkQuadraticPolygon is a concrete implementation of vtkNonLinearCell to
9816/// represent a 2D n-sided (2*n nodes) parabolic polygon. The polygon cannot
9817/// have any internal holes, and cannot self-intersect. The cell includes a
9818/// mid-edge node for each of the n edges of the cell. The ordering of the
9819/// 2*n points defining the cell are point ids (0..n-1 and n..2*n-1) where ids
9820/// 0..n-1 define the corner vertices of the polygon; ids n..2*n-1 define the
9821/// midedge nodes. Define the polygon with points ordered in the counter-
9822/// clockwise direction; do not repeat the last point.
9823///
9824/// @sa
9825/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
9826/// vtkQuadraticHexahedron vtkQuadraticWedge vtkQuadraticPyramid
9827#[allow(non_camel_case_types)]
9828pub struct vtkQuadraticPolygon(*mut core::ffi::c_void);
9829impl vtkQuadraticPolygon {
9830    /// Creates a new [vtkQuadraticPolygon] wrapped inside `vtkNew`
9831    #[doc(alias = "vtkQuadraticPolygon")]
9832    pub fn new() -> Self {
9833        unsafe extern "C" {
9834            fn vtkQuadraticPolygon_new() -> *mut core::ffi::c_void;
9835        }
9836        Self(unsafe { &mut *vtkQuadraticPolygon_new() })
9837    }
9838    #[cfg(test)]
9839    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9840        unsafe extern "C" {
9841            fn vtkQuadraticPolygon_get_ptr(
9842                sself: *mut core::ffi::c_void,
9843            ) -> *mut core::ffi::c_void;
9844        }
9845        unsafe { vtkQuadraticPolygon_get_ptr(self.0) }
9846    }
9847}
9848impl std::default::Default for vtkQuadraticPolygon {
9849    fn default() -> Self {
9850        Self::new()
9851    }
9852}
9853impl Drop for vtkQuadraticPolygon {
9854    fn drop(&mut self) {
9855        unsafe extern "C" {
9856            fn vtkQuadraticPolygon_destructor(sself: *mut core::ffi::c_void);
9857        }
9858        unsafe { vtkQuadraticPolygon_destructor(self.0) }
9859        self.0 = core::ptr::null_mut();
9860    }
9861}
9862#[test]
9863fn test_vtkQuadraticPolygon_create_drop() {
9864    let obj = vtkQuadraticPolygon::new();
9865    let ptr = obj.0;
9866    assert!(!ptr.is_null());
9867    assert!(unsafe { !obj._get_ptr().is_null() });
9868    drop(obj);
9869    let new_obj = vtkQuadraticPolygon(ptr);
9870    assert!(unsafe { new_obj._get_ptr().is_null() });
9871}
9872/// cell represents a parabolic, 13-node isoparametric pyramid
9873///
9874///
9875/// vtkQuadraticPyramid is a concrete implementation of vtkNonLinearCell to
9876/// represent a three-dimensional, 13-node isoparametric parabolic
9877/// pyramid. The interpolation is the standard finite element, quadratic
9878/// isoparametric shape function. The cell includes a mid-edge node. The
9879/// ordering of the thirteen points defining the cell is point ids (0-4,5-12)
9880/// where point ids 0-4 are the five corner vertices of the pyramid; followed
9881/// by eight midedge nodes (5-12). Note that these midedge nodes lie
9882/// on the edges defined by (0,1), (1,2), (2,3), (3,0), (0,4), (1,4), (2,4),
9883/// (3,4), respectively. The parametric location of vertex #4 is [0, 0, 1].
9884///
9885/// @sa
9886/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
9887/// vtkQuadraticHexahedron vtkQuadraticQuad vtkQuadraticWedge
9888///
9889/// @par Thanks:
9890/// The shape functions and derivatives could be implemented thanks to
9891/// the report Pyramid Solid Elements Linear and Quadratic Iso-P Models
9892/// From Center For Aerospace Structures
9893#[allow(non_camel_case_types)]
9894pub struct vtkQuadraticPyramid(*mut core::ffi::c_void);
9895impl vtkQuadraticPyramid {
9896    /// Creates a new [vtkQuadraticPyramid] wrapped inside `vtkNew`
9897    #[doc(alias = "vtkQuadraticPyramid")]
9898    pub fn new() -> Self {
9899        unsafe extern "C" {
9900            fn vtkQuadraticPyramid_new() -> *mut core::ffi::c_void;
9901        }
9902        Self(unsafe { &mut *vtkQuadraticPyramid_new() })
9903    }
9904    #[cfg(test)]
9905    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9906        unsafe extern "C" {
9907            fn vtkQuadraticPyramid_get_ptr(
9908                sself: *mut core::ffi::c_void,
9909            ) -> *mut core::ffi::c_void;
9910        }
9911        unsafe { vtkQuadraticPyramid_get_ptr(self.0) }
9912    }
9913}
9914impl std::default::Default for vtkQuadraticPyramid {
9915    fn default() -> Self {
9916        Self::new()
9917    }
9918}
9919impl Drop for vtkQuadraticPyramid {
9920    fn drop(&mut self) {
9921        unsafe extern "C" {
9922            fn vtkQuadraticPyramid_destructor(sself: *mut core::ffi::c_void);
9923        }
9924        unsafe { vtkQuadraticPyramid_destructor(self.0) }
9925        self.0 = core::ptr::null_mut();
9926    }
9927}
9928#[test]
9929fn test_vtkQuadraticPyramid_create_drop() {
9930    let obj = vtkQuadraticPyramid::new();
9931    let ptr = obj.0;
9932    assert!(!ptr.is_null());
9933    assert!(unsafe { !obj._get_ptr().is_null() });
9934    drop(obj);
9935    let new_obj = vtkQuadraticPyramid(ptr);
9936    assert!(unsafe { new_obj._get_ptr().is_null() });
9937}
9938/// cell represents a parabolic, 8-node isoparametric quad
9939///
9940///
9941/// vtkQuadraticQuad is a concrete implementation of vtkNonLinearCell to
9942/// represent a two-dimensional, 8-node isoparametric parabolic quadrilateral
9943/// element. The interpolation is the standard finite element, quadratic
9944/// isoparametric shape function. The cell includes a mid-edge node for each
9945/// of the four edges of the cell. The ordering of the eight points defining
9946/// the cell are point ids (0-3,4-7) where ids 0-3 define the four corner
9947/// vertices of the quad; ids 4-7 define the midedge nodes (0,1), (1,2),
9948/// (2,3), (3,0).
9949///
9950/// @sa
9951/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
9952/// vtkQuadraticHexahedron vtkQuadraticWedge vtkQuadraticPyramid
9953#[allow(non_camel_case_types)]
9954pub struct vtkQuadraticQuad(*mut core::ffi::c_void);
9955impl vtkQuadraticQuad {
9956    /// Creates a new [vtkQuadraticQuad] wrapped inside `vtkNew`
9957    #[doc(alias = "vtkQuadraticQuad")]
9958    pub fn new() -> Self {
9959        unsafe extern "C" {
9960            fn vtkQuadraticQuad_new() -> *mut core::ffi::c_void;
9961        }
9962        Self(unsafe { &mut *vtkQuadraticQuad_new() })
9963    }
9964    #[cfg(test)]
9965    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
9966        unsafe extern "C" {
9967            fn vtkQuadraticQuad_get_ptr(
9968                sself: *mut core::ffi::c_void,
9969            ) -> *mut core::ffi::c_void;
9970        }
9971        unsafe { vtkQuadraticQuad_get_ptr(self.0) }
9972    }
9973}
9974impl std::default::Default for vtkQuadraticQuad {
9975    fn default() -> Self {
9976        Self::new()
9977    }
9978}
9979impl Drop for vtkQuadraticQuad {
9980    fn drop(&mut self) {
9981        unsafe extern "C" {
9982            fn vtkQuadraticQuad_destructor(sself: *mut core::ffi::c_void);
9983        }
9984        unsafe { vtkQuadraticQuad_destructor(self.0) }
9985        self.0 = core::ptr::null_mut();
9986    }
9987}
9988#[test]
9989fn test_vtkQuadraticQuad_create_drop() {
9990    let obj = vtkQuadraticQuad::new();
9991    let ptr = obj.0;
9992    assert!(!ptr.is_null());
9993    assert!(unsafe { !obj._get_ptr().is_null() });
9994    drop(obj);
9995    let new_obj = vtkQuadraticQuad(ptr);
9996    assert!(unsafe { new_obj._get_ptr().is_null() });
9997}
9998/// cell represents a parabolic, 10-node isoparametric tetrahedron
9999///
10000///
10001/// vtkQuadraticTetra is a concrete implementation of vtkNonLinearCell to
10002/// represent a three-dimensional, 10-node, isoparametric parabolic
10003/// tetrahedron. The interpolation is the standard finite element, quadratic
10004/// isoparametric shape function. The cell includes a mid-edge node on each of
10005/// the size edges of the tetrahedron. The ordering of the ten points defining
10006/// the cell is point ids (0-3,4-9) where ids 0-3 are the four tetra
10007/// vertices; and point ids 4-9 are the midedge nodes between (0,1), (1,2),
10008/// (2,0), (0,3), (1,3), and (2,3).
10009///
10010/// Note that this class uses an internal linear tessellation for some internal operations
10011/// (e.g., clipping and contouring). This means that some artifacts may appear trying to
10012/// represent a non-linear interpolation function with linear tets.
10013///
10014/// @sa
10015/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticWedge
10016/// vtkQuadraticQuad vtkQuadraticHexahedron vtkQuadraticPyramid
10017#[allow(non_camel_case_types)]
10018pub struct vtkQuadraticTetra(*mut core::ffi::c_void);
10019impl vtkQuadraticTetra {
10020    /// Creates a new [vtkQuadraticTetra] wrapped inside `vtkNew`
10021    #[doc(alias = "vtkQuadraticTetra")]
10022    pub fn new() -> Self {
10023        unsafe extern "C" {
10024            fn vtkQuadraticTetra_new() -> *mut core::ffi::c_void;
10025        }
10026        Self(unsafe { &mut *vtkQuadraticTetra_new() })
10027    }
10028    #[cfg(test)]
10029    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10030        unsafe extern "C" {
10031            fn vtkQuadraticTetra_get_ptr(
10032                sself: *mut core::ffi::c_void,
10033            ) -> *mut core::ffi::c_void;
10034        }
10035        unsafe { vtkQuadraticTetra_get_ptr(self.0) }
10036    }
10037}
10038impl std::default::Default for vtkQuadraticTetra {
10039    fn default() -> Self {
10040        Self::new()
10041    }
10042}
10043impl Drop for vtkQuadraticTetra {
10044    fn drop(&mut self) {
10045        unsafe extern "C" {
10046            fn vtkQuadraticTetra_destructor(sself: *mut core::ffi::c_void);
10047        }
10048        unsafe { vtkQuadraticTetra_destructor(self.0) }
10049        self.0 = core::ptr::null_mut();
10050    }
10051}
10052#[test]
10053fn test_vtkQuadraticTetra_create_drop() {
10054    let obj = vtkQuadraticTetra::new();
10055    let ptr = obj.0;
10056    assert!(!ptr.is_null());
10057    assert!(unsafe { !obj._get_ptr().is_null() });
10058    drop(obj);
10059    let new_obj = vtkQuadraticTetra(ptr);
10060    assert!(unsafe { new_obj._get_ptr().is_null() });
10061}
10062/// cell represents a parabolic, isoparametric triangle
10063///
10064///
10065/// vtkQuadraticTriangle is a concrete implementation of vtkNonLinearCell to
10066/// represent a two-dimensional, 6-node, isoparametric parabolic triangle. The
10067/// interpolation is the standard finite element, quadratic isoparametric
10068/// shape function. The cell includes three mid-edge nodes besides the three
10069/// triangle vertices. The ordering of the three points defining the cell is
10070/// point ids (0-2,3-5) where id #3 is the midedge node between points
10071/// (0,1); id #4 is the midedge node between points (1,2); and id #5 is the
10072/// midedge node between points (2,0).
10073///
10074/// @sa
10075/// vtkQuadraticEdge vtkQuadraticTetra vtkQuadraticPyramid
10076/// vtkQuadraticQuad vtkQuadraticHexahedron vtkQuadraticWedge
10077#[allow(non_camel_case_types)]
10078pub struct vtkQuadraticTriangle(*mut core::ffi::c_void);
10079impl vtkQuadraticTriangle {
10080    /// Creates a new [vtkQuadraticTriangle] wrapped inside `vtkNew`
10081    #[doc(alias = "vtkQuadraticTriangle")]
10082    pub fn new() -> Self {
10083        unsafe extern "C" {
10084            fn vtkQuadraticTriangle_new() -> *mut core::ffi::c_void;
10085        }
10086        Self(unsafe { &mut *vtkQuadraticTriangle_new() })
10087    }
10088    #[cfg(test)]
10089    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10090        unsafe extern "C" {
10091            fn vtkQuadraticTriangle_get_ptr(
10092                sself: *mut core::ffi::c_void,
10093            ) -> *mut core::ffi::c_void;
10094        }
10095        unsafe { vtkQuadraticTriangle_get_ptr(self.0) }
10096    }
10097}
10098impl std::default::Default for vtkQuadraticTriangle {
10099    fn default() -> Self {
10100        Self::new()
10101    }
10102}
10103impl Drop for vtkQuadraticTriangle {
10104    fn drop(&mut self) {
10105        unsafe extern "C" {
10106            fn vtkQuadraticTriangle_destructor(sself: *mut core::ffi::c_void);
10107        }
10108        unsafe { vtkQuadraticTriangle_destructor(self.0) }
10109        self.0 = core::ptr::null_mut();
10110    }
10111}
10112#[test]
10113fn test_vtkQuadraticTriangle_create_drop() {
10114    let obj = vtkQuadraticTriangle::new();
10115    let ptr = obj.0;
10116    assert!(!ptr.is_null());
10117    assert!(unsafe { !obj._get_ptr().is_null() });
10118    drop(obj);
10119    let new_obj = vtkQuadraticTriangle(ptr);
10120    assert!(unsafe { new_obj._get_ptr().is_null() });
10121}
10122/// cell represents a parabolic, 15-node isoparametric wedge
10123///
10124///
10125/// vtkQuadraticWedge is a concrete implementation of vtkNonLinearCell to
10126/// represent a three-dimensional, 15-node isoparametric parabolic
10127/// wedge. The interpolation is the standard finite element, quadratic
10128/// isoparametric shape function. The cell includes a mid-edge node. The
10129/// ordering of the fifteen points defining the cell is point ids (0-5,6-14)
10130/// where point ids 0-5 are the six corner vertices of the wedge, defined
10131/// analogously to the six points in vtkWedge (points (0,1,2) form the base of
10132/// the wedge which, using the right hand rule, forms a triangle whose normal
10133/// points away from the triangular face (3,4,5)); followed by nine midedge
10134/// nodes (6-14). Note that these midedge nodes correspond lie on the edges
10135/// defined by (0,1), (1,2), (2,0), (3,4), (4,5), (5,3), (0,3), (1,4), (2,5).
10136///
10137/// @sa
10138/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
10139/// vtkQuadraticHexahedron vtkQuadraticQuad vtkQuadraticPyramid
10140#[allow(non_camel_case_types)]
10141pub struct vtkQuadraticWedge(*mut core::ffi::c_void);
10142impl vtkQuadraticWedge {
10143    /// Creates a new [vtkQuadraticWedge] wrapped inside `vtkNew`
10144    #[doc(alias = "vtkQuadraticWedge")]
10145    pub fn new() -> Self {
10146        unsafe extern "C" {
10147            fn vtkQuadraticWedge_new() -> *mut core::ffi::c_void;
10148        }
10149        Self(unsafe { &mut *vtkQuadraticWedge_new() })
10150    }
10151    #[cfg(test)]
10152    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10153        unsafe extern "C" {
10154            fn vtkQuadraticWedge_get_ptr(
10155                sself: *mut core::ffi::c_void,
10156            ) -> *mut core::ffi::c_void;
10157        }
10158        unsafe { vtkQuadraticWedge_get_ptr(self.0) }
10159    }
10160}
10161impl std::default::Default for vtkQuadraticWedge {
10162    fn default() -> Self {
10163        Self::new()
10164    }
10165}
10166impl Drop for vtkQuadraticWedge {
10167    fn drop(&mut self) {
10168        unsafe extern "C" {
10169            fn vtkQuadraticWedge_destructor(sself: *mut core::ffi::c_void);
10170        }
10171        unsafe { vtkQuadraticWedge_destructor(self.0) }
10172        self.0 = core::ptr::null_mut();
10173    }
10174}
10175#[test]
10176fn test_vtkQuadraticWedge_create_drop() {
10177    let obj = vtkQuadraticWedge::new();
10178    let ptr = obj.0;
10179    assert!(!ptr.is_null());
10180    assert!(unsafe { !obj._get_ptr().is_null() });
10181    drop(obj);
10182    let new_obj = vtkQuadraticWedge(ptr);
10183    assert!(unsafe { new_obj._get_ptr().is_null() });
10184}
10185///
10186/// An Elemental data type that holds a definition of a
10187/// numerical quadrature scheme. The definition contains
10188/// the requisite information to interpolate to the so called
10189/// quadrature points of the specific scheme. namely:
10190///
10191/// <pre>
10192/// 1)
10193/// A matrix of shape function weights(shape functions evaluated
10194/// at parametric coordinates of the quadrature points).
10195///
10196/// 2)
10197/// The number of quadrature points and cell nodes. These parameters
10198/// size the matrix, and allow for convenient evaluation by users
10199/// of the definition.
10200/// </pre>
10201#[allow(non_camel_case_types)]
10202pub struct vtkQuadratureSchemeDefinition(*mut core::ffi::c_void);
10203impl vtkQuadratureSchemeDefinition {
10204    /// Creates a new [vtkQuadratureSchemeDefinition] wrapped inside `vtkNew`
10205    #[doc(alias = "vtkQuadratureSchemeDefinition")]
10206    pub fn new() -> Self {
10207        unsafe extern "C" {
10208            fn vtkQuadratureSchemeDefinition_new() -> *mut core::ffi::c_void;
10209        }
10210        Self(unsafe { &mut *vtkQuadratureSchemeDefinition_new() })
10211    }
10212    #[cfg(test)]
10213    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10214        unsafe extern "C" {
10215            fn vtkQuadratureSchemeDefinition_get_ptr(
10216                sself: *mut core::ffi::c_void,
10217            ) -> *mut core::ffi::c_void;
10218        }
10219        unsafe { vtkQuadratureSchemeDefinition_get_ptr(self.0) }
10220    }
10221}
10222impl std::default::Default for vtkQuadratureSchemeDefinition {
10223    fn default() -> Self {
10224        Self::new()
10225    }
10226}
10227impl Drop for vtkQuadratureSchemeDefinition {
10228    fn drop(&mut self) {
10229        unsafe extern "C" {
10230            fn vtkQuadratureSchemeDefinition_destructor(sself: *mut core::ffi::c_void);
10231        }
10232        unsafe { vtkQuadratureSchemeDefinition_destructor(self.0) }
10233        self.0 = core::ptr::null_mut();
10234    }
10235}
10236#[test]
10237fn test_vtkQuadratureSchemeDefinition_create_drop() {
10238    let obj = vtkQuadratureSchemeDefinition::new();
10239    let ptr = obj.0;
10240    assert!(!ptr.is_null());
10241    assert!(unsafe { !obj._get_ptr().is_null() });
10242    drop(obj);
10243    let new_obj = vtkQuadratureSchemeDefinition(ptr);
10244    assert!(unsafe { new_obj._get_ptr().is_null() });
10245}
10246/// evaluate implicit quadric function
10247///
10248///
10249/// vtkQuadric evaluates the quadric function F(x,y,z) = a0*x^2 + a1*y^2 +
10250/// a2*z^2 + a3*x*y + a4*y*z + a5*x*z + a6*x + a7*y + a8*z + a9. vtkQuadric is
10251/// a concrete implementation of vtkImplicitFunction.
10252#[allow(non_camel_case_types)]
10253pub struct vtkQuadric(*mut core::ffi::c_void);
10254impl vtkQuadric {
10255    /// Creates a new [vtkQuadric] wrapped inside `vtkNew`
10256    #[doc(alias = "vtkQuadric")]
10257    pub fn new() -> Self {
10258        unsafe extern "C" {
10259            fn vtkQuadric_new() -> *mut core::ffi::c_void;
10260        }
10261        Self(unsafe { &mut *vtkQuadric_new() })
10262    }
10263    #[cfg(test)]
10264    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10265        unsafe extern "C" {
10266            fn vtkQuadric_get_ptr(
10267                sself: *mut core::ffi::c_void,
10268            ) -> *mut core::ffi::c_void;
10269        }
10270        unsafe { vtkQuadric_get_ptr(self.0) }
10271    }
10272}
10273impl std::default::Default for vtkQuadric {
10274    fn default() -> Self {
10275        Self::new()
10276    }
10277}
10278impl Drop for vtkQuadric {
10279    fn drop(&mut self) {
10280        unsafe extern "C" {
10281            fn vtkQuadric_destructor(sself: *mut core::ffi::c_void);
10282        }
10283        unsafe { vtkQuadric_destructor(self.0) }
10284        self.0 = core::ptr::null_mut();
10285    }
10286}
10287#[test]
10288fn test_vtkQuadric_create_drop() {
10289    let obj = vtkQuadric::new();
10290    let ptr = obj.0;
10291    assert!(!ptr.is_null());
10292    assert!(unsafe { !obj._get_ptr().is_null() });
10293    drop(obj);
10294    let new_obj = vtkQuadric(ptr);
10295    assert!(unsafe { new_obj._get_ptr().is_null() });
10296}
10297/// a dataset that is topologically regular with variable spacing in the three coordinate
10298///
10299/// directions
10300///
10301/// vtkRectilinearGrid is a data object that is a concrete implementation of
10302/// vtkDataSet. vtkRectilinearGrid represents a geometric structure that is
10303/// topologically regular with variable spacing in the three coordinate
10304/// directions x-y-z.
10305///
10306/// To define a vtkRectilinearGrid, you must specify the dimensions of the
10307/// data and provide three arrays of values specifying the coordinates
10308/// along the x-y-z axes. The coordinate arrays are specified using three
10309/// vtkDataArray objects (one for x, one for y, one for z).
10310///
10311/// @warning
10312/// Make sure that the dimensions of the grid match the number of coordinates
10313/// in the x-y-z directions. If not, unpredictable results (including
10314/// program failure) may result. Also, you must supply coordinates in all
10315/// three directions, even if the dataset topology is 2D, 1D, or 0D.
10316#[allow(non_camel_case_types)]
10317pub struct vtkRectilinearGrid(*mut core::ffi::c_void);
10318impl vtkRectilinearGrid {
10319    /// Creates a new [vtkRectilinearGrid] wrapped inside `vtkNew`
10320    #[doc(alias = "vtkRectilinearGrid")]
10321    pub fn new() -> Self {
10322        unsafe extern "C" {
10323            fn vtkRectilinearGrid_new() -> *mut core::ffi::c_void;
10324        }
10325        Self(unsafe { &mut *vtkRectilinearGrid_new() })
10326    }
10327    #[cfg(test)]
10328    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10329        unsafe extern "C" {
10330            fn vtkRectilinearGrid_get_ptr(
10331                sself: *mut core::ffi::c_void,
10332            ) -> *mut core::ffi::c_void;
10333        }
10334        unsafe { vtkRectilinearGrid_get_ptr(self.0) }
10335    }
10336}
10337impl std::default::Default for vtkRectilinearGrid {
10338    fn default() -> Self {
10339        Self::new()
10340    }
10341}
10342impl Drop for vtkRectilinearGrid {
10343    fn drop(&mut self) {
10344        unsafe extern "C" {
10345            fn vtkRectilinearGrid_destructor(sself: *mut core::ffi::c_void);
10346        }
10347        unsafe { vtkRectilinearGrid_destructor(self.0) }
10348        self.0 = core::ptr::null_mut();
10349    }
10350}
10351#[test]
10352fn test_vtkRectilinearGrid_create_drop() {
10353    let obj = vtkRectilinearGrid::new();
10354    let ptr = obj.0;
10355    assert!(!ptr.is_null());
10356    assert!(unsafe { !obj._get_ptr().is_null() });
10357    drop(obj);
10358    let new_obj = vtkRectilinearGrid(ptr);
10359    assert!(unsafe { new_obj._get_ptr().is_null() });
10360}
10361/// Reeb graph computation for PL scalar fields.
10362///
10363///
10364///
10365/// vtkReebGraph is a class that computes a Reeb graph given a PL scalar
10366/// field (vtkDataArray) defined on a simplicial mesh.
10367/// A Reeb graph is a concise representation of the connectivity evolution of
10368/// the level sets of a scalar function.
10369///
10370/// It is particularly useful in visualization (optimal seed set computation,
10371/// fast flexible isosurface extraction, automated transfer function design,
10372/// feature-driven visualization, etc.) and computer graphics (shape
10373/// deformation, shape matching, shape compression, etc.).
10374///
10375/// Reference:
10376/// "Sur les points singuliers d'une forme de Pfaff completement integrable ou
10377/// d'une fonction numerique",
10378/// G. Reeb,
10379/// Comptes-rendus de l'Academie des Sciences, 222:847-849, 1946.
10380///
10381/// vtkReebGraph implements one of the latest and most robust Reeb graph
10382/// computation algorithms.
10383///
10384/// Reference:
10385/// "Robust on-line computation of Reeb graphs: simplicity and speed",
10386/// V. Pascucci, G. Scorzelli, P.-T. Bremer, and A. Mascarenhas,
10387/// ACM Transactions on Graphics, Proc. of SIGGRAPH 2007.
10388///
10389/// vtkReebGraph provides methods for computing multi-resolution topological
10390/// hierarchies through topological simplification.
10391/// Topoligical simplification can be either driven by persistence homology
10392/// concepts (default behavior) or by application specific metrics (see
10393/// vtkReebGraphSimplificationMetric).
10394/// In the latter case, designing customized simplification metric evaluation
10395/// algorithms enables the user to control the definition of what should be
10396/// considered as noise or signal in the topological filtering process.
10397///
10398/// References:
10399/// "Topological persistence and simplification",
10400/// H. Edelsbrunner, D. Letscher, and A. Zomorodian,
10401/// Discrete Computational Geometry, 28:511-533, 2002.
10402///
10403/// "Extreme elevation on a 2-manifold",
10404/// P.K. Agarwal, H. Edelsbrunner, J. Harer, and Y. Wang,
10405/// ACM Symposium on Computational Geometry, pp. 357-365, 2004.
10406///
10407/// "Simplifying flexible isosurfaces using local geometric measures",
10408/// H. Carr, J. Snoeyink, M van de Panne,
10409/// IEEE Visualization, 497-504, 2004
10410///
10411/// "Loop surgery for volumetric meshes: Reeb graphs reduced to contour trees",
10412/// J. Tierny, A. Gyulassy, E. Simon, V. Pascucci,
10413/// IEEE Trans. on Vis. and Comp. Graph. (Proc of IEEE VIS), 15:1177-1184, 2009.
10414///
10415///
10416///
10417/// Reeb graphs can be computed from 2D data (vtkPolyData, with triangles only)
10418/// or 3D data (vtkUnstructuredGrid, with tetrahedra only), sequentially (see
10419/// the "Build" calls) or in streaming (see the "StreamTriangle" and
10420/// "StreamTetrahedron" calls).
10421///
10422/// vtkReebGraph inherits from vtkMutableDirectedGraph.
10423///
10424/// Each vertex of a vtkReebGraph object represents a critical point of the
10425/// scalar field where the connectivity of the related level set changes
10426/// (creation, deletion, split or merge of connected components).
10427/// A vtkIdTypeArray (called "Vertex Ids") is associated with the VertexData of
10428/// a vtkReebGraph object, in order to retrieve if necessary the exact Ids of
10429/// the corresponding vertices in the input mesh.
10430///
10431/// The edges of a vtkReebGraph object represent the regions of the input mesh
10432/// separated by the critical contours of the field, and where the connectivity
10433/// of the input field does not change.
10434/// A vtkVariantArray is associated with the EdgeDta of a vtkReebGraph object and
10435/// each entry of this array is a vtkAbstractArray containing the Ids of the
10436/// vertices of those regions, sorted by function value (useful for flexible
10437/// isosurface extraction or level set signature computation, for instance).
10438///
10439/// See Graphics/Testing/Cxx/TestReebGraph.cxx for examples of traversals and
10440/// typical usages (customized simplification, skeletonization, contour spectra,
10441/// etc.) of a vtkReebGraph object.
10442///
10443///
10444/// @sa
10445/// vtkReebGraphSimplificationMetric
10446/// vtkPolyDataToReebGraphFilter
10447/// vtkUnstructuredGridToReebGraphFilter
10448/// vtkReebGraphSimplificationFilter
10449/// vtkReebGraphSurfaceSkeletonFilter
10450/// vtkReebGraphVolumeSkeletonFilter
10451/// vtkAreaContourSpectrumFilter
10452/// vtkVolumeContourSpectrumFilter
10453///
10454/// @par Tests:
10455/// Graphics/Testing/Cxx/TestReebGraph.cxx
10456#[allow(non_camel_case_types)]
10457pub struct vtkReebGraph(*mut core::ffi::c_void);
10458impl vtkReebGraph {
10459    /// Creates a new [vtkReebGraph] wrapped inside `vtkNew`
10460    #[doc(alias = "vtkReebGraph")]
10461    pub fn new() -> Self {
10462        unsafe extern "C" {
10463            fn vtkReebGraph_new() -> *mut core::ffi::c_void;
10464        }
10465        Self(unsafe { &mut *vtkReebGraph_new() })
10466    }
10467    #[cfg(test)]
10468    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10469        unsafe extern "C" {
10470            fn vtkReebGraph_get_ptr(
10471                sself: *mut core::ffi::c_void,
10472            ) -> *mut core::ffi::c_void;
10473        }
10474        unsafe { vtkReebGraph_get_ptr(self.0) }
10475    }
10476}
10477impl std::default::Default for vtkReebGraph {
10478    fn default() -> Self {
10479        Self::new()
10480    }
10481}
10482impl Drop for vtkReebGraph {
10483    fn drop(&mut self) {
10484        unsafe extern "C" {
10485            fn vtkReebGraph_destructor(sself: *mut core::ffi::c_void);
10486        }
10487        unsafe { vtkReebGraph_destructor(self.0) }
10488        self.0 = core::ptr::null_mut();
10489    }
10490}
10491#[test]
10492fn test_vtkReebGraph_create_drop() {
10493    let obj = vtkReebGraph::new();
10494    let ptr = obj.0;
10495    assert!(!ptr.is_null());
10496    assert!(unsafe { !obj._get_ptr().is_null() });
10497    drop(obj);
10498    let new_obj = vtkReebGraph(ptr);
10499    assert!(unsafe { new_obj._get_ptr().is_null() });
10500}
10501/// abstract class for custom Reeb graph
10502///
10503/// simplification metric design.
10504///
10505/// This class makes it possible to design customized simplification metric
10506/// evaluation algorithms, enabling the user to control the definition of what
10507/// should be considered as noise or signal in the topological filtering process.
10508///
10509/// References:
10510/// "Topological persistence and simplification",
10511/// H. Edelsbrunner, D. Letscher, and A. Zomorodian,
10512/// Discrete Computational Geometry, 28:511-533, 2002.
10513///
10514/// "Extreme elevation on a 2-manifold",
10515/// P.K. Agarwal, H. Edelsbrunner, J. Harer, and Y. Wang,
10516/// ACM Symposium on Computational Geometry, pp. 357-365, 2004.
10517///
10518/// "Simplifying flexible isosurfaces using local geometric measures",
10519/// H. Carr, J. Snoeyink, M van de Panne,
10520/// IEEE Visualization, 497-504, 2004
10521///
10522/// "Loop surgery for volumetric meshes: Reeb graphs reduced to contour trees",
10523/// J. Tierny, A. Gyulassy, E. Simon, V. Pascucci,
10524/// IEEE Trans. on Vis. and Comp. Graph. (Proc of IEEE VIS), 15:1177-1184, 2009.
10525///
10526///
10527/// See Graphics/Testing/Cxx/TestReebGraph.cxx for an example of concrete
10528/// implementation.
10529#[allow(non_camel_case_types)]
10530pub struct vtkReebGraphSimplificationMetric(*mut core::ffi::c_void);
10531impl vtkReebGraphSimplificationMetric {
10532    /// Creates a new [vtkReebGraphSimplificationMetric] wrapped inside `vtkNew`
10533    #[doc(alias = "vtkReebGraphSimplificationMetric")]
10534    pub fn new() -> Self {
10535        unsafe extern "C" {
10536            fn vtkReebGraphSimplificationMetric_new() -> *mut core::ffi::c_void;
10537        }
10538        Self(unsafe { &mut *vtkReebGraphSimplificationMetric_new() })
10539    }
10540    #[cfg(test)]
10541    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10542        unsafe extern "C" {
10543            fn vtkReebGraphSimplificationMetric_get_ptr(
10544                sself: *mut core::ffi::c_void,
10545            ) -> *mut core::ffi::c_void;
10546        }
10547        unsafe { vtkReebGraphSimplificationMetric_get_ptr(self.0) }
10548    }
10549}
10550impl std::default::Default for vtkReebGraphSimplificationMetric {
10551    fn default() -> Self {
10552        Self::new()
10553    }
10554}
10555impl Drop for vtkReebGraphSimplificationMetric {
10556    fn drop(&mut self) {
10557        unsafe extern "C" {
10558            fn vtkReebGraphSimplificationMetric_destructor(
10559                sself: *mut core::ffi::c_void,
10560            );
10561        }
10562        unsafe { vtkReebGraphSimplificationMetric_destructor(self.0) }
10563        self.0 = core::ptr::null_mut();
10564    }
10565}
10566#[test]
10567fn test_vtkReebGraphSimplificationMetric_create_drop() {
10568    let obj = vtkReebGraphSimplificationMetric::new();
10569    let ptr = obj.0;
10570    assert!(!ptr.is_null());
10571    assert!(unsafe { !obj._get_ptr().is_null() });
10572    drop(obj);
10573    let new_obj = vtkReebGraphSimplificationMetric(ptr);
10574    assert!(unsafe { new_obj._get_ptr().is_null() });
10575}
10576/// data object that represents a "selection" in VTK.
10577///
10578///
10579/// vtkSelection defines a selection. A selection is a data-object that defines
10580/// which entities from another data-object are to treated as "selected". Filters like
10581/// `vtkExtractSelection` or `vtkExtractDataArraysOverTime` can then be used to
10582/// extract these selected entities from the *other* data-object.
10583///
10584/// vtkSelection comprises of `vtkSelectionNode`s and optionally, an expression
10585/// specified using `vtkSelection::SetExpression`. If non-empty, the expression
10586/// is a boolean expression that defines now the selection nodes present in the
10587/// selection are to be combined together to form the selection. If no expression
10588/// is specified and there are multiple selection nodes, then the default
10589/// expression simply combines all the selection nodes using an `or` operator.
10590///
10591/// Each vtkSelectionNode is used to define the selection criteria.
10592/// vtkSelectionNode API lets one select what kind of entities are being selected
10593/// (vtkSelectionNode::FieldType) and how they are being selected
10594/// (vtkSelectionNode::ContentType).
10595///
10596/// @sa
10597/// vtkSelectionNode
10598#[allow(non_camel_case_types)]
10599pub struct vtkSelection(*mut core::ffi::c_void);
10600impl vtkSelection {
10601    /// Creates a new [vtkSelection] wrapped inside `vtkNew`
10602    #[doc(alias = "vtkSelection")]
10603    pub fn new() -> Self {
10604        unsafe extern "C" {
10605            fn vtkSelection_new() -> *mut core::ffi::c_void;
10606        }
10607        Self(unsafe { &mut *vtkSelection_new() })
10608    }
10609    #[cfg(test)]
10610    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10611        unsafe extern "C" {
10612            fn vtkSelection_get_ptr(
10613                sself: *mut core::ffi::c_void,
10614            ) -> *mut core::ffi::c_void;
10615        }
10616        unsafe { vtkSelection_get_ptr(self.0) }
10617    }
10618}
10619impl std::default::Default for vtkSelection {
10620    fn default() -> Self {
10621        Self::new()
10622    }
10623}
10624impl Drop for vtkSelection {
10625    fn drop(&mut self) {
10626        unsafe extern "C" {
10627            fn vtkSelection_destructor(sself: *mut core::ffi::c_void);
10628        }
10629        unsafe { vtkSelection_destructor(self.0) }
10630        self.0 = core::ptr::null_mut();
10631    }
10632}
10633#[test]
10634fn test_vtkSelection_create_drop() {
10635    let obj = vtkSelection::new();
10636    let ptr = obj.0;
10637    assert!(!ptr.is_null());
10638    assert!(unsafe { !obj._get_ptr().is_null() });
10639    drop(obj);
10640    let new_obj = vtkSelection(ptr);
10641    assert!(unsafe { new_obj._get_ptr().is_null() });
10642}
10643/// a node in a vtkSelection the defines the selection criteria.
10644///
10645///
10646/// vtkSelectionNode helps define the selection criteria in a vtkSelection.
10647/// vtkSelection can comprise of multiple such vtkSelectionNode instances that
10648/// help define the selection.
10649///
10650/// vtkSelectionNode has two components: a list of properties (stored in a
10651/// vtkInformation) and a selection list (a vtkAbstractArray subclass). The
10652/// properties help indicate how to interpret the values specified in a
10653/// selection-list.
10654///
10655/// The properties can be broadly classified into three categories: core,
10656/// qualifiers, and information. The core properties must be specified other wise the
10657/// vtkSelectionNode is not considered valid. These are `FIELD_TYPE` and
10658/// `CONTENT_TYPE`. `FIELD_TYPE` defines what kinds of entities are being selected.
10659/// Since selections are used to select items in a data-object, these correspond to
10660/// things like cells, points, nodes, edges, rows, etc. Supported FIELD_TYPE
10661/// values are defined in `vtkSelectionNode::SelectionField`. `CONTENT_TYPE`
10662/// defines the how the selection is described. Supported values are
10663/// `vtkSelectionNode::SelectionContent`. For example, if CONTENT_TYPE is
10664/// `INDICES`, then selection is described as ids for entities being selected.
10665/// The ids themselves will be specified using the selection list. Thus, the
10666/// CONTENT_TYPE dictates what the selection list comprises.
10667///
10668/// Qualifiers are used to further qualify the selection criteria. All qualifiers
10669/// are optional. When present they restrict the selection. For example, when
10670/// selecting elements from a composite-dataset, the `COMPOSITE_INDEX` qualifier
10671/// can be specified of limit the selection to a specific dataset (or subtree).
10672///
10673/// Information properties are simply for informative purposes and generally used
10674/// to provide information about the selection when the selection is created. For
10675/// example, `PIXEL_COUNT` is used to indicate how many screen pixels resulted in
10676/// creation of this selection node.
10677///
10678/// @section SelectionTypes Selection Types
10679///
10680/// `CONTENT_TYPE` property is one of the required properties that helps
10681/// describe how the selection is defined. To set the content type, one can
10682/// access the properties store using `vtkSelectionNode::GetProperties()` and
10683/// then set the `CONTENT_TYPE` using the `vtkSelectionNode::CONTENT_TYPE()` key
10684/// or simply use `vtkSelectionNode::SetContentType`.
10685///
10686/// * `vtkSelectionNode::GLOBALIDS`: indicates that the selection is defined
10687/// using global ids. In VTK data-object, global ids are specified an `vtkIdTypeArray`
10688/// added to a appropriate `vtkDataSetAttributes` and marked as global-ids
10689/// using vtkDataSetAttributes API. Since global ids are expected to be unique
10690/// for that element type over the entire dataset, it's a convenient way of
10691/// defining selections. For this content-type, the selection list must be
10692/// a single-component, `vtkIdTypeArray` that lists all the globals ids for
10693/// the selected elements.
10694///
10695/// * `vtkSelectionNode::PEDIGREEIDS`: similar to `GLOBALIDS` except uses
10696/// pedigree ids instead of global ids.
10697///
10698/// * `vtkSelectionNode::VALUES`: this type is used to define a selection based
10699/// on array values. The selection list specifies the values to be selected.
10700/// All elements with array values in the selection list are treated as
10701/// selected. The qualifier COMPONENT_NUMBER is used to indicate which
10702/// component to use for the checks. Use `-1` for magnitude. Current
10703/// implementation does not support checking multiple-components or non-exact
10704/// matches although support for both is conceivable in future.
10705/// The selection list array name is used to specify the name of the array from
10706/// the dataset to use for the checks. Thus, for defining a selection for a
10707/// dataset where all `TEMP` values match those specified in the selection
10708/// list, ensure that the selection list array's name is set to `TEMP` as well.
10709///
10710/// * `vtkSelectionNode::INDICES`: this is similar to global ids except in this
10711/// case the selection list is simply the VTK element id which is 0-based
10712/// index of that element in the particular dataset. Often with this type of
10713/// selection, additional qualifiers such as `COMPOSITE_INDEX`,
10714/// `BLOCK_SELECTORS`, `PROCESS_ID` etc. are needed to correctly identify the
10715/// chosen element(s) in case of composite or distributed datasets.
10716///
10717/// * `vtkSelectionNode::FRUSTUM`: this type is used to define a frustum in world
10718/// coordinates that identifies the selected elements. In this case, the
10719/// selection list is a vtkDoubleArray with 32 values specifying the 8 frustum
10720/// corners in homogeneous world coordinates.
10721///
10722/// * `vtkSelectionNode::LOCATIONS`: this is used to select points (or cells)
10723/// near (or containing) specified locations. The selection list is a
10724/// 3-component vtkDoubleArray with coordinates for locations of interest.
10725///
10726/// * `vtkSelectionNode::THRESHOLDS`: this type is used to define a selection based
10727/// on array value ranges. This is akin to thresholding. All elements with values in
10728/// the specified ranges are to be treated as selected. For this content-type,
10729/// the selection-list is a 2-component `vtkDataArray`-subclass that specifies
10730/// where each tuple defines the min and max values for a range. The selection
10731/// list can have multiple tuples to define multiple ranges. Elements with
10732/// values in any of the specified ranges are treated as selected. The
10733/// selection list array name is used to specify the name of the array from
10734/// the dataset to use for the checks. Thus, for defining a selection for a
10735/// dataset where all `TEMP` values are within a range, ensure that the
10736/// selection list array's name is set to `TEMP` as well.
10737///
10738/// * `vtkSelectionNode::BLOCKS`: this type is used to select blocks in a
10739/// composite dataset. The term blocks is used loosely here and can correspond
10740/// to a block in a multiblock dataset or a partition in a partitioned-dataset.
10741/// The selection list is an integral type vtkDataArray subclass that can be 1-
10742/// or 2- component. If 1-component, it's interpreted as the composite-index
10743/// (also called flat index) and can be applied to any composite-dataset to
10744/// choose specific datasets. If 2-component, it's typically associated with
10745/// vtkUniformGridAMR or vtkPartitionedDataSetCollection which support 2-tuple
10746/// indexing to locate a dataset.
10747///
10748/// * `vtkSelectionNode::BLOCK_SELECTORS`: this is similar to BLOCKS, however
10749/// instead of using indices to select datasets, here, the selection list is a
10750/// vtkStringArray which lists selector expressions to select blocks in the
10751/// composite dataset. By default, the selector expressions are applied to a
10752/// vtkDataAssembly generated from the composite dataset that represents its
10753/// hierarchy (see `vtkDataAssembly::GenerateHierarchy`). However, in case of
10754/// vtkPartitionedDataSetCollection, one can select any other data assembly
10755/// associated with the vtkPartitionedDataSetCollection by naming the array
10756/// with the name of the assembly.
10757///
10758/// @note, currently vtkPartitionedDataSetCollection only supports a single
10759/// vtkDataAssembly but this may change in the future.
10760///
10761/// * `vtkSelectionNode::QUERY`: this type is primarily added for ParaView where
10762/// selection expression is specified as a query string. This is likely to
10763/// change in the future and hence applications are discouraged from using this
10764/// type.
10765///
10766/// @section Properties Properties
10767///
10768/// Following a properties that can be used to qualify the selection.
10769///
10770/// * `vtkSelectionNode::EPSILON()`: this is a qualifier that can be used to
10771/// indicate a fuzz-factor when comparing values for equality. Currently, this
10772/// is only used with content-type LOCATIONS, however, it can be expanded to
10773/// other selection types in the future.
10774///
10775/// * `vtkSelectionNode::CONTAINING_CELLS()`: this qualifier is intended to be
10776/// used with field-type `POINT`. When present, it indicates that while the
10777/// selection criteria selects a collection of points the selection should be
10778/// formed using cell containing the chosen points.
10779///
10780/// * `vtkSelectionNode::CONNECTED_LAYERS()`: a qualifier used to expand the
10781/// definition of selected elements to connected elements for the specified
10782/// number of layers. Layers can only be positive to grow the selection.
10783///
10784/// * `vtkSelectionNode::CONNECTED_LAYERS_REMOVE_SEED()`: this qualifier indicates
10785/// that when using a number of CONNECTED_LAYERS >= 1, the initial selection will
10786/// not be kept.
10787///
10788/// * `vtkSelectionNode::CONNECTED_LAYERS_REMOVE_INTERMEDIATE_LAYERS()`: this qualifier
10789/// indicates that when using a number of CONNECTED_LAYERS >= 2, the intermediate layers
10790/// will not be kept.
10791///
10792/// * `vtkSelectionNode::INVERSE()`: a qualifier that causes the selection to be
10793/// inverted i.e. all elements not chosen by the criteria are to be treated
10794/// as selected.
10795///
10796/// * `vtkSelectionNode::COMPONENT_NUMBER()`: for VALUES and THRESHOLDS selection
10797/// types, this qualifier identifies the array component of interest. -1
10798/// indicates magnitude.
10799///
10800/// * `vtkSelectionNode::PROCESS_ID()`: limits the selection to a particular
10801/// rank in a distributed environment.
10802///
10803/// * `vtkSelectionNode::COMPOSITE_INDEX()`: a qualifier used to limit the
10804/// selection to a specific composite index for a composite-dataset.
10805///
10806/// * `vtkSelectionNode::ASSEMBLY_NAME()`, `vtkSelectionNode::SELECTORS()`:
10807/// similar to composite index, except uses data-assembly and selectors to
10808/// limit the selection to a subset of nodes in a composite-dataset.
10809///
10810/// * `vtkSelectionNode::HIERARCHICAL_LEVEL()`,
10811/// `vtkSelectionNode::HIERARCHICAL_INDEX()`: similar to composite index, except
10812/// uses level and index for an AMR dataset so limit the selection to a
10813/// specific AMR level or dataset.
10814///
10815/// Following for properties that are primarily intended to provide additional
10816/// information when the selection is created.
10817///
10818/// * `vtkSelectionNode::ZBUFFER_VALUE()`: an information qualifier representing
10819/// the z-depth for a particular selection when it was created.
10820///
10821/// * `vtkSelectionNode::PIXEL_COUNT()`: a qualifier used to provide a count for
10822/// the number of pixels that resulted in this selection.
10823///
10824/// * `vtkSelectionNode::SOURCE()`, `vtkSelectionNode::SOURCE_ID()`: provides
10825/// information about data producer or selection originator. The interpretation
10826/// is very specific to the creator creating the selection and varies greatly
10827/// with VTK.
10828///
10829/// * `vtkSelectionNode::PROP(), `vtkSelectionNode::PROP_ID()`: similar to
10830/// SOURCE/SOURCE_ID except is used to represent a rendering prop from which
10831/// the selection was created.
10832///
10833/// @warning
10834/// No SelectionList is created by default. It should be assigned.
10835///
10836/// @section SelectionFieldMismatch vtkSelectionNode::SelectionField and
10837/// vtkDataSetAttribute::AttributeTypes
10838///
10839/// Strictly speaking, vtkSelectionNode::SelectionField maps directly to
10840/// vtkDataSetAttribute::AttributeTypes. However, the two enum values are not
10841/// identical for historical reasons. Use
10842/// `vtkSelectionNode::ConvertSelectionFieldToAttributeType` and
10843/// `vtkSelectionNode::ConvertAttributeTypeToSelectionField` to convert between
10844/// the two.
10845#[allow(non_camel_case_types)]
10846pub struct vtkSelectionNode(*mut core::ffi::c_void);
10847impl vtkSelectionNode {
10848    /// Creates a new [vtkSelectionNode] wrapped inside `vtkNew`
10849    #[doc(alias = "vtkSelectionNode")]
10850    pub fn new() -> Self {
10851        unsafe extern "C" {
10852            fn vtkSelectionNode_new() -> *mut core::ffi::c_void;
10853        }
10854        Self(unsafe { &mut *vtkSelectionNode_new() })
10855    }
10856    #[cfg(test)]
10857    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10858        unsafe extern "C" {
10859            fn vtkSelectionNode_get_ptr(
10860                sself: *mut core::ffi::c_void,
10861            ) -> *mut core::ffi::c_void;
10862        }
10863        unsafe { vtkSelectionNode_get_ptr(self.0) }
10864    }
10865}
10866impl std::default::Default for vtkSelectionNode {
10867    fn default() -> Self {
10868        Self::new()
10869    }
10870}
10871impl Drop for vtkSelectionNode {
10872    fn drop(&mut self) {
10873        unsafe extern "C" {
10874            fn vtkSelectionNode_destructor(sself: *mut core::ffi::c_void);
10875        }
10876        unsafe { vtkSelectionNode_destructor(self.0) }
10877        self.0 = core::ptr::null_mut();
10878    }
10879}
10880#[test]
10881fn test_vtkSelectionNode_create_drop() {
10882    let obj = vtkSelectionNode::new();
10883    let ptr = obj.0;
10884    assert!(!ptr.is_null());
10885    assert!(unsafe { !obj._get_ptr().is_null() });
10886    drop(obj);
10887    let new_obj = vtkSelectionNode(ptr);
10888    assert!(unsafe { new_obj._get_ptr().is_null() });
10889}
10890/// helper class to perform cell tessellation
10891///
10892///
10893/// vtkSimpleCellTessellator is a helper class to perform adaptive tessellation
10894/// of particular cell topologies. The major purpose for this class is to
10895/// transform higher-order cell types (e.g., higher-order finite elements)
10896/// into linear cells that can then be easily visualized by VTK. This class
10897/// works in conjunction with the vtkGenericDataSet and vtkGenericAdaptorCell
10898/// classes.
10899///
10900/// This algorithm is based on edge subdivision. An error metric along each
10901/// edge is evaluated, and if the error is greater than some tolerance, the
10902/// edge is subdivided (as well as all connected 2D and 3D cells). The process
10903/// repeats until the error metric is satisfied. Since the algorithm is based
10904/// on edge subdivision it inherently avoid T-junctions.
10905///
10906/// A significant issue addressed by this algorithm is to ensure face
10907/// compatibility across neighboring cells. That is, diagonals due to face
10908/// triangulation must match to ensure that the mesh is compatible. The
10909/// algorithm employs a precomputed table to accelerate the tessellation
10910/// process. The table was generated with the help of vtkOrderedTriangulator
10911/// the basic idea is that the choice of diagonal is made only by considering the
10912/// relative value of the point ids.
10913///
10914/// @sa
10915/// vtkGenericCellTessellator vtkGenericSubdivisionErrorMetric vtkAttributesErrorMetric
10916/// vtkGeometricErrorMetric vtkViewDependentErrorMetric
10917#[allow(non_camel_case_types)]
10918pub struct vtkSimpleCellTessellator(*mut core::ffi::c_void);
10919impl vtkSimpleCellTessellator {
10920    /// Creates a new [vtkSimpleCellTessellator] wrapped inside `vtkNew`
10921    #[doc(alias = "vtkSimpleCellTessellator")]
10922    pub fn new() -> Self {
10923        unsafe extern "C" {
10924            fn vtkSimpleCellTessellator_new() -> *mut core::ffi::c_void;
10925        }
10926        Self(unsafe { &mut *vtkSimpleCellTessellator_new() })
10927    }
10928    #[cfg(test)]
10929    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10930        unsafe extern "C" {
10931            fn vtkSimpleCellTessellator_get_ptr(
10932                sself: *mut core::ffi::c_void,
10933            ) -> *mut core::ffi::c_void;
10934        }
10935        unsafe { vtkSimpleCellTessellator_get_ptr(self.0) }
10936    }
10937}
10938impl std::default::Default for vtkSimpleCellTessellator {
10939    fn default() -> Self {
10940        Self::new()
10941    }
10942}
10943impl Drop for vtkSimpleCellTessellator {
10944    fn drop(&mut self) {
10945        unsafe extern "C" {
10946            fn vtkSimpleCellTessellator_destructor(sself: *mut core::ffi::c_void);
10947        }
10948        unsafe { vtkSimpleCellTessellator_destructor(self.0) }
10949        self.0 = core::ptr::null_mut();
10950    }
10951}
10952#[test]
10953fn test_vtkSimpleCellTessellator_create_drop() {
10954    let obj = vtkSimpleCellTessellator::new();
10955    let ptr = obj.0;
10956    assert!(!ptr.is_null());
10957    assert!(unsafe { !obj._get_ptr().is_null() });
10958    drop(obj);
10959    let new_obj = vtkSimpleCellTessellator(ptr);
10960    assert!(unsafe { new_obj._get_ptr().is_null() });
10961}
10962/// Objects that compute
10963///
10964/// geometry-based error during cell tessellation according to
10965/// some max angle.
10966///
10967///
10968/// It is a concrete error metric, based on a geometric criterium:
10969/// a max angle between the chord passing through the midpoint and one of the
10970/// endpoints and the other chord passing through the midpoint and the other
10971/// endpoint of the edge. It is related to the flatness of an edge.
10972///
10973/// @sa
10974/// vtkGenericCellTessellator vtkGenericSubdivisionErrorMetric
10975#[allow(non_camel_case_types)]
10976pub struct vtkSmoothErrorMetric(*mut core::ffi::c_void);
10977impl vtkSmoothErrorMetric {
10978    /// Creates a new [vtkSmoothErrorMetric] wrapped inside `vtkNew`
10979    #[doc(alias = "vtkSmoothErrorMetric")]
10980    pub fn new() -> Self {
10981        unsafe extern "C" {
10982            fn vtkSmoothErrorMetric_new() -> *mut core::ffi::c_void;
10983        }
10984        Self(unsafe { &mut *vtkSmoothErrorMetric_new() })
10985    }
10986    #[cfg(test)]
10987    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
10988        unsafe extern "C" {
10989            fn vtkSmoothErrorMetric_get_ptr(
10990                sself: *mut core::ffi::c_void,
10991            ) -> *mut core::ffi::c_void;
10992        }
10993        unsafe { vtkSmoothErrorMetric_get_ptr(self.0) }
10994    }
10995}
10996impl std::default::Default for vtkSmoothErrorMetric {
10997    fn default() -> Self {
10998        Self::new()
10999    }
11000}
11001impl Drop for vtkSmoothErrorMetric {
11002    fn drop(&mut self) {
11003        unsafe extern "C" {
11004            fn vtkSmoothErrorMetric_destructor(sself: *mut core::ffi::c_void);
11005        }
11006        unsafe { vtkSmoothErrorMetric_destructor(self.0) }
11007        self.0 = core::ptr::null_mut();
11008    }
11009}
11010#[test]
11011fn test_vtkSmoothErrorMetric_create_drop() {
11012    let obj = vtkSmoothErrorMetric::new();
11013    let ptr = obj.0;
11014    assert!(!ptr.is_null());
11015    assert!(unsafe { !obj._get_ptr().is_null() });
11016    drop(obj);
11017    let new_obj = vtkSmoothErrorMetric(ptr);
11018    assert!(unsafe { new_obj._get_ptr().is_null() });
11019}
11020/// provides a method for sorting field data
11021///
11022///
11023///
11024/// vtkSortFieldData is used to sort data, based on its value, or with an
11025/// associated key, into either ascending or descending order. This is useful
11026/// for operations like selection, or analysis, when evaluating and processing
11027/// data.
11028///
11029/// This class, which extends the base functionality of vtkSortDataArray,
11030/// is used to sort field data and its various subclasses (vtkFieldData,
11031/// vtkDataSetAttributes, vtkPointData, vtkCellData, etc.)
11032///
11033/// @warning
11034/// This class has been threaded with vtkSMPTools. Using TBB or other
11035/// non-sequential type (set in the CMake variable
11036/// VTK_SMP_IMPLEMENTATION_TYPE) may improve performance significantly on
11037/// multi-core machines.
11038///
11039/// @warning
11040/// The sort methods below are static, hence the sorting methods can be
11041/// used without instantiating the class. All methods are thread safe.
11042///
11043/// @sa
11044/// vtkSortDataArray
11045#[allow(non_camel_case_types)]
11046pub struct vtkSortFieldData(*mut core::ffi::c_void);
11047impl vtkSortFieldData {
11048    /// Creates a new [vtkSortFieldData] wrapped inside `vtkNew`
11049    #[doc(alias = "vtkSortFieldData")]
11050    pub fn new() -> Self {
11051        unsafe extern "C" {
11052            fn vtkSortFieldData_new() -> *mut core::ffi::c_void;
11053        }
11054        Self(unsafe { &mut *vtkSortFieldData_new() })
11055    }
11056    #[cfg(test)]
11057    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11058        unsafe extern "C" {
11059            fn vtkSortFieldData_get_ptr(
11060                sself: *mut core::ffi::c_void,
11061            ) -> *mut core::ffi::c_void;
11062        }
11063        unsafe { vtkSortFieldData_get_ptr(self.0) }
11064    }
11065}
11066impl std::default::Default for vtkSortFieldData {
11067    fn default() -> Self {
11068        Self::new()
11069    }
11070}
11071impl Drop for vtkSortFieldData {
11072    fn drop(&mut self) {
11073        unsafe extern "C" {
11074            fn vtkSortFieldData_destructor(sself: *mut core::ffi::c_void);
11075        }
11076        unsafe { vtkSortFieldData_destructor(self.0) }
11077        self.0 = core::ptr::null_mut();
11078    }
11079}
11080#[test]
11081fn test_vtkSortFieldData_create_drop() {
11082    let obj = vtkSortFieldData::new();
11083    let ptr = obj.0;
11084    assert!(!ptr.is_null());
11085    assert!(unsafe { !obj._get_ptr().is_null() });
11086    drop(obj);
11087    let new_obj = vtkSortFieldData(ptr);
11088    assert!(unsafe { new_obj._get_ptr().is_null() });
11089}
11090/// implicit function for a sphere
11091///
11092///
11093/// vtkSphere computes the implicit function and/or gradient for a sphere.
11094/// vtkSphere is a concrete implementation of vtkImplicitFunction. Additional
11095/// methods are available for sphere-related computations, such as computing
11096/// bounding spheres for a set of points, or set of spheres.
11097#[allow(non_camel_case_types)]
11098pub struct vtkSphere(*mut core::ffi::c_void);
11099impl vtkSphere {
11100    /// Creates a new [vtkSphere] wrapped inside `vtkNew`
11101    #[doc(alias = "vtkSphere")]
11102    pub fn new() -> Self {
11103        unsafe extern "C" {
11104            fn vtkSphere_new() -> *mut core::ffi::c_void;
11105        }
11106        Self(unsafe { &mut *vtkSphere_new() })
11107    }
11108    #[cfg(test)]
11109    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11110        unsafe extern "C" {
11111            fn vtkSphere_get_ptr(
11112                sself: *mut core::ffi::c_void,
11113            ) -> *mut core::ffi::c_void;
11114        }
11115        unsafe { vtkSphere_get_ptr(self.0) }
11116    }
11117}
11118impl std::default::Default for vtkSphere {
11119    fn default() -> Self {
11120        Self::new()
11121    }
11122}
11123impl Drop for vtkSphere {
11124    fn drop(&mut self) {
11125        unsafe extern "C" {
11126            fn vtkSphere_destructor(sself: *mut core::ffi::c_void);
11127        }
11128        unsafe { vtkSphere_destructor(self.0) }
11129        self.0 = core::ptr::null_mut();
11130    }
11131}
11132#[test]
11133fn test_vtkSphere_create_drop() {
11134    let obj = vtkSphere::new();
11135    let ptr = obj.0;
11136    assert!(!ptr.is_null());
11137    assert!(unsafe { !obj._get_ptr().is_null() });
11138    drop(obj);
11139    let new_obj = vtkSphere(ptr);
11140    assert!(unsafe { new_obj._get_ptr().is_null() });
11141}
11142/// implicit function for a set of spheres
11143///
11144///
11145/// vtkSpheres computes the implicit function and function gradient for a set
11146/// of spheres. The spheres are combined via a union operation (i.e., the
11147/// minimum value from the evaluation of all spheres is taken).
11148///
11149/// The function value is the distance of a point to the closest sphere, with
11150/// negative values interior to the spheres, positive outside the spheres, and
11151/// distance=0 on the spheres surface.  The function gradient is the sphere
11152/// normal at the function value.
11153///
11154/// @sa
11155/// vtkPlanes vtkImplicitBoolean
11156#[allow(non_camel_case_types)]
11157pub struct vtkSpheres(*mut core::ffi::c_void);
11158impl vtkSpheres {
11159    /// Creates a new [vtkSpheres] wrapped inside `vtkNew`
11160    #[doc(alias = "vtkSpheres")]
11161    pub fn new() -> Self {
11162        unsafe extern "C" {
11163            fn vtkSpheres_new() -> *mut core::ffi::c_void;
11164        }
11165        Self(unsafe { &mut *vtkSpheres_new() })
11166    }
11167    #[cfg(test)]
11168    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11169        unsafe extern "C" {
11170            fn vtkSpheres_get_ptr(
11171                sself: *mut core::ffi::c_void,
11172            ) -> *mut core::ffi::c_void;
11173        }
11174        unsafe { vtkSpheres_get_ptr(self.0) }
11175    }
11176}
11177impl std::default::Default for vtkSpheres {
11178    fn default() -> Self {
11179        Self::new()
11180    }
11181}
11182impl Drop for vtkSpheres {
11183    fn drop(&mut self) {
11184        unsafe extern "C" {
11185            fn vtkSpheres_destructor(sself: *mut core::ffi::c_void);
11186        }
11187        unsafe { vtkSpheres_destructor(self.0) }
11188        self.0 = core::ptr::null_mut();
11189    }
11190}
11191#[test]
11192fn test_vtkSpheres_create_drop() {
11193    let obj = vtkSpheres::new();
11194    let ptr = obj.0;
11195    assert!(!ptr.is_null());
11196    assert!(unsafe { !obj._get_ptr().is_null() });
11197    drop(obj);
11198    let new_obj = vtkSpheres(ptr);
11199    assert!(unsafe { new_obj._get_ptr().is_null() });
11200}
11201/// Traverse a collection of points in spherical ordering.
11202///
11203///
11204///
11205/// vtkSphericalPointIterator is a state-based iterator for traversing a set
11206/// of points (i.e., a neighborhood of points) in a dataset, providing a point
11207/// traversal order across user-defined "axes" which span a 2D or 3D space
11208/// (typically a circle or sphere). The points along each axes may be sorted
11209/// in increasing radial order. To define the points, specify a dataset (i.e.,
11210/// its associated points, whether the points are represented implicitly or
11211/// explicitly) and an associated neighborhood over which to iterate. Methods
11212/// for iterating over the points are provided.
11213///
11214/// For example, consider the axes of iteration to be the four rays emanating
11215/// from the center of a square and passing through the center of each of the
11216/// four edges of the square. Points to be iterated over are associated (using
11217/// a dot product) with each of the four axes, and then can be sorted along
11218/// each axis. Then the order of iteration is then: (axis0,pt0), (axis1,pt0),
11219/// (axis2,pt0), (axis3,pt0), (axis0,pt1), (axis1,pt1), (axis2,pt1),
11220/// (axis3,pt1), (axis0,pt2), (axis1,pt2), (axis2,pt2), (axis3,pt2), and so on
11221/// in a "spiraling" fashion until all points are visited. Thus the order of
11222/// visitation is: iteration i visits all N axes in order, returning the jth
11223/// point sorted along each of the N axes (i.e., i increases the fastest).
11224/// Alternatively, methods exist to randomly access points, or points
11225/// associated with an axes, so that custom iteration methods can be defined.
11226///
11227/// The iterator can be defined with any number of axes (defined by 3D
11228/// vectors). The axes must not be coincident, and typically are equally
11229/// spaced from one another. The order which the axes are defined determines
11230/// the order in which the axes (and hence the points) are traversed. So for
11231/// example, in a 2D sphere, four axes in the (-x,+x,-y,+y) directions would
11232/// provide a "ping pong" iteration, while four axes ordered in the
11233/// (+x,+y,-x,-y) directions would provide a counterclockwise rotation
11234/// iteration.
11235///
11236/// The iterator provides thread-safe iteration of dataset points. It supports
11237/// both random and forward iteration.
11238///
11239/// @warning
11240/// The behavior of the iterator depends on the ordering of the iteration
11241/// axes. It is possible to obtain a wide variety of iteration patterns
11242/// depending on these axes. For example, if only one axis is defined, then a
11243/// "linear" pattern is possible (i.e., visiting points in the half space
11244/// defined by the vector); if two axes, then a "diagonal" iteration pattern;
11245/// and so on. Note that points are sorted along the iteration axes depending
11246/// on the their projection onto them (e.g., using the dot product). Because
11247/// only points with positive projection are associated with an axis, it is
11248/// possible that some points in the neighborhood will not be processed (i.e.,
11249/// if a point in the neighborhood does not positively project onto any of the
11250/// axes, then it will not be iterated over). Thus if all points are to be
11251/// iterated over, then the axes must form a basis which covers all points
11252/// using positive projections.
11253///
11254/// @sa
11255/// vtkVoronoi2D vtkVoronoi3D vtkStaticPointLocator vtkPointLocator
11256#[allow(non_camel_case_types)]
11257pub struct vtkSphericalPointIterator(*mut core::ffi::c_void);
11258impl vtkSphericalPointIterator {
11259    /// Creates a new [vtkSphericalPointIterator] wrapped inside `vtkNew`
11260    #[doc(alias = "vtkSphericalPointIterator")]
11261    pub fn new() -> Self {
11262        unsafe extern "C" {
11263            fn vtkSphericalPointIterator_new() -> *mut core::ffi::c_void;
11264        }
11265        Self(unsafe { &mut *vtkSphericalPointIterator_new() })
11266    }
11267    #[cfg(test)]
11268    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11269        unsafe extern "C" {
11270            fn vtkSphericalPointIterator_get_ptr(
11271                sself: *mut core::ffi::c_void,
11272            ) -> *mut core::ffi::c_void;
11273        }
11274        unsafe { vtkSphericalPointIterator_get_ptr(self.0) }
11275    }
11276}
11277impl std::default::Default for vtkSphericalPointIterator {
11278    fn default() -> Self {
11279        Self::new()
11280    }
11281}
11282impl Drop for vtkSphericalPointIterator {
11283    fn drop(&mut self) {
11284        unsafe extern "C" {
11285            fn vtkSphericalPointIterator_destructor(sself: *mut core::ffi::c_void);
11286        }
11287        unsafe { vtkSphericalPointIterator_destructor(self.0) }
11288        self.0 = core::ptr::null_mut();
11289    }
11290}
11291#[test]
11292fn test_vtkSphericalPointIterator_create_drop() {
11293    let obj = vtkSphericalPointIterator::new();
11294    let ptr = obj.0;
11295    assert!(!ptr.is_null());
11296    assert!(unsafe { !obj._get_ptr().is_null() });
11297    drop(obj);
11298    let new_obj = vtkSphericalPointIterator(ptr);
11299    assert!(unsafe { new_obj._get_ptr().is_null() });
11300}
11301/// object represents upward pointers from points
11302///
11303/// to list of cells using each point
11304///
11305/// vtkStaticCellLinks is a supplemental object to vtkCellArray and
11306/// vtkCellTypes, enabling access from points to the cells using the
11307/// points. vtkStaticCellLinks is an array of links, each link represents a
11308/// list of cell ids using a particular point. The information provided by
11309/// this object can be used to determine cell neighbors and construct other
11310/// local topological information. This class is a faster implementation of
11311/// vtkCellLinks. However, it cannot be incrementally constructed; it is meant
11312/// to be constructed once (statically) and must be rebuilt if the cells
11313/// change.
11314///
11315/// @warning
11316/// This is a drop-in replacement for vtkCellLinks using static link
11317/// construction. It uses the templated vtkStaticCellLinksTemplate class,
11318/// instantiating vtkStaticCellLinksTemplate with a vtkIdType template
11319/// parameter. Note that for best performance, the vtkStaticCellLinksTemplate
11320/// class may be used directly, instantiating it with the appropriate id
11321/// type. This class is also wrappable and can be used from an interpreted
11322/// language such as Python.
11323///
11324/// @sa
11325/// vtkCellLinks vtkStaticCellLinksTemplate
11326#[allow(non_camel_case_types)]
11327pub struct vtkStaticCellLinks(*mut core::ffi::c_void);
11328impl vtkStaticCellLinks {
11329    /// Creates a new [vtkStaticCellLinks] wrapped inside `vtkNew`
11330    #[doc(alias = "vtkStaticCellLinks")]
11331    pub fn new() -> Self {
11332        unsafe extern "C" {
11333            fn vtkStaticCellLinks_new() -> *mut core::ffi::c_void;
11334        }
11335        Self(unsafe { &mut *vtkStaticCellLinks_new() })
11336    }
11337    #[cfg(test)]
11338    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11339        unsafe extern "C" {
11340            fn vtkStaticCellLinks_get_ptr(
11341                sself: *mut core::ffi::c_void,
11342            ) -> *mut core::ffi::c_void;
11343        }
11344        unsafe { vtkStaticCellLinks_get_ptr(self.0) }
11345    }
11346}
11347impl std::default::Default for vtkStaticCellLinks {
11348    fn default() -> Self {
11349        Self::new()
11350    }
11351}
11352impl Drop for vtkStaticCellLinks {
11353    fn drop(&mut self) {
11354        unsafe extern "C" {
11355            fn vtkStaticCellLinks_destructor(sself: *mut core::ffi::c_void);
11356        }
11357        unsafe { vtkStaticCellLinks_destructor(self.0) }
11358        self.0 = core::ptr::null_mut();
11359    }
11360}
11361#[test]
11362fn test_vtkStaticCellLinks_create_drop() {
11363    let obj = vtkStaticCellLinks::new();
11364    let ptr = obj.0;
11365    assert!(!ptr.is_null());
11366    assert!(unsafe { !obj._get_ptr().is_null() });
11367    drop(obj);
11368    let new_obj = vtkStaticCellLinks(ptr);
11369    assert!(unsafe { new_obj._get_ptr().is_null() });
11370}
11371/// perform fast cell location operations
11372///
11373///
11374/// vtkStaticCellLocator is a type of vtkAbstractCellLocator that accelerates
11375/// certain operations when performing spatial operations on cells. These
11376/// operations include finding a point that contains a cell, and intersecting
11377/// cells with a line.
11378///
11379/// vtkStaticCellLocator is an accelerated version of vtkCellLocator. It is
11380/// threaded (via vtkSMPTools), and supports one-time static construction
11381/// (i.e., incremental cell insertion is not supported).
11382///
11383/// @warning
11384/// vtkStaticCellLocator utilizes the following parent class parameters:
11385/// - Automatic                   (default true)
11386/// - NumberOfCellsPerNode        (default 10)
11387/// - UseExistingSearchStructure  (default false)
11388///
11389/// vtkStaticCellLocator does NOT utilize the following parameters:
11390/// - CacheCellBounds             (always cached)
11391/// - Tolerance
11392/// - Level
11393/// - MaxLevel
11394/// - RetainCellLists
11395///
11396/// @warning
11397/// This class is templated. It may run slower than serial execution if the code
11398/// is not optimized during compilation. Build in Release or ReleaseWithDebugInfo.
11399///
11400/// @sa
11401/// vtkAbstractCellLocator vtkCellLocator vtkCellTreeLocator vtkModifiedBSPTree vtkOBBTree
11402#[allow(non_camel_case_types)]
11403pub struct vtkStaticCellLocator(*mut core::ffi::c_void);
11404impl vtkStaticCellLocator {
11405    /// Creates a new [vtkStaticCellLocator] wrapped inside `vtkNew`
11406    #[doc(alias = "vtkStaticCellLocator")]
11407    pub fn new() -> Self {
11408        unsafe extern "C" {
11409            fn vtkStaticCellLocator_new() -> *mut core::ffi::c_void;
11410        }
11411        Self(unsafe { &mut *vtkStaticCellLocator_new() })
11412    }
11413    #[cfg(test)]
11414    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11415        unsafe extern "C" {
11416            fn vtkStaticCellLocator_get_ptr(
11417                sself: *mut core::ffi::c_void,
11418            ) -> *mut core::ffi::c_void;
11419        }
11420        unsafe { vtkStaticCellLocator_get_ptr(self.0) }
11421    }
11422}
11423impl std::default::Default for vtkStaticCellLocator {
11424    fn default() -> Self {
11425        Self::new()
11426    }
11427}
11428impl Drop for vtkStaticCellLocator {
11429    fn drop(&mut self) {
11430        unsafe extern "C" {
11431            fn vtkStaticCellLocator_destructor(sself: *mut core::ffi::c_void);
11432        }
11433        unsafe { vtkStaticCellLocator_destructor(self.0) }
11434        self.0 = core::ptr::null_mut();
11435    }
11436}
11437#[test]
11438fn test_vtkStaticCellLocator_create_drop() {
11439    let obj = vtkStaticCellLocator::new();
11440    let ptr = obj.0;
11441    assert!(!ptr.is_null());
11442    assert!(unsafe { !obj._get_ptr().is_null() });
11443    drop(obj);
11444    let new_obj = vtkStaticCellLocator(ptr);
11445    assert!(unsafe { new_obj._get_ptr().is_null() });
11446}
11447/// quickly locate points in 3-space
11448///
11449///
11450/// vtkStaticPointLocator is a spatial search object to quickly locate points
11451/// in 3D.  vtkStaticPointLocator works by dividing a specified region of
11452/// space into a regular array of cuboid buckets, and then keeping a
11453/// list of points that lie in each bucket. Typical operation involves giving
11454/// a position in 3D and finding the closest point; or finding the N closest
11455/// points.
11456///
11457/// vtkStaticPointLocator is an accelerated version of vtkPointLocator. It is
11458/// threaded (via vtkSMPTools), and supports one-time static construction
11459/// (i.e., incremental point insertion is not supported). If you need to
11460/// incrementally insert points, use the vtkPointLocator or its kin to do so.
11461///
11462/// @warning
11463/// This class is templated. It may run slower than serial execution if the code
11464/// is not optimized during compilation. Build in Release or ReleaseWithDebugInfo.
11465///
11466/// @warning
11467/// Make sure that you review the documentation for the superclasses
11468/// vtkAbstactPointLocator and vtkLocator. In particular the Automatic
11469/// data member can be used to automatically determine divisions based
11470/// on the average number of points per bucket.
11471///
11472/// @warning
11473/// Other types of spatial locators have been developed such as octrees and
11474/// kd-trees. These are often more efficient for the operations described
11475/// here.
11476///
11477/// @warning
11478/// Frequently vtkStaticPointLocator is used in lieu of vtkPointLocator.
11479/// They are very similar in terms of algorithmic approach, however
11480/// vtkStaticCellLocator is threaded and is typically much faster for
11481/// a large number of points (on the order of 3-5x faster). For small numbers
11482/// of points, vtkPointLocator is just as fast as vtkStaticPointLocator.
11483///
11484/// @sa
11485/// vtkPointLocator vtkCellLocator vtkLocator vtkAbstractPointLocator
11486#[allow(non_camel_case_types)]
11487pub struct vtkStaticPointLocator(*mut core::ffi::c_void);
11488impl vtkStaticPointLocator {
11489    /// Creates a new [vtkStaticPointLocator] wrapped inside `vtkNew`
11490    #[doc(alias = "vtkStaticPointLocator")]
11491    pub fn new() -> Self {
11492        unsafe extern "C" {
11493            fn vtkStaticPointLocator_new() -> *mut core::ffi::c_void;
11494        }
11495        Self(unsafe { &mut *vtkStaticPointLocator_new() })
11496    }
11497    #[cfg(test)]
11498    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11499        unsafe extern "C" {
11500            fn vtkStaticPointLocator_get_ptr(
11501                sself: *mut core::ffi::c_void,
11502            ) -> *mut core::ffi::c_void;
11503        }
11504        unsafe { vtkStaticPointLocator_get_ptr(self.0) }
11505    }
11506}
11507impl std::default::Default for vtkStaticPointLocator {
11508    fn default() -> Self {
11509        Self::new()
11510    }
11511}
11512impl Drop for vtkStaticPointLocator {
11513    fn drop(&mut self) {
11514        unsafe extern "C" {
11515            fn vtkStaticPointLocator_destructor(sself: *mut core::ffi::c_void);
11516        }
11517        unsafe { vtkStaticPointLocator_destructor(self.0) }
11518        self.0 = core::ptr::null_mut();
11519    }
11520}
11521#[test]
11522fn test_vtkStaticPointLocator_create_drop() {
11523    let obj = vtkStaticPointLocator::new();
11524    let ptr = obj.0;
11525    assert!(!ptr.is_null());
11526    assert!(unsafe { !obj._get_ptr().is_null() });
11527    drop(obj);
11528    let new_obj = vtkStaticPointLocator(ptr);
11529    assert!(unsafe { new_obj._get_ptr().is_null() });
11530}
11531/// quickly locate points in 2-space
11532///
11533///
11534/// vtkStaticPointLocator2D is a spatial search object to quickly locate points
11535/// in 2D.  vtkStaticPointLocator2D works by dividing a specified region of
11536/// space into a regular array of rectilinear buckets, and then keeping a
11537/// list of points that lie in each bucket. Typical operation involves giving
11538/// a position in 2D and finding the closest point; or finding the N closest
11539/// points. (Note that the more general vtkStaticPointLocator is available
11540/// for 3D operations.) Other specialized methods for 2D have also been provided.
11541///
11542/// vtkStaticPointLocator2D is an accelerated version of vtkPointLocator. It is
11543/// threaded (via vtkSMPTools), and supports one-time static construction
11544/// (i.e., incremental point insertion is not supported). If you need to
11545/// incrementally insert points, use the vtkPointLocator or its kin to do so.
11546///
11547/// Note that to satisfy the superclass's API, methods often assume a 3D point
11548/// is provided. However, only the x,y values are used for processing. The
11549/// z-value is only used to define location of the 2D plane.
11550///
11551/// @warning
11552/// This class is templated. It may run slower than serial execution if the code
11553/// is not optimized during compilation. Build in Release or ReleaseWithDebugInfo.
11554///
11555/// @warning
11556/// Make sure that you review the documentation for the superclasses
11557/// vtkAbstactPointLocator and vtkLocator. In particular the Automatic
11558/// data member can be used to automatically determine divisions based
11559/// on the average number of points per bucket.
11560///
11561/// @warning
11562/// Other types of spatial locators have been developed such as octrees and
11563/// kd-trees. These are often more efficient for the operations described
11564/// here.
11565///
11566/// @sa
11567/// vtkStaticPointLocator vtkPointLocator vtkCellLocator vtkLocator
11568/// vtkAbstractPointLocator
11569#[allow(non_camel_case_types)]
11570pub struct vtkStaticPointLocator2D(*mut core::ffi::c_void);
11571impl vtkStaticPointLocator2D {
11572    /// Creates a new [vtkStaticPointLocator2D] wrapped inside `vtkNew`
11573    #[doc(alias = "vtkStaticPointLocator2D")]
11574    pub fn new() -> Self {
11575        unsafe extern "C" {
11576            fn vtkStaticPointLocator2D_new() -> *mut core::ffi::c_void;
11577        }
11578        Self(unsafe { &mut *vtkStaticPointLocator2D_new() })
11579    }
11580    #[cfg(test)]
11581    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11582        unsafe extern "C" {
11583            fn vtkStaticPointLocator2D_get_ptr(
11584                sself: *mut core::ffi::c_void,
11585            ) -> *mut core::ffi::c_void;
11586        }
11587        unsafe { vtkStaticPointLocator2D_get_ptr(self.0) }
11588    }
11589}
11590impl std::default::Default for vtkStaticPointLocator2D {
11591    fn default() -> Self {
11592        Self::new()
11593    }
11594}
11595impl Drop for vtkStaticPointLocator2D {
11596    fn drop(&mut self) {
11597        unsafe extern "C" {
11598            fn vtkStaticPointLocator2D_destructor(sself: *mut core::ffi::c_void);
11599        }
11600        unsafe { vtkStaticPointLocator2D_destructor(self.0) }
11601        self.0 = core::ptr::null_mut();
11602    }
11603}
11604#[test]
11605fn test_vtkStaticPointLocator2D_create_drop() {
11606    let obj = vtkStaticPointLocator2D::new();
11607    let ptr = obj.0;
11608    assert!(!ptr.is_null());
11609    assert!(unsafe { !obj._get_ptr().is_null() });
11610    drop(obj);
11611    let new_obj = vtkStaticPointLocator2D(ptr);
11612    assert!(unsafe { new_obj._get_ptr().is_null() });
11613}
11614/// implicit object to represent cell connectivity
11615///
11616///
11617/// vtkStructuredCellArray stores dataset topologies as an structured connectivity table
11618/// listing the point ids that make up each cell.
11619///
11620/// Internally, the connectivity is stored as a vtkImplicitArray that is constructed
11621/// using the SetData function by providing the dimensions of the dataset and a flag
11622/// indicating whether the data should use voxel/pixel orientation.
11623///
11624/// This class was designed as a more performant alternative to vtkStructuredData::GetCellPoints.
11625///
11626/// @sa
11627/// vtkCellArray vtkAbstractCellArray
11628#[allow(non_camel_case_types)]
11629pub struct vtkStructuredCellArray(*mut core::ffi::c_void);
11630impl vtkStructuredCellArray {
11631    /// Creates a new [vtkStructuredCellArray] wrapped inside `vtkNew`
11632    #[doc(alias = "vtkStructuredCellArray")]
11633    pub fn new() -> Self {
11634        unsafe extern "C" {
11635            fn vtkStructuredCellArray_new() -> *mut core::ffi::c_void;
11636        }
11637        Self(unsafe { &mut *vtkStructuredCellArray_new() })
11638    }
11639    #[cfg(test)]
11640    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11641        unsafe extern "C" {
11642            fn vtkStructuredCellArray_get_ptr(
11643                sself: *mut core::ffi::c_void,
11644            ) -> *mut core::ffi::c_void;
11645        }
11646        unsafe { vtkStructuredCellArray_get_ptr(self.0) }
11647    }
11648}
11649impl std::default::Default for vtkStructuredCellArray {
11650    fn default() -> Self {
11651        Self::new()
11652    }
11653}
11654impl Drop for vtkStructuredCellArray {
11655    fn drop(&mut self) {
11656        unsafe extern "C" {
11657            fn vtkStructuredCellArray_destructor(sself: *mut core::ffi::c_void);
11658        }
11659        unsafe { vtkStructuredCellArray_destructor(self.0) }
11660        self.0 = core::ptr::null_mut();
11661    }
11662}
11663#[test]
11664fn test_vtkStructuredCellArray_create_drop() {
11665    let obj = vtkStructuredCellArray::new();
11666    let ptr = obj.0;
11667    assert!(!ptr.is_null());
11668    assert!(unsafe { !obj._get_ptr().is_null() });
11669    drop(obj);
11670    let new_obj = vtkStructuredCellArray(ptr);
11671    assert!(unsafe { new_obj._get_ptr().is_null() });
11672}
11673/// helper class to aid working with structured
11674///
11675/// extents.
11676///
11677///
11678/// vtkStructuredExtent is an helper class that helps in arithmetic with
11679/// structured extents. It defines a bunch of static methods (most of which are
11680/// inlined) to aid in dealing with extents.
11681#[allow(non_camel_case_types)]
11682pub struct vtkStructuredExtent(*mut core::ffi::c_void);
11683impl vtkStructuredExtent {
11684    /// Creates a new [vtkStructuredExtent] wrapped inside `vtkNew`
11685    #[doc(alias = "vtkStructuredExtent")]
11686    pub fn new() -> Self {
11687        unsafe extern "C" {
11688            fn vtkStructuredExtent_new() -> *mut core::ffi::c_void;
11689        }
11690        Self(unsafe { &mut *vtkStructuredExtent_new() })
11691    }
11692    #[cfg(test)]
11693    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11694        unsafe extern "C" {
11695            fn vtkStructuredExtent_get_ptr(
11696                sself: *mut core::ffi::c_void,
11697            ) -> *mut core::ffi::c_void;
11698        }
11699        unsafe { vtkStructuredExtent_get_ptr(self.0) }
11700    }
11701}
11702impl std::default::Default for vtkStructuredExtent {
11703    fn default() -> Self {
11704        Self::new()
11705    }
11706}
11707impl Drop for vtkStructuredExtent {
11708    fn drop(&mut self) {
11709        unsafe extern "C" {
11710            fn vtkStructuredExtent_destructor(sself: *mut core::ffi::c_void);
11711        }
11712        unsafe { vtkStructuredExtent_destructor(self.0) }
11713        self.0 = core::ptr::null_mut();
11714    }
11715}
11716#[test]
11717fn test_vtkStructuredExtent_create_drop() {
11718    let obj = vtkStructuredExtent::new();
11719    let ptr = obj.0;
11720    assert!(!ptr.is_null());
11721    assert!(unsafe { !obj._get_ptr().is_null() });
11722    drop(obj);
11723    let new_obj = vtkStructuredExtent(ptr);
11724    assert!(unsafe { new_obj._get_ptr().is_null() });
11725}
11726/// topologically regular array of data
11727///
11728///
11729/// vtkStructuredGrid is a data object that is a concrete implementation of
11730/// vtkDataSet. vtkStructuredGrid represents a geometric structure that is a
11731/// topologically regular array of points. The topology is that of a cube that
11732/// has been subdivided into a regular array of smaller cubes. Each point/cell
11733/// can be addressed with i-j-k indices. Examples include finite difference
11734/// grids.
11735///
11736/// The order and number of points must match that specified by the dimensions
11737/// of the grid. The point order increases in i fastest (from 0<=i<dims[0]),
11738/// then j (0<=j<dims[1]), then k (0<=k<dims[2]) where dims[] are the
11739/// dimensions of the grid in the i-j-k topological directions. The number of
11740/// points is dims[0]*dims[1]*dims[2]. The same is true for the cells of the
11741/// grid. The order and number of cells must match that specified by the
11742/// dimensions of the grid. The cell order increases in i fastest (from
11743/// 0<=i<(dims[0]-1)), then j (0<=j<(dims[1]-1)), then k (0<=k<(dims[2]-1))
11744/// The number of cells is (dims[0]-1)*(dims[1]-1)*(dims[2]-1).
11745///
11746/// vtkStructuredGrid has the ability to blank,
11747/// or "turn-off" points and cells in the dataset. This is done by setting
11748/// vtkDataSetAttributes::HIDDENPOINT or vtkDataSetAttributes::HIDDENCELL
11749/// in the ghost array for each point / cell that needs to be blanked.
11750#[allow(non_camel_case_types)]
11751pub struct vtkStructuredGrid(*mut core::ffi::c_void);
11752impl vtkStructuredGrid {
11753    /// Creates a new [vtkStructuredGrid] wrapped inside `vtkNew`
11754    #[doc(alias = "vtkStructuredGrid")]
11755    pub fn new() -> Self {
11756        unsafe extern "C" {
11757            fn vtkStructuredGrid_new() -> *mut core::ffi::c_void;
11758        }
11759        Self(unsafe { &mut *vtkStructuredGrid_new() })
11760    }
11761    #[cfg(test)]
11762    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11763        unsafe extern "C" {
11764            fn vtkStructuredGrid_get_ptr(
11765                sself: *mut core::ffi::c_void,
11766            ) -> *mut core::ffi::c_void;
11767        }
11768        unsafe { vtkStructuredGrid_get_ptr(self.0) }
11769    }
11770}
11771impl std::default::Default for vtkStructuredGrid {
11772    fn default() -> Self {
11773        Self::new()
11774    }
11775}
11776impl Drop for vtkStructuredGrid {
11777    fn drop(&mut self) {
11778        unsafe extern "C" {
11779            fn vtkStructuredGrid_destructor(sself: *mut core::ffi::c_void);
11780        }
11781        unsafe { vtkStructuredGrid_destructor(self.0) }
11782        self.0 = core::ptr::null_mut();
11783    }
11784}
11785#[test]
11786fn test_vtkStructuredGrid_create_drop() {
11787    let obj = vtkStructuredGrid::new();
11788    let ptr = obj.0;
11789    assert!(!ptr.is_null());
11790    assert!(unsafe { !obj._get_ptr().is_null() });
11791    drop(obj);
11792    let new_obj = vtkStructuredGrid(ptr);
11793    assert!(unsafe { new_obj._get_ptr().is_null() });
11794}
11795/// A subclass of ImageData.
11796///
11797///
11798/// StructuredPoints is a subclass of ImageData that requires the data extent
11799/// to exactly match the update extent. Normal image data allows that the
11800/// data extent may be larger than the update extent.
11801/// StructuredPoints also defines the origin differently that vtkImageData.
11802/// For structured points the origin is the location of first point.
11803/// Whereas images define the origin as the location of point 0, 0, 0.
11804/// Image Origin is stored in ivar, and structured points
11805/// have special methods for setting/getting the origin/extents.
11806#[allow(non_camel_case_types)]
11807pub struct vtkStructuredPoints(*mut core::ffi::c_void);
11808impl vtkStructuredPoints {
11809    /// Creates a new [vtkStructuredPoints] wrapped inside `vtkNew`
11810    #[doc(alias = "vtkStructuredPoints")]
11811    pub fn new() -> Self {
11812        unsafe extern "C" {
11813            fn vtkStructuredPoints_new() -> *mut core::ffi::c_void;
11814        }
11815        Self(unsafe { &mut *vtkStructuredPoints_new() })
11816    }
11817    #[cfg(test)]
11818    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11819        unsafe extern "C" {
11820            fn vtkStructuredPoints_get_ptr(
11821                sself: *mut core::ffi::c_void,
11822            ) -> *mut core::ffi::c_void;
11823        }
11824        unsafe { vtkStructuredPoints_get_ptr(self.0) }
11825    }
11826}
11827impl std::default::Default for vtkStructuredPoints {
11828    fn default() -> Self {
11829        Self::new()
11830    }
11831}
11832impl Drop for vtkStructuredPoints {
11833    fn drop(&mut self) {
11834        unsafe extern "C" {
11835            fn vtkStructuredPoints_destructor(sself: *mut core::ffi::c_void);
11836        }
11837        unsafe { vtkStructuredPoints_destructor(self.0) }
11838        self.0 = core::ptr::null_mut();
11839    }
11840}
11841#[test]
11842fn test_vtkStructuredPoints_create_drop() {
11843    let obj = vtkStructuredPoints::new();
11844    let ptr = obj.0;
11845    assert!(!ptr.is_null());
11846    assert!(unsafe { !obj._get_ptr().is_null() });
11847    drop(obj);
11848    let new_obj = vtkStructuredPoints(ptr);
11849    assert!(unsafe { new_obj._get_ptr().is_null() });
11850}
11851/// maintain a list of structured points data objects
11852///
11853///
11854/// vtkStructuredPointsCollection is an object that creates and manipulates
11855/// ordered lists of structured points datasets. See also vtkCollection and
11856/// subclasses.
11857#[allow(non_camel_case_types)]
11858pub struct vtkStructuredPointsCollection(*mut core::ffi::c_void);
11859impl vtkStructuredPointsCollection {
11860    /// Creates a new [vtkStructuredPointsCollection] wrapped inside `vtkNew`
11861    #[doc(alias = "vtkStructuredPointsCollection")]
11862    pub fn new() -> Self {
11863        unsafe extern "C" {
11864            fn vtkStructuredPointsCollection_new() -> *mut core::ffi::c_void;
11865        }
11866        Self(unsafe { &mut *vtkStructuredPointsCollection_new() })
11867    }
11868    #[cfg(test)]
11869    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11870        unsafe extern "C" {
11871            fn vtkStructuredPointsCollection_get_ptr(
11872                sself: *mut core::ffi::c_void,
11873            ) -> *mut core::ffi::c_void;
11874        }
11875        unsafe { vtkStructuredPointsCollection_get_ptr(self.0) }
11876    }
11877}
11878impl std::default::Default for vtkStructuredPointsCollection {
11879    fn default() -> Self {
11880        Self::new()
11881    }
11882}
11883impl Drop for vtkStructuredPointsCollection {
11884    fn drop(&mut self) {
11885        unsafe extern "C" {
11886            fn vtkStructuredPointsCollection_destructor(sself: *mut core::ffi::c_void);
11887        }
11888        unsafe { vtkStructuredPointsCollection_destructor(self.0) }
11889        self.0 = core::ptr::null_mut();
11890    }
11891}
11892#[test]
11893fn test_vtkStructuredPointsCollection_create_drop() {
11894    let obj = vtkStructuredPointsCollection::new();
11895    let ptr = obj.0;
11896    assert!(!ptr.is_null());
11897    assert!(unsafe { !obj._get_ptr().is_null() });
11898    drop(obj);
11899    let new_obj = vtkStructuredPointsCollection(ptr);
11900    assert!(unsafe { new_obj._get_ptr().is_null() });
11901}
11902/// implicit function for a Superquadric
11903///
11904///
11905/// vtkSuperquadric computes the implicit function and function gradient
11906/// for a superquadric. vtkSuperquadric is a concrete implementation of
11907/// vtkImplicitFunction.  The superquadric is centered at Center and axes
11908/// of rotation is along the y-axis. (Use the superclass'
11909/// vtkImplicitFunction transformation matrix if necessary to reposition.)
11910/// Roundness parameters (PhiRoundness and ThetaRoundness) control
11911/// the shape of the superquadric.  The Toroidal boolean controls whether
11912/// a toroidal superquadric is produced.  If so, the Thickness parameter
11913/// controls the thickness of the toroid:  0 is the thinnest allowable
11914/// toroid, and 1 has a minimum sized hole.  The Scale parameters allow
11915/// the superquadric to be scaled in x, y, and z (normal vectors are correctly
11916/// generated in any case).  The Size parameter controls size of the
11917/// superquadric.
11918///
11919/// This code is based on "Rigid physically based superquadrics", A. H. Barr,
11920/// in "Graphics Gems III", David Kirk, ed., Academic Press, 1992.
11921///
11922/// @warning
11923/// The Size and Thickness parameters control coefficients of superquadric
11924/// generation, and may do not exactly describe the size of the superquadric.
11925#[allow(non_camel_case_types)]
11926pub struct vtkSuperquadric(*mut core::ffi::c_void);
11927impl vtkSuperquadric {
11928    /// Creates a new [vtkSuperquadric] wrapped inside `vtkNew`
11929    #[doc(alias = "vtkSuperquadric")]
11930    pub fn new() -> Self {
11931        unsafe extern "C" {
11932            fn vtkSuperquadric_new() -> *mut core::ffi::c_void;
11933        }
11934        Self(unsafe { &mut *vtkSuperquadric_new() })
11935    }
11936    #[cfg(test)]
11937    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
11938        unsafe extern "C" {
11939            fn vtkSuperquadric_get_ptr(
11940                sself: *mut core::ffi::c_void,
11941            ) -> *mut core::ffi::c_void;
11942        }
11943        unsafe { vtkSuperquadric_get_ptr(self.0) }
11944    }
11945}
11946impl std::default::Default for vtkSuperquadric {
11947    fn default() -> Self {
11948        Self::new()
11949    }
11950}
11951impl Drop for vtkSuperquadric {
11952    fn drop(&mut self) {
11953        unsafe extern "C" {
11954            fn vtkSuperquadric_destructor(sself: *mut core::ffi::c_void);
11955        }
11956        unsafe { vtkSuperquadric_destructor(self.0) }
11957        self.0 = core::ptr::null_mut();
11958    }
11959}
11960#[test]
11961fn test_vtkSuperquadric_create_drop() {
11962    let obj = vtkSuperquadric::new();
11963    let ptr = obj.0;
11964    assert!(!ptr.is_null());
11965    assert!(unsafe { !obj._get_ptr().is_null() });
11966    drop(obj);
11967    let new_obj = vtkSuperquadric(ptr);
11968    assert!(unsafe { new_obj._get_ptr().is_null() });
11969}
11970/// A table, which contains similar-typed columns of data
11971///
11972///
11973///
11974/// vtkTable is a basic data structure for storing columns of data.
11975/// Internally, columns are stored in a vtkDataSetAttributes structure called
11976/// RowData. However, using the vtkTable API additionally ensures that every column
11977/// has the same number of entries, and provides row access (using vtkVariantArray)
11978/// and single entry access (using vtkVariant).
11979///
11980/// Inserting or removing rows via the class API preserves existing table data where possible.
11981///
11982/// The "RemoveRow*" and SetNumberOfRows() operations will not release memory. Call on SqueezeRows()
11983/// to achieve this after performing the operations.
11984///
11985/// The field data inherited from vtkDataObject may be used to store metadata
11986/// related to the table.
11987///
11988/// @warning
11989/// You should use the vtkTable API to change the table data. Performing
11990/// operations on the object returned by GetRowData() may
11991/// yield unexpected results. vtkTable does allow the user to set the field
11992/// data using SetRowData(); the number of rows in the table is determined
11993/// by the number of tuples in the first array (it is assumed that all arrays
11994/// are the same length).
11995///
11996/// @warning
11997/// Each column added with AddColumn <b>must</b> have its name set to a unique,
11998/// non-empty string in order for GetValue() to function properly.
11999///
12000/// @par Thanks:
12001/// Thanks to Patricia Crossno, Ken Moreland, Andrew Wilson and Brian Wylie from
12002/// Sandia National Laboratories for their help in developing this class API.
12003#[allow(non_camel_case_types)]
12004pub struct vtkTable(*mut core::ffi::c_void);
12005impl vtkTable {
12006    /// Creates a new [vtkTable] wrapped inside `vtkNew`
12007    #[doc(alias = "vtkTable")]
12008    pub fn new() -> Self {
12009        unsafe extern "C" {
12010            fn vtkTable_new() -> *mut core::ffi::c_void;
12011        }
12012        Self(unsafe { &mut *vtkTable_new() })
12013    }
12014    #[cfg(test)]
12015    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12016        unsafe extern "C" {
12017            fn vtkTable_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
12018        }
12019        unsafe { vtkTable_get_ptr(self.0) }
12020    }
12021}
12022impl std::default::Default for vtkTable {
12023    fn default() -> Self {
12024        Self::new()
12025    }
12026}
12027impl Drop for vtkTable {
12028    fn drop(&mut self) {
12029        unsafe extern "C" {
12030            fn vtkTable_destructor(sself: *mut core::ffi::c_void);
12031        }
12032        unsafe { vtkTable_destructor(self.0) }
12033        self.0 = core::ptr::null_mut();
12034    }
12035}
12036#[test]
12037fn test_vtkTable_create_drop() {
12038    let obj = vtkTable::new();
12039    let ptr = obj.0;
12040    assert!(!ptr.is_null());
12041    assert!(unsafe { !obj._get_ptr().is_null() });
12042    drop(obj);
12043    let new_obj = vtkTable(ptr);
12044    assert!(unsafe { new_obj._get_ptr().is_null() });
12045}
12046/// a 3D cell that represents a tetrahedron
12047///
12048///
12049/// vtkTetra is a concrete implementation of vtkCell to represent a 3D
12050/// tetrahedron. vtkTetra uses the standard isoparametric shape functions
12051/// for a linear tetrahedron. The tetrahedron is defined by the four points
12052/// (0-3); where (0,1,2) is the base of the tetrahedron which, using the
12053/// right hand rule, forms a triangle whose normal points in the direction
12054/// of the fourth point.
12055///
12056/// @sa
12057/// vtkConvexPointSet vtkHexahedron vtkPyramid vtkVoxel vtkWedge
12058#[allow(non_camel_case_types)]
12059pub struct vtkTetra(*mut core::ffi::c_void);
12060impl vtkTetra {
12061    /// Creates a new [vtkTetra] wrapped inside `vtkNew`
12062    #[doc(alias = "vtkTetra")]
12063    pub fn new() -> Self {
12064        unsafe extern "C" {
12065            fn vtkTetra_new() -> *mut core::ffi::c_void;
12066        }
12067        Self(unsafe { &mut *vtkTetra_new() })
12068    }
12069    #[cfg(test)]
12070    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12071        unsafe extern "C" {
12072            fn vtkTetra_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
12073        }
12074        unsafe { vtkTetra_get_ptr(self.0) }
12075    }
12076}
12077impl std::default::Default for vtkTetra {
12078    fn default() -> Self {
12079        Self::new()
12080    }
12081}
12082impl Drop for vtkTetra {
12083    fn drop(&mut self) {
12084        unsafe extern "C" {
12085            fn vtkTetra_destructor(sself: *mut core::ffi::c_void);
12086        }
12087        unsafe { vtkTetra_destructor(self.0) }
12088        self.0 = core::ptr::null_mut();
12089    }
12090}
12091#[test]
12092fn test_vtkTetra_create_drop() {
12093    let obj = vtkTetra::new();
12094    let ptr = obj.0;
12095    assert!(!ptr.is_null());
12096    assert!(unsafe { !obj._get_ptr().is_null() });
12097    drop(obj);
12098    let new_obj = vtkTetra(ptr);
12099    assert!(unsafe { new_obj._get_ptr().is_null() });
12100}
12101/// A rooted tree data structure.
12102///
12103///
12104///
12105/// vtkTree is a connected directed graph with no cycles. A tree is a type of
12106/// directed graph, so works with all graph algorithms.
12107///
12108/// vtkTree is a read-only data structure.
12109/// To construct a tree, create an instance of vtkMutableDirectedGraph.
12110/// Add vertices and edges with AddVertex() and AddEdge(). You may alternately
12111/// start by adding a single vertex as the root then call graph->AddChild(parent)
12112/// which adds a new vertex and connects the parent to the child.
12113/// The tree MUST have all edges in the proper direction, from parent to child.
12114/// After building the tree, call tree->CheckedShallowCopy(graph) to copy the
12115/// structure into a vtkTree. This method will return false if the graph is
12116/// an invalid tree.
12117///
12118/// vtkTree provides some convenience methods for obtaining the parent and
12119/// children of a vertex, for finding the root, and determining if a vertex
12120/// is a leaf (a vertex with no children).
12121///
12122/// @sa
12123/// vtkDirectedGraph vtkMutableDirectedGraph vtkGraph
12124#[allow(non_camel_case_types)]
12125pub struct vtkTree(*mut core::ffi::c_void);
12126impl vtkTree {
12127    /// Creates a new [vtkTree] wrapped inside `vtkNew`
12128    #[doc(alias = "vtkTree")]
12129    pub fn new() -> Self {
12130        unsafe extern "C" {
12131            fn vtkTree_new() -> *mut core::ffi::c_void;
12132        }
12133        Self(unsafe { &mut *vtkTree_new() })
12134    }
12135    #[cfg(test)]
12136    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12137        unsafe extern "C" {
12138            fn vtkTree_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
12139        }
12140        unsafe { vtkTree_get_ptr(self.0) }
12141    }
12142}
12143impl std::default::Default for vtkTree {
12144    fn default() -> Self {
12145        Self::new()
12146    }
12147}
12148impl Drop for vtkTree {
12149    fn drop(&mut self) {
12150        unsafe extern "C" {
12151            fn vtkTree_destructor(sself: *mut core::ffi::c_void);
12152        }
12153        unsafe { vtkTree_destructor(self.0) }
12154        self.0 = core::ptr::null_mut();
12155    }
12156}
12157#[test]
12158fn test_vtkTree_create_drop() {
12159    let obj = vtkTree::new();
12160    let ptr = obj.0;
12161    assert!(!ptr.is_null());
12162    assert!(unsafe { !obj._get_ptr().is_null() });
12163    drop(obj);
12164    let new_obj = vtkTree(ptr);
12165    assert!(unsafe { new_obj._get_ptr().is_null() });
12166}
12167/// breadth first search iterator through a vtkTree
12168///
12169///
12170///
12171/// vtkTreeBFSIterator performs a breadth first search traversal of a tree.
12172///
12173/// After setting up the iterator, the normal mode of operation is to
12174/// set up a <code>while(iter->HasNext())</code> loop, with the statement
12175/// <code>vtkIdType vertex = iter->Next()</code> inside the loop.
12176///
12177/// @par Thanks:
12178/// Thanks to David Doria for submitting this class.
12179#[allow(non_camel_case_types)]
12180pub struct vtkTreeBFSIterator(*mut core::ffi::c_void);
12181impl vtkTreeBFSIterator {
12182    /// Creates a new [vtkTreeBFSIterator] wrapped inside `vtkNew`
12183    #[doc(alias = "vtkTreeBFSIterator")]
12184    pub fn new() -> Self {
12185        unsafe extern "C" {
12186            fn vtkTreeBFSIterator_new() -> *mut core::ffi::c_void;
12187        }
12188        Self(unsafe { &mut *vtkTreeBFSIterator_new() })
12189    }
12190    #[cfg(test)]
12191    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12192        unsafe extern "C" {
12193            fn vtkTreeBFSIterator_get_ptr(
12194                sself: *mut core::ffi::c_void,
12195            ) -> *mut core::ffi::c_void;
12196        }
12197        unsafe { vtkTreeBFSIterator_get_ptr(self.0) }
12198    }
12199}
12200impl std::default::Default for vtkTreeBFSIterator {
12201    fn default() -> Self {
12202        Self::new()
12203    }
12204}
12205impl Drop for vtkTreeBFSIterator {
12206    fn drop(&mut self) {
12207        unsafe extern "C" {
12208            fn vtkTreeBFSIterator_destructor(sself: *mut core::ffi::c_void);
12209        }
12210        unsafe { vtkTreeBFSIterator_destructor(self.0) }
12211        self.0 = core::ptr::null_mut();
12212    }
12213}
12214#[test]
12215fn test_vtkTreeBFSIterator_create_drop() {
12216    let obj = vtkTreeBFSIterator::new();
12217    let ptr = obj.0;
12218    assert!(!ptr.is_null());
12219    assert!(unsafe { !obj._get_ptr().is_null() });
12220    drop(obj);
12221    let new_obj = vtkTreeBFSIterator(ptr);
12222    assert!(unsafe { new_obj._get_ptr().is_null() });
12223}
12224/// depth first iterator through a vtkGraph
12225///
12226///
12227///
12228/// vtkTreeDFSIterator performs a depth first search traversal of a tree.
12229///
12230/// First, you must set the tree on which you are going to iterate, and then
12231/// optionally set the starting vertex and mode. The mode is either
12232/// DISCOVER (default), in which case vertices are visited as they are first
12233/// reached, or FINISH, in which case vertices are visited when they are
12234/// done, i.e. all adjacent vertices have been discovered already.
12235///
12236/// After setting up the iterator, the normal mode of operation is to
12237/// set up a <code>while(iter->HasNext())</code> loop, with the statement
12238/// <code>vtkIdType vertex = iter->Next()</code> inside the loop.
12239#[allow(non_camel_case_types)]
12240pub struct vtkTreeDFSIterator(*mut core::ffi::c_void);
12241impl vtkTreeDFSIterator {
12242    /// Creates a new [vtkTreeDFSIterator] wrapped inside `vtkNew`
12243    #[doc(alias = "vtkTreeDFSIterator")]
12244    pub fn new() -> Self {
12245        unsafe extern "C" {
12246            fn vtkTreeDFSIterator_new() -> *mut core::ffi::c_void;
12247        }
12248        Self(unsafe { &mut *vtkTreeDFSIterator_new() })
12249    }
12250    #[cfg(test)]
12251    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12252        unsafe extern "C" {
12253            fn vtkTreeDFSIterator_get_ptr(
12254                sself: *mut core::ffi::c_void,
12255            ) -> *mut core::ffi::c_void;
12256        }
12257        unsafe { vtkTreeDFSIterator_get_ptr(self.0) }
12258    }
12259}
12260impl std::default::Default for vtkTreeDFSIterator {
12261    fn default() -> Self {
12262        Self::new()
12263    }
12264}
12265impl Drop for vtkTreeDFSIterator {
12266    fn drop(&mut self) {
12267        unsafe extern "C" {
12268            fn vtkTreeDFSIterator_destructor(sself: *mut core::ffi::c_void);
12269        }
12270        unsafe { vtkTreeDFSIterator_destructor(self.0) }
12271        self.0 = core::ptr::null_mut();
12272    }
12273}
12274#[test]
12275fn test_vtkTreeDFSIterator_create_drop() {
12276    let obj = vtkTreeDFSIterator::new();
12277    let ptr = obj.0;
12278    assert!(!ptr.is_null());
12279    assert!(unsafe { !obj._get_ptr().is_null() });
12280    drop(obj);
12281    let new_obj = vtkTreeDFSIterator(ptr);
12282    assert!(unsafe { new_obj._get_ptr().is_null() });
12283}
12284/// cell represents a parabolic, 27-node isoparametric hexahedron
12285///
12286///
12287/// vtkTriQuadraticHexahedron is a concrete implementation of vtkNonLinearCell to
12288/// represent a three-dimensional, 27-node isoparametric triquadratic
12289/// hexahedron. The interpolation is the standard finite element, triquadratic
12290/// isoparametric shape function. The cell includes 8 edge nodes, 12 mid-edge nodes,
12291/// 6 mid-face nodes and one mid-volume node. The ordering of the 27 points defining the
12292/// cell is point ids (0-7,8-19, 20-25, 26)
12293/// where point ids 0-7 are the eight corner vertices of the cube; followed by
12294/// twelve midedge nodes (8-19); followed by 6 mid-face nodes (20-25) and the last node (26)
12295/// is the mid-volume node. Note that these midedge nodes correspond lie
12296/// on the edges defined by (0,1), (1,2), (2,3), (3,0), (4,5), (5,6), (6,7),
12297/// (7,4), (0,4), (1,5), (2,6), (3,7). The mid-surface nodes lies on the faces
12298/// defined by (first edge nodes id's, than mid-edge nodes id's):
12299/// (0,1,5,4;8,17,12,16), (1,2,6,5;9,18,13,17), (2,3,7,6,10,19,14,18),
12300/// (3,0,4,7;11,16,15,19), (0,1,2,3;8,9,10,11), (4,5,6,7;12,13,14,15).
12301/// The last point lies in the center of the cell (0,1,2,3,4,5,6,7).
12302///
12303/// \verbatim
12304///
12305/// top
12306/// 7--14--6
12307/// |      |
12308/// 15  25  13
12309/// |      |
12310/// 4--12--5
12311///
12312/// middle
12313/// 19--23--18
12314/// |      |
12315/// 20  26  21
12316/// |      |
12317/// 16--22--17
12318///
12319/// bottom
12320/// 3--10--2
12321/// |      |
12322/// 11  24  9
12323/// |      |
12324/// 0-- 8--1
12325///
12326/// \endverbatim
12327///
12328///
12329/// @sa
12330/// vtkQuadraticEdge vtkQuadraticTriangle vtkQuadraticTetra
12331/// vtkQuadraticQuad vtkQuadraticPyramid vtkQuadraticWedge
12332/// vtkBiQuadraticQuad
12333///
12334/// @par Thanks:
12335/// Thanks to Soeren Gebbert who developed this class and
12336/// integrated it into VTK 5.0.
12337#[allow(non_camel_case_types)]
12338pub struct vtkTriQuadraticHexahedron(*mut core::ffi::c_void);
12339impl vtkTriQuadraticHexahedron {
12340    /// Creates a new [vtkTriQuadraticHexahedron] wrapped inside `vtkNew`
12341    #[doc(alias = "vtkTriQuadraticHexahedron")]
12342    pub fn new() -> Self {
12343        unsafe extern "C" {
12344            fn vtkTriQuadraticHexahedron_new() -> *mut core::ffi::c_void;
12345        }
12346        Self(unsafe { &mut *vtkTriQuadraticHexahedron_new() })
12347    }
12348    #[cfg(test)]
12349    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12350        unsafe extern "C" {
12351            fn vtkTriQuadraticHexahedron_get_ptr(
12352                sself: *mut core::ffi::c_void,
12353            ) -> *mut core::ffi::c_void;
12354        }
12355        unsafe { vtkTriQuadraticHexahedron_get_ptr(self.0) }
12356    }
12357}
12358impl std::default::Default for vtkTriQuadraticHexahedron {
12359    fn default() -> Self {
12360        Self::new()
12361    }
12362}
12363impl Drop for vtkTriQuadraticHexahedron {
12364    fn drop(&mut self) {
12365        unsafe extern "C" {
12366            fn vtkTriQuadraticHexahedron_destructor(sself: *mut core::ffi::c_void);
12367        }
12368        unsafe { vtkTriQuadraticHexahedron_destructor(self.0) }
12369        self.0 = core::ptr::null_mut();
12370    }
12371}
12372#[test]
12373fn test_vtkTriQuadraticHexahedron_create_drop() {
12374    let obj = vtkTriQuadraticHexahedron::new();
12375    let ptr = obj.0;
12376    assert!(!ptr.is_null());
12377    assert!(unsafe { !obj._get_ptr().is_null() });
12378    drop(obj);
12379    let new_obj = vtkTriQuadraticHexahedron(ptr);
12380    assert!(unsafe { new_obj._get_ptr().is_null() });
12381}
12382/// cell represents a parabolic, 19-node isoparametric pyramid
12383///
12384///
12385/// vtkTriQuadraticPyramid is a concrete implementation of vtkNonLinearCell to
12386/// represent a second order three-dimensional isoparametric 19-node pyramid.
12387/// The interpolation is the standard finite element, tri-quadratic
12388/// isoparametric shape function. The cell includes 5 corner nodes, 8 mid-edge nodes,
12389/// 5 mid-face nodes, and 1 volumetric centroid node. The ordering of the nineteen points
12390/// defining the cell is point ids (0-4, 5-12, 13-17, 18), where point ids 0-4 are the five
12391/// corner vertices of the pyramid; followed by 8 mid-edge nodes (5-12); followed by
12392/// 5 mid-face nodes (13-17), and the last node (19) is the volumetric centroid node.
12393/// Note that these mid-edge nodes lie on the edges defined by (0, 1), (1, 2), (2, 3),
12394/// (3, 0), (0, 4), (1, 4), (2, 4), (3, 4), respectively. The mid-face nodes lie on the
12395/// faces defined by (first corner nodes id's, then mid-edge node id's):
12396/// quadrilateral face: (0, 3, 2, 1, 8, 7, 6, 5), triangle face 1: (0, 1, 4, 5, 10, 9),
12397/// triangle face 2: (1, 2, 4, 6, 11, 10), triangle face 3: (2, 3, 4, 7, 12, 11),
12398/// triangle face 5: (3, 0, 4, 8, 9, 12). The last point lies in the center of the cell
12399/// (0, 1, 2, 3, 4). The parametric location of vertex #4 is [0.5, 0.5, 1].
12400///
12401/// @note It should be noted that the parametric coordinates that describe this cell
12402/// are not distorted like in vtkPyramid and vtkQuadraticPyramid, which are a collapsed
12403/// hexahedron. They are the actual uniform isoparametric coordinates, which are described
12404/// in Browning's dissertation (see thanks section), but they are converted to [0, 1] space,
12405/// and the nodes are rotated so that node-0 has x = 0, y = 0, while maintaining the CCW order.
12406///
12407/// \verbatim
12408/// Description of 19-node pyramid from bottom to top (based on the z-axis).
12409///
12410/// base quadrilateral including mid-edge nodes and mid-face node:
12411/// 3-- 7--2
12412/// |      |
12413/// 8  13  6
12414/// |      |
12415/// 0-- 5--1
12416///
12417/// volumetric centroid node:
12418///
12419///
12420/// 18
12421///
12422///
12423/// mid-face nodes of triangular faces:
12424///
12425/// 16
12426/// /  \
12427/// 17    15
12428/// \  /
12429/// 14
12430///
12431/// mid-edge nodes of triangular faces:
12432///
12433/// 12--11
12434/// |  |
12435/// 9--10
12436///
12437/// top corner(apex):
12438///
12439///
12440/// 4
12441///
12442///
12443/// \endverbatim
12444///
12445/// @sa
12446/// vtkQuadraticEdge vtkBiQuadraticTriangle vtkQuadraticTetra
12447/// vtkQuadraticHexahedron vtkBiQuadraticQuad vtkQuadraticWedge
12448///
12449/// @par Thanks:
12450/// The shape functions and derivatives could be implemented thanks to
12451/// the doctoral dissertation: R.S. Browning. A Second-Order 19-Node Pyramid
12452/// Finite Element Suitable for Lumped Mass Explicit Dynamic methods in
12453/// Nonlinear Solid Mechanics, University of Alabama at Birmingham.
12454#[allow(non_camel_case_types)]
12455pub struct vtkTriQuadraticPyramid(*mut core::ffi::c_void);
12456impl vtkTriQuadraticPyramid {
12457    /// Creates a new [vtkTriQuadraticPyramid] wrapped inside `vtkNew`
12458    #[doc(alias = "vtkTriQuadraticPyramid")]
12459    pub fn new() -> Self {
12460        unsafe extern "C" {
12461            fn vtkTriQuadraticPyramid_new() -> *mut core::ffi::c_void;
12462        }
12463        Self(unsafe { &mut *vtkTriQuadraticPyramid_new() })
12464    }
12465    #[cfg(test)]
12466    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12467        unsafe extern "C" {
12468            fn vtkTriQuadraticPyramid_get_ptr(
12469                sself: *mut core::ffi::c_void,
12470            ) -> *mut core::ffi::c_void;
12471        }
12472        unsafe { vtkTriQuadraticPyramid_get_ptr(self.0) }
12473    }
12474}
12475impl std::default::Default for vtkTriQuadraticPyramid {
12476    fn default() -> Self {
12477        Self::new()
12478    }
12479}
12480impl Drop for vtkTriQuadraticPyramid {
12481    fn drop(&mut self) {
12482        unsafe extern "C" {
12483            fn vtkTriQuadraticPyramid_destructor(sself: *mut core::ffi::c_void);
12484        }
12485        unsafe { vtkTriQuadraticPyramid_destructor(self.0) }
12486        self.0 = core::ptr::null_mut();
12487    }
12488}
12489#[test]
12490fn test_vtkTriQuadraticPyramid_create_drop() {
12491    let obj = vtkTriQuadraticPyramid::new();
12492    let ptr = obj.0;
12493    assert!(!ptr.is_null());
12494    assert!(unsafe { !obj._get_ptr().is_null() });
12495    drop(obj);
12496    let new_obj = vtkTriQuadraticPyramid(ptr);
12497    assert!(unsafe { new_obj._get_ptr().is_null() });
12498}
12499/// a cell that represents a triangle
12500///
12501///
12502/// vtkTriangle is a concrete implementation of vtkCell to represent a triangle
12503/// located in 3-space.
12504#[allow(non_camel_case_types)]
12505pub struct vtkTriangle(*mut core::ffi::c_void);
12506impl vtkTriangle {
12507    /// Creates a new [vtkTriangle] wrapped inside `vtkNew`
12508    #[doc(alias = "vtkTriangle")]
12509    pub fn new() -> Self {
12510        unsafe extern "C" {
12511            fn vtkTriangle_new() -> *mut core::ffi::c_void;
12512        }
12513        Self(unsafe { &mut *vtkTriangle_new() })
12514    }
12515    #[cfg(test)]
12516    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12517        unsafe extern "C" {
12518            fn vtkTriangle_get_ptr(
12519                sself: *mut core::ffi::c_void,
12520            ) -> *mut core::ffi::c_void;
12521        }
12522        unsafe { vtkTriangle_get_ptr(self.0) }
12523    }
12524}
12525impl std::default::Default for vtkTriangle {
12526    fn default() -> Self {
12527        Self::new()
12528    }
12529}
12530impl Drop for vtkTriangle {
12531    fn drop(&mut self) {
12532        unsafe extern "C" {
12533            fn vtkTriangle_destructor(sself: *mut core::ffi::c_void);
12534        }
12535        unsafe { vtkTriangle_destructor(self.0) }
12536        self.0 = core::ptr::null_mut();
12537    }
12538}
12539#[test]
12540fn test_vtkTriangle_create_drop() {
12541    let obj = vtkTriangle::new();
12542    let ptr = obj.0;
12543    assert!(!ptr.is_null());
12544    assert!(unsafe { !obj._get_ptr().is_null() });
12545    drop(obj);
12546    let new_obj = vtkTriangle(ptr);
12547    assert!(unsafe { new_obj._get_ptr().is_null() });
12548}
12549/// a cell that represents a triangle strip
12550///
12551///
12552/// vtkTriangleStrip is a concrete implementation of vtkCell to represent a 2D
12553/// triangle strip. A triangle strip is a compact representation of triangles
12554/// connected edge to edge in strip fashion. The connectivity of a triangle
12555/// strip is three points defining an initial triangle, then for each
12556/// additional triangle, a single point that, combined with the previous two
12557/// points, defines the next triangle.
12558#[allow(non_camel_case_types)]
12559pub struct vtkTriangleStrip(*mut core::ffi::c_void);
12560impl vtkTriangleStrip {
12561    /// Creates a new [vtkTriangleStrip] wrapped inside `vtkNew`
12562    #[doc(alias = "vtkTriangleStrip")]
12563    pub fn new() -> Self {
12564        unsafe extern "C" {
12565            fn vtkTriangleStrip_new() -> *mut core::ffi::c_void;
12566        }
12567        Self(unsafe { &mut *vtkTriangleStrip_new() })
12568    }
12569    #[cfg(test)]
12570    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12571        unsafe extern "C" {
12572            fn vtkTriangleStrip_get_ptr(
12573                sself: *mut core::ffi::c_void,
12574            ) -> *mut core::ffi::c_void;
12575        }
12576        unsafe { vtkTriangleStrip_get_ptr(self.0) }
12577    }
12578}
12579impl std::default::Default for vtkTriangleStrip {
12580    fn default() -> Self {
12581        Self::new()
12582    }
12583}
12584impl Drop for vtkTriangleStrip {
12585    fn drop(&mut self) {
12586        unsafe extern "C" {
12587            fn vtkTriangleStrip_destructor(sself: *mut core::ffi::c_void);
12588        }
12589        unsafe { vtkTriangleStrip_destructor(self.0) }
12590        self.0 = core::ptr::null_mut();
12591    }
12592}
12593#[test]
12594fn test_vtkTriangleStrip_create_drop() {
12595    let obj = vtkTriangleStrip::new();
12596    let ptr = obj.0;
12597    assert!(!ptr.is_null());
12598    assert!(unsafe { !obj._get_ptr().is_null() });
12599    drop(obj);
12600    let new_obj = vtkTriangleStrip(ptr);
12601    assert!(unsafe { new_obj._get_ptr().is_null() });
12602}
12603/// An undirected graph.
12604///
12605///
12606///
12607/// vtkUndirectedGraph is a collection of vertices along with a collection of
12608/// undirected edges (they connect two vertices in no particular order).
12609/// ShallowCopy(), DeepCopy(), CheckedShallowCopy(), CheckedDeepCopy()
12610/// accept instances of vtkUndirectedGraph and vtkMutableUndirectedGraph.
12611/// GetOutEdges(v, it) and GetInEdges(v, it) return the same list of edges,
12612/// which is the list of all edges which have a v as an endpoint.
12613/// GetInDegree(v), GetOutDegree(v) and GetDegree(v) all return the full
12614/// degree of vertex v.
12615///
12616/// vtkUndirectedGraph is read-only. To create an undirected graph,
12617/// use an instance of vtkMutableUndirectedGraph, then you may set the
12618/// structure to a vtkUndirectedGraph using ShallowCopy().
12619///
12620/// @sa
12621/// vtkGraph vtkMutableUndirectedGraph
12622#[allow(non_camel_case_types)]
12623pub struct vtkUndirectedGraph(*mut core::ffi::c_void);
12624impl vtkUndirectedGraph {
12625    /// Creates a new [vtkUndirectedGraph] wrapped inside `vtkNew`
12626    #[doc(alias = "vtkUndirectedGraph")]
12627    pub fn new() -> Self {
12628        unsafe extern "C" {
12629            fn vtkUndirectedGraph_new() -> *mut core::ffi::c_void;
12630        }
12631        Self(unsafe { &mut *vtkUndirectedGraph_new() })
12632    }
12633    #[cfg(test)]
12634    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12635        unsafe extern "C" {
12636            fn vtkUndirectedGraph_get_ptr(
12637                sself: *mut core::ffi::c_void,
12638            ) -> *mut core::ffi::c_void;
12639        }
12640        unsafe { vtkUndirectedGraph_get_ptr(self.0) }
12641    }
12642}
12643impl std::default::Default for vtkUndirectedGraph {
12644    fn default() -> Self {
12645        Self::new()
12646    }
12647}
12648impl Drop for vtkUndirectedGraph {
12649    fn drop(&mut self) {
12650        unsafe extern "C" {
12651            fn vtkUndirectedGraph_destructor(sself: *mut core::ffi::c_void);
12652        }
12653        unsafe { vtkUndirectedGraph_destructor(self.0) }
12654        self.0 = core::ptr::null_mut();
12655    }
12656}
12657#[test]
12658fn test_vtkUndirectedGraph_create_drop() {
12659    let obj = vtkUndirectedGraph::new();
12660    let ptr = obj.0;
12661    assert!(!ptr.is_null());
12662    assert!(unsafe { !obj._get_ptr().is_null() });
12663    drop(obj);
12664    let new_obj = vtkUndirectedGraph(ptr);
12665    assert!(unsafe { new_obj._get_ptr().is_null() });
12666}
12667/// image data with blanking
12668///
12669///
12670/// vtkUniformGrid is a subclass of vtkImageData. In addition to all
12671/// the image data functionality, it supports blanking.
12672#[allow(non_camel_case_types)]
12673pub struct vtkUniformGrid(*mut core::ffi::c_void);
12674impl vtkUniformGrid {
12675    /// Creates a new [vtkUniformGrid] wrapped inside `vtkNew`
12676    #[doc(alias = "vtkUniformGrid")]
12677    pub fn new() -> Self {
12678        unsafe extern "C" {
12679            fn vtkUniformGrid_new() -> *mut core::ffi::c_void;
12680        }
12681        Self(unsafe { &mut *vtkUniformGrid_new() })
12682    }
12683    #[cfg(test)]
12684    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12685        unsafe extern "C" {
12686            fn vtkUniformGrid_get_ptr(
12687                sself: *mut core::ffi::c_void,
12688            ) -> *mut core::ffi::c_void;
12689        }
12690        unsafe { vtkUniformGrid_get_ptr(self.0) }
12691    }
12692}
12693impl std::default::Default for vtkUniformGrid {
12694    fn default() -> Self {
12695        Self::new()
12696    }
12697}
12698impl Drop for vtkUniformGrid {
12699    fn drop(&mut self) {
12700        unsafe extern "C" {
12701            fn vtkUniformGrid_destructor(sself: *mut core::ffi::c_void);
12702        }
12703        unsafe { vtkUniformGrid_destructor(self.0) }
12704        self.0 = core::ptr::null_mut();
12705    }
12706}
12707#[test]
12708fn test_vtkUniformGrid_create_drop() {
12709    let obj = vtkUniformGrid::new();
12710    let ptr = obj.0;
12711    assert!(!ptr.is_null());
12712    assert!(unsafe { !obj._get_ptr().is_null() });
12713    drop(obj);
12714    let new_obj = vtkUniformGrid(ptr);
12715    assert!(unsafe { new_obj._get_ptr().is_null() });
12716}
12717/// a concrete implementation of vtkCompositeDataSet
12718///
12719///
12720/// vtkUniformGridAMR is an AMR (hierarchical) composite dataset that holds vtkUniformGrids.
12721///
12722/// @sa
12723/// vtkUniformGridAMRDataIterator
12724#[allow(non_camel_case_types)]
12725pub struct vtkUniformGridAMR(*mut core::ffi::c_void);
12726impl vtkUniformGridAMR {
12727    /// Creates a new [vtkUniformGridAMR] wrapped inside `vtkNew`
12728    #[doc(alias = "vtkUniformGridAMR")]
12729    pub fn new() -> Self {
12730        unsafe extern "C" {
12731            fn vtkUniformGridAMR_new() -> *mut core::ffi::c_void;
12732        }
12733        Self(unsafe { &mut *vtkUniformGridAMR_new() })
12734    }
12735    #[cfg(test)]
12736    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12737        unsafe extern "C" {
12738            fn vtkUniformGridAMR_get_ptr(
12739                sself: *mut core::ffi::c_void,
12740            ) -> *mut core::ffi::c_void;
12741        }
12742        unsafe { vtkUniformGridAMR_get_ptr(self.0) }
12743    }
12744}
12745impl std::default::Default for vtkUniformGridAMR {
12746    fn default() -> Self {
12747        Self::new()
12748    }
12749}
12750impl Drop for vtkUniformGridAMR {
12751    fn drop(&mut self) {
12752        unsafe extern "C" {
12753            fn vtkUniformGridAMR_destructor(sself: *mut core::ffi::c_void);
12754        }
12755        unsafe { vtkUniformGridAMR_destructor(self.0) }
12756        self.0 = core::ptr::null_mut();
12757    }
12758}
12759#[test]
12760fn test_vtkUniformGridAMR_create_drop() {
12761    let obj = vtkUniformGridAMR::new();
12762    let ptr = obj.0;
12763    assert!(!ptr.is_null());
12764    assert!(unsafe { !obj._get_ptr().is_null() });
12765    drop(obj);
12766    let new_obj = vtkUniformGridAMR(ptr);
12767    assert!(unsafe { new_obj._get_ptr().is_null() });
12768}
12769/// subclass of vtkCompositeDataIterator
12770///
12771/// with API to get current level and dataset index.
12772#[allow(non_camel_case_types)]
12773pub struct vtkUniformGridAMRDataIterator(*mut core::ffi::c_void);
12774impl vtkUniformGridAMRDataIterator {
12775    /// Creates a new [vtkUniformGridAMRDataIterator] wrapped inside `vtkNew`
12776    #[doc(alias = "vtkUniformGridAMRDataIterator")]
12777    pub fn new() -> Self {
12778        unsafe extern "C" {
12779            fn vtkUniformGridAMRDataIterator_new() -> *mut core::ffi::c_void;
12780        }
12781        Self(unsafe { &mut *vtkUniformGridAMRDataIterator_new() })
12782    }
12783    #[cfg(test)]
12784    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12785        unsafe extern "C" {
12786            fn vtkUniformGridAMRDataIterator_get_ptr(
12787                sself: *mut core::ffi::c_void,
12788            ) -> *mut core::ffi::c_void;
12789        }
12790        unsafe { vtkUniformGridAMRDataIterator_get_ptr(self.0) }
12791    }
12792}
12793impl std::default::Default for vtkUniformGridAMRDataIterator {
12794    fn default() -> Self {
12795        Self::new()
12796    }
12797}
12798impl Drop for vtkUniformGridAMRDataIterator {
12799    fn drop(&mut self) {
12800        unsafe extern "C" {
12801            fn vtkUniformGridAMRDataIterator_destructor(sself: *mut core::ffi::c_void);
12802        }
12803        unsafe { vtkUniformGridAMRDataIterator_destructor(self.0) }
12804        self.0 = core::ptr::null_mut();
12805    }
12806}
12807#[test]
12808fn test_vtkUniformGridAMRDataIterator_create_drop() {
12809    let obj = vtkUniformGridAMRDataIterator::new();
12810    let ptr = obj.0;
12811    assert!(!ptr.is_null());
12812    assert!(unsafe { !obj._get_ptr().is_null() });
12813    drop(obj);
12814    let new_obj = vtkUniformGridAMRDataIterator(ptr);
12815    assert!(unsafe { new_obj._get_ptr().is_null() });
12816}
12817/// A specifalized type of vtkHyperTreeGrid for the case
12818///
12819/// when root cells have uniform sizes in each direction
12820///
12821/// @sa
12822/// vtkHyperTree vtkHyperTreeGrid vtkRectilinearGrid
12823///
12824/// @par Thanks:
12825/// This class was written by Philippe Pebay, NexGen Analytics 2017
12826/// Modified to introduce Scales by Jacques-Bernard Lekien, CEA 2018.
12827/// This work was supported by Commissariat a l'Energie Atomique
12828/// CEA, DAM, DIF, F-91297 Arpajon, France.
12829#[allow(non_camel_case_types)]
12830pub struct vtkUniformHyperTreeGrid(*mut core::ffi::c_void);
12831impl vtkUniformHyperTreeGrid {
12832    /// Creates a new [vtkUniformHyperTreeGrid] wrapped inside `vtkNew`
12833    #[doc(alias = "vtkUniformHyperTreeGrid")]
12834    pub fn new() -> Self {
12835        unsafe extern "C" {
12836            fn vtkUniformHyperTreeGrid_new() -> *mut core::ffi::c_void;
12837        }
12838        Self(unsafe { &mut *vtkUniformHyperTreeGrid_new() })
12839    }
12840    #[cfg(test)]
12841    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12842        unsafe extern "C" {
12843            fn vtkUniformHyperTreeGrid_get_ptr(
12844                sself: *mut core::ffi::c_void,
12845            ) -> *mut core::ffi::c_void;
12846        }
12847        unsafe { vtkUniformHyperTreeGrid_get_ptr(self.0) }
12848    }
12849}
12850impl std::default::Default for vtkUniformHyperTreeGrid {
12851    fn default() -> Self {
12852        Self::new()
12853    }
12854}
12855impl Drop for vtkUniformHyperTreeGrid {
12856    fn drop(&mut self) {
12857        unsafe extern "C" {
12858            fn vtkUniformHyperTreeGrid_destructor(sself: *mut core::ffi::c_void);
12859        }
12860        unsafe { vtkUniformHyperTreeGrid_destructor(self.0) }
12861        self.0 = core::ptr::null_mut();
12862    }
12863}
12864#[test]
12865fn test_vtkUniformHyperTreeGrid_create_drop() {
12866    let obj = vtkUniformHyperTreeGrid::new();
12867    let ptr = obj.0;
12868    assert!(!ptr.is_null());
12869    assert!(unsafe { !obj._get_ptr().is_null() });
12870    drop(obj);
12871    let new_obj = vtkUniformHyperTreeGrid(ptr);
12872    assert!(unsafe { new_obj._get_ptr().is_null() });
12873}
12874/// dataset represents arbitrary combinations of
12875///
12876/// all possible cell types
12877///
12878/// vtkUnstructuredGrid is a data object that is a concrete implementation of
12879/// vtkDataSet. vtkUnstructuredGrid represents any combinations of any cell
12880/// types. This includes 0D (e.g., points), 1D (e.g., lines, polylines), 2D
12881/// (e.g., triangles, polygons), and 3D (e.g., hexahedron, tetrahedron,
12882/// polyhedron, etc.). vtkUnstructuredGrid provides random access to cells, as
12883/// well as topological information (such as lists of cells using each point).
12884#[allow(non_camel_case_types)]
12885pub struct vtkUnstructuredGrid(*mut core::ffi::c_void);
12886impl vtkUnstructuredGrid {
12887    /// Creates a new [vtkUnstructuredGrid] wrapped inside `vtkNew`
12888    #[doc(alias = "vtkUnstructuredGrid")]
12889    pub fn new() -> Self {
12890        unsafe extern "C" {
12891            fn vtkUnstructuredGrid_new() -> *mut core::ffi::c_void;
12892        }
12893        Self(unsafe { &mut *vtkUnstructuredGrid_new() })
12894    }
12895    #[cfg(test)]
12896    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12897        unsafe extern "C" {
12898            fn vtkUnstructuredGrid_get_ptr(
12899                sself: *mut core::ffi::c_void,
12900            ) -> *mut core::ffi::c_void;
12901        }
12902        unsafe { vtkUnstructuredGrid_get_ptr(self.0) }
12903    }
12904}
12905impl std::default::Default for vtkUnstructuredGrid {
12906    fn default() -> Self {
12907        Self::new()
12908    }
12909}
12910impl Drop for vtkUnstructuredGrid {
12911    fn drop(&mut self) {
12912        unsafe extern "C" {
12913            fn vtkUnstructuredGrid_destructor(sself: *mut core::ffi::c_void);
12914        }
12915        unsafe { vtkUnstructuredGrid_destructor(self.0) }
12916        self.0 = core::ptr::null_mut();
12917    }
12918}
12919#[test]
12920fn test_vtkUnstructuredGrid_create_drop() {
12921    let obj = vtkUnstructuredGrid::new();
12922    let ptr = obj.0;
12923    assert!(!ptr.is_null());
12924    assert!(unsafe { !obj._get_ptr().is_null() });
12925    drop(obj);
12926    let new_obj = vtkUnstructuredGrid(ptr);
12927    assert!(unsafe { new_obj._get_ptr().is_null() });
12928}
12929/// Implementation of vtkCellIterator
12930///
12931/// specialized for vtkUnstructuredGrid.
12932#[allow(non_camel_case_types)]
12933pub struct vtkUnstructuredGridCellIterator(*mut core::ffi::c_void);
12934impl vtkUnstructuredGridCellIterator {
12935    /// Creates a new [vtkUnstructuredGridCellIterator] wrapped inside `vtkNew`
12936    #[doc(alias = "vtkUnstructuredGridCellIterator")]
12937    pub fn new() -> Self {
12938        unsafe extern "C" {
12939            fn vtkUnstructuredGridCellIterator_new() -> *mut core::ffi::c_void;
12940        }
12941        Self(unsafe { &mut *vtkUnstructuredGridCellIterator_new() })
12942    }
12943    #[cfg(test)]
12944    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12945        unsafe extern "C" {
12946            fn vtkUnstructuredGridCellIterator_get_ptr(
12947                sself: *mut core::ffi::c_void,
12948            ) -> *mut core::ffi::c_void;
12949        }
12950        unsafe { vtkUnstructuredGridCellIterator_get_ptr(self.0) }
12951    }
12952}
12953impl std::default::Default for vtkUnstructuredGridCellIterator {
12954    fn default() -> Self {
12955        Self::new()
12956    }
12957}
12958impl Drop for vtkUnstructuredGridCellIterator {
12959    fn drop(&mut self) {
12960        unsafe extern "C" {
12961            fn vtkUnstructuredGridCellIterator_destructor(sself: *mut core::ffi::c_void);
12962        }
12963        unsafe { vtkUnstructuredGridCellIterator_destructor(self.0) }
12964        self.0 = core::ptr::null_mut();
12965    }
12966}
12967#[test]
12968fn test_vtkUnstructuredGridCellIterator_create_drop() {
12969    let obj = vtkUnstructuredGridCellIterator::new();
12970    let ptr = obj.0;
12971    assert!(!ptr.is_null());
12972    assert!(unsafe { !obj._get_ptr().is_null() });
12973    drop(obj);
12974    let new_obj = vtkUnstructuredGridCellIterator(ptr);
12975    assert!(unsafe { new_obj._get_ptr().is_null() });
12976}
12977/// a cell that represents a 3D point
12978///
12979///
12980/// vtkVertex is a concrete implementation of vtkCell to represent a 3D point.
12981#[allow(non_camel_case_types)]
12982pub struct vtkVertex(*mut core::ffi::c_void);
12983impl vtkVertex {
12984    /// Creates a new [vtkVertex] wrapped inside `vtkNew`
12985    #[doc(alias = "vtkVertex")]
12986    pub fn new() -> Self {
12987        unsafe extern "C" {
12988            fn vtkVertex_new() -> *mut core::ffi::c_void;
12989        }
12990        Self(unsafe { &mut *vtkVertex_new() })
12991    }
12992    #[cfg(test)]
12993    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
12994        unsafe extern "C" {
12995            fn vtkVertex_get_ptr(
12996                sself: *mut core::ffi::c_void,
12997            ) -> *mut core::ffi::c_void;
12998        }
12999        unsafe { vtkVertex_get_ptr(self.0) }
13000    }
13001}
13002impl std::default::Default for vtkVertex {
13003    fn default() -> Self {
13004        Self::new()
13005    }
13006}
13007impl Drop for vtkVertex {
13008    fn drop(&mut self) {
13009        unsafe extern "C" {
13010            fn vtkVertex_destructor(sself: *mut core::ffi::c_void);
13011        }
13012        unsafe { vtkVertex_destructor(self.0) }
13013        self.0 = core::ptr::null_mut();
13014    }
13015}
13016#[test]
13017fn test_vtkVertex_create_drop() {
13018    let obj = vtkVertex::new();
13019    let ptr = obj.0;
13020    assert!(!ptr.is_null());
13021    assert!(unsafe { !obj._get_ptr().is_null() });
13022    drop(obj);
13023    let new_obj = vtkVertex(ptr);
13024    assert!(unsafe { new_obj._get_ptr().is_null() });
13025}
13026/// Iterates all vertices in a graph.
13027///
13028///
13029///
13030/// vtkVertexListIterator iterates through all vertices in a graph.
13031/// Create an instance of this and call graph->GetVertices(it) to initialize
13032/// this iterator. You may alternately call SetGraph() to initialize the
13033/// iterator.
13034///
13035/// @sa
13036/// vtkGraph
13037#[allow(non_camel_case_types)]
13038pub struct vtkVertexListIterator(*mut core::ffi::c_void);
13039impl vtkVertexListIterator {
13040    /// Creates a new [vtkVertexListIterator] wrapped inside `vtkNew`
13041    #[doc(alias = "vtkVertexListIterator")]
13042    pub fn new() -> Self {
13043        unsafe extern "C" {
13044            fn vtkVertexListIterator_new() -> *mut core::ffi::c_void;
13045        }
13046        Self(unsafe { &mut *vtkVertexListIterator_new() })
13047    }
13048    #[cfg(test)]
13049    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
13050        unsafe extern "C" {
13051            fn vtkVertexListIterator_get_ptr(
13052                sself: *mut core::ffi::c_void,
13053            ) -> *mut core::ffi::c_void;
13054        }
13055        unsafe { vtkVertexListIterator_get_ptr(self.0) }
13056    }
13057}
13058impl std::default::Default for vtkVertexListIterator {
13059    fn default() -> Self {
13060        Self::new()
13061    }
13062}
13063impl Drop for vtkVertexListIterator {
13064    fn drop(&mut self) {
13065        unsafe extern "C" {
13066            fn vtkVertexListIterator_destructor(sself: *mut core::ffi::c_void);
13067        }
13068        unsafe { vtkVertexListIterator_destructor(self.0) }
13069        self.0 = core::ptr::null_mut();
13070    }
13071}
13072#[test]
13073fn test_vtkVertexListIterator_create_drop() {
13074    let obj = vtkVertexListIterator::new();
13075    let ptr = obj.0;
13076    assert!(!ptr.is_null());
13077    assert!(unsafe { !obj._get_ptr().is_null() });
13078    drop(obj);
13079    let new_obj = vtkVertexListIterator(ptr);
13080    assert!(unsafe { new_obj._get_ptr().is_null() });
13081}
13082/// a cell that represents a 3D orthogonal parallelepiped
13083///
13084///
13085/// vtkVoxel is a concrete implementation of vtkCell to represent a 3D
13086/// orthogonal parallelepiped. Unlike vtkHexahedron, vtkVoxel has interior
13087/// angles of 90 degrees, and sides are parallel to coordinate axes. This
13088/// results in large increases in computational performance.
13089///
13090/// @sa
13091/// vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkWedge
13092#[allow(non_camel_case_types)]
13093pub struct vtkVoxel(*mut core::ffi::c_void);
13094impl vtkVoxel {
13095    /// Creates a new [vtkVoxel] wrapped inside `vtkNew`
13096    #[doc(alias = "vtkVoxel")]
13097    pub fn new() -> Self {
13098        unsafe extern "C" {
13099            fn vtkVoxel_new() -> *mut core::ffi::c_void;
13100        }
13101        Self(unsafe { &mut *vtkVoxel_new() })
13102    }
13103    #[cfg(test)]
13104    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
13105        unsafe extern "C" {
13106            fn vtkVoxel_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
13107        }
13108        unsafe { vtkVoxel_get_ptr(self.0) }
13109    }
13110}
13111impl std::default::Default for vtkVoxel {
13112    fn default() -> Self {
13113        Self::new()
13114    }
13115}
13116impl Drop for vtkVoxel {
13117    fn drop(&mut self) {
13118        unsafe extern "C" {
13119            fn vtkVoxel_destructor(sself: *mut core::ffi::c_void);
13120        }
13121        unsafe { vtkVoxel_destructor(self.0) }
13122        self.0 = core::ptr::null_mut();
13123    }
13124}
13125#[test]
13126fn test_vtkVoxel_create_drop() {
13127    let obj = vtkVoxel::new();
13128    let ptr = obj.0;
13129    assert!(!ptr.is_null());
13130    assert!(unsafe { !obj._get_ptr().is_null() });
13131    drop(obj);
13132    let new_obj = vtkVoxel(ptr);
13133    assert!(unsafe { new_obj._get_ptr().is_null() });
13134}
13135/// a 3D cell that represents a linear wedge
13136///
13137///
13138/// vtkWedge is a concrete implementation of vtkCell to represent a linear 3D
13139/// wedge. A wedge consists of two triangular and three quadrilateral faces
13140/// and is defined by the six points (0-5). vtkWedge uses the standard
13141/// isoparametric shape functions for a linear wedge. The wedge is defined
13142/// by the six points (0-5) where (0,1,2) is the base of the wedge which,
13143/// using the right hand rule, forms a triangle whose normal points outward
13144/// (away from the triangular face (3,4,5)).
13145///
13146/// @sa
13147/// vtkConvexPointSet vtkHexahedron vtkPyramid vtkTetra vtkVoxel
13148#[allow(non_camel_case_types)]
13149pub struct vtkWedge(*mut core::ffi::c_void);
13150impl vtkWedge {
13151    /// Creates a new [vtkWedge] wrapped inside `vtkNew`
13152    #[doc(alias = "vtkWedge")]
13153    pub fn new() -> Self {
13154        unsafe extern "C" {
13155            fn vtkWedge_new() -> *mut core::ffi::c_void;
13156        }
13157        Self(unsafe { &mut *vtkWedge_new() })
13158    }
13159    #[cfg(test)]
13160    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
13161        unsafe extern "C" {
13162            fn vtkWedge_get_ptr(sself: *mut core::ffi::c_void) -> *mut core::ffi::c_void;
13163        }
13164        unsafe { vtkWedge_get_ptr(self.0) }
13165    }
13166}
13167impl std::default::Default for vtkWedge {
13168    fn default() -> Self {
13169        Self::new()
13170    }
13171}
13172impl Drop for vtkWedge {
13173    fn drop(&mut self) {
13174        unsafe extern "C" {
13175            fn vtkWedge_destructor(sself: *mut core::ffi::c_void);
13176        }
13177        unsafe { vtkWedge_destructor(self.0) }
13178        self.0 = core::ptr::null_mut();
13179    }
13180}
13181#[test]
13182fn test_vtkWedge_create_drop() {
13183    let obj = vtkWedge::new();
13184    let ptr = obj.0;
13185    assert!(!ptr.is_null());
13186    assert!(unsafe { !obj._get_ptr().is_null() });
13187    drop(obj);
13188    let new_obj = vtkWedge(ptr);
13189    assert!(unsafe { new_obj._get_ptr().is_null() });
13190}
13191/// Represents an XML element and those nested inside.
13192///
13193///
13194/// vtkXMLDataElement is used by vtkXMLDataParser to represent an XML
13195/// element.  It provides methods to access the element's attributes
13196/// and nested elements in a convenient manner.  This allows easy
13197/// traversal of an input XML file by vtkXMLReader and its subclasses.
13198///
13199/// @sa
13200/// vtkXMLDataParser
13201#[allow(non_camel_case_types)]
13202pub struct vtkXMLDataElement(*mut core::ffi::c_void);
13203impl vtkXMLDataElement {
13204    /// Creates a new [vtkXMLDataElement] wrapped inside `vtkNew`
13205    #[doc(alias = "vtkXMLDataElement")]
13206    pub fn new() -> Self {
13207        unsafe extern "C" {
13208            fn vtkXMLDataElement_new() -> *mut core::ffi::c_void;
13209        }
13210        Self(unsafe { &mut *vtkXMLDataElement_new() })
13211    }
13212    #[cfg(test)]
13213    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
13214        unsafe extern "C" {
13215            fn vtkXMLDataElement_get_ptr(
13216                sself: *mut core::ffi::c_void,
13217            ) -> *mut core::ffi::c_void;
13218        }
13219        unsafe { vtkXMLDataElement_get_ptr(self.0) }
13220    }
13221}
13222impl std::default::Default for vtkXMLDataElement {
13223    fn default() -> Self {
13224        Self::new()
13225    }
13226}
13227impl Drop for vtkXMLDataElement {
13228    fn drop(&mut self) {
13229        unsafe extern "C" {
13230            fn vtkXMLDataElement_destructor(sself: *mut core::ffi::c_void);
13231        }
13232        unsafe { vtkXMLDataElement_destructor(self.0) }
13233        self.0 = core::ptr::null_mut();
13234    }
13235}
13236#[test]
13237fn test_vtkXMLDataElement_create_drop() {
13238    let obj = vtkXMLDataElement::new();
13239    let ptr = obj.0;
13240    assert!(!ptr.is_null());
13241    assert!(unsafe { !obj._get_ptr().is_null() });
13242    drop(obj);
13243    let new_obj = vtkXMLDataElement(ptr);
13244    assert!(unsafe { new_obj._get_ptr().is_null() });
13245}