isl_rs/bindings/
basic_set_list.rs

1// Automatically generated by isl_bindings_generator.
2// LICENSE: MIT
3
4use super::{BasicSet, Context};
5use libc::uintptr_t;
6use std::ffi::{CStr, CString};
7use std::os::raw::c_char;
8
9/// Wraps `isl_basic_set_list`.
10pub struct BasicSetList {
11    pub ptr: uintptr_t,
12    pub should_free_on_drop: bool,
13}
14
15extern "C" {
16
17    fn isl_basic_set_list_free(list: uintptr_t) -> uintptr_t;
18
19    fn isl_basic_set_list_insert(list: uintptr_t, pos: u32, el: uintptr_t) -> uintptr_t;
20
21    fn isl_basic_set_list_dump(list: uintptr_t) -> ();
22
23    fn isl_basic_set_list_copy(list: uintptr_t) -> uintptr_t;
24
25    fn isl_basic_set_list_get_ctx(list: uintptr_t) -> uintptr_t;
26
27    fn isl_basic_set_list_get_at(list: uintptr_t, index: i32) -> uintptr_t;
28
29    fn isl_basic_set_list_drop(list: uintptr_t, first: u32, n: u32) -> uintptr_t;
30
31    fn isl_basic_set_list_set_basic_set(list: uintptr_t, index: i32, el: uintptr_t) -> uintptr_t;
32
33    fn isl_basic_set_list_n_basic_set(list: uintptr_t) -> i32;
34
35    fn isl_basic_set_list_clear(list: uintptr_t) -> uintptr_t;
36
37    fn isl_basic_set_list_concat(list1: uintptr_t, list2: uintptr_t) -> uintptr_t;
38
39    fn isl_basic_set_list_coefficients(list: uintptr_t) -> uintptr_t;
40
41    fn isl_basic_set_list_swap(list: uintptr_t, pos1: u32, pos2: u32) -> uintptr_t;
42
43    fn isl_basic_set_list_size(list: uintptr_t) -> i32;
44
45    fn isl_basic_set_list_reverse(list: uintptr_t) -> uintptr_t;
46
47    fn isl_basic_set_list_get_basic_set(list: uintptr_t, index: i32) -> uintptr_t;
48
49    fn isl_basic_set_list_add(list: uintptr_t, el: uintptr_t) -> uintptr_t;
50
51    fn isl_basic_set_list_from_basic_set(el: uintptr_t) -> uintptr_t;
52
53    fn isl_basic_set_list_intersect(list: uintptr_t) -> uintptr_t;
54
55    fn isl_basic_set_list_to_str(list: uintptr_t) -> *const c_char;
56
57    fn isl_basic_set_list_set_at(list: uintptr_t, index: i32, el: uintptr_t) -> uintptr_t;
58
59    fn isl_basic_set_list_alloc(ctx: uintptr_t, n: i32) -> uintptr_t;
60
61}
62
63impl BasicSetList {
64    /// Wraps `isl_basic_set_list_free`.
65    pub fn free(self) -> BasicSetList {
66        let list = self;
67        let mut list = list;
68        list.do_not_free_on_drop();
69        let list = list.ptr;
70        let isl_rs_result = unsafe { isl_basic_set_list_free(list) };
71        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
72                                           should_free_on_drop: true };
73        isl_rs_result
74    }
75
76    /// Wraps `isl_basic_set_list_insert`.
77    pub fn insert(self, pos: u32, el: BasicSet) -> BasicSetList {
78        let list = self;
79        let mut list = list;
80        list.do_not_free_on_drop();
81        let list = list.ptr;
82        let mut el = el;
83        el.do_not_free_on_drop();
84        let el = el.ptr;
85        let isl_rs_result = unsafe { isl_basic_set_list_insert(list, pos, el) };
86        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
87                                           should_free_on_drop: true };
88        isl_rs_result
89    }
90
91    /// Wraps `isl_basic_set_list_dump`.
92    pub fn dump(&self) -> () {
93        let list = self;
94        let list = list.ptr;
95        let isl_rs_result = unsafe { isl_basic_set_list_dump(list) };
96        isl_rs_result
97    }
98
99    /// Wraps `isl_basic_set_list_copy`.
100    pub fn copy(&self) -> BasicSetList {
101        let list = self;
102        let list = list.ptr;
103        let isl_rs_result = unsafe { isl_basic_set_list_copy(list) };
104        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
105                                           should_free_on_drop: true };
106        isl_rs_result
107    }
108
109    /// Wraps `isl_basic_set_list_get_ctx`.
110    pub fn get_ctx(&self) -> Context {
111        let list = self;
112        let list = list.ptr;
113        let isl_rs_result = unsafe { isl_basic_set_list_get_ctx(list) };
114        let isl_rs_result = Context { ptr: isl_rs_result,
115                                      should_free_on_drop: false };
116        isl_rs_result
117    }
118
119    /// Wraps `isl_basic_set_list_get_at`.
120    pub fn get_at(&self, index: i32) -> BasicSet {
121        let list = self;
122        let list = list.ptr;
123        let isl_rs_result = unsafe { isl_basic_set_list_get_at(list, index) };
124        let isl_rs_result = BasicSet { ptr: isl_rs_result,
125                                       should_free_on_drop: true };
126        isl_rs_result
127    }
128
129    /// Wraps `isl_basic_set_list_drop`.
130    pub fn drop(self, first: u32, n: u32) -> BasicSetList {
131        let list = self;
132        let mut list = list;
133        list.do_not_free_on_drop();
134        let list = list.ptr;
135        let isl_rs_result = unsafe { isl_basic_set_list_drop(list, first, n) };
136        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
137                                           should_free_on_drop: true };
138        isl_rs_result
139    }
140
141    /// Wraps `isl_basic_set_list_set_basic_set`.
142    pub fn set_basic_set(self, index: i32, el: BasicSet) -> BasicSetList {
143        let list = self;
144        let mut list = list;
145        list.do_not_free_on_drop();
146        let list = list.ptr;
147        let mut el = el;
148        el.do_not_free_on_drop();
149        let el = el.ptr;
150        let isl_rs_result = unsafe { isl_basic_set_list_set_basic_set(list, index, el) };
151        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
152                                           should_free_on_drop: true };
153        isl_rs_result
154    }
155
156    /// Wraps `isl_basic_set_list_n_basic_set`.
157    pub fn n_basic_set(&self) -> i32 {
158        let list = self;
159        let list = list.ptr;
160        let isl_rs_result = unsafe { isl_basic_set_list_n_basic_set(list) };
161        isl_rs_result
162    }
163
164    /// Wraps `isl_basic_set_list_clear`.
165    pub fn clear(self) -> BasicSetList {
166        let list = self;
167        let mut list = list;
168        list.do_not_free_on_drop();
169        let list = list.ptr;
170        let isl_rs_result = unsafe { isl_basic_set_list_clear(list) };
171        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
172                                           should_free_on_drop: true };
173        isl_rs_result
174    }
175
176    /// Wraps `isl_basic_set_list_concat`.
177    pub fn concat(self, list2: BasicSetList) -> BasicSetList {
178        let list1 = self;
179        let mut list1 = list1;
180        list1.do_not_free_on_drop();
181        let list1 = list1.ptr;
182        let mut list2 = list2;
183        list2.do_not_free_on_drop();
184        let list2 = list2.ptr;
185        let isl_rs_result = unsafe { isl_basic_set_list_concat(list1, list2) };
186        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
187                                           should_free_on_drop: true };
188        isl_rs_result
189    }
190
191    /// Wraps `isl_basic_set_list_coefficients`.
192    pub fn coefficients(self) -> BasicSetList {
193        let list = self;
194        let mut list = list;
195        list.do_not_free_on_drop();
196        let list = list.ptr;
197        let isl_rs_result = unsafe { isl_basic_set_list_coefficients(list) };
198        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
199                                           should_free_on_drop: true };
200        isl_rs_result
201    }
202
203    /// Wraps `isl_basic_set_list_swap`.
204    pub fn swap(self, pos1: u32, pos2: u32) -> BasicSetList {
205        let list = self;
206        let mut list = list;
207        list.do_not_free_on_drop();
208        let list = list.ptr;
209        let isl_rs_result = unsafe { isl_basic_set_list_swap(list, pos1, pos2) };
210        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
211                                           should_free_on_drop: true };
212        isl_rs_result
213    }
214
215    /// Wraps `isl_basic_set_list_size`.
216    pub fn size(&self) -> i32 {
217        let list = self;
218        let list = list.ptr;
219        let isl_rs_result = unsafe { isl_basic_set_list_size(list) };
220        isl_rs_result
221    }
222
223    /// Wraps `isl_basic_set_list_reverse`.
224    pub fn reverse(self) -> BasicSetList {
225        let list = self;
226        let mut list = list;
227        list.do_not_free_on_drop();
228        let list = list.ptr;
229        let isl_rs_result = unsafe { isl_basic_set_list_reverse(list) };
230        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
231                                           should_free_on_drop: true };
232        isl_rs_result
233    }
234
235    /// Wraps `isl_basic_set_list_get_basic_set`.
236    pub fn get_basic_set(&self, index: i32) -> BasicSet {
237        let list = self;
238        let list = list.ptr;
239        let isl_rs_result = unsafe { isl_basic_set_list_get_basic_set(list, index) };
240        let isl_rs_result = BasicSet { ptr: isl_rs_result,
241                                       should_free_on_drop: true };
242        isl_rs_result
243    }
244
245    /// Wraps `isl_basic_set_list_add`.
246    pub fn add(self, el: BasicSet) -> BasicSetList {
247        let list = self;
248        let mut list = list;
249        list.do_not_free_on_drop();
250        let list = list.ptr;
251        let mut el = el;
252        el.do_not_free_on_drop();
253        let el = el.ptr;
254        let isl_rs_result = unsafe { isl_basic_set_list_add(list, el) };
255        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
256                                           should_free_on_drop: true };
257        isl_rs_result
258    }
259
260    /// Wraps `isl_basic_set_list_from_basic_set`.
261    pub fn from_basic_set(el: BasicSet) -> BasicSetList {
262        let mut el = el;
263        el.do_not_free_on_drop();
264        let el = el.ptr;
265        let isl_rs_result = unsafe { isl_basic_set_list_from_basic_set(el) };
266        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
267                                           should_free_on_drop: true };
268        isl_rs_result
269    }
270
271    /// Wraps `isl_basic_set_list_intersect`.
272    pub fn intersect(self) -> BasicSet {
273        let list = self;
274        let mut list = list;
275        list.do_not_free_on_drop();
276        let list = list.ptr;
277        let isl_rs_result = unsafe { isl_basic_set_list_intersect(list) };
278        let isl_rs_result = BasicSet { ptr: isl_rs_result,
279                                       should_free_on_drop: true };
280        isl_rs_result
281    }
282
283    /// Wraps `isl_basic_set_list_to_str`.
284    pub fn to_str(&self) -> &str {
285        let list = self;
286        let list = list.ptr;
287        let isl_rs_result = unsafe { isl_basic_set_list_to_str(list) };
288        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
289        let isl_rs_result = isl_rs_result.to_str().unwrap();
290        isl_rs_result
291    }
292
293    /// Wraps `isl_basic_set_list_set_at`.
294    pub fn set_at(self, index: i32, el: BasicSet) -> BasicSetList {
295        let list = self;
296        let mut list = list;
297        list.do_not_free_on_drop();
298        let list = list.ptr;
299        let mut el = el;
300        el.do_not_free_on_drop();
301        let el = el.ptr;
302        let isl_rs_result = unsafe { isl_basic_set_list_set_at(list, index, el) };
303        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
304                                           should_free_on_drop: true };
305        isl_rs_result
306    }
307
308    /// Wraps `isl_basic_set_list_alloc`.
309    pub fn alloc(ctx: &Context, n: i32) -> BasicSetList {
310        let ctx = ctx.ptr;
311        let isl_rs_result = unsafe { isl_basic_set_list_alloc(ctx, n) };
312        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
313                                           should_free_on_drop: true };
314        isl_rs_result
315    }
316
317    /// Does not call isl_basic_set_list_free() on being dropped. (For internal
318    /// use only.)
319    pub fn do_not_free_on_drop(&mut self) {
320        self.should_free_on_drop = false;
321    }
322}
323
324impl Drop for BasicSetList {
325    fn drop(&mut self) {
326        if self.should_free_on_drop {
327            unsafe {
328                isl_basic_set_list_free(self.ptr);
329            }
330        }
331    }
332}