isl_rs/bindings/
pw_qpolynomial_fold_list.rs

1// Automatically generated by isl_bindings_generator.
2// LICENSE: MIT
3
4use super::{Context, Error, LibISLError, PwQPolynomialFold};
5use libc::uintptr_t;
6use std::ffi::CStr;
7use std::os::raw::c_char;
8
9/// Wraps `isl_pw_qpolynomial_fold_list`.
10pub struct PwQPolynomialFoldList {
11    pub ptr: uintptr_t,
12    pub should_free_on_drop: bool,
13}
14
15extern "C" {
16
17    fn isl_pw_qpolynomial_fold_list_add(list: uintptr_t, el: uintptr_t) -> uintptr_t;
18
19    fn isl_pw_qpolynomial_fold_list_alloc(ctx: uintptr_t, n: i32) -> uintptr_t;
20
21    fn isl_pw_qpolynomial_fold_list_clear(list: uintptr_t) -> uintptr_t;
22
23    fn isl_pw_qpolynomial_fold_list_concat(list1: uintptr_t, list2: uintptr_t) -> uintptr_t;
24
25    fn isl_pw_qpolynomial_fold_list_copy(list: uintptr_t) -> uintptr_t;
26
27    fn isl_pw_qpolynomial_fold_list_drop(list: uintptr_t, first: u32, n: u32) -> uintptr_t;
28
29    fn isl_pw_qpolynomial_fold_list_dump(list: uintptr_t) -> ();
30
31    fn isl_pw_qpolynomial_fold_list_free(list: uintptr_t) -> uintptr_t;
32
33    fn isl_pw_qpolynomial_fold_list_from_pw_qpolynomial_fold(el: uintptr_t) -> uintptr_t;
34
35    fn isl_pw_qpolynomial_fold_list_get_at(list: uintptr_t, index: i32) -> uintptr_t;
36
37    fn isl_pw_qpolynomial_fold_list_get_ctx(list: uintptr_t) -> uintptr_t;
38
39    fn isl_pw_qpolynomial_fold_list_get_pw_qpolynomial_fold(list: uintptr_t, index: i32)
40                                                            -> uintptr_t;
41
42    fn isl_pw_qpolynomial_fold_list_insert(list: uintptr_t, pos: u32, el: uintptr_t) -> uintptr_t;
43
44    fn isl_pw_qpolynomial_fold_list_n_pw_qpolynomial_fold(list: uintptr_t) -> i32;
45
46    fn isl_pw_qpolynomial_fold_list_reverse(list: uintptr_t) -> uintptr_t;
47
48    fn isl_pw_qpolynomial_fold_list_set_at(list: uintptr_t, index: i32, el: uintptr_t)
49                                           -> uintptr_t;
50
51    fn isl_pw_qpolynomial_fold_list_set_pw_qpolynomial_fold(list: uintptr_t, index: i32,
52                                                            el: uintptr_t)
53                                                            -> uintptr_t;
54
55    fn isl_pw_qpolynomial_fold_list_size(list: uintptr_t) -> i32;
56
57    fn isl_pw_qpolynomial_fold_list_swap(list: uintptr_t, pos1: u32, pos2: u32) -> uintptr_t;
58
59    fn isl_pw_qpolynomial_fold_list_to_str(list: uintptr_t) -> *const c_char;
60
61}
62
63impl PwQPolynomialFoldList {
64    /// Wraps `isl_pw_qpolynomial_fold_list_add`.
65    pub fn add(self, el: PwQPolynomialFold) -> Result<PwQPolynomialFoldList, LibISLError> {
66        let list = self;
67        let isl_rs_ctx = list.get_ctx();
68        let mut list = list;
69        list.do_not_free_on_drop();
70        let list = list.ptr;
71        let mut el = el;
72        el.do_not_free_on_drop();
73        let el = el.ptr;
74        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_add(list, el) };
75        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
76                                                    should_free_on_drop: true };
77        let err = isl_rs_ctx.last_error();
78        if err != Error::None_ {
79            let err_msg = isl_rs_ctx.last_error_msg();
80            isl_rs_ctx.reset_error();
81            return Err(LibISLError::new(err, err_msg));
82        }
83        Ok(isl_rs_result)
84    }
85
86    /// Wraps `isl_pw_qpolynomial_fold_list_alloc`.
87    pub fn alloc(ctx: &Context, n: i32) -> Result<PwQPolynomialFoldList, LibISLError> {
88        let isl_rs_ctx = Context { ptr: ctx.ptr,
89                                   should_free_on_drop: false };
90        let ctx = ctx.ptr;
91        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_alloc(ctx, n) };
92        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
93                                                    should_free_on_drop: true };
94        let err = isl_rs_ctx.last_error();
95        if err != Error::None_ {
96            let err_msg = isl_rs_ctx.last_error_msg();
97            isl_rs_ctx.reset_error();
98            return Err(LibISLError::new(err, err_msg));
99        }
100        Ok(isl_rs_result)
101    }
102
103    /// Wraps `isl_pw_qpolynomial_fold_list_clear`.
104    pub fn clear(self) -> Result<PwQPolynomialFoldList, LibISLError> {
105        let list = self;
106        let isl_rs_ctx = list.get_ctx();
107        let mut list = list;
108        list.do_not_free_on_drop();
109        let list = list.ptr;
110        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_clear(list) };
111        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
112                                                    should_free_on_drop: true };
113        let err = isl_rs_ctx.last_error();
114        if err != Error::None_ {
115            let err_msg = isl_rs_ctx.last_error_msg();
116            isl_rs_ctx.reset_error();
117            return Err(LibISLError::new(err, err_msg));
118        }
119        Ok(isl_rs_result)
120    }
121
122    /// Wraps `isl_pw_qpolynomial_fold_list_concat`.
123    pub fn concat(self, list2: PwQPolynomialFoldList)
124                  -> Result<PwQPolynomialFoldList, LibISLError> {
125        let list1 = self;
126        let isl_rs_ctx = list1.get_ctx();
127        let mut list1 = list1;
128        list1.do_not_free_on_drop();
129        let list1 = list1.ptr;
130        let mut list2 = list2;
131        list2.do_not_free_on_drop();
132        let list2 = list2.ptr;
133        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_concat(list1, list2) };
134        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
135                                                    should_free_on_drop: true };
136        let err = isl_rs_ctx.last_error();
137        if err != Error::None_ {
138            let err_msg = isl_rs_ctx.last_error_msg();
139            isl_rs_ctx.reset_error();
140            return Err(LibISLError::new(err, err_msg));
141        }
142        Ok(isl_rs_result)
143    }
144
145    /// Wraps `isl_pw_qpolynomial_fold_list_copy`.
146    pub fn copy(&self) -> Result<PwQPolynomialFoldList, LibISLError> {
147        let list = self;
148        let isl_rs_ctx = list.get_ctx();
149        let list = list.ptr;
150        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_copy(list) };
151        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
152                                                    should_free_on_drop: true };
153        let err = isl_rs_ctx.last_error();
154        if err != Error::None_ {
155            let err_msg = isl_rs_ctx.last_error_msg();
156            isl_rs_ctx.reset_error();
157            return Err(LibISLError::new(err, err_msg));
158        }
159        Ok(isl_rs_result)
160    }
161
162    /// Wraps `isl_pw_qpolynomial_fold_list_drop`.
163    pub fn drop(self, first: u32, n: u32) -> Result<PwQPolynomialFoldList, LibISLError> {
164        let list = self;
165        let isl_rs_ctx = list.get_ctx();
166        let mut list = list;
167        list.do_not_free_on_drop();
168        let list = list.ptr;
169        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_drop(list, first, n) };
170        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
171                                                    should_free_on_drop: true };
172        let err = isl_rs_ctx.last_error();
173        if err != Error::None_ {
174            let err_msg = isl_rs_ctx.last_error_msg();
175            isl_rs_ctx.reset_error();
176            return Err(LibISLError::new(err, err_msg));
177        }
178        Ok(isl_rs_result)
179    }
180
181    /// Wraps `isl_pw_qpolynomial_fold_list_dump`.
182    pub fn dump(&self) -> Result<(), LibISLError> {
183        let list = self;
184        let isl_rs_ctx = list.get_ctx();
185        let list = list.ptr;
186        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_dump(list) };
187        let err = isl_rs_ctx.last_error();
188        if err != Error::None_ {
189            let err_msg = isl_rs_ctx.last_error_msg();
190            isl_rs_ctx.reset_error();
191            return Err(LibISLError::new(err, err_msg));
192        }
193        Ok(isl_rs_result)
194    }
195
196    /// Wraps `isl_pw_qpolynomial_fold_list_free`.
197    pub fn free(self) -> Result<PwQPolynomialFoldList, LibISLError> {
198        let list = self;
199        let isl_rs_ctx = list.get_ctx();
200        let mut list = list;
201        list.do_not_free_on_drop();
202        let list = list.ptr;
203        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_free(list) };
204        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
205                                                    should_free_on_drop: true };
206        let err = isl_rs_ctx.last_error();
207        if err != Error::None_ {
208            let err_msg = isl_rs_ctx.last_error_msg();
209            isl_rs_ctx.reset_error();
210            return Err(LibISLError::new(err, err_msg));
211        }
212        Ok(isl_rs_result)
213    }
214
215    /// Wraps `isl_pw_qpolynomial_fold_list_from_pw_qpolynomial_fold`.
216    pub fn from_pw_qpolynomial_fold(el: PwQPolynomialFold)
217                                    -> Result<PwQPolynomialFoldList, LibISLError> {
218        let isl_rs_ctx = el.get_ctx();
219        let mut el = el;
220        el.do_not_free_on_drop();
221        let el = el.ptr;
222        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_from_pw_qpolynomial_fold(el) };
223        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
224                                                    should_free_on_drop: true };
225        let err = isl_rs_ctx.last_error();
226        if err != Error::None_ {
227            let err_msg = isl_rs_ctx.last_error_msg();
228            isl_rs_ctx.reset_error();
229            return Err(LibISLError::new(err, err_msg));
230        }
231        Ok(isl_rs_result)
232    }
233
234    /// Wraps `isl_pw_qpolynomial_fold_list_get_at`.
235    pub fn get_at(&self, index: i32) -> Result<PwQPolynomialFold, LibISLError> {
236        let list = self;
237        let isl_rs_ctx = list.get_ctx();
238        let list = list.ptr;
239        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_get_at(list, index) };
240        let isl_rs_result = PwQPolynomialFold { ptr: isl_rs_result,
241                                                should_free_on_drop: true };
242        let err = isl_rs_ctx.last_error();
243        if err != Error::None_ {
244            let err_msg = isl_rs_ctx.last_error_msg();
245            isl_rs_ctx.reset_error();
246            return Err(LibISLError::new(err, err_msg));
247        }
248        Ok(isl_rs_result)
249    }
250
251    /// Wraps `isl_pw_qpolynomial_fold_list_get_ctx`.
252    pub fn get_ctx(&self) -> Context {
253        let list = self;
254        let list = list.ptr;
255        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_get_ctx(list) };
256        let isl_rs_result = Context { ptr: isl_rs_result,
257                                      should_free_on_drop: false };
258        isl_rs_result
259    }
260
261    /// Wraps `isl_pw_qpolynomial_fold_list_get_pw_qpolynomial_fold`.
262    pub fn get_pw_qpolynomial_fold(&self, index: i32) -> Result<PwQPolynomialFold, LibISLError> {
263        let list = self;
264        let isl_rs_ctx = list.get_ctx();
265        let list = list.ptr;
266        let isl_rs_result =
267            unsafe { isl_pw_qpolynomial_fold_list_get_pw_qpolynomial_fold(list, index) };
268        let isl_rs_result = PwQPolynomialFold { ptr: isl_rs_result,
269                                                should_free_on_drop: true };
270        let err = isl_rs_ctx.last_error();
271        if err != Error::None_ {
272            let err_msg = isl_rs_ctx.last_error_msg();
273            isl_rs_ctx.reset_error();
274            return Err(LibISLError::new(err, err_msg));
275        }
276        Ok(isl_rs_result)
277    }
278
279    /// Wraps `isl_pw_qpolynomial_fold_list_insert`.
280    pub fn insert(self, pos: u32, el: PwQPolynomialFold)
281                  -> Result<PwQPolynomialFoldList, LibISLError> {
282        let list = self;
283        let isl_rs_ctx = list.get_ctx();
284        let mut list = list;
285        list.do_not_free_on_drop();
286        let list = list.ptr;
287        let mut el = el;
288        el.do_not_free_on_drop();
289        let el = el.ptr;
290        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_insert(list, pos, el) };
291        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
292                                                    should_free_on_drop: true };
293        let err = isl_rs_ctx.last_error();
294        if err != Error::None_ {
295            let err_msg = isl_rs_ctx.last_error_msg();
296            isl_rs_ctx.reset_error();
297            return Err(LibISLError::new(err, err_msg));
298        }
299        Ok(isl_rs_result)
300    }
301
302    /// Wraps `isl_pw_qpolynomial_fold_list_n_pw_qpolynomial_fold`.
303    pub fn n_pw_qpolynomial_fold(&self) -> Result<i32, LibISLError> {
304        let list = self;
305        let isl_rs_ctx = list.get_ctx();
306        let list = list.ptr;
307        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_n_pw_qpolynomial_fold(list) };
308        let err = isl_rs_ctx.last_error();
309        if err != Error::None_ {
310            let err_msg = isl_rs_ctx.last_error_msg();
311            isl_rs_ctx.reset_error();
312            return Err(LibISLError::new(err, err_msg));
313        }
314        Ok(isl_rs_result)
315    }
316
317    /// Wraps `isl_pw_qpolynomial_fold_list_reverse`.
318    pub fn reverse(self) -> Result<PwQPolynomialFoldList, LibISLError> {
319        let list = self;
320        let isl_rs_ctx = list.get_ctx();
321        let mut list = list;
322        list.do_not_free_on_drop();
323        let list = list.ptr;
324        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_reverse(list) };
325        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
326                                                    should_free_on_drop: true };
327        let err = isl_rs_ctx.last_error();
328        if err != Error::None_ {
329            let err_msg = isl_rs_ctx.last_error_msg();
330            isl_rs_ctx.reset_error();
331            return Err(LibISLError::new(err, err_msg));
332        }
333        Ok(isl_rs_result)
334    }
335
336    /// Wraps `isl_pw_qpolynomial_fold_list_set_at`.
337    pub fn set_at(self, index: i32, el: PwQPolynomialFold)
338                  -> Result<PwQPolynomialFoldList, LibISLError> {
339        let list = self;
340        let isl_rs_ctx = list.get_ctx();
341        let mut list = list;
342        list.do_not_free_on_drop();
343        let list = list.ptr;
344        let mut el = el;
345        el.do_not_free_on_drop();
346        let el = el.ptr;
347        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_set_at(list, index, el) };
348        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
349                                                    should_free_on_drop: true };
350        let err = isl_rs_ctx.last_error();
351        if err != Error::None_ {
352            let err_msg = isl_rs_ctx.last_error_msg();
353            isl_rs_ctx.reset_error();
354            return Err(LibISLError::new(err, err_msg));
355        }
356        Ok(isl_rs_result)
357    }
358
359    /// Wraps `isl_pw_qpolynomial_fold_list_set_pw_qpolynomial_fold`.
360    pub fn set_pw_qpolynomial_fold(self, index: i32, el: PwQPolynomialFold)
361                                   -> Result<PwQPolynomialFoldList, LibISLError> {
362        let list = self;
363        let isl_rs_ctx = list.get_ctx();
364        let mut list = list;
365        list.do_not_free_on_drop();
366        let list = list.ptr;
367        let mut el = el;
368        el.do_not_free_on_drop();
369        let el = el.ptr;
370        let isl_rs_result =
371            unsafe { isl_pw_qpolynomial_fold_list_set_pw_qpolynomial_fold(list, index, el) };
372        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
373                                                    should_free_on_drop: true };
374        let err = isl_rs_ctx.last_error();
375        if err != Error::None_ {
376            let err_msg = isl_rs_ctx.last_error_msg();
377            isl_rs_ctx.reset_error();
378            return Err(LibISLError::new(err, err_msg));
379        }
380        Ok(isl_rs_result)
381    }
382
383    /// Wraps `isl_pw_qpolynomial_fold_list_size`.
384    pub fn size(&self) -> Result<i32, LibISLError> {
385        let list = self;
386        let isl_rs_ctx = list.get_ctx();
387        let list = list.ptr;
388        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_size(list) };
389        let err = isl_rs_ctx.last_error();
390        if err != Error::None_ {
391            let err_msg = isl_rs_ctx.last_error_msg();
392            isl_rs_ctx.reset_error();
393            return Err(LibISLError::new(err, err_msg));
394        }
395        Ok(isl_rs_result)
396    }
397
398    /// Wraps `isl_pw_qpolynomial_fold_list_swap`.
399    pub fn swap(self, pos1: u32, pos2: u32) -> Result<PwQPolynomialFoldList, LibISLError> {
400        let list = self;
401        let isl_rs_ctx = list.get_ctx();
402        let mut list = list;
403        list.do_not_free_on_drop();
404        let list = list.ptr;
405        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_swap(list, pos1, pos2) };
406        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
407                                                    should_free_on_drop: true };
408        let err = isl_rs_ctx.last_error();
409        if err != Error::None_ {
410            let err_msg = isl_rs_ctx.last_error_msg();
411            isl_rs_ctx.reset_error();
412            return Err(LibISLError::new(err, err_msg));
413        }
414        Ok(isl_rs_result)
415    }
416
417    /// Wraps `isl_pw_qpolynomial_fold_list_to_str`.
418    pub fn to_str(&self) -> Result<&str, LibISLError> {
419        let list = self;
420        let isl_rs_ctx = list.get_ctx();
421        let list = list.ptr;
422        let isl_rs_result = unsafe { isl_pw_qpolynomial_fold_list_to_str(list) };
423        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
424        let isl_rs_result = isl_rs_result.to_str().unwrap();
425        let err = isl_rs_ctx.last_error();
426        if err != Error::None_ {
427            let err_msg = isl_rs_ctx.last_error_msg();
428            isl_rs_ctx.reset_error();
429            return Err(LibISLError::new(err, err_msg));
430        }
431        Ok(isl_rs_result)
432    }
433
434    /// Does not call isl_pw_qpolynomial_fold_list_free() on being dropped. (For
435    /// internal use only.)
436    pub fn do_not_free_on_drop(&mut self) {
437        self.should_free_on_drop = false;
438    }
439}
440
441impl Drop for PwQPolynomialFoldList {
442    fn drop(&mut self) {
443        if self.should_free_on_drop {
444            unsafe {
445                isl_pw_qpolynomial_fold_list_free(self.ptr);
446            }
447        }
448    }
449}