isl_rs/bindings/
union_pw_qpolynomial.rs

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