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            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_add_pw_qpolynomial`.
147    pub fn add_pw_qpolynomial(self, pwqp: PwQPolynomial)
148                              -> Result<UnionPwQPolynomial, LibISLError> {
149        let upwqp = self;
150        let isl_rs_ctx = upwqp.get_ctx();
151        let mut upwqp = upwqp;
152        upwqp.do_not_free_on_drop();
153        let upwqp = upwqp.ptr;
154        let mut pwqp = pwqp;
155        pwqp.do_not_free_on_drop();
156        let pwqp = pwqp.ptr;
157        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_add_pw_qpolynomial(upwqp, pwqp) };
158        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
159                                                 should_free_on_drop: true };
160        let err = isl_rs_ctx.last_error();
161        if err != Error::None_ {
162            let err_msg = isl_rs_ctx.last_error_msg();
163            isl_rs_ctx.reset_error();
164            return Err(LibISLError::new(err, err_msg));
165        }
166        Ok(isl_rs_result)
167    }
168
169    /// Wraps `isl_union_pw_qpolynomial_align_params`.
170    pub fn align_params(self, model: Space) -> Result<UnionPwQPolynomial, LibISLError> {
171        let upwqp = self;
172        let isl_rs_ctx = upwqp.get_ctx();
173        let mut upwqp = upwqp;
174        upwqp.do_not_free_on_drop();
175        let upwqp = upwqp.ptr;
176        let mut model = model;
177        model.do_not_free_on_drop();
178        let model = model.ptr;
179        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_align_params(upwqp, model) };
180        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
181                                                 should_free_on_drop: true };
182        let err = isl_rs_ctx.last_error();
183        if err != Error::None_ {
184            let err_msg = isl_rs_ctx.last_error_msg();
185            isl_rs_ctx.reset_error();
186            return Err(LibISLError::new(err, err_msg));
187        }
188        Ok(isl_rs_result)
189    }
190
191    /// Wraps `isl_union_pw_qpolynomial_coalesce`.
192    pub fn coalesce(self) -> Result<UnionPwQPolynomial, LibISLError> {
193        let upwqp = self;
194        let isl_rs_ctx = upwqp.get_ctx();
195        let mut upwqp = upwqp;
196        upwqp.do_not_free_on_drop();
197        let upwqp = upwqp.ptr;
198        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_coalesce(upwqp) };
199        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
200                                                 should_free_on_drop: true };
201        let err = isl_rs_ctx.last_error();
202        if err != Error::None_ {
203            let err_msg = isl_rs_ctx.last_error_msg();
204            isl_rs_ctx.reset_error();
205            return Err(LibISLError::new(err, err_msg));
206        }
207        Ok(isl_rs_result)
208    }
209
210    /// Wraps `isl_union_pw_qpolynomial_copy`.
211    pub fn copy(&self) -> Result<UnionPwQPolynomial, LibISLError> {
212        let upwqp = self;
213        let isl_rs_ctx = upwqp.get_ctx();
214        let upwqp = upwqp.ptr;
215        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_copy(upwqp) };
216        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
217                                                 should_free_on_drop: true };
218        let err = isl_rs_ctx.last_error();
219        if err != Error::None_ {
220            let err_msg = isl_rs_ctx.last_error_msg();
221            isl_rs_ctx.reset_error();
222            return Err(LibISLError::new(err, err_msg));
223        }
224        Ok(isl_rs_result)
225    }
226
227    /// Wraps `isl_union_pw_qpolynomial_dim`.
228    pub fn dim(&self, type_: DimType) -> Result<i32, LibISLError> {
229        let upwqp = self;
230        let isl_rs_ctx = upwqp.get_ctx();
231        let upwqp = upwqp.ptr;
232        let type_ = type_.to_i32();
233        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_dim(upwqp, type_) };
234        let err = isl_rs_ctx.last_error();
235        if err != Error::None_ {
236            let err_msg = isl_rs_ctx.last_error_msg();
237            isl_rs_ctx.reset_error();
238            return Err(LibISLError::new(err, err_msg));
239        }
240        Ok(isl_rs_result)
241    }
242
243    /// Wraps `isl_union_pw_qpolynomial_domain`.
244    pub fn domain(self) -> Result<UnionSet, LibISLError> {
245        let upwqp = self;
246        let isl_rs_ctx = upwqp.get_ctx();
247        let mut upwqp = upwqp;
248        upwqp.do_not_free_on_drop();
249        let upwqp = upwqp.ptr;
250        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_domain(upwqp) };
251        let isl_rs_result = UnionSet { ptr: isl_rs_result,
252                                       should_free_on_drop: true };
253        let err = isl_rs_ctx.last_error();
254        if err != Error::None_ {
255            let err_msg = isl_rs_ctx.last_error_msg();
256            isl_rs_ctx.reset_error();
257            return Err(LibISLError::new(err, err_msg));
258        }
259        Ok(isl_rs_result)
260    }
261
262    /// Wraps `isl_union_pw_qpolynomial_domain_reverse`.
263    pub fn domain_reverse(self) -> Result<UnionPwQPolynomial, LibISLError> {
264        let upwqp = self;
265        let isl_rs_ctx = upwqp.get_ctx();
266        let mut upwqp = upwqp;
267        upwqp.do_not_free_on_drop();
268        let upwqp = upwqp.ptr;
269        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_domain_reverse(upwqp) };
270        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
271                                                 should_free_on_drop: true };
272        let err = isl_rs_ctx.last_error();
273        if err != Error::None_ {
274            let err_msg = isl_rs_ctx.last_error_msg();
275            isl_rs_ctx.reset_error();
276            return Err(LibISLError::new(err, err_msg));
277        }
278        Ok(isl_rs_result)
279    }
280
281    /// Wraps `isl_union_pw_qpolynomial_drop_dims`.
282    pub fn drop_dims(self, type_: DimType, first: u32, n: u32)
283                     -> Result<UnionPwQPolynomial, LibISLError> {
284        let upwqp = self;
285        let isl_rs_ctx = upwqp.get_ctx();
286        let mut upwqp = upwqp;
287        upwqp.do_not_free_on_drop();
288        let upwqp = upwqp.ptr;
289        let type_ = type_.to_i32();
290        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_drop_dims(upwqp, type_, first, n) };
291        let isl_rs_result = UnionPwQPolynomial { 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_drop_unused_params`.
303    pub fn drop_unused_params(self) -> Result<UnionPwQPolynomial, LibISLError> {
304        let upwqp = self;
305        let isl_rs_ctx = upwqp.get_ctx();
306        let mut upwqp = upwqp;
307        upwqp.do_not_free_on_drop();
308        let upwqp = upwqp.ptr;
309        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_drop_unused_params(upwqp) };
310        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
311                                                 should_free_on_drop: true };
312        let err = isl_rs_ctx.last_error();
313        if err != Error::None_ {
314            let err_msg = isl_rs_ctx.last_error_msg();
315            isl_rs_ctx.reset_error();
316            return Err(LibISLError::new(err, err_msg));
317        }
318        Ok(isl_rs_result)
319    }
320
321    /// Wraps `isl_union_pw_qpolynomial_eval`.
322    pub fn eval(self, pnt: Point) -> Result<Val, LibISLError> {
323        let upwqp = self;
324        let isl_rs_ctx = upwqp.get_ctx();
325        let mut upwqp = upwqp;
326        upwqp.do_not_free_on_drop();
327        let upwqp = upwqp.ptr;
328        let mut pnt = pnt;
329        pnt.do_not_free_on_drop();
330        let pnt = pnt.ptr;
331        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_eval(upwqp, pnt) };
332        let isl_rs_result = Val { ptr: isl_rs_result,
333                                  should_free_on_drop: true };
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_extract_pw_qpolynomial`.
344    pub fn extract_pw_qpolynomial(&self, space: Space) -> Result<PwQPolynomial, LibISLError> {
345        let upwqp = self;
346        let isl_rs_ctx = upwqp.get_ctx();
347        let upwqp = upwqp.ptr;
348        let mut space = space;
349        space.do_not_free_on_drop();
350        let space = space.ptr;
351        let isl_rs_result =
352            unsafe { isl_union_pw_qpolynomial_extract_pw_qpolynomial(upwqp, space) };
353        let isl_rs_result = PwQPolynomial { ptr: isl_rs_result,
354                                            should_free_on_drop: true };
355        let err = isl_rs_ctx.last_error();
356        if err != Error::None_ {
357            let err_msg = isl_rs_ctx.last_error_msg();
358            isl_rs_ctx.reset_error();
359            return Err(LibISLError::new(err, err_msg));
360        }
361        Ok(isl_rs_result)
362    }
363
364    /// Wraps `isl_union_pw_qpolynomial_find_dim_by_name`.
365    pub fn find_dim_by_name(&self, type_: DimType, name: &str) -> Result<i32, LibISLError> {
366        let upwqp = self;
367        let isl_rs_ctx = upwqp.get_ctx();
368        let upwqp = upwqp.ptr;
369        let type_ = type_.to_i32();
370        let name = CString::new(name).unwrap();
371        let name = name.as_ptr();
372        let isl_rs_result =
373            unsafe { isl_union_pw_qpolynomial_find_dim_by_name(upwqp, type_, name) };
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_union_pw_qpolynomial_free`.
384    pub fn free(self) -> Result<UnionPwQPolynomial, LibISLError> {
385        let upwqp = self;
386        let isl_rs_ctx = upwqp.get_ctx();
387        let mut upwqp = upwqp;
388        upwqp.do_not_free_on_drop();
389        let upwqp = upwqp.ptr;
390        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_free(upwqp) };
391        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
392                                                 should_free_on_drop: true };
393        let err = isl_rs_ctx.last_error();
394        if err != Error::None_ {
395            let err_msg = isl_rs_ctx.last_error_msg();
396            isl_rs_ctx.reset_error();
397            return Err(LibISLError::new(err, err_msg));
398        }
399        Ok(isl_rs_result)
400    }
401
402    /// Wraps `isl_union_pw_qpolynomial_from_pw_qpolynomial`.
403    pub fn from_pw_qpolynomial(pwqp: PwQPolynomial) -> Result<UnionPwQPolynomial, LibISLError> {
404        let isl_rs_ctx = pwqp.get_ctx();
405        let mut pwqp = pwqp;
406        pwqp.do_not_free_on_drop();
407        let pwqp = pwqp.ptr;
408        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_from_pw_qpolynomial(pwqp) };
409        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
410                                                 should_free_on_drop: true };
411        let err = isl_rs_ctx.last_error();
412        if err != Error::None_ {
413            let err_msg = isl_rs_ctx.last_error_msg();
414            isl_rs_ctx.reset_error();
415            return Err(LibISLError::new(err, err_msg));
416        }
417        Ok(isl_rs_result)
418    }
419
420    /// Wraps `isl_union_pw_qpolynomial_get_ctx`.
421    pub fn get_ctx(&self) -> Context {
422        let upwqp = self;
423        let upwqp = upwqp.ptr;
424        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_get_ctx(upwqp) };
425        let isl_rs_result = Context { ptr: isl_rs_result,
426                                      should_free_on_drop: false };
427        isl_rs_result
428    }
429
430    /// Wraps `isl_union_pw_qpolynomial_get_pw_qpolynomial_list`.
431    pub fn get_pw_qpolynomial_list(&self) -> Result<PwQPolynomialList, LibISLError> {
432        let upwqp = self;
433        let isl_rs_ctx = upwqp.get_ctx();
434        let upwqp = upwqp.ptr;
435        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_get_pw_qpolynomial_list(upwqp) };
436        let isl_rs_result = PwQPolynomialList { ptr: isl_rs_result,
437                                                should_free_on_drop: true };
438        let err = isl_rs_ctx.last_error();
439        if err != Error::None_ {
440            let err_msg = isl_rs_ctx.last_error_msg();
441            isl_rs_ctx.reset_error();
442            return Err(LibISLError::new(err, err_msg));
443        }
444        Ok(isl_rs_result)
445    }
446
447    /// Wraps `isl_union_pw_qpolynomial_get_space`.
448    pub fn get_space(&self) -> Result<Space, LibISLError> {
449        let upwqp = self;
450        let isl_rs_ctx = upwqp.get_ctx();
451        let upwqp = upwqp.ptr;
452        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_get_space(upwqp) };
453        let isl_rs_result = Space { ptr: isl_rs_result,
454                                    should_free_on_drop: true };
455        let err = isl_rs_ctx.last_error();
456        if err != Error::None_ {
457            let err_msg = isl_rs_ctx.last_error_msg();
458            isl_rs_ctx.reset_error();
459            return Err(LibISLError::new(err, err_msg));
460        }
461        Ok(isl_rs_result)
462    }
463
464    /// Wraps `isl_union_pw_qpolynomial_gist`.
465    pub fn gist(self, context: UnionSet) -> Result<UnionPwQPolynomial, LibISLError> {
466        let upwqp = self;
467        let isl_rs_ctx = upwqp.get_ctx();
468        let mut upwqp = upwqp;
469        upwqp.do_not_free_on_drop();
470        let upwqp = upwqp.ptr;
471        let mut context = context;
472        context.do_not_free_on_drop();
473        let context = context.ptr;
474        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_gist(upwqp, context) };
475        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
476                                                 should_free_on_drop: true };
477        let err = isl_rs_ctx.last_error();
478        if err != Error::None_ {
479            let err_msg = isl_rs_ctx.last_error_msg();
480            isl_rs_ctx.reset_error();
481            return Err(LibISLError::new(err, err_msg));
482        }
483        Ok(isl_rs_result)
484    }
485
486    /// Wraps `isl_union_pw_qpolynomial_gist_params`.
487    pub fn gist_params(self, context: Set) -> Result<UnionPwQPolynomial, LibISLError> {
488        let upwqp = self;
489        let isl_rs_ctx = upwqp.get_ctx();
490        let mut upwqp = upwqp;
491        upwqp.do_not_free_on_drop();
492        let upwqp = upwqp.ptr;
493        let mut context = context;
494        context.do_not_free_on_drop();
495        let context = context.ptr;
496        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_gist_params(upwqp, context) };
497        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
498                                                 should_free_on_drop: true };
499        let err = isl_rs_ctx.last_error();
500        if err != Error::None_ {
501            let err_msg = isl_rs_ctx.last_error_msg();
502            isl_rs_ctx.reset_error();
503            return Err(LibISLError::new(err, err_msg));
504        }
505        Ok(isl_rs_result)
506    }
507
508    /// Wraps `isl_union_pw_qpolynomial_intersect_domain`.
509    pub fn intersect_domain(self, uset: UnionSet) -> Result<UnionPwQPolynomial, LibISLError> {
510        let upwpq = self;
511        let isl_rs_ctx = upwpq.get_ctx();
512        let mut upwpq = upwpq;
513        upwpq.do_not_free_on_drop();
514        let upwpq = upwpq.ptr;
515        let mut uset = uset;
516        uset.do_not_free_on_drop();
517        let uset = uset.ptr;
518        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_intersect_domain(upwpq, uset) };
519        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
520                                                 should_free_on_drop: true };
521        let err = isl_rs_ctx.last_error();
522        if err != Error::None_ {
523            let err_msg = isl_rs_ctx.last_error_msg();
524            isl_rs_ctx.reset_error();
525            return Err(LibISLError::new(err, err_msg));
526        }
527        Ok(isl_rs_result)
528    }
529
530    /// Wraps `isl_union_pw_qpolynomial_intersect_domain_space`.
531    pub fn intersect_domain_space(self, space: Space) -> Result<UnionPwQPolynomial, LibISLError> {
532        let upwpq = self;
533        let isl_rs_ctx = upwpq.get_ctx();
534        let mut upwpq = upwpq;
535        upwpq.do_not_free_on_drop();
536        let upwpq = upwpq.ptr;
537        let mut space = space;
538        space.do_not_free_on_drop();
539        let space = space.ptr;
540        let isl_rs_result =
541            unsafe { isl_union_pw_qpolynomial_intersect_domain_space(upwpq, space) };
542        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
543                                                 should_free_on_drop: true };
544        let err = isl_rs_ctx.last_error();
545        if err != Error::None_ {
546            let err_msg = isl_rs_ctx.last_error_msg();
547            isl_rs_ctx.reset_error();
548            return Err(LibISLError::new(err, err_msg));
549        }
550        Ok(isl_rs_result)
551    }
552
553    /// Wraps `isl_union_pw_qpolynomial_intersect_domain_union_set`.
554    pub fn intersect_domain_union_set(self, uset: UnionSet)
555                                      -> Result<UnionPwQPolynomial, LibISLError> {
556        let upwpq = self;
557        let isl_rs_ctx = upwpq.get_ctx();
558        let mut upwpq = upwpq;
559        upwpq.do_not_free_on_drop();
560        let upwpq = upwpq.ptr;
561        let mut uset = uset;
562        uset.do_not_free_on_drop();
563        let uset = uset.ptr;
564        let isl_rs_result =
565            unsafe { isl_union_pw_qpolynomial_intersect_domain_union_set(upwpq, uset) };
566        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
567                                                 should_free_on_drop: true };
568        let err = isl_rs_ctx.last_error();
569        if err != Error::None_ {
570            let err_msg = isl_rs_ctx.last_error_msg();
571            isl_rs_ctx.reset_error();
572            return Err(LibISLError::new(err, err_msg));
573        }
574        Ok(isl_rs_result)
575    }
576
577    /// Wraps `isl_union_pw_qpolynomial_intersect_domain_wrapped_domain`.
578    pub fn intersect_domain_wrapped_domain(self, uset: UnionSet)
579                                           -> Result<UnionPwQPolynomial, LibISLError> {
580        let upwpq = self;
581        let isl_rs_ctx = upwpq.get_ctx();
582        let mut upwpq = upwpq;
583        upwpq.do_not_free_on_drop();
584        let upwpq = upwpq.ptr;
585        let mut uset = uset;
586        uset.do_not_free_on_drop();
587        let uset = uset.ptr;
588        let isl_rs_result =
589            unsafe { isl_union_pw_qpolynomial_intersect_domain_wrapped_domain(upwpq, uset) };
590        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
591                                                 should_free_on_drop: true };
592        let err = isl_rs_ctx.last_error();
593        if err != Error::None_ {
594            let err_msg = isl_rs_ctx.last_error_msg();
595            isl_rs_ctx.reset_error();
596            return Err(LibISLError::new(err, err_msg));
597        }
598        Ok(isl_rs_result)
599    }
600
601    /// Wraps `isl_union_pw_qpolynomial_intersect_domain_wrapped_range`.
602    pub fn intersect_domain_wrapped_range(self, uset: UnionSet)
603                                          -> Result<UnionPwQPolynomial, LibISLError> {
604        let upwpq = self;
605        let isl_rs_ctx = upwpq.get_ctx();
606        let mut upwpq = upwpq;
607        upwpq.do_not_free_on_drop();
608        let upwpq = upwpq.ptr;
609        let mut uset = uset;
610        uset.do_not_free_on_drop();
611        let uset = uset.ptr;
612        let isl_rs_result =
613            unsafe { isl_union_pw_qpolynomial_intersect_domain_wrapped_range(upwpq, uset) };
614        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
615                                                 should_free_on_drop: true };
616        let err = isl_rs_ctx.last_error();
617        if err != Error::None_ {
618            let err_msg = isl_rs_ctx.last_error_msg();
619            isl_rs_ctx.reset_error();
620            return Err(LibISLError::new(err, err_msg));
621        }
622        Ok(isl_rs_result)
623    }
624
625    /// Wraps `isl_union_pw_qpolynomial_intersect_params`.
626    pub fn intersect_params(self, set: Set) -> Result<UnionPwQPolynomial, LibISLError> {
627        let upwpq = self;
628        let isl_rs_ctx = upwpq.get_ctx();
629        let mut upwpq = upwpq;
630        upwpq.do_not_free_on_drop();
631        let upwpq = upwpq.ptr;
632        let mut set = set;
633        set.do_not_free_on_drop();
634        let set = set.ptr;
635        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_intersect_params(upwpq, set) };
636        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
637                                                 should_free_on_drop: true };
638        let err = isl_rs_ctx.last_error();
639        if err != Error::None_ {
640            let err_msg = isl_rs_ctx.last_error_msg();
641            isl_rs_ctx.reset_error();
642            return Err(LibISLError::new(err, err_msg));
643        }
644        Ok(isl_rs_result)
645    }
646
647    /// Wraps `isl_union_pw_qpolynomial_involves_nan`.
648    pub fn involves_nan(&self) -> Result<bool, LibISLError> {
649        let upwqp = self;
650        let isl_rs_ctx = upwqp.get_ctx();
651        let upwqp = upwqp.ptr;
652        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_involves_nan(upwqp) };
653        let isl_rs_result = match isl_rs_result {
654            0 => false,
655            1 => true,
656            _ => {
657                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
658            }
659        };
660        let err = isl_rs_ctx.last_error();
661        if err != Error::None_ {
662            let err_msg = isl_rs_ctx.last_error_msg();
663            isl_rs_ctx.reset_error();
664            return Err(LibISLError::new(err, err_msg));
665        }
666        Ok(isl_rs_result)
667    }
668
669    /// Wraps `isl_union_pw_qpolynomial_mul`.
670    pub fn mul(self, upwqp2: UnionPwQPolynomial) -> Result<UnionPwQPolynomial, LibISLError> {
671        let upwqp1 = self;
672        let isl_rs_ctx = upwqp1.get_ctx();
673        let mut upwqp1 = upwqp1;
674        upwqp1.do_not_free_on_drop();
675        let upwqp1 = upwqp1.ptr;
676        let mut upwqp2 = upwqp2;
677        upwqp2.do_not_free_on_drop();
678        let upwqp2 = upwqp2.ptr;
679        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_mul(upwqp1, upwqp2) };
680        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
681                                                 should_free_on_drop: true };
682        let err = isl_rs_ctx.last_error();
683        if err != Error::None_ {
684            let err_msg = isl_rs_ctx.last_error_msg();
685            isl_rs_ctx.reset_error();
686            return Err(LibISLError::new(err, err_msg));
687        }
688        Ok(isl_rs_result)
689    }
690
691    /// Wraps `isl_union_pw_qpolynomial_n_pw_qpolynomial`.
692    pub fn n_pw_qpolynomial(&self) -> Result<i32, LibISLError> {
693        let upwqp = self;
694        let isl_rs_ctx = upwqp.get_ctx();
695        let upwqp = upwqp.ptr;
696        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_n_pw_qpolynomial(upwqp) };
697        let err = isl_rs_ctx.last_error();
698        if err != Error::None_ {
699            let err_msg = isl_rs_ctx.last_error_msg();
700            isl_rs_ctx.reset_error();
701            return Err(LibISLError::new(err, err_msg));
702        }
703        Ok(isl_rs_result)
704    }
705
706    /// Wraps `isl_union_pw_qpolynomial_neg`.
707    pub fn neg(self) -> Result<UnionPwQPolynomial, LibISLError> {
708        let upwqp = self;
709        let isl_rs_ctx = upwqp.get_ctx();
710        let mut upwqp = upwqp;
711        upwqp.do_not_free_on_drop();
712        let upwqp = upwqp.ptr;
713        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_neg(upwqp) };
714        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
715                                                 should_free_on_drop: true };
716        let err = isl_rs_ctx.last_error();
717        if err != Error::None_ {
718            let err_msg = isl_rs_ctx.last_error_msg();
719            isl_rs_ctx.reset_error();
720            return Err(LibISLError::new(err, err_msg));
721        }
722        Ok(isl_rs_result)
723    }
724
725    /// Wraps `isl_union_pw_qpolynomial_plain_is_equal`.
726    pub fn plain_is_equal(&self, upwqp2: &UnionPwQPolynomial) -> Result<bool, LibISLError> {
727        let upwqp1 = self;
728        let isl_rs_ctx = upwqp1.get_ctx();
729        let upwqp1 = upwqp1.ptr;
730        let upwqp2 = upwqp2.ptr;
731        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_plain_is_equal(upwqp1, upwqp2) };
732        let isl_rs_result = match isl_rs_result {
733            0 => false,
734            1 => true,
735            _ => {
736                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
737            }
738        };
739        let err = isl_rs_ctx.last_error();
740        if err != Error::None_ {
741            let err_msg = isl_rs_ctx.last_error_msg();
742            isl_rs_ctx.reset_error();
743            return Err(LibISLError::new(err, err_msg));
744        }
745        Ok(isl_rs_result)
746    }
747
748    /// Wraps `isl_union_pw_qpolynomial_read_from_str`.
749    pub fn read_from_str(ctx: &Context, str_: &str) -> Result<UnionPwQPolynomial, LibISLError> {
750        let isl_rs_ctx = Context { ptr: ctx.ptr,
751                                   should_free_on_drop: false };
752        let ctx = ctx.ptr;
753        let str_ = CString::new(str_).unwrap();
754        let str_ = str_.as_ptr();
755        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_read_from_str(ctx, str_) };
756        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
757                                                 should_free_on_drop: true };
758        let err = isl_rs_ctx.last_error();
759        if err != Error::None_ {
760            let err_msg = isl_rs_ctx.last_error_msg();
761            isl_rs_ctx.reset_error();
762            return Err(LibISLError::new(err, err_msg));
763        }
764        Ok(isl_rs_result)
765    }
766
767    /// Wraps `isl_union_pw_qpolynomial_reset_user`.
768    pub fn reset_user(self) -> Result<UnionPwQPolynomial, LibISLError> {
769        let upwqp = self;
770        let isl_rs_ctx = upwqp.get_ctx();
771        let mut upwqp = upwqp;
772        upwqp.do_not_free_on_drop();
773        let upwqp = upwqp.ptr;
774        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_reset_user(upwqp) };
775        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
776                                                 should_free_on_drop: true };
777        let err = isl_rs_ctx.last_error();
778        if err != Error::None_ {
779            let err_msg = isl_rs_ctx.last_error_msg();
780            isl_rs_ctx.reset_error();
781            return Err(LibISLError::new(err, err_msg));
782        }
783        Ok(isl_rs_result)
784    }
785
786    /// Wraps `isl_union_pw_qpolynomial_scale_down_val`.
787    pub fn scale_down_val(self, v: Val) -> Result<UnionPwQPolynomial, LibISLError> {
788        let upwqp = self;
789        let isl_rs_ctx = upwqp.get_ctx();
790        let mut upwqp = upwqp;
791        upwqp.do_not_free_on_drop();
792        let upwqp = upwqp.ptr;
793        let mut v = v;
794        v.do_not_free_on_drop();
795        let v = v.ptr;
796        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_scale_down_val(upwqp, v) };
797        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
798                                                 should_free_on_drop: true };
799        let err = isl_rs_ctx.last_error();
800        if err != Error::None_ {
801            let err_msg = isl_rs_ctx.last_error_msg();
802            isl_rs_ctx.reset_error();
803            return Err(LibISLError::new(err, err_msg));
804        }
805        Ok(isl_rs_result)
806    }
807
808    /// Wraps `isl_union_pw_qpolynomial_scale_val`.
809    pub fn scale_val(self, v: Val) -> Result<UnionPwQPolynomial, LibISLError> {
810        let upwqp = self;
811        let isl_rs_ctx = upwqp.get_ctx();
812        let mut upwqp = upwqp;
813        upwqp.do_not_free_on_drop();
814        let upwqp = upwqp.ptr;
815        let mut v = v;
816        v.do_not_free_on_drop();
817        let v = v.ptr;
818        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_scale_val(upwqp, v) };
819        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
820                                                 should_free_on_drop: true };
821        let err = isl_rs_ctx.last_error();
822        if err != Error::None_ {
823            let err_msg = isl_rs_ctx.last_error_msg();
824            isl_rs_ctx.reset_error();
825            return Err(LibISLError::new(err, err_msg));
826        }
827        Ok(isl_rs_result)
828    }
829
830    /// Wraps `isl_union_pw_qpolynomial_set_dim_name`.
831    pub fn set_dim_name(self, type_: DimType, pos: u32, s: &str)
832                        -> Result<UnionPwQPolynomial, LibISLError> {
833        let upwqp = self;
834        let isl_rs_ctx = upwqp.get_ctx();
835        let mut upwqp = upwqp;
836        upwqp.do_not_free_on_drop();
837        let upwqp = upwqp.ptr;
838        let type_ = type_.to_i32();
839        let s = CString::new(s).unwrap();
840        let s = s.as_ptr();
841        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_set_dim_name(upwqp, type_, pos, s) };
842        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
843                                                 should_free_on_drop: true };
844        let err = isl_rs_ctx.last_error();
845        if err != Error::None_ {
846            let err_msg = isl_rs_ctx.last_error_msg();
847            isl_rs_ctx.reset_error();
848            return Err(LibISLError::new(err, err_msg));
849        }
850        Ok(isl_rs_result)
851    }
852
853    /// Wraps `isl_union_pw_qpolynomial_sub`.
854    pub fn sub(self, upwqp2: UnionPwQPolynomial) -> Result<UnionPwQPolynomial, LibISLError> {
855        let upwqp1 = self;
856        let isl_rs_ctx = upwqp1.get_ctx();
857        let mut upwqp1 = upwqp1;
858        upwqp1.do_not_free_on_drop();
859        let upwqp1 = upwqp1.ptr;
860        let mut upwqp2 = upwqp2;
861        upwqp2.do_not_free_on_drop();
862        let upwqp2 = upwqp2.ptr;
863        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_sub(upwqp1, upwqp2) };
864        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
865                                                 should_free_on_drop: true };
866        let err = isl_rs_ctx.last_error();
867        if err != Error::None_ {
868            let err_msg = isl_rs_ctx.last_error_msg();
869            isl_rs_ctx.reset_error();
870            return Err(LibISLError::new(err, err_msg));
871        }
872        Ok(isl_rs_result)
873    }
874
875    /// Wraps `isl_union_pw_qpolynomial_subtract_domain`.
876    pub fn subtract_domain(self, uset: UnionSet) -> Result<UnionPwQPolynomial, LibISLError> {
877        let upwpq = self;
878        let isl_rs_ctx = upwpq.get_ctx();
879        let mut upwpq = upwpq;
880        upwpq.do_not_free_on_drop();
881        let upwpq = upwpq.ptr;
882        let mut uset = uset;
883        uset.do_not_free_on_drop();
884        let uset = uset.ptr;
885        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_subtract_domain(upwpq, uset) };
886        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
887                                                 should_free_on_drop: true };
888        let err = isl_rs_ctx.last_error();
889        if err != Error::None_ {
890            let err_msg = isl_rs_ctx.last_error_msg();
891            isl_rs_ctx.reset_error();
892            return Err(LibISLError::new(err, err_msg));
893        }
894        Ok(isl_rs_result)
895    }
896
897    /// Wraps `isl_union_pw_qpolynomial_subtract_domain_space`.
898    pub fn subtract_domain_space(self, space: Space) -> Result<UnionPwQPolynomial, LibISLError> {
899        let upwpq = self;
900        let isl_rs_ctx = upwpq.get_ctx();
901        let mut upwpq = upwpq;
902        upwpq.do_not_free_on_drop();
903        let upwpq = upwpq.ptr;
904        let mut space = space;
905        space.do_not_free_on_drop();
906        let space = space.ptr;
907        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_subtract_domain_space(upwpq, space) };
908        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
909                                                 should_free_on_drop: true };
910        let err = isl_rs_ctx.last_error();
911        if err != Error::None_ {
912            let err_msg = isl_rs_ctx.last_error_msg();
913            isl_rs_ctx.reset_error();
914            return Err(LibISLError::new(err, err_msg));
915        }
916        Ok(isl_rs_result)
917    }
918
919    /// Wraps `isl_union_pw_qpolynomial_subtract_domain_union_set`.
920    pub fn subtract_domain_union_set(self, uset: UnionSet)
921                                     -> Result<UnionPwQPolynomial, LibISLError> {
922        let upwpq = self;
923        let isl_rs_ctx = upwpq.get_ctx();
924        let mut upwpq = upwpq;
925        upwpq.do_not_free_on_drop();
926        let upwpq = upwpq.ptr;
927        let mut uset = uset;
928        uset.do_not_free_on_drop();
929        let uset = uset.ptr;
930        let isl_rs_result =
931            unsafe { isl_union_pw_qpolynomial_subtract_domain_union_set(upwpq, uset) };
932        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
933                                                 should_free_on_drop: true };
934        let err = isl_rs_ctx.last_error();
935        if err != Error::None_ {
936            let err_msg = isl_rs_ctx.last_error_msg();
937            isl_rs_ctx.reset_error();
938            return Err(LibISLError::new(err, err_msg));
939        }
940        Ok(isl_rs_result)
941    }
942
943    /// Wraps `isl_union_pw_qpolynomial_to_polynomial`.
944    pub fn to_polynomial(self, sign: i32) -> Result<UnionPwQPolynomial, LibISLError> {
945        let upwqp = self;
946        let isl_rs_ctx = upwqp.get_ctx();
947        let mut upwqp = upwqp;
948        upwqp.do_not_free_on_drop();
949        let upwqp = upwqp.ptr;
950        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_to_polynomial(upwqp, sign) };
951        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
952                                                 should_free_on_drop: true };
953        let err = isl_rs_ctx.last_error();
954        if err != Error::None_ {
955            let err_msg = isl_rs_ctx.last_error_msg();
956            isl_rs_ctx.reset_error();
957            return Err(LibISLError::new(err, err_msg));
958        }
959        Ok(isl_rs_result)
960    }
961
962    /// Wraps `isl_union_pw_qpolynomial_to_str`.
963    pub fn to_str(&self) -> Result<&str, LibISLError> {
964        let upwqp = self;
965        let isl_rs_ctx = upwqp.get_ctx();
966        let upwqp = upwqp.ptr;
967        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_to_str(upwqp) };
968        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
969        let isl_rs_result = isl_rs_result.to_str().unwrap();
970        let err = isl_rs_ctx.last_error();
971        if err != Error::None_ {
972            let err_msg = isl_rs_ctx.last_error_msg();
973            isl_rs_ctx.reset_error();
974            return Err(LibISLError::new(err, err_msg));
975        }
976        Ok(isl_rs_result)
977    }
978
979    /// Wraps `isl_union_pw_qpolynomial_zero`.
980    pub fn zero(space: Space) -> Result<UnionPwQPolynomial, LibISLError> {
981        let isl_rs_ctx = space.get_ctx();
982        let mut space = space;
983        space.do_not_free_on_drop();
984        let space = space.ptr;
985        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_zero(space) };
986        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
987                                                 should_free_on_drop: true };
988        let err = isl_rs_ctx.last_error();
989        if err != Error::None_ {
990            let err_msg = isl_rs_ctx.last_error_msg();
991            isl_rs_ctx.reset_error();
992            return Err(LibISLError::new(err, err_msg));
993        }
994        Ok(isl_rs_result)
995    }
996
997    /// Wraps `isl_union_pw_qpolynomial_zero_ctx`.
998    pub fn zero_ctx(ctx: &Context) -> Result<UnionPwQPolynomial, LibISLError> {
999        let isl_rs_ctx = Context { ptr: ctx.ptr,
1000                                   should_free_on_drop: false };
1001        let ctx = ctx.ptr;
1002        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_zero_ctx(ctx) };
1003        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
1004                                                 should_free_on_drop: true };
1005        let err = isl_rs_ctx.last_error();
1006        if err != Error::None_ {
1007            let err_msg = isl_rs_ctx.last_error_msg();
1008            isl_rs_ctx.reset_error();
1009            return Err(LibISLError::new(err, err_msg));
1010        }
1011        Ok(isl_rs_result)
1012    }
1013
1014    /// Wraps `isl_union_pw_qpolynomial_zero_space`.
1015    pub fn zero_space(space: Space) -> Result<UnionPwQPolynomial, LibISLError> {
1016        let isl_rs_ctx = space.get_ctx();
1017        let mut space = space;
1018        space.do_not_free_on_drop();
1019        let space = space.ptr;
1020        let isl_rs_result = unsafe { isl_union_pw_qpolynomial_zero_space(space) };
1021        let isl_rs_result = UnionPwQPolynomial { ptr: isl_rs_result,
1022                                                 should_free_on_drop: true };
1023        let err = isl_rs_ctx.last_error();
1024        if err != Error::None_ {
1025            let err_msg = isl_rs_ctx.last_error_msg();
1026            isl_rs_ctx.reset_error();
1027            return Err(LibISLError::new(err, err_msg));
1028        }
1029        Ok(isl_rs_result)
1030    }
1031
1032    /// Does not call isl_union_pw_qpolynomial_free() on being dropped. (For
1033    /// internal use only.)
1034    pub fn do_not_free_on_drop(&mut self) {
1035        self.should_free_on_drop = false;
1036    }
1037}
1038
1039impl Drop for UnionPwQPolynomial {
1040    fn drop(&mut self) {
1041        if self.should_free_on_drop {
1042            unsafe {
1043                isl_union_pw_qpolynomial_free(self.ptr);
1044            }
1045        }
1046    }
1047}