Skip to main content

vtk_rs/
vtkCommonArchive.rs

1/// Writes an archive to a buffer for vtk-js datasets
2///
3///
4/// vtkvtkJSBufferedArchiver is a specialized archiver for writing datasets into
5/// a memory buffer with zip compression.
6///
7/// @sa
8/// vtkArchiver
9#[allow(non_camel_case_types)]
10pub struct vtkBufferedArchiver(*mut core::ffi::c_void);
11impl vtkBufferedArchiver {
12    /// Creates a new [vtkBufferedArchiver] wrapped inside `vtkNew`
13    #[doc(alias = "vtkBufferedArchiver")]
14    pub fn new() -> Self {
15        unsafe extern "C" {
16            fn vtkBufferedArchiver_new() -> *mut core::ffi::c_void;
17        }
18        Self(unsafe { &mut *vtkBufferedArchiver_new() })
19    }
20    #[cfg(test)]
21    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
22        unsafe extern "C" {
23            fn vtkBufferedArchiver_get_ptr(
24                sself: *mut core::ffi::c_void,
25            ) -> *mut core::ffi::c_void;
26        }
27        unsafe { vtkBufferedArchiver_get_ptr(self.0) }
28    }
29}
30impl std::default::Default for vtkBufferedArchiver {
31    fn default() -> Self {
32        Self::new()
33    }
34}
35impl Drop for vtkBufferedArchiver {
36    fn drop(&mut self) {
37        unsafe extern "C" {
38            fn vtkBufferedArchiver_destructor(sself: *mut core::ffi::c_void);
39        }
40        unsafe { vtkBufferedArchiver_destructor(self.0) }
41        self.0 = core::ptr::null_mut();
42    }
43}
44#[test]
45fn test_vtkBufferedArchiver_create_drop() {
46    let obj = vtkBufferedArchiver::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 = vtkBufferedArchiver(ptr);
52    assert!(unsafe { new_obj._get_ptr().is_null() });
53}
54/// Writes an archive to several buffers
55///
56///
57/// vtkPartitionedArchiver is a specialized archiver for writing datasets into
58/// several memory buffers with zip compression. Each insertion into the archiver
59/// is assigned to its own buffer.
60///
61/// @sa
62/// vtkArchiver
63#[allow(non_camel_case_types)]
64pub struct vtkPartitionedArchiver(*mut core::ffi::c_void);
65impl vtkPartitionedArchiver {
66    /// Creates a new [vtkPartitionedArchiver] wrapped inside `vtkNew`
67    #[doc(alias = "vtkPartitionedArchiver")]
68    pub fn new() -> Self {
69        unsafe extern "C" {
70            fn vtkPartitionedArchiver_new() -> *mut core::ffi::c_void;
71        }
72        Self(unsafe { &mut *vtkPartitionedArchiver_new() })
73    }
74    #[cfg(test)]
75    unsafe fn _get_ptr(&self) -> *mut core::ffi::c_void {
76        unsafe extern "C" {
77            fn vtkPartitionedArchiver_get_ptr(
78                sself: *mut core::ffi::c_void,
79            ) -> *mut core::ffi::c_void;
80        }
81        unsafe { vtkPartitionedArchiver_get_ptr(self.0) }
82    }
83}
84impl std::default::Default for vtkPartitionedArchiver {
85    fn default() -> Self {
86        Self::new()
87    }
88}
89impl Drop for vtkPartitionedArchiver {
90    fn drop(&mut self) {
91        unsafe extern "C" {
92            fn vtkPartitionedArchiver_destructor(sself: *mut core::ffi::c_void);
93        }
94        unsafe { vtkPartitionedArchiver_destructor(self.0) }
95        self.0 = core::ptr::null_mut();
96    }
97}
98#[test]
99fn test_vtkPartitionedArchiver_create_drop() {
100    let obj = vtkPartitionedArchiver::new();
101    let ptr = obj.0;
102    assert!(!ptr.is_null());
103    assert!(unsafe { !obj._get_ptr().is_null() });
104    drop(obj);
105    let new_obj = vtkPartitionedArchiver(ptr);
106    assert!(unsafe { new_obj._get_ptr().is_null() });
107}