isl_rs/bindings/
stride_info.rs

1// Automatically generated by isl_bindings_generator.
2// LICENSE: MIT
3
4use crate::bindings::{Aff, Context, Val};
5use libc::uintptr_t;
6
7/// Wraps `isl_stride_info`.
8pub struct StrideInfo {
9    pub ptr: uintptr_t,
10    pub should_free_on_drop: bool,
11}
12
13extern "C" {
14
15    fn isl_stride_info_get_ctx(si: uintptr_t) -> uintptr_t;
16
17    fn isl_stride_info_get_stride(si: uintptr_t) -> uintptr_t;
18
19    fn isl_stride_info_get_offset(si: uintptr_t) -> uintptr_t;
20
21    fn isl_stride_info_free(si: uintptr_t) -> uintptr_t;
22
23    fn isl_stride_info_copy(si: uintptr_t) -> uintptr_t;
24
25}
26
27impl StrideInfo {
28    /// Wraps `isl_stride_info_get_ctx`.
29    pub fn get_ctx(&self) -> Context {
30        let si = self;
31        let si = si.ptr;
32        let isl_rs_result = unsafe { isl_stride_info_get_ctx(si) };
33        let isl_rs_result = Context { ptr: isl_rs_result,
34                                      should_free_on_drop: true };
35        let mut isl_rs_result = isl_rs_result;
36        isl_rs_result.do_not_free_on_drop();
37        isl_rs_result
38    }
39
40    /// Wraps `isl_stride_info_get_stride`.
41    pub fn get_stride(&self) -> Val {
42        let si = self;
43        let si = si.ptr;
44        let isl_rs_result = unsafe { isl_stride_info_get_stride(si) };
45        let isl_rs_result = Val { ptr: isl_rs_result,
46                                  should_free_on_drop: true };
47        isl_rs_result
48    }
49
50    /// Wraps `isl_stride_info_get_offset`.
51    pub fn get_offset(&self) -> Aff {
52        let si = self;
53        let si = si.ptr;
54        let isl_rs_result = unsafe { isl_stride_info_get_offset(si) };
55        let isl_rs_result = Aff { ptr: isl_rs_result,
56                                  should_free_on_drop: true };
57        isl_rs_result
58    }
59
60    /// Wraps `isl_stride_info_free`.
61    pub fn free(self) -> StrideInfo {
62        let si = self;
63        let mut si = si;
64        si.do_not_free_on_drop();
65        let si = si.ptr;
66        let isl_rs_result = unsafe { isl_stride_info_free(si) };
67        let isl_rs_result = StrideInfo { ptr: isl_rs_result,
68                                         should_free_on_drop: true };
69        isl_rs_result
70    }
71
72    /// Wraps `isl_stride_info_copy`.
73    pub fn copy(&self) -> StrideInfo {
74        let si = self;
75        let si = si.ptr;
76        let isl_rs_result = unsafe { isl_stride_info_copy(si) };
77        let isl_rs_result = StrideInfo { ptr: isl_rs_result,
78                                         should_free_on_drop: true };
79        isl_rs_result
80    }
81
82    /// Does not call isl_xxx_free() on being dropped. (For internal use only.)
83    pub fn do_not_free_on_drop(&mut self) {
84        self.should_free_on_drop = false;
85    }
86}
87
88impl Drop for StrideInfo {
89    fn drop(&mut self) {
90        if self.should_free_on_drop {
91            unsafe {
92                isl_stride_info_free(self.ptr);
93            }
94        }
95    }
96}