isl_rs/bindings/
union_pw_qpolynomial_fold.rs

1// Automatically generated by isl_bindings_generator.
2// LICENSE: MIT
3
4use super::{
5    Context, DimType, Error, Fold, LibISLError, Point, PwQPolynomialFold, PwQPolynomialFoldList,
6    Set, Space, UnionPwQPolynomial, UnionSet, Val,
7};
8use libc::uintptr_t;
9use std::ffi::CString;
10use std::os::raw::c_char;
11
12/// Wraps `isl_union_pw_qpolynomial_fold`.
13pub struct UnionPwQPolynomialFold {
14    pub ptr: uintptr_t,
15    pub should_free_on_drop: bool,
16}
17
18extern "C" {
19
20    fn isl_union_pw_qpolynomial_fold_add_union_pw_qpolynomial(upwf: uintptr_t, upwqp: uintptr_t)
21                                                              -> uintptr_t;
22
23    fn isl_union_pw_qpolynomial_fold_align_params(upwf: uintptr_t, model: uintptr_t) -> uintptr_t;
24
25    fn isl_union_pw_qpolynomial_fold_coalesce(upwf: uintptr_t) -> uintptr_t;
26
27    fn isl_union_pw_qpolynomial_fold_copy(upwf: uintptr_t) -> uintptr_t;
28
29    fn isl_union_pw_qpolynomial_fold_dim(upwf: uintptr_t, type_: i32) -> i32;
30
31    fn isl_union_pw_qpolynomial_fold_domain(upwf: uintptr_t) -> uintptr_t;
32
33    fn isl_union_pw_qpolynomial_fold_drop_dims(upwf: uintptr_t, type_: i32, first: u32, n: u32)
34                                               -> uintptr_t;
35
36    fn isl_union_pw_qpolynomial_fold_drop_unused_params(upwf: uintptr_t) -> uintptr_t;
37
38    fn isl_union_pw_qpolynomial_fold_eval(upwf: uintptr_t, pnt: uintptr_t) -> uintptr_t;
39
40    fn isl_union_pw_qpolynomial_fold_extract_pw_qpolynomial_fold(upwf: uintptr_t, space: uintptr_t)
41                                                                 -> uintptr_t;
42
43    fn isl_union_pw_qpolynomial_fold_find_dim_by_name(upwf: uintptr_t, type_: i32,
44                                                      name: *const c_char)
45                                                      -> i32;
46
47    fn isl_union_pw_qpolynomial_fold_fold(upwf1: uintptr_t, upwf2: uintptr_t) -> uintptr_t;
48
49    fn isl_union_pw_qpolynomial_fold_fold_pw_qpolynomial_fold(upwqp: uintptr_t, pwqp: uintptr_t)
50                                                              -> uintptr_t;
51
52    fn isl_union_pw_qpolynomial_fold_free(upwf: uintptr_t) -> uintptr_t;
53
54    fn isl_union_pw_qpolynomial_fold_from_pw_qpolynomial_fold(pwf: uintptr_t) -> uintptr_t;
55
56    fn isl_union_pw_qpolynomial_fold_get_ctx(upwf: uintptr_t) -> uintptr_t;
57
58    fn isl_union_pw_qpolynomial_fold_get_pw_qpolynomial_fold_list(upwf: uintptr_t) -> uintptr_t;
59
60    fn isl_union_pw_qpolynomial_fold_get_space(upwf: uintptr_t) -> uintptr_t;
61
62    fn isl_union_pw_qpolynomial_fold_get_type(upwf: uintptr_t) -> i32;
63
64    fn isl_union_pw_qpolynomial_fold_gist(upwf: uintptr_t, context: uintptr_t) -> uintptr_t;
65
66    fn isl_union_pw_qpolynomial_fold_gist_params(upwf: uintptr_t, context: uintptr_t) -> uintptr_t;
67
68    fn isl_union_pw_qpolynomial_fold_intersect_domain(upwf: uintptr_t, uset: uintptr_t)
69                                                      -> uintptr_t;
70
71    fn isl_union_pw_qpolynomial_fold_intersect_domain_space(upwf: uintptr_t, space: uintptr_t)
72                                                            -> uintptr_t;
73
74    fn isl_union_pw_qpolynomial_fold_intersect_domain_union_set(upwf: uintptr_t, uset: uintptr_t)
75                                                                -> uintptr_t;
76
77    fn isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_domain(upwf: uintptr_t,
78                                                                     uset: uintptr_t)
79                                                                     -> uintptr_t;
80
81    fn isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_range(upwf: uintptr_t,
82                                                                    uset: uintptr_t)
83                                                                    -> uintptr_t;
84
85    fn isl_union_pw_qpolynomial_fold_intersect_params(upwf: uintptr_t, set: uintptr_t)
86                                                      -> uintptr_t;
87
88    fn isl_union_pw_qpolynomial_fold_involves_nan(upwf: uintptr_t) -> i32;
89
90    fn isl_union_pw_qpolynomial_fold_n_pw_qpolynomial_fold(upwf: uintptr_t) -> i32;
91
92    fn isl_union_pw_qpolynomial_fold_plain_is_equal(upwf1: uintptr_t, upwf2: uintptr_t) -> i32;
93
94    fn isl_union_pw_qpolynomial_fold_reset_user(upwf: uintptr_t) -> uintptr_t;
95
96    fn isl_union_pw_qpolynomial_fold_scale_down_val(upwf: uintptr_t, v: uintptr_t) -> uintptr_t;
97
98    fn isl_union_pw_qpolynomial_fold_scale_val(upwf: uintptr_t, v: uintptr_t) -> uintptr_t;
99
100    fn isl_union_pw_qpolynomial_fold_set_dim_name(upwf: uintptr_t, type_: i32, pos: u32,
101                                                  s: *const c_char)
102                                                  -> uintptr_t;
103
104    fn isl_union_pw_qpolynomial_fold_subtract_domain(upwf: uintptr_t, uset: uintptr_t)
105                                                     -> uintptr_t;
106
107    fn isl_union_pw_qpolynomial_fold_subtract_domain_space(upwf: uintptr_t, space: uintptr_t)
108                                                           -> uintptr_t;
109
110    fn isl_union_pw_qpolynomial_fold_subtract_domain_union_set(upwf: uintptr_t, uset: uintptr_t)
111                                                               -> uintptr_t;
112
113    fn isl_union_pw_qpolynomial_fold_zero(space: uintptr_t, type_: i32) -> uintptr_t;
114
115    fn isl_union_pw_qpolynomial_fold_zero_ctx(ctx: uintptr_t, type_: i32) -> uintptr_t;
116
117    fn isl_union_pw_qpolynomial_fold_zero_space(space: uintptr_t, type_: i32) -> uintptr_t;
118
119}
120
121impl UnionPwQPolynomialFold {
122    /// Wraps `isl_union_pw_qpolynomial_fold_add_union_pw_qpolynomial`.
123    pub fn add_union_pw_qpolynomial(self, upwqp: UnionPwQPolynomial)
124                                    -> Result<UnionPwQPolynomialFold, LibISLError> {
125        let upwf = self;
126        let isl_rs_ctx = upwf.get_ctx();
127        let mut upwf = upwf;
128        upwf.do_not_free_on_drop();
129        let upwf = upwf.ptr;
130        let mut upwqp = upwqp;
131        upwqp.do_not_free_on_drop();
132        let upwqp = upwqp.ptr;
133        let isl_rs_result =
134            unsafe { isl_union_pw_qpolynomial_fold_add_union_pw_qpolynomial(upwf, upwqp) };
135        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
136                                                     should_free_on_drop: true };
137        let err = isl_rs_ctx.last_error();
138        if err != Error::None_ {
139            let err_msg = isl_rs_ctx.last_error_msg();
140            isl_rs_ctx.reset_error();
141            return Err(LibISLError::new(err, err_msg));
142        }
143        Ok(isl_rs_result)
144    }
145
146    /// Wraps `isl_union_pw_qpolynomial_fold_align_params`.
147    pub fn align_params(self, model: Space) -> Result<UnionPwQPolynomialFold, LibISLError> {
148        let upwf = self;
149        let isl_rs_ctx = upwf.get_ctx();
150        let mut upwf = upwf;
151        upwf.do_not_free_on_drop();
152        let upwf = upwf.ptr;
153        let mut model = model;
154        model.do_not_free_on_drop();
155        let model = model.ptr;
156        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_align_params(upwf, model) };
157        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
158                                                     should_free_on_drop: true };
159        let err = isl_rs_ctx.last_error();
160        if err != Error::None_ {
161            let err_msg = isl_rs_ctx.last_error_msg();
162            isl_rs_ctx.reset_error();
163            return Err(LibISLError::new(err, err_msg));
164        }
165        Ok(isl_rs_result)
166    }
167
168    /// Wraps `isl_union_pw_qpolynomial_fold_coalesce`.
169    pub fn coalesce(self) -> Result<UnionPwQPolynomialFold, LibISLError> {
170        let upwf = self;
171        let isl_rs_ctx = upwf.get_ctx();
172        let mut upwf = upwf;
173        upwf.do_not_free_on_drop();
174        let upwf = upwf.ptr;
175        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_coalesce(upwf) };
176        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
177                                                     should_free_on_drop: true };
178        let err = isl_rs_ctx.last_error();
179        if err != Error::None_ {
180            let err_msg = isl_rs_ctx.last_error_msg();
181            isl_rs_ctx.reset_error();
182            return Err(LibISLError::new(err, err_msg));
183        }
184        Ok(isl_rs_result)
185    }
186
187    /// Wraps `isl_union_pw_qpolynomial_fold_copy`.
188    pub fn copy(&self) -> Result<UnionPwQPolynomialFold, LibISLError> {
189        let upwf = self;
190        let isl_rs_ctx = upwf.get_ctx();
191        let upwf = upwf.ptr;
192        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_copy(upwf) };
193        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
194                                                     should_free_on_drop: true };
195        let err = isl_rs_ctx.last_error();
196        if err != Error::None_ {
197            let err_msg = isl_rs_ctx.last_error_msg();
198            isl_rs_ctx.reset_error();
199            return Err(LibISLError::new(err, err_msg));
200        }
201        Ok(isl_rs_result)
202    }
203
204    /// Wraps `isl_union_pw_qpolynomial_fold_dim`.
205    pub fn dim(&self, type_: DimType) -> Result<i32, LibISLError> {
206        let upwf = self;
207        let isl_rs_ctx = upwf.get_ctx();
208        let upwf = upwf.ptr;
209        let type_ = type_.to_i32();
210        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_dim(upwf, type_) };
211        let err = isl_rs_ctx.last_error();
212        if err != Error::None_ {
213            let err_msg = isl_rs_ctx.last_error_msg();
214            isl_rs_ctx.reset_error();
215            return Err(LibISLError::new(err, err_msg));
216        }
217        Ok(isl_rs_result)
218    }
219
220    /// Wraps `isl_union_pw_qpolynomial_fold_domain`.
221    pub fn domain(self) -> Result<UnionSet, LibISLError> {
222        let upwf = self;
223        let isl_rs_ctx = upwf.get_ctx();
224        let mut upwf = upwf;
225        upwf.do_not_free_on_drop();
226        let upwf = upwf.ptr;
227        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_domain(upwf) };
228        let isl_rs_result = UnionSet { ptr: isl_rs_result,
229                                       should_free_on_drop: true };
230        let err = isl_rs_ctx.last_error();
231        if err != Error::None_ {
232            let err_msg = isl_rs_ctx.last_error_msg();
233            isl_rs_ctx.reset_error();
234            return Err(LibISLError::new(err, err_msg));
235        }
236        Ok(isl_rs_result)
237    }
238
239    /// Wraps `isl_union_pw_qpolynomial_fold_drop_dims`.
240    pub fn drop_dims(self, type_: DimType, first: u32, n: u32)
241                     -> Result<UnionPwQPolynomialFold, LibISLError> {
242        let upwf = self;
243        let isl_rs_ctx = upwf.get_ctx();
244        let mut upwf = upwf;
245        upwf.do_not_free_on_drop();
246        let upwf = upwf.ptr;
247        let type_ = type_.to_i32();
248        let isl_rs_result =
249            unsafe { isl_union_pw_qpolynomial_fold_drop_dims(upwf, type_, first, n) };
250        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
251                                                     should_free_on_drop: true };
252        let err = isl_rs_ctx.last_error();
253        if err != Error::None_ {
254            let err_msg = isl_rs_ctx.last_error_msg();
255            isl_rs_ctx.reset_error();
256            return Err(LibISLError::new(err, err_msg));
257        }
258        Ok(isl_rs_result)
259    }
260
261    /// Wraps `isl_union_pw_qpolynomial_fold_drop_unused_params`.
262    pub fn drop_unused_params(self) -> Result<UnionPwQPolynomialFold, LibISLError> {
263        let upwf = self;
264        let isl_rs_ctx = upwf.get_ctx();
265        let mut upwf = upwf;
266        upwf.do_not_free_on_drop();
267        let upwf = upwf.ptr;
268        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_drop_unused_params(upwf) };
269        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
270                                                     should_free_on_drop: true };
271        let err = isl_rs_ctx.last_error();
272        if err != Error::None_ {
273            let err_msg = isl_rs_ctx.last_error_msg();
274            isl_rs_ctx.reset_error();
275            return Err(LibISLError::new(err, err_msg));
276        }
277        Ok(isl_rs_result)
278    }
279
280    /// Wraps `isl_union_pw_qpolynomial_fold_eval`.
281    pub fn eval(self, pnt: Point) -> Result<Val, LibISLError> {
282        let upwf = self;
283        let isl_rs_ctx = upwf.get_ctx();
284        let mut upwf = upwf;
285        upwf.do_not_free_on_drop();
286        let upwf = upwf.ptr;
287        let mut pnt = pnt;
288        pnt.do_not_free_on_drop();
289        let pnt = pnt.ptr;
290        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_eval(upwf, pnt) };
291        let isl_rs_result = Val { 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_union_pw_qpolynomial_fold_extract_pw_qpolynomial_fold`.
303    pub fn extract_pw_qpolynomial_fold(&self, space: Space)
304                                       -> Result<PwQPolynomialFold, LibISLError> {
305        let upwf = self;
306        let isl_rs_ctx = upwf.get_ctx();
307        let upwf = upwf.ptr;
308        let mut space = space;
309        space.do_not_free_on_drop();
310        let space = space.ptr;
311        let isl_rs_result =
312            unsafe { isl_union_pw_qpolynomial_fold_extract_pw_qpolynomial_fold(upwf, space) };
313        let isl_rs_result = PwQPolynomialFold { ptr: isl_rs_result,
314                                                should_free_on_drop: true };
315        let err = isl_rs_ctx.last_error();
316        if err != Error::None_ {
317            let err_msg = isl_rs_ctx.last_error_msg();
318            isl_rs_ctx.reset_error();
319            return Err(LibISLError::new(err, err_msg));
320        }
321        Ok(isl_rs_result)
322    }
323
324    /// Wraps `isl_union_pw_qpolynomial_fold_find_dim_by_name`.
325    pub fn find_dim_by_name(&self, type_: DimType, name: &str) -> Result<i32, LibISLError> {
326        let upwf = self;
327        let isl_rs_ctx = upwf.get_ctx();
328        let upwf = upwf.ptr;
329        let type_ = type_.to_i32();
330        let name = CString::new(name).unwrap();
331        let name = name.as_ptr();
332        let isl_rs_result =
333            unsafe { isl_union_pw_qpolynomial_fold_find_dim_by_name(upwf, type_, name) };
334        let err = isl_rs_ctx.last_error();
335        if err != Error::None_ {
336            let err_msg = isl_rs_ctx.last_error_msg();
337            isl_rs_ctx.reset_error();
338            return Err(LibISLError::new(err, err_msg));
339        }
340        Ok(isl_rs_result)
341    }
342
343    /// Wraps `isl_union_pw_qpolynomial_fold_fold`.
344    pub fn fold(self, upwf2: UnionPwQPolynomialFold)
345                -> Result<UnionPwQPolynomialFold, LibISLError> {
346        let upwf1 = self;
347        let isl_rs_ctx = upwf1.get_ctx();
348        let mut upwf1 = upwf1;
349        upwf1.do_not_free_on_drop();
350        let upwf1 = upwf1.ptr;
351        let mut upwf2 = upwf2;
352        upwf2.do_not_free_on_drop();
353        let upwf2 = upwf2.ptr;
354        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_fold(upwf1, upwf2) };
355        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
356                                                     should_free_on_drop: true };
357        let err = isl_rs_ctx.last_error();
358        if err != Error::None_ {
359            let err_msg = isl_rs_ctx.last_error_msg();
360            isl_rs_ctx.reset_error();
361            return Err(LibISLError::new(err, err_msg));
362        }
363        Ok(isl_rs_result)
364    }
365
366    /// Wraps `isl_union_pw_qpolynomial_fold_fold_pw_qpolynomial_fold`.
367    pub fn fold_pw_qpolynomial_fold(self, pwqp: PwQPolynomialFold)
368                                    -> Result<UnionPwQPolynomialFold, LibISLError> {
369        let upwqp = self;
370        let isl_rs_ctx = upwqp.get_ctx();
371        let mut upwqp = upwqp;
372        upwqp.do_not_free_on_drop();
373        let upwqp = upwqp.ptr;
374        let mut pwqp = pwqp;
375        pwqp.do_not_free_on_drop();
376        let pwqp = pwqp.ptr;
377        let isl_rs_result =
378            unsafe { isl_union_pw_qpolynomial_fold_fold_pw_qpolynomial_fold(upwqp, pwqp) };
379        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
380                                                     should_free_on_drop: true };
381        let err = isl_rs_ctx.last_error();
382        if err != Error::None_ {
383            let err_msg = isl_rs_ctx.last_error_msg();
384            isl_rs_ctx.reset_error();
385            return Err(LibISLError::new(err, err_msg));
386        }
387        Ok(isl_rs_result)
388    }
389
390    /// Wraps `isl_union_pw_qpolynomial_fold_free`.
391    pub fn free(self) -> Result<UnionPwQPolynomialFold, LibISLError> {
392        let upwf = self;
393        let isl_rs_ctx = upwf.get_ctx();
394        let mut upwf = upwf;
395        upwf.do_not_free_on_drop();
396        let upwf = upwf.ptr;
397        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_free(upwf) };
398        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
399                                                     should_free_on_drop: true };
400        let err = isl_rs_ctx.last_error();
401        if err != Error::None_ {
402            let err_msg = isl_rs_ctx.last_error_msg();
403            isl_rs_ctx.reset_error();
404            return Err(LibISLError::new(err, err_msg));
405        }
406        Ok(isl_rs_result)
407    }
408
409    /// Wraps `isl_union_pw_qpolynomial_fold_from_pw_qpolynomial_fold`.
410    pub fn from_pw_qpolynomial_fold(pwf: PwQPolynomialFold)
411                                    -> Result<UnionPwQPolynomialFold, LibISLError> {
412        let isl_rs_ctx = pwf.get_ctx();
413        let mut pwf = pwf;
414        pwf.do_not_free_on_drop();
415        let pwf = pwf.ptr;
416        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_from_pw_qpolynomial_fold(pwf) };
417        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
418                                                     should_free_on_drop: true };
419        let err = isl_rs_ctx.last_error();
420        if err != Error::None_ {
421            let err_msg = isl_rs_ctx.last_error_msg();
422            isl_rs_ctx.reset_error();
423            return Err(LibISLError::new(err, err_msg));
424        }
425        Ok(isl_rs_result)
426    }
427
428    /// Wraps `isl_union_pw_qpolynomial_fold_get_ctx`.
429    pub fn get_ctx(&self) -> Context {
430        let upwf = self;
431        let upwf = upwf.ptr;
432        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_get_ctx(upwf) };
433        let isl_rs_result = Context { ptr: isl_rs_result,
434                                      should_free_on_drop: false };
435        isl_rs_result
436    }
437
438    /// Wraps `isl_union_pw_qpolynomial_fold_get_pw_qpolynomial_fold_list`.
439    pub fn get_pw_qpolynomial_fold_list(&self) -> Result<PwQPolynomialFoldList, LibISLError> {
440        let upwf = self;
441        let isl_rs_ctx = upwf.get_ctx();
442        let upwf = upwf.ptr;
443        let isl_rs_result =
444            unsafe { isl_union_pw_qpolynomial_fold_get_pw_qpolynomial_fold_list(upwf) };
445        let isl_rs_result = PwQPolynomialFoldList { ptr: isl_rs_result,
446                                                    should_free_on_drop: true };
447        let err = isl_rs_ctx.last_error();
448        if err != Error::None_ {
449            let err_msg = isl_rs_ctx.last_error_msg();
450            isl_rs_ctx.reset_error();
451            return Err(LibISLError::new(err, err_msg));
452        }
453        Ok(isl_rs_result)
454    }
455
456    /// Wraps `isl_union_pw_qpolynomial_fold_get_space`.
457    pub fn get_space(&self) -> Result<Space, LibISLError> {
458        let upwf = self;
459        let isl_rs_ctx = upwf.get_ctx();
460        let upwf = upwf.ptr;
461        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_get_space(upwf) };
462        let isl_rs_result = Space { ptr: isl_rs_result,
463                                    should_free_on_drop: true };
464        let err = isl_rs_ctx.last_error();
465        if err != Error::None_ {
466            let err_msg = isl_rs_ctx.last_error_msg();
467            isl_rs_ctx.reset_error();
468            return Err(LibISLError::new(err, err_msg));
469        }
470        Ok(isl_rs_result)
471    }
472
473    /// Wraps `isl_union_pw_qpolynomial_fold_get_type`.
474    pub fn get_type(&self) -> Result<Fold, LibISLError> {
475        let upwf = self;
476        let isl_rs_ctx = upwf.get_ctx();
477        let upwf = upwf.ptr;
478        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_get_type(upwf) };
479        let isl_rs_result = Fold::from_i32(isl_rs_result);
480        let err = isl_rs_ctx.last_error();
481        if err != Error::None_ {
482            let err_msg = isl_rs_ctx.last_error_msg();
483            isl_rs_ctx.reset_error();
484            return Err(LibISLError::new(err, err_msg));
485        }
486        Ok(isl_rs_result)
487    }
488
489    /// Wraps `isl_union_pw_qpolynomial_fold_gist`.
490    pub fn gist(self, context: UnionSet) -> Result<UnionPwQPolynomialFold, LibISLError> {
491        let upwf = self;
492        let isl_rs_ctx = upwf.get_ctx();
493        let mut upwf = upwf;
494        upwf.do_not_free_on_drop();
495        let upwf = upwf.ptr;
496        let mut context = context;
497        context.do_not_free_on_drop();
498        let context = context.ptr;
499        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_gist(upwf, context) };
500        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
501                                                     should_free_on_drop: true };
502        let err = isl_rs_ctx.last_error();
503        if err != Error::None_ {
504            let err_msg = isl_rs_ctx.last_error_msg();
505            isl_rs_ctx.reset_error();
506            return Err(LibISLError::new(err, err_msg));
507        }
508        Ok(isl_rs_result)
509    }
510
511    /// Wraps `isl_union_pw_qpolynomial_fold_gist_params`.
512    pub fn gist_params(self, context: Set) -> Result<UnionPwQPolynomialFold, LibISLError> {
513        let upwf = self;
514        let isl_rs_ctx = upwf.get_ctx();
515        let mut upwf = upwf;
516        upwf.do_not_free_on_drop();
517        let upwf = upwf.ptr;
518        let mut context = context;
519        context.do_not_free_on_drop();
520        let context = context.ptr;
521        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_gist_params(upwf, context) };
522        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
523                                                     should_free_on_drop: true };
524        let err = isl_rs_ctx.last_error();
525        if err != Error::None_ {
526            let err_msg = isl_rs_ctx.last_error_msg();
527            isl_rs_ctx.reset_error();
528            return Err(LibISLError::new(err, err_msg));
529        }
530        Ok(isl_rs_result)
531    }
532
533    /// Wraps `isl_union_pw_qpolynomial_fold_intersect_domain`.
534    pub fn intersect_domain(self, uset: UnionSet) -> Result<UnionPwQPolynomialFold, LibISLError> {
535        let upwf = self;
536        let isl_rs_ctx = upwf.get_ctx();
537        let mut upwf = upwf;
538        upwf.do_not_free_on_drop();
539        let upwf = upwf.ptr;
540        let mut uset = uset;
541        uset.do_not_free_on_drop();
542        let uset = uset.ptr;
543        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_intersect_domain(upwf, uset) };
544        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
545                                                     should_free_on_drop: true };
546        let err = isl_rs_ctx.last_error();
547        if err != Error::None_ {
548            let err_msg = isl_rs_ctx.last_error_msg();
549            isl_rs_ctx.reset_error();
550            return Err(LibISLError::new(err, err_msg));
551        }
552        Ok(isl_rs_result)
553    }
554
555    /// Wraps `isl_union_pw_qpolynomial_fold_intersect_domain_space`.
556    pub fn intersect_domain_space(self, space: Space)
557                                  -> Result<UnionPwQPolynomialFold, LibISLError> {
558        let upwf = self;
559        let isl_rs_ctx = upwf.get_ctx();
560        let mut upwf = upwf;
561        upwf.do_not_free_on_drop();
562        let upwf = upwf.ptr;
563        let mut space = space;
564        space.do_not_free_on_drop();
565        let space = space.ptr;
566        let isl_rs_result =
567            unsafe { isl_union_pw_qpolynomial_fold_intersect_domain_space(upwf, space) };
568        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
569                                                     should_free_on_drop: true };
570        let err = isl_rs_ctx.last_error();
571        if err != Error::None_ {
572            let err_msg = isl_rs_ctx.last_error_msg();
573            isl_rs_ctx.reset_error();
574            return Err(LibISLError::new(err, err_msg));
575        }
576        Ok(isl_rs_result)
577    }
578
579    /// Wraps `isl_union_pw_qpolynomial_fold_intersect_domain_union_set`.
580    pub fn intersect_domain_union_set(self, uset: UnionSet)
581                                      -> Result<UnionPwQPolynomialFold, LibISLError> {
582        let upwf = self;
583        let isl_rs_ctx = upwf.get_ctx();
584        let mut upwf = upwf;
585        upwf.do_not_free_on_drop();
586        let upwf = upwf.ptr;
587        let mut uset = uset;
588        uset.do_not_free_on_drop();
589        let uset = uset.ptr;
590        let isl_rs_result =
591            unsafe { isl_union_pw_qpolynomial_fold_intersect_domain_union_set(upwf, uset) };
592        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
593                                                     should_free_on_drop: true };
594        let err = isl_rs_ctx.last_error();
595        if err != Error::None_ {
596            let err_msg = isl_rs_ctx.last_error_msg();
597            isl_rs_ctx.reset_error();
598            return Err(LibISLError::new(err, err_msg));
599        }
600        Ok(isl_rs_result)
601    }
602
603    /// Wraps `isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_domain`.
604    pub fn intersect_domain_wrapped_domain(self, uset: UnionSet)
605                                           -> Result<UnionPwQPolynomialFold, LibISLError> {
606        let upwf = self;
607        let isl_rs_ctx = upwf.get_ctx();
608        let mut upwf = upwf;
609        upwf.do_not_free_on_drop();
610        let upwf = upwf.ptr;
611        let mut uset = uset;
612        uset.do_not_free_on_drop();
613        let uset = uset.ptr;
614        let isl_rs_result =
615            unsafe { isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_domain(upwf, uset) };
616        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
617                                                     should_free_on_drop: true };
618        let err = isl_rs_ctx.last_error();
619        if err != Error::None_ {
620            let err_msg = isl_rs_ctx.last_error_msg();
621            isl_rs_ctx.reset_error();
622            return Err(LibISLError::new(err, err_msg));
623        }
624        Ok(isl_rs_result)
625    }
626
627    /// Wraps `isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_range`.
628    pub fn intersect_domain_wrapped_range(self, uset: UnionSet)
629                                          -> Result<UnionPwQPolynomialFold, LibISLError> {
630        let upwf = self;
631        let isl_rs_ctx = upwf.get_ctx();
632        let mut upwf = upwf;
633        upwf.do_not_free_on_drop();
634        let upwf = upwf.ptr;
635        let mut uset = uset;
636        uset.do_not_free_on_drop();
637        let uset = uset.ptr;
638        let isl_rs_result =
639            unsafe { isl_union_pw_qpolynomial_fold_intersect_domain_wrapped_range(upwf, uset) };
640        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
641                                                     should_free_on_drop: true };
642        let err = isl_rs_ctx.last_error();
643        if err != Error::None_ {
644            let err_msg = isl_rs_ctx.last_error_msg();
645            isl_rs_ctx.reset_error();
646            return Err(LibISLError::new(err, err_msg));
647        }
648        Ok(isl_rs_result)
649    }
650
651    /// Wraps `isl_union_pw_qpolynomial_fold_intersect_params`.
652    pub fn intersect_params(self, set: Set) -> Result<UnionPwQPolynomialFold, LibISLError> {
653        let upwf = self;
654        let isl_rs_ctx = upwf.get_ctx();
655        let mut upwf = upwf;
656        upwf.do_not_free_on_drop();
657        let upwf = upwf.ptr;
658        let mut set = set;
659        set.do_not_free_on_drop();
660        let set = set.ptr;
661        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_intersect_params(upwf, set) };
662        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
663                                                     should_free_on_drop: true };
664        let err = isl_rs_ctx.last_error();
665        if err != Error::None_ {
666            let err_msg = isl_rs_ctx.last_error_msg();
667            isl_rs_ctx.reset_error();
668            return Err(LibISLError::new(err, err_msg));
669        }
670        Ok(isl_rs_result)
671    }
672
673    /// Wraps `isl_union_pw_qpolynomial_fold_involves_nan`.
674    pub fn involves_nan(&self) -> Result<bool, LibISLError> {
675        let upwf = self;
676        let isl_rs_ctx = upwf.get_ctx();
677        let upwf = upwf.ptr;
678        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_involves_nan(upwf) };
679        let isl_rs_result = match isl_rs_result {
680            0 => false,
681            1 => true,
682            _ => {
683                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
684            }
685        };
686        let err = isl_rs_ctx.last_error();
687        if err != Error::None_ {
688            let err_msg = isl_rs_ctx.last_error_msg();
689            isl_rs_ctx.reset_error();
690            return Err(LibISLError::new(err, err_msg));
691        }
692        Ok(isl_rs_result)
693    }
694
695    /// Wraps `isl_union_pw_qpolynomial_fold_n_pw_qpolynomial_fold`.
696    pub fn n_pw_qpolynomial_fold(&self) -> Result<i32, LibISLError> {
697        let upwf = self;
698        let isl_rs_ctx = upwf.get_ctx();
699        let upwf = upwf.ptr;
700        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_n_pw_qpolynomial_fold(upwf) };
701        let err = isl_rs_ctx.last_error();
702        if err != Error::None_ {
703            let err_msg = isl_rs_ctx.last_error_msg();
704            isl_rs_ctx.reset_error();
705            return Err(LibISLError::new(err, err_msg));
706        }
707        Ok(isl_rs_result)
708    }
709
710    /// Wraps `isl_union_pw_qpolynomial_fold_plain_is_equal`.
711    pub fn plain_is_equal(&self, upwf2: &UnionPwQPolynomialFold) -> Result<bool, LibISLError> {
712        let upwf1 = self;
713        let isl_rs_ctx = upwf1.get_ctx();
714        let upwf1 = upwf1.ptr;
715        let upwf2 = upwf2.ptr;
716        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_plain_is_equal(upwf1, upwf2) };
717        let isl_rs_result = match isl_rs_result {
718            0 => false,
719            1 => true,
720            _ => {
721                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
722            }
723        };
724        let err = isl_rs_ctx.last_error();
725        if err != Error::None_ {
726            let err_msg = isl_rs_ctx.last_error_msg();
727            isl_rs_ctx.reset_error();
728            return Err(LibISLError::new(err, err_msg));
729        }
730        Ok(isl_rs_result)
731    }
732
733    /// Wraps `isl_union_pw_qpolynomial_fold_reset_user`.
734    pub fn reset_user(self) -> Result<UnionPwQPolynomialFold, LibISLError> {
735        let upwf = self;
736        let isl_rs_ctx = upwf.get_ctx();
737        let mut upwf = upwf;
738        upwf.do_not_free_on_drop();
739        let upwf = upwf.ptr;
740        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_reset_user(upwf) };
741        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
742                                                     should_free_on_drop: true };
743        let err = isl_rs_ctx.last_error();
744        if err != Error::None_ {
745            let err_msg = isl_rs_ctx.last_error_msg();
746            isl_rs_ctx.reset_error();
747            return Err(LibISLError::new(err, err_msg));
748        }
749        Ok(isl_rs_result)
750    }
751
752    /// Wraps `isl_union_pw_qpolynomial_fold_scale_down_val`.
753    pub fn scale_down_val(self, v: Val) -> Result<UnionPwQPolynomialFold, LibISLError> {
754        let upwf = self;
755        let isl_rs_ctx = upwf.get_ctx();
756        let mut upwf = upwf;
757        upwf.do_not_free_on_drop();
758        let upwf = upwf.ptr;
759        let mut v = v;
760        v.do_not_free_on_drop();
761        let v = v.ptr;
762        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_scale_down_val(upwf, v) };
763        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
764                                                     should_free_on_drop: true };
765        let err = isl_rs_ctx.last_error();
766        if err != Error::None_ {
767            let err_msg = isl_rs_ctx.last_error_msg();
768            isl_rs_ctx.reset_error();
769            return Err(LibISLError::new(err, err_msg));
770        }
771        Ok(isl_rs_result)
772    }
773
774    /// Wraps `isl_union_pw_qpolynomial_fold_scale_val`.
775    pub fn scale_val(self, v: Val) -> Result<UnionPwQPolynomialFold, LibISLError> {
776        let upwf = self;
777        let isl_rs_ctx = upwf.get_ctx();
778        let mut upwf = upwf;
779        upwf.do_not_free_on_drop();
780        let upwf = upwf.ptr;
781        let mut v = v;
782        v.do_not_free_on_drop();
783        let v = v.ptr;
784        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_scale_val(upwf, v) };
785        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
786                                                     should_free_on_drop: true };
787        let err = isl_rs_ctx.last_error();
788        if err != Error::None_ {
789            let err_msg = isl_rs_ctx.last_error_msg();
790            isl_rs_ctx.reset_error();
791            return Err(LibISLError::new(err, err_msg));
792        }
793        Ok(isl_rs_result)
794    }
795
796    /// Wraps `isl_union_pw_qpolynomial_fold_set_dim_name`.
797    pub fn set_dim_name(self, type_: DimType, pos: u32, s: &str)
798                        -> Result<UnionPwQPolynomialFold, LibISLError> {
799        let upwf = self;
800        let isl_rs_ctx = upwf.get_ctx();
801        let mut upwf = upwf;
802        upwf.do_not_free_on_drop();
803        let upwf = upwf.ptr;
804        let type_ = type_.to_i32();
805        let s = CString::new(s).unwrap();
806        let s = s.as_ptr();
807        let isl_rs_result =
808            unsafe { isl_union_pw_qpolynomial_fold_set_dim_name(upwf, type_, pos, s) };
809        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
810                                                     should_free_on_drop: true };
811        let err = isl_rs_ctx.last_error();
812        if err != Error::None_ {
813            let err_msg = isl_rs_ctx.last_error_msg();
814            isl_rs_ctx.reset_error();
815            return Err(LibISLError::new(err, err_msg));
816        }
817        Ok(isl_rs_result)
818    }
819
820    /// Wraps `isl_union_pw_qpolynomial_fold_subtract_domain`.
821    pub fn subtract_domain(self, uset: UnionSet) -> Result<UnionPwQPolynomialFold, LibISLError> {
822        let upwf = self;
823        let isl_rs_ctx = upwf.get_ctx();
824        let mut upwf = upwf;
825        upwf.do_not_free_on_drop();
826        let upwf = upwf.ptr;
827        let mut uset = uset;
828        uset.do_not_free_on_drop();
829        let uset = uset.ptr;
830        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_subtract_domain(upwf, uset) };
831        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
832                                                     should_free_on_drop: true };
833        let err = isl_rs_ctx.last_error();
834        if err != Error::None_ {
835            let err_msg = isl_rs_ctx.last_error_msg();
836            isl_rs_ctx.reset_error();
837            return Err(LibISLError::new(err, err_msg));
838        }
839        Ok(isl_rs_result)
840    }
841
842    /// Wraps `isl_union_pw_qpolynomial_fold_subtract_domain_space`.
843    pub fn subtract_domain_space(self, space: Space)
844                                 -> Result<UnionPwQPolynomialFold, LibISLError> {
845        let upwf = self;
846        let isl_rs_ctx = upwf.get_ctx();
847        let mut upwf = upwf;
848        upwf.do_not_free_on_drop();
849        let upwf = upwf.ptr;
850        let mut space = space;
851        space.do_not_free_on_drop();
852        let space = space.ptr;
853        let isl_rs_result =
854            unsafe { isl_union_pw_qpolynomial_fold_subtract_domain_space(upwf, space) };
855        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
856                                                     should_free_on_drop: true };
857        let err = isl_rs_ctx.last_error();
858        if err != Error::None_ {
859            let err_msg = isl_rs_ctx.last_error_msg();
860            isl_rs_ctx.reset_error();
861            return Err(LibISLError::new(err, err_msg));
862        }
863        Ok(isl_rs_result)
864    }
865
866    /// Wraps `isl_union_pw_qpolynomial_fold_subtract_domain_union_set`.
867    pub fn subtract_domain_union_set(self, uset: UnionSet)
868                                     -> Result<UnionPwQPolynomialFold, LibISLError> {
869        let upwf = self;
870        let isl_rs_ctx = upwf.get_ctx();
871        let mut upwf = upwf;
872        upwf.do_not_free_on_drop();
873        let upwf = upwf.ptr;
874        let mut uset = uset;
875        uset.do_not_free_on_drop();
876        let uset = uset.ptr;
877        let isl_rs_result =
878            unsafe { isl_union_pw_qpolynomial_fold_subtract_domain_union_set(upwf, uset) };
879        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
880                                                     should_free_on_drop: true };
881        let err = isl_rs_ctx.last_error();
882        if err != Error::None_ {
883            let err_msg = isl_rs_ctx.last_error_msg();
884            isl_rs_ctx.reset_error();
885            return Err(LibISLError::new(err, err_msg));
886        }
887        Ok(isl_rs_result)
888    }
889
890    /// Wraps `isl_union_pw_qpolynomial_fold_zero`.
891    pub fn zero(space: Space, type_: Fold) -> Result<UnionPwQPolynomialFold, LibISLError> {
892        let isl_rs_ctx = space.get_ctx();
893        let mut space = space;
894        space.do_not_free_on_drop();
895        let space = space.ptr;
896        let type_ = type_.to_i32();
897        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_zero(space, type_) };
898        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
899                                                     should_free_on_drop: true };
900        let err = isl_rs_ctx.last_error();
901        if err != Error::None_ {
902            let err_msg = isl_rs_ctx.last_error_msg();
903            isl_rs_ctx.reset_error();
904            return Err(LibISLError::new(err, err_msg));
905        }
906        Ok(isl_rs_result)
907    }
908
909    /// Wraps `isl_union_pw_qpolynomial_fold_zero_ctx`.
910    pub fn zero_ctx(ctx: &Context, type_: Fold) -> Result<UnionPwQPolynomialFold, LibISLError> {
911        let isl_rs_ctx = Context { ptr: ctx.ptr,
912                                   should_free_on_drop: false };
913        let ctx = ctx.ptr;
914        let type_ = type_.to_i32();
915        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_zero_ctx(ctx, type_) };
916        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
917                                                     should_free_on_drop: true };
918        let err = isl_rs_ctx.last_error();
919        if err != Error::None_ {
920            let err_msg = isl_rs_ctx.last_error_msg();
921            isl_rs_ctx.reset_error();
922            return Err(LibISLError::new(err, err_msg));
923        }
924        Ok(isl_rs_result)
925    }
926
927    /// Wraps `isl_union_pw_qpolynomial_fold_zero_space`.
928    pub fn zero_space(space: Space, type_: Fold) -> Result<UnionPwQPolynomialFold, LibISLError> {
929        let isl_rs_ctx = space.get_ctx();
930        let mut space = space;
931        space.do_not_free_on_drop();
932        let space = space.ptr;
933        let type_ = type_.to_i32();
934        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_fold_zero_space(space, type_) };
935        let isl_rs_result = UnionPwQPolynomialFold { ptr: isl_rs_result,
936                                                     should_free_on_drop: true };
937        let err = isl_rs_ctx.last_error();
938        if err != Error::None_ {
939            let err_msg = isl_rs_ctx.last_error_msg();
940            isl_rs_ctx.reset_error();
941            return Err(LibISLError::new(err, err_msg));
942        }
943        Ok(isl_rs_result)
944    }
945
946    /// Does not call isl_union_pw_qpolynomial_fold_free() on being dropped.
947    /// (For internal use only.)
948    pub fn do_not_free_on_drop(&mut self) {
949        self.should_free_on_drop = false;
950    }
951}
952
953impl Drop for UnionPwQPolynomialFold {
954    fn drop(&mut self) {
955        if self.should_free_on_drop {
956            unsafe {
957                isl_union_pw_qpolynomial_fold_free(self.ptr);
958            }
959        }
960    }
961}