isl_rs/bindings/
set.rs

1// Automatically generated by isl_bindings_generator.
2// LICENSE: MIT
3
4use super::{
5    Aff, BasicSet, BasicSetList, Constraint, Context, DimType, Error, FixedBox, Id, IdList,
6    LibISLError, Map, MultiAff, MultiId, MultiPwAff, MultiVal, Point, PwAff, PwMultiAff, SetList,
7    Space, StrideInfo, UnionSet, Val,
8};
9use libc::uintptr_t;
10use std::ffi::{CStr, CString};
11use std::os::raw::c_char;
12
13/// Wraps `isl_set`.
14pub struct Set {
15    pub ptr: uintptr_t,
16    pub should_free_on_drop: bool,
17}
18
19extern "C" {
20
21    fn isl_set_add_constraint(set: uintptr_t, constraint: uintptr_t) -> uintptr_t;
22
23    fn isl_set_add_dims(set: uintptr_t, type_: i32, n: u32) -> uintptr_t;
24
25    fn isl_set_affine_hull(set: uintptr_t) -> uintptr_t;
26
27    fn isl_set_align_divs(set: uintptr_t) -> uintptr_t;
28
29    fn isl_set_align_params(set: uintptr_t, model: uintptr_t) -> uintptr_t;
30
31    fn isl_set_apply(set: uintptr_t, map: uintptr_t) -> uintptr_t;
32
33    fn isl_set_as_pw_multi_aff(set: uintptr_t) -> uintptr_t;
34
35    fn isl_set_bind(set: uintptr_t, tuple: uintptr_t) -> uintptr_t;
36
37    fn isl_set_bounded_simple_hull(set: uintptr_t) -> uintptr_t;
38
39    fn isl_set_box_from_points(pnt1: uintptr_t, pnt2: uintptr_t) -> uintptr_t;
40
41    fn isl_set_coalesce(set: uintptr_t) -> uintptr_t;
42
43    fn isl_set_coefficients(set: uintptr_t) -> uintptr_t;
44
45    fn isl_set_complement(set: uintptr_t) -> uintptr_t;
46
47    fn isl_set_compute_divs(set: uintptr_t) -> uintptr_t;
48
49    fn isl_set_convex_hull(set: uintptr_t) -> uintptr_t;
50
51    fn isl_set_copy(set: uintptr_t) -> uintptr_t;
52
53    fn isl_set_count_val(set: uintptr_t) -> uintptr_t;
54
55    fn isl_set_detect_equalities(set: uintptr_t) -> uintptr_t;
56
57    fn isl_set_dim(set: uintptr_t, type_: i32) -> i32;
58
59    fn isl_set_dim_has_any_lower_bound(set: uintptr_t, type_: i32, pos: u32) -> i32;
60
61    fn isl_set_dim_has_any_upper_bound(set: uintptr_t, type_: i32, pos: u32) -> i32;
62
63    fn isl_set_dim_has_lower_bound(set: uintptr_t, type_: i32, pos: u32) -> i32;
64
65    fn isl_set_dim_has_upper_bound(set: uintptr_t, type_: i32, pos: u32) -> i32;
66
67    fn isl_set_dim_is_bounded(set: uintptr_t, type_: i32, pos: u32) -> i32;
68
69    fn isl_set_dim_max(set: uintptr_t, pos: i32) -> uintptr_t;
70
71    fn isl_set_dim_max_val(set: uintptr_t, pos: i32) -> uintptr_t;
72
73    fn isl_set_dim_min(set: uintptr_t, pos: i32) -> uintptr_t;
74
75    fn isl_set_dim_min_val(set: uintptr_t, pos: i32) -> uintptr_t;
76
77    fn isl_set_drop_constraints_involving_dims(set: uintptr_t, type_: i32, first: u32, n: u32)
78                                               -> uintptr_t;
79
80    fn isl_set_drop_constraints_not_involving_dims(set: uintptr_t, type_: i32, first: u32, n: u32)
81                                                   -> uintptr_t;
82
83    fn isl_set_drop_unused_params(set: uintptr_t) -> uintptr_t;
84
85    fn isl_set_dump(set: uintptr_t) -> ();
86
87    fn isl_set_eliminate(set: uintptr_t, type_: i32, first: u32, n: u32) -> uintptr_t;
88
89    fn isl_set_eliminate_dims(set: uintptr_t, first: u32, n: u32) -> uintptr_t;
90
91    fn isl_set_empty(space: uintptr_t) -> uintptr_t;
92
93    fn isl_set_equate(set: uintptr_t, type1: i32, pos1: i32, type2: i32, pos2: i32) -> uintptr_t;
94
95    fn isl_set_find_dim_by_id(set: uintptr_t, type_: i32, id: uintptr_t) -> i32;
96
97    fn isl_set_find_dim_by_name(set: uintptr_t, type_: i32, name: *const c_char) -> i32;
98
99    fn isl_set_fix_dim_si(set: uintptr_t, dim: u32, value: i32) -> uintptr_t;
100
101    fn isl_set_fix_si(set: uintptr_t, type_: i32, pos: u32, value: i32) -> uintptr_t;
102
103    fn isl_set_fix_val(set: uintptr_t, type_: i32, pos: u32, v: uintptr_t) -> uintptr_t;
104
105    fn isl_set_flat_product(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
106
107    fn isl_set_flatten(set: uintptr_t) -> uintptr_t;
108
109    fn isl_set_flatten_map(set: uintptr_t) -> uintptr_t;
110
111    fn isl_set_follows_at(set1: uintptr_t, set2: uintptr_t, pos: i32) -> i32;
112
113    fn isl_set_free(set: uintptr_t) -> uintptr_t;
114
115    fn isl_set_from_basic_set(bset: uintptr_t) -> uintptr_t;
116
117    fn isl_set_from_multi_aff(ma: uintptr_t) -> uintptr_t;
118
119    fn isl_set_from_multi_pw_aff(mpa: uintptr_t) -> uintptr_t;
120
121    fn isl_set_from_params(set: uintptr_t) -> uintptr_t;
122
123    fn isl_set_from_point(pnt: uintptr_t) -> uintptr_t;
124
125    fn isl_set_from_pw_aff(pwaff: uintptr_t) -> uintptr_t;
126
127    fn isl_set_from_pw_multi_aff(pma: uintptr_t) -> uintptr_t;
128
129    fn isl_set_from_union_set(uset: uintptr_t) -> uintptr_t;
130
131    fn isl_set_get_basic_set_list(set: uintptr_t) -> uintptr_t;
132
133    fn isl_set_get_ctx(set: uintptr_t) -> uintptr_t;
134
135    fn isl_set_get_dim_id(set: uintptr_t, type_: i32, pos: u32) -> uintptr_t;
136
137    fn isl_set_get_dim_name(set: uintptr_t, type_: i32, pos: u32) -> *const c_char;
138
139    fn isl_set_get_hash(set: uintptr_t) -> u32;
140
141    fn isl_set_get_lattice_tile(set: uintptr_t) -> uintptr_t;
142
143    fn isl_set_get_plain_multi_val_if_fixed(set: uintptr_t) -> uintptr_t;
144
145    fn isl_set_get_simple_fixed_box_hull(set: uintptr_t) -> uintptr_t;
146
147    fn isl_set_get_space(set: uintptr_t) -> uintptr_t;
148
149    fn isl_set_get_stride(set: uintptr_t, pos: i32) -> uintptr_t;
150
151    fn isl_set_get_stride_info(set: uintptr_t, pos: i32) -> uintptr_t;
152
153    fn isl_set_get_tuple_id(set: uintptr_t) -> uintptr_t;
154
155    fn isl_set_get_tuple_name(set: uintptr_t) -> *const c_char;
156
157    fn isl_set_gist(set: uintptr_t, context: uintptr_t) -> uintptr_t;
158
159    fn isl_set_gist_basic_set(set: uintptr_t, context: uintptr_t) -> uintptr_t;
160
161    fn isl_set_gist_params(set: uintptr_t, context: uintptr_t) -> uintptr_t;
162
163    fn isl_set_has_dim_id(set: uintptr_t, type_: i32, pos: u32) -> i32;
164
165    fn isl_set_has_dim_name(set: uintptr_t, type_: i32, pos: u32) -> i32;
166
167    fn isl_set_has_equal_space(set1: uintptr_t, set2: uintptr_t) -> i32;
168
169    fn isl_set_has_tuple_id(set: uintptr_t) -> i32;
170
171    fn isl_set_has_tuple_name(set: uintptr_t) -> i32;
172
173    fn isl_set_identity(set: uintptr_t) -> uintptr_t;
174
175    fn isl_set_indicator_function(set: uintptr_t) -> uintptr_t;
176
177    fn isl_set_insert_dims(set: uintptr_t, type_: i32, pos: u32, n: u32) -> uintptr_t;
178
179    fn isl_set_insert_domain(set: uintptr_t, domain: uintptr_t) -> uintptr_t;
180
181    fn isl_set_intersect(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
182
183    fn isl_set_intersect_factor_domain(set: uintptr_t, domain: uintptr_t) -> uintptr_t;
184
185    fn isl_set_intersect_factor_range(set: uintptr_t, range: uintptr_t) -> uintptr_t;
186
187    fn isl_set_intersect_params(set: uintptr_t, params: uintptr_t) -> uintptr_t;
188
189    fn isl_set_involves_dims(set: uintptr_t, type_: i32, first: u32, n: u32) -> i32;
190
191    fn isl_set_involves_locals(set: uintptr_t) -> i32;
192
193    fn isl_set_is_bounded(set: uintptr_t) -> i32;
194
195    fn isl_set_is_box(set: uintptr_t) -> i32;
196
197    fn isl_set_is_disjoint(set1: uintptr_t, set2: uintptr_t) -> i32;
198
199    fn isl_set_is_empty(set: uintptr_t) -> i32;
200
201    fn isl_set_is_equal(set1: uintptr_t, set2: uintptr_t) -> i32;
202
203    fn isl_set_is_params(set: uintptr_t) -> i32;
204
205    fn isl_set_is_singleton(set: uintptr_t) -> i32;
206
207    fn isl_set_is_strict_subset(set1: uintptr_t, set2: uintptr_t) -> i32;
208
209    fn isl_set_is_subset(set1: uintptr_t, set2: uintptr_t) -> i32;
210
211    fn isl_set_is_wrapping(set: uintptr_t) -> i32;
212
213    fn isl_set_lex_ge_set(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
214
215    fn isl_set_lex_gt_set(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
216
217    fn isl_set_lex_le_set(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
218
219    fn isl_set_lex_lt_set(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
220
221    fn isl_set_lexmax(set: uintptr_t) -> uintptr_t;
222
223    fn isl_set_lexmax_pw_multi_aff(set: uintptr_t) -> uintptr_t;
224
225    fn isl_set_lexmin(set: uintptr_t) -> uintptr_t;
226
227    fn isl_set_lexmin_pw_multi_aff(set: uintptr_t) -> uintptr_t;
228
229    fn isl_set_lift(set: uintptr_t) -> uintptr_t;
230
231    fn isl_set_lower_bound_multi_pw_aff(set: uintptr_t, lower: uintptr_t) -> uintptr_t;
232
233    fn isl_set_lower_bound_multi_val(set: uintptr_t, lower: uintptr_t) -> uintptr_t;
234
235    fn isl_set_lower_bound_si(set: uintptr_t, type_: i32, pos: u32, value: i32) -> uintptr_t;
236
237    fn isl_set_lower_bound_val(set: uintptr_t, type_: i32, pos: u32, value: uintptr_t)
238                               -> uintptr_t;
239
240    fn isl_set_make_disjoint(set: uintptr_t) -> uintptr_t;
241
242    fn isl_set_max_multi_pw_aff(set: uintptr_t) -> uintptr_t;
243
244    fn isl_set_max_val(set: uintptr_t, obj: uintptr_t) -> uintptr_t;
245
246    fn isl_set_min_multi_pw_aff(set: uintptr_t) -> uintptr_t;
247
248    fn isl_set_min_val(set: uintptr_t, obj: uintptr_t) -> uintptr_t;
249
250    fn isl_set_move_dims(set: uintptr_t, dst_type: i32, dst_pos: u32, src_type: i32, src_pos: u32,
251                         n: u32)
252                         -> uintptr_t;
253
254    fn isl_set_n_basic_set(set: uintptr_t) -> i32;
255
256    fn isl_set_n_dim(set: uintptr_t) -> i32;
257
258    fn isl_set_n_param(set: uintptr_t) -> i32;
259
260    fn isl_set_nat_universe(space: uintptr_t) -> uintptr_t;
261
262    fn isl_set_neg(set: uintptr_t) -> uintptr_t;
263
264    fn isl_set_param_pw_aff_on_domain_id(domain: uintptr_t, id: uintptr_t) -> uintptr_t;
265
266    fn isl_set_params(set: uintptr_t) -> uintptr_t;
267
268    fn isl_set_plain_cmp(set1: uintptr_t, set2: uintptr_t) -> i32;
269
270    fn isl_set_plain_get_val_if_fixed(set: uintptr_t, type_: i32, pos: u32) -> uintptr_t;
271
272    fn isl_set_plain_is_disjoint(set1: uintptr_t, set2: uintptr_t) -> i32;
273
274    fn isl_set_plain_is_empty(set: uintptr_t) -> i32;
275
276    fn isl_set_plain_is_equal(set1: uintptr_t, set2: uintptr_t) -> i32;
277
278    fn isl_set_plain_is_universe(set: uintptr_t) -> i32;
279
280    fn isl_set_plain_unshifted_simple_hull(set: uintptr_t) -> uintptr_t;
281
282    fn isl_set_polyhedral_hull(set: uintptr_t) -> uintptr_t;
283
284    fn isl_set_preimage_multi_aff(set: uintptr_t, ma: uintptr_t) -> uintptr_t;
285
286    fn isl_set_preimage_multi_pw_aff(set: uintptr_t, mpa: uintptr_t) -> uintptr_t;
287
288    fn isl_set_preimage_pw_multi_aff(set: uintptr_t, pma: uintptr_t) -> uintptr_t;
289
290    fn isl_set_product(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
291
292    fn isl_set_project_onto_map(set: uintptr_t, type_: i32, first: u32, n: u32) -> uintptr_t;
293
294    fn isl_set_project_out(set: uintptr_t, type_: i32, first: u32, n: u32) -> uintptr_t;
295
296    fn isl_set_project_out_all_params(set: uintptr_t) -> uintptr_t;
297
298    fn isl_set_project_out_param_id(set: uintptr_t, id: uintptr_t) -> uintptr_t;
299
300    fn isl_set_project_out_param_id_list(set: uintptr_t, list: uintptr_t) -> uintptr_t;
301
302    fn isl_set_pw_aff_on_domain_val(domain: uintptr_t, v: uintptr_t) -> uintptr_t;
303
304    fn isl_set_pw_multi_aff_on_domain_multi_val(domain: uintptr_t, mv: uintptr_t) -> uintptr_t;
305
306    fn isl_set_read_from_str(ctx: uintptr_t, str_: *const c_char) -> uintptr_t;
307
308    fn isl_set_remove_dims(bset: uintptr_t, type_: i32, first: u32, n: u32) -> uintptr_t;
309
310    fn isl_set_remove_divs(set: uintptr_t) -> uintptr_t;
311
312    fn isl_set_remove_divs_involving_dims(set: uintptr_t, type_: i32, first: u32, n: u32)
313                                          -> uintptr_t;
314
315    fn isl_set_remove_redundancies(set: uintptr_t) -> uintptr_t;
316
317    fn isl_set_remove_unknown_divs(set: uintptr_t) -> uintptr_t;
318
319    fn isl_set_reset_space(set: uintptr_t, space: uintptr_t) -> uintptr_t;
320
321    fn isl_set_reset_tuple_id(set: uintptr_t) -> uintptr_t;
322
323    fn isl_set_reset_user(set: uintptr_t) -> uintptr_t;
324
325    fn isl_set_sample(set: uintptr_t) -> uintptr_t;
326
327    fn isl_set_sample_point(set: uintptr_t) -> uintptr_t;
328
329    fn isl_set_set_dim_id(set: uintptr_t, type_: i32, pos: u32, id: uintptr_t) -> uintptr_t;
330
331    fn isl_set_set_dim_name(set: uintptr_t, type_: i32, pos: u32, s: *const c_char) -> uintptr_t;
332
333    fn isl_set_set_tuple_id(set: uintptr_t, id: uintptr_t) -> uintptr_t;
334
335    fn isl_set_set_tuple_name(set: uintptr_t, s: *const c_char) -> uintptr_t;
336
337    fn isl_set_simple_hull(set: uintptr_t) -> uintptr_t;
338
339    fn isl_set_size(set: uintptr_t) -> i32;
340
341    fn isl_set_solutions(set: uintptr_t) -> uintptr_t;
342
343    fn isl_set_split_dims(set: uintptr_t, type_: i32, first: u32, n: u32) -> uintptr_t;
344
345    fn isl_set_subtract(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
346
347    fn isl_set_sum(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
348
349    fn isl_set_to_list(el: uintptr_t) -> uintptr_t;
350
351    fn isl_set_to_str(set: uintptr_t) -> *const c_char;
352
353    fn isl_set_to_union_set(set: uintptr_t) -> uintptr_t;
354
355    fn isl_set_translation(deltas: uintptr_t) -> uintptr_t;
356
357    fn isl_set_tuple_dim(set: uintptr_t) -> i32;
358
359    fn isl_set_unbind_params(set: uintptr_t, tuple: uintptr_t) -> uintptr_t;
360
361    fn isl_set_unbind_params_insert_domain(set: uintptr_t, domain: uintptr_t) -> uintptr_t;
362
363    fn isl_set_union(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
364
365    fn isl_set_union_disjoint(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
366
367    fn isl_set_universe(space: uintptr_t) -> uintptr_t;
368
369    fn isl_set_unshifted_simple_hull(set: uintptr_t) -> uintptr_t;
370
371    fn isl_set_unshifted_simple_hull_from_set_list(set: uintptr_t, list: uintptr_t) -> uintptr_t;
372
373    fn isl_set_unwrap(set: uintptr_t) -> uintptr_t;
374
375    fn isl_set_upper_bound_multi_pw_aff(set: uintptr_t, upper: uintptr_t) -> uintptr_t;
376
377    fn isl_set_upper_bound_multi_val(set: uintptr_t, upper: uintptr_t) -> uintptr_t;
378
379    fn isl_set_upper_bound_si(set: uintptr_t, type_: i32, pos: u32, value: i32) -> uintptr_t;
380
381    fn isl_set_upper_bound_val(set: uintptr_t, type_: i32, pos: u32, value: uintptr_t)
382                               -> uintptr_t;
383
384    fn isl_set_wrapped_domain_map(set: uintptr_t) -> uintptr_t;
385
386    fn isl_set_wrapped_reverse(set: uintptr_t) -> uintptr_t;
387
388}
389
390impl Set {
391    /// Wraps `isl_set_add_constraint`.
392    pub fn add_constraint(self, constraint: Constraint) -> Result<Set, LibISLError> {
393        let set = self;
394        let isl_rs_ctx = set.get_ctx();
395        let mut set = set;
396        set.do_not_free_on_drop();
397        let set = set.ptr;
398        let mut constraint = constraint;
399        constraint.do_not_free_on_drop();
400        let constraint = constraint.ptr;
401        let isl_rs_result = unsafe { isl_set_add_constraint(set, constraint) };
402        let isl_rs_result = Set { ptr: isl_rs_result,
403                                  should_free_on_drop: true };
404        let err = isl_rs_ctx.last_error();
405        if err != Error::None_ {
406            let err_msg = isl_rs_ctx.last_error_msg();
407            isl_rs_ctx.reset_error();
408            return Err(LibISLError::new(err, err_msg));
409        }
410        Ok(isl_rs_result)
411    }
412
413    /// Wraps `isl_set_add_dims`.
414    pub fn add_dims(self, type_: DimType, n: u32) -> Result<Set, LibISLError> {
415        let set = self;
416        let isl_rs_ctx = set.get_ctx();
417        let mut set = set;
418        set.do_not_free_on_drop();
419        let set = set.ptr;
420        let type_ = type_.to_i32();
421        let isl_rs_result = unsafe { isl_set_add_dims(set, type_, n) };
422        let isl_rs_result = Set { ptr: isl_rs_result,
423                                  should_free_on_drop: true };
424        let err = isl_rs_ctx.last_error();
425        if err != Error::None_ {
426            let err_msg = isl_rs_ctx.last_error_msg();
427            isl_rs_ctx.reset_error();
428            return Err(LibISLError::new(err, err_msg));
429        }
430        Ok(isl_rs_result)
431    }
432
433    /// Wraps `isl_set_affine_hull`.
434    pub fn affine_hull(self) -> Result<BasicSet, LibISLError> {
435        let set = self;
436        let isl_rs_ctx = set.get_ctx();
437        let mut set = set;
438        set.do_not_free_on_drop();
439        let set = set.ptr;
440        let isl_rs_result = unsafe { isl_set_affine_hull(set) };
441        let isl_rs_result = BasicSet { ptr: isl_rs_result,
442                                       should_free_on_drop: true };
443        let err = isl_rs_ctx.last_error();
444        if err != Error::None_ {
445            let err_msg = isl_rs_ctx.last_error_msg();
446            isl_rs_ctx.reset_error();
447            return Err(LibISLError::new(err, err_msg));
448        }
449        Ok(isl_rs_result)
450    }
451
452    /// Wraps `isl_set_align_divs`.
453    pub fn align_divs(self) -> Result<Set, LibISLError> {
454        let set = self;
455        let isl_rs_ctx = set.get_ctx();
456        let mut set = set;
457        set.do_not_free_on_drop();
458        let set = set.ptr;
459        let isl_rs_result = unsafe { isl_set_align_divs(set) };
460        let isl_rs_result = Set { ptr: isl_rs_result,
461                                  should_free_on_drop: true };
462        let err = isl_rs_ctx.last_error();
463        if err != Error::None_ {
464            let err_msg = isl_rs_ctx.last_error_msg();
465            isl_rs_ctx.reset_error();
466            return Err(LibISLError::new(err, err_msg));
467        }
468        Ok(isl_rs_result)
469    }
470
471    /// Wraps `isl_set_align_params`.
472    pub fn align_params(self, model: Space) -> Result<Set, LibISLError> {
473        let set = self;
474        let isl_rs_ctx = set.get_ctx();
475        let mut set = set;
476        set.do_not_free_on_drop();
477        let set = set.ptr;
478        let mut model = model;
479        model.do_not_free_on_drop();
480        let model = model.ptr;
481        let isl_rs_result = unsafe { isl_set_align_params(set, model) };
482        let isl_rs_result = Set { ptr: isl_rs_result,
483                                  should_free_on_drop: true };
484        let err = isl_rs_ctx.last_error();
485        if err != Error::None_ {
486            let err_msg = isl_rs_ctx.last_error_msg();
487            isl_rs_ctx.reset_error();
488            return Err(LibISLError::new(err, err_msg));
489        }
490        Ok(isl_rs_result)
491    }
492
493    /// Wraps `isl_set_apply`.
494    pub fn apply(self, map: Map) -> Result<Set, LibISLError> {
495        let set = self;
496        let isl_rs_ctx = set.get_ctx();
497        let mut set = set;
498        set.do_not_free_on_drop();
499        let set = set.ptr;
500        let mut map = map;
501        map.do_not_free_on_drop();
502        let map = map.ptr;
503        let isl_rs_result = unsafe { isl_set_apply(set, map) };
504        let isl_rs_result = Set { ptr: isl_rs_result,
505                                  should_free_on_drop: true };
506        let err = isl_rs_ctx.last_error();
507        if err != Error::None_ {
508            let err_msg = isl_rs_ctx.last_error_msg();
509            isl_rs_ctx.reset_error();
510            return Err(LibISLError::new(err, err_msg));
511        }
512        Ok(isl_rs_result)
513    }
514
515    /// Wraps `isl_set_as_pw_multi_aff`.
516    pub fn as_pw_multi_aff(self) -> Result<PwMultiAff, LibISLError> {
517        let set = self;
518        let isl_rs_ctx = set.get_ctx();
519        let mut set = set;
520        set.do_not_free_on_drop();
521        let set = set.ptr;
522        let isl_rs_result = unsafe { isl_set_as_pw_multi_aff(set) };
523        let isl_rs_result = PwMultiAff { ptr: isl_rs_result,
524                                         should_free_on_drop: true };
525        let err = isl_rs_ctx.last_error();
526        if err != Error::None_ {
527            let err_msg = isl_rs_ctx.last_error_msg();
528            isl_rs_ctx.reset_error();
529            return Err(LibISLError::new(err, err_msg));
530        }
531        Ok(isl_rs_result)
532    }
533
534    /// Wraps `isl_set_bind`.
535    pub fn bind(self, tuple: MultiId) -> Result<Set, LibISLError> {
536        let set = self;
537        let isl_rs_ctx = set.get_ctx();
538        let mut set = set;
539        set.do_not_free_on_drop();
540        let set = set.ptr;
541        let mut tuple = tuple;
542        tuple.do_not_free_on_drop();
543        let tuple = tuple.ptr;
544        let isl_rs_result = unsafe { isl_set_bind(set, tuple) };
545        let isl_rs_result = Set { ptr: isl_rs_result,
546                                  should_free_on_drop: true };
547        let err = isl_rs_ctx.last_error();
548        if err != Error::None_ {
549            let err_msg = isl_rs_ctx.last_error_msg();
550            isl_rs_ctx.reset_error();
551            return Err(LibISLError::new(err, err_msg));
552        }
553        Ok(isl_rs_result)
554    }
555
556    /// Wraps `isl_set_bounded_simple_hull`.
557    pub fn bounded_simple_hull(self) -> Result<BasicSet, LibISLError> {
558        let set = self;
559        let isl_rs_ctx = set.get_ctx();
560        let mut set = set;
561        set.do_not_free_on_drop();
562        let set = set.ptr;
563        let isl_rs_result = unsafe { isl_set_bounded_simple_hull(set) };
564        let isl_rs_result = BasicSet { ptr: isl_rs_result,
565                                       should_free_on_drop: true };
566        let err = isl_rs_ctx.last_error();
567        if err != Error::None_ {
568            let err_msg = isl_rs_ctx.last_error_msg();
569            isl_rs_ctx.reset_error();
570            return Err(LibISLError::new(err, err_msg));
571        }
572        Ok(isl_rs_result)
573    }
574
575    /// Wraps `isl_set_box_from_points`.
576    pub fn box_from_points(pnt1: Point, pnt2: Point) -> Result<Set, LibISLError> {
577        let isl_rs_ctx = pnt1.get_ctx();
578        let mut pnt1 = pnt1;
579        pnt1.do_not_free_on_drop();
580        let pnt1 = pnt1.ptr;
581        let mut pnt2 = pnt2;
582        pnt2.do_not_free_on_drop();
583        let pnt2 = pnt2.ptr;
584        let isl_rs_result = unsafe { isl_set_box_from_points(pnt1, pnt2) };
585        let isl_rs_result = Set { ptr: isl_rs_result,
586                                  should_free_on_drop: true };
587        let err = isl_rs_ctx.last_error();
588        if err != Error::None_ {
589            let err_msg = isl_rs_ctx.last_error_msg();
590            isl_rs_ctx.reset_error();
591            return Err(LibISLError::new(err, err_msg));
592        }
593        Ok(isl_rs_result)
594    }
595
596    /// Wraps `isl_set_coalesce`.
597    pub fn coalesce(self) -> Result<Set, LibISLError> {
598        let set = self;
599        let isl_rs_ctx = set.get_ctx();
600        let mut set = set;
601        set.do_not_free_on_drop();
602        let set = set.ptr;
603        let isl_rs_result = unsafe { isl_set_coalesce(set) };
604        let isl_rs_result = Set { ptr: isl_rs_result,
605                                  should_free_on_drop: true };
606        let err = isl_rs_ctx.last_error();
607        if err != Error::None_ {
608            let err_msg = isl_rs_ctx.last_error_msg();
609            isl_rs_ctx.reset_error();
610            return Err(LibISLError::new(err, err_msg));
611        }
612        Ok(isl_rs_result)
613    }
614
615    /// Wraps `isl_set_coefficients`.
616    pub fn coefficients(self) -> Result<BasicSet, LibISLError> {
617        let set = self;
618        let isl_rs_ctx = set.get_ctx();
619        let mut set = set;
620        set.do_not_free_on_drop();
621        let set = set.ptr;
622        let isl_rs_result = unsafe { isl_set_coefficients(set) };
623        let isl_rs_result = BasicSet { ptr: isl_rs_result,
624                                       should_free_on_drop: true };
625        let err = isl_rs_ctx.last_error();
626        if err != Error::None_ {
627            let err_msg = isl_rs_ctx.last_error_msg();
628            isl_rs_ctx.reset_error();
629            return Err(LibISLError::new(err, err_msg));
630        }
631        Ok(isl_rs_result)
632    }
633
634    /// Wraps `isl_set_complement`.
635    pub fn complement(self) -> Result<Set, LibISLError> {
636        let set = self;
637        let isl_rs_ctx = set.get_ctx();
638        let mut set = set;
639        set.do_not_free_on_drop();
640        let set = set.ptr;
641        let isl_rs_result = unsafe { isl_set_complement(set) };
642        let isl_rs_result = Set { ptr: isl_rs_result,
643                                  should_free_on_drop: true };
644        let err = isl_rs_ctx.last_error();
645        if err != Error::None_ {
646            let err_msg = isl_rs_ctx.last_error_msg();
647            isl_rs_ctx.reset_error();
648            return Err(LibISLError::new(err, err_msg));
649        }
650        Ok(isl_rs_result)
651    }
652
653    /// Wraps `isl_set_compute_divs`.
654    pub fn compute_divs(self) -> Result<Set, LibISLError> {
655        let set = self;
656        let isl_rs_ctx = set.get_ctx();
657        let mut set = set;
658        set.do_not_free_on_drop();
659        let set = set.ptr;
660        let isl_rs_result = unsafe { isl_set_compute_divs(set) };
661        let isl_rs_result = Set { ptr: isl_rs_result,
662                                  should_free_on_drop: true };
663        let err = isl_rs_ctx.last_error();
664        if err != Error::None_ {
665            let err_msg = isl_rs_ctx.last_error_msg();
666            isl_rs_ctx.reset_error();
667            return Err(LibISLError::new(err, err_msg));
668        }
669        Ok(isl_rs_result)
670    }
671
672    /// Wraps `isl_set_convex_hull`.
673    pub fn convex_hull(self) -> Result<BasicSet, LibISLError> {
674        let set = self;
675        let isl_rs_ctx = set.get_ctx();
676        let mut set = set;
677        set.do_not_free_on_drop();
678        let set = set.ptr;
679        let isl_rs_result = unsafe { isl_set_convex_hull(set) };
680        let isl_rs_result = BasicSet { 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_set_copy`.
692    pub fn copy(&self) -> Result<Set, LibISLError> {
693        let set = self;
694        let isl_rs_ctx = set.get_ctx();
695        let set = set.ptr;
696        let isl_rs_result = unsafe { isl_set_copy(set) };
697        let isl_rs_result = Set { ptr: isl_rs_result,
698                                  should_free_on_drop: true };
699        let err = isl_rs_ctx.last_error();
700        if err != Error::None_ {
701            let err_msg = isl_rs_ctx.last_error_msg();
702            isl_rs_ctx.reset_error();
703            return Err(LibISLError::new(err, err_msg));
704        }
705        Ok(isl_rs_result)
706    }
707
708    /// Wraps `isl_set_count_val`.
709    pub fn count_val(&self) -> Result<Val, LibISLError> {
710        let set = self;
711        let isl_rs_ctx = set.get_ctx();
712        let set = set.ptr;
713        let isl_rs_result = unsafe { isl_set_count_val(set) };
714        let isl_rs_result = Val { 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_set_detect_equalities`.
726    pub fn detect_equalities(self) -> Result<Set, LibISLError> {
727        let set = self;
728        let isl_rs_ctx = set.get_ctx();
729        let mut set = set;
730        set.do_not_free_on_drop();
731        let set = set.ptr;
732        let isl_rs_result = unsafe { isl_set_detect_equalities(set) };
733        let isl_rs_result = Set { ptr: isl_rs_result,
734                                  should_free_on_drop: true };
735        let err = isl_rs_ctx.last_error();
736        if err != Error::None_ {
737            let err_msg = isl_rs_ctx.last_error_msg();
738            isl_rs_ctx.reset_error();
739            return Err(LibISLError::new(err, err_msg));
740        }
741        Ok(isl_rs_result)
742    }
743
744    /// Wraps `isl_set_dim`.
745    pub fn dim(&self, type_: DimType) -> Result<i32, LibISLError> {
746        let set = self;
747        let isl_rs_ctx = set.get_ctx();
748        let set = set.ptr;
749        let type_ = type_.to_i32();
750        let isl_rs_result = unsafe { isl_set_dim(set, type_) };
751        let err = isl_rs_ctx.last_error();
752        if err != Error::None_ {
753            let err_msg = isl_rs_ctx.last_error_msg();
754            isl_rs_ctx.reset_error();
755            return Err(LibISLError::new(err, err_msg));
756        }
757        Ok(isl_rs_result)
758    }
759
760    /// Wraps `isl_set_dim_has_any_lower_bound`.
761    pub fn dim_has_any_lower_bound(&self, type_: DimType, pos: u32) -> Result<bool, LibISLError> {
762        let set = self;
763        let isl_rs_ctx = set.get_ctx();
764        let set = set.ptr;
765        let type_ = type_.to_i32();
766        let isl_rs_result = unsafe { isl_set_dim_has_any_lower_bound(set, type_, pos) };
767        let isl_rs_result = match isl_rs_result {
768            0 => false,
769            1 => true,
770            _ => {
771                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
772            }
773        };
774        let err = isl_rs_ctx.last_error();
775        if err != Error::None_ {
776            let err_msg = isl_rs_ctx.last_error_msg();
777            isl_rs_ctx.reset_error();
778            return Err(LibISLError::new(err, err_msg));
779        }
780        Ok(isl_rs_result)
781    }
782
783    /// Wraps `isl_set_dim_has_any_upper_bound`.
784    pub fn dim_has_any_upper_bound(&self, type_: DimType, pos: u32) -> Result<bool, LibISLError> {
785        let set = self;
786        let isl_rs_ctx = set.get_ctx();
787        let set = set.ptr;
788        let type_ = type_.to_i32();
789        let isl_rs_result = unsafe { isl_set_dim_has_any_upper_bound(set, type_, pos) };
790        let isl_rs_result = match isl_rs_result {
791            0 => false,
792            1 => true,
793            _ => {
794                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
795            }
796        };
797        let err = isl_rs_ctx.last_error();
798        if err != Error::None_ {
799            let err_msg = isl_rs_ctx.last_error_msg();
800            isl_rs_ctx.reset_error();
801            return Err(LibISLError::new(err, err_msg));
802        }
803        Ok(isl_rs_result)
804    }
805
806    /// Wraps `isl_set_dim_has_lower_bound`.
807    pub fn dim_has_lower_bound(&self, type_: DimType, pos: u32) -> Result<bool, LibISLError> {
808        let set = self;
809        let isl_rs_ctx = set.get_ctx();
810        let set = set.ptr;
811        let type_ = type_.to_i32();
812        let isl_rs_result = unsafe { isl_set_dim_has_lower_bound(set, type_, pos) };
813        let isl_rs_result = match isl_rs_result {
814            0 => false,
815            1 => true,
816            _ => {
817                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
818            }
819        };
820        let err = isl_rs_ctx.last_error();
821        if err != Error::None_ {
822            let err_msg = isl_rs_ctx.last_error_msg();
823            isl_rs_ctx.reset_error();
824            return Err(LibISLError::new(err, err_msg));
825        }
826        Ok(isl_rs_result)
827    }
828
829    /// Wraps `isl_set_dim_has_upper_bound`.
830    pub fn dim_has_upper_bound(&self, type_: DimType, pos: u32) -> Result<bool, LibISLError> {
831        let set = self;
832        let isl_rs_ctx = set.get_ctx();
833        let set = set.ptr;
834        let type_ = type_.to_i32();
835        let isl_rs_result = unsafe { isl_set_dim_has_upper_bound(set, type_, pos) };
836        let isl_rs_result = match isl_rs_result {
837            0 => false,
838            1 => true,
839            _ => {
840                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
841            }
842        };
843        let err = isl_rs_ctx.last_error();
844        if err != Error::None_ {
845            let err_msg = isl_rs_ctx.last_error_msg();
846            isl_rs_ctx.reset_error();
847            return Err(LibISLError::new(err, err_msg));
848        }
849        Ok(isl_rs_result)
850    }
851
852    /// Wraps `isl_set_dim_is_bounded`.
853    pub fn dim_is_bounded(&self, type_: DimType, pos: u32) -> Result<bool, LibISLError> {
854        let set = self;
855        let isl_rs_ctx = set.get_ctx();
856        let set = set.ptr;
857        let type_ = type_.to_i32();
858        let isl_rs_result = unsafe { isl_set_dim_is_bounded(set, type_, pos) };
859        let isl_rs_result = match isl_rs_result {
860            0 => false,
861            1 => true,
862            _ => {
863                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
864            }
865        };
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_set_dim_max`.
876    pub fn dim_max(self, pos: i32) -> Result<PwAff, LibISLError> {
877        let set = self;
878        let isl_rs_ctx = set.get_ctx();
879        let mut set = set;
880        set.do_not_free_on_drop();
881        let set = set.ptr;
882        let isl_rs_result = unsafe { isl_set_dim_max(set, pos) };
883        let isl_rs_result = PwAff { ptr: isl_rs_result,
884                                    should_free_on_drop: true };
885        let err = isl_rs_ctx.last_error();
886        if err != Error::None_ {
887            let err_msg = isl_rs_ctx.last_error_msg();
888            isl_rs_ctx.reset_error();
889            return Err(LibISLError::new(err, err_msg));
890        }
891        Ok(isl_rs_result)
892    }
893
894    /// Wraps `isl_set_dim_max_val`.
895    pub fn dim_max_val(self, pos: i32) -> Result<Val, LibISLError> {
896        let set = self;
897        let isl_rs_ctx = set.get_ctx();
898        let mut set = set;
899        set.do_not_free_on_drop();
900        let set = set.ptr;
901        let isl_rs_result = unsafe { isl_set_dim_max_val(set, pos) };
902        let isl_rs_result = Val { ptr: isl_rs_result,
903                                  should_free_on_drop: true };
904        let err = isl_rs_ctx.last_error();
905        if err != Error::None_ {
906            let err_msg = isl_rs_ctx.last_error_msg();
907            isl_rs_ctx.reset_error();
908            return Err(LibISLError::new(err, err_msg));
909        }
910        Ok(isl_rs_result)
911    }
912
913    /// Wraps `isl_set_dim_min`.
914    pub fn dim_min(self, pos: i32) -> Result<PwAff, LibISLError> {
915        let set = self;
916        let isl_rs_ctx = set.get_ctx();
917        let mut set = set;
918        set.do_not_free_on_drop();
919        let set = set.ptr;
920        let isl_rs_result = unsafe { isl_set_dim_min(set, pos) };
921        let isl_rs_result = PwAff { ptr: isl_rs_result,
922                                    should_free_on_drop: true };
923        let err = isl_rs_ctx.last_error();
924        if err != Error::None_ {
925            let err_msg = isl_rs_ctx.last_error_msg();
926            isl_rs_ctx.reset_error();
927            return Err(LibISLError::new(err, err_msg));
928        }
929        Ok(isl_rs_result)
930    }
931
932    /// Wraps `isl_set_dim_min_val`.
933    pub fn dim_min_val(self, pos: i32) -> Result<Val, LibISLError> {
934        let set = self;
935        let isl_rs_ctx = set.get_ctx();
936        let mut set = set;
937        set.do_not_free_on_drop();
938        let set = set.ptr;
939        let isl_rs_result = unsafe { isl_set_dim_min_val(set, pos) };
940        let isl_rs_result = Val { ptr: isl_rs_result,
941                                  should_free_on_drop: true };
942        let err = isl_rs_ctx.last_error();
943        if err != Error::None_ {
944            let err_msg = isl_rs_ctx.last_error_msg();
945            isl_rs_ctx.reset_error();
946            return Err(LibISLError::new(err, err_msg));
947        }
948        Ok(isl_rs_result)
949    }
950
951    /// Wraps `isl_set_drop_constraints_involving_dims`.
952    pub fn drop_constraints_involving_dims(self, type_: DimType, first: u32, n: u32)
953                                           -> Result<Set, LibISLError> {
954        let set = self;
955        let isl_rs_ctx = set.get_ctx();
956        let mut set = set;
957        set.do_not_free_on_drop();
958        let set = set.ptr;
959        let type_ = type_.to_i32();
960        let isl_rs_result =
961            unsafe { isl_set_drop_constraints_involving_dims(set, type_, first, n) };
962        let isl_rs_result = Set { ptr: isl_rs_result,
963                                  should_free_on_drop: true };
964        let err = isl_rs_ctx.last_error();
965        if err != Error::None_ {
966            let err_msg = isl_rs_ctx.last_error_msg();
967            isl_rs_ctx.reset_error();
968            return Err(LibISLError::new(err, err_msg));
969        }
970        Ok(isl_rs_result)
971    }
972
973    /// Wraps `isl_set_drop_constraints_not_involving_dims`.
974    pub fn drop_constraints_not_involving_dims(self, type_: DimType, first: u32, n: u32)
975                                               -> Result<Set, LibISLError> {
976        let set = self;
977        let isl_rs_ctx = set.get_ctx();
978        let mut set = set;
979        set.do_not_free_on_drop();
980        let set = set.ptr;
981        let type_ = type_.to_i32();
982        let isl_rs_result =
983            unsafe { isl_set_drop_constraints_not_involving_dims(set, type_, first, n) };
984        let isl_rs_result = Set { ptr: isl_rs_result,
985                                  should_free_on_drop: true };
986        let err = isl_rs_ctx.last_error();
987        if err != Error::None_ {
988            let err_msg = isl_rs_ctx.last_error_msg();
989            isl_rs_ctx.reset_error();
990            return Err(LibISLError::new(err, err_msg));
991        }
992        Ok(isl_rs_result)
993    }
994
995    /// Wraps `isl_set_drop_unused_params`.
996    pub fn drop_unused_params(self) -> Result<Set, LibISLError> {
997        let set = self;
998        let isl_rs_ctx = set.get_ctx();
999        let mut set = set;
1000        set.do_not_free_on_drop();
1001        let set = set.ptr;
1002        let isl_rs_result = unsafe { isl_set_drop_unused_params(set) };
1003        let isl_rs_result = Set { 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_set_dump`.
1015    pub fn dump(&self) -> Result<(), LibISLError> {
1016        let set = self;
1017        let isl_rs_ctx = set.get_ctx();
1018        let set = set.ptr;
1019        let isl_rs_result = unsafe { isl_set_dump(set) };
1020        let err = isl_rs_ctx.last_error();
1021        if err != Error::None_ {
1022            let err_msg = isl_rs_ctx.last_error_msg();
1023            isl_rs_ctx.reset_error();
1024            return Err(LibISLError::new(err, err_msg));
1025        }
1026        Ok(isl_rs_result)
1027    }
1028
1029    /// Wraps `isl_set_eliminate`.
1030    pub fn eliminate(self, type_: DimType, first: u32, n: u32) -> Result<Set, LibISLError> {
1031        let set = self;
1032        let isl_rs_ctx = set.get_ctx();
1033        let mut set = set;
1034        set.do_not_free_on_drop();
1035        let set = set.ptr;
1036        let type_ = type_.to_i32();
1037        let isl_rs_result = unsafe { isl_set_eliminate(set, type_, first, n) };
1038        let isl_rs_result = Set { ptr: isl_rs_result,
1039                                  should_free_on_drop: true };
1040        let err = isl_rs_ctx.last_error();
1041        if err != Error::None_ {
1042            let err_msg = isl_rs_ctx.last_error_msg();
1043            isl_rs_ctx.reset_error();
1044            return Err(LibISLError::new(err, err_msg));
1045        }
1046        Ok(isl_rs_result)
1047    }
1048
1049    /// Wraps `isl_set_eliminate_dims`.
1050    pub fn eliminate_dims(self, first: u32, n: u32) -> Result<Set, LibISLError> {
1051        let set = self;
1052        let isl_rs_ctx = set.get_ctx();
1053        let mut set = set;
1054        set.do_not_free_on_drop();
1055        let set = set.ptr;
1056        let isl_rs_result = unsafe { isl_set_eliminate_dims(set, first, n) };
1057        let isl_rs_result = Set { ptr: isl_rs_result,
1058                                  should_free_on_drop: true };
1059        let err = isl_rs_ctx.last_error();
1060        if err != Error::None_ {
1061            let err_msg = isl_rs_ctx.last_error_msg();
1062            isl_rs_ctx.reset_error();
1063            return Err(LibISLError::new(err, err_msg));
1064        }
1065        Ok(isl_rs_result)
1066    }
1067
1068    /// Wraps `isl_set_empty`.
1069    pub fn empty(space: Space) -> Result<Set, LibISLError> {
1070        let isl_rs_ctx = space.get_ctx();
1071        let mut space = space;
1072        space.do_not_free_on_drop();
1073        let space = space.ptr;
1074        let isl_rs_result = unsafe { isl_set_empty(space) };
1075        let isl_rs_result = Set { ptr: isl_rs_result,
1076                                  should_free_on_drop: true };
1077        let err = isl_rs_ctx.last_error();
1078        if err != Error::None_ {
1079            let err_msg = isl_rs_ctx.last_error_msg();
1080            isl_rs_ctx.reset_error();
1081            return Err(LibISLError::new(err, err_msg));
1082        }
1083        Ok(isl_rs_result)
1084    }
1085
1086    /// Wraps `isl_set_equate`.
1087    pub fn equate(self, type1: DimType, pos1: i32, type2: DimType, pos2: i32)
1088                  -> Result<Set, LibISLError> {
1089        let set = self;
1090        let isl_rs_ctx = set.get_ctx();
1091        let mut set = set;
1092        set.do_not_free_on_drop();
1093        let set = set.ptr;
1094        let type1 = type1.to_i32();
1095        let type2 = type2.to_i32();
1096        let isl_rs_result = unsafe { isl_set_equate(set, type1, pos1, type2, pos2) };
1097        let isl_rs_result = Set { ptr: isl_rs_result,
1098                                  should_free_on_drop: true };
1099        let err = isl_rs_ctx.last_error();
1100        if err != Error::None_ {
1101            let err_msg = isl_rs_ctx.last_error_msg();
1102            isl_rs_ctx.reset_error();
1103            return Err(LibISLError::new(err, err_msg));
1104        }
1105        Ok(isl_rs_result)
1106    }
1107
1108    /// Wraps `isl_set_find_dim_by_id`.
1109    pub fn find_dim_by_id(&self, type_: DimType, id: &Id) -> Result<i32, LibISLError> {
1110        let set = self;
1111        let isl_rs_ctx = set.get_ctx();
1112        let set = set.ptr;
1113        let type_ = type_.to_i32();
1114        let id = id.ptr;
1115        let isl_rs_result = unsafe { isl_set_find_dim_by_id(set, type_, id) };
1116        let err = isl_rs_ctx.last_error();
1117        if err != Error::None_ {
1118            let err_msg = isl_rs_ctx.last_error_msg();
1119            isl_rs_ctx.reset_error();
1120            return Err(LibISLError::new(err, err_msg));
1121        }
1122        Ok(isl_rs_result)
1123    }
1124
1125    /// Wraps `isl_set_find_dim_by_name`.
1126    pub fn find_dim_by_name(&self, type_: DimType, name: &str) -> Result<i32, LibISLError> {
1127        let set = self;
1128        let isl_rs_ctx = set.get_ctx();
1129        let set = set.ptr;
1130        let type_ = type_.to_i32();
1131        let name = CString::new(name).unwrap();
1132        let name = name.as_ptr();
1133        let isl_rs_result = unsafe { isl_set_find_dim_by_name(set, type_, name) };
1134        let err = isl_rs_ctx.last_error();
1135        if err != Error::None_ {
1136            let err_msg = isl_rs_ctx.last_error_msg();
1137            isl_rs_ctx.reset_error();
1138            return Err(LibISLError::new(err, err_msg));
1139        }
1140        Ok(isl_rs_result)
1141    }
1142
1143    /// Wraps `isl_set_fix_dim_si`.
1144    pub fn fix_dim_si(self, dim: u32, value: i32) -> Result<Set, LibISLError> {
1145        let set = self;
1146        let isl_rs_ctx = set.get_ctx();
1147        let mut set = set;
1148        set.do_not_free_on_drop();
1149        let set = set.ptr;
1150        let isl_rs_result = unsafe { isl_set_fix_dim_si(set, dim, value) };
1151        let isl_rs_result = Set { ptr: isl_rs_result,
1152                                  should_free_on_drop: true };
1153        let err = isl_rs_ctx.last_error();
1154        if err != Error::None_ {
1155            let err_msg = isl_rs_ctx.last_error_msg();
1156            isl_rs_ctx.reset_error();
1157            return Err(LibISLError::new(err, err_msg));
1158        }
1159        Ok(isl_rs_result)
1160    }
1161
1162    /// Wraps `isl_set_fix_si`.
1163    pub fn fix_si(self, type_: DimType, pos: u32, value: i32) -> Result<Set, LibISLError> {
1164        let set = self;
1165        let isl_rs_ctx = set.get_ctx();
1166        let mut set = set;
1167        set.do_not_free_on_drop();
1168        let set = set.ptr;
1169        let type_ = type_.to_i32();
1170        let isl_rs_result = unsafe { isl_set_fix_si(set, type_, pos, value) };
1171        let isl_rs_result = Set { ptr: isl_rs_result,
1172                                  should_free_on_drop: true };
1173        let err = isl_rs_ctx.last_error();
1174        if err != Error::None_ {
1175            let err_msg = isl_rs_ctx.last_error_msg();
1176            isl_rs_ctx.reset_error();
1177            return Err(LibISLError::new(err, err_msg));
1178        }
1179        Ok(isl_rs_result)
1180    }
1181
1182    /// Wraps `isl_set_fix_val`.
1183    pub fn fix_val(self, type_: DimType, pos: u32, v: Val) -> Result<Set, LibISLError> {
1184        let set = self;
1185        let isl_rs_ctx = set.get_ctx();
1186        let mut set = set;
1187        set.do_not_free_on_drop();
1188        let set = set.ptr;
1189        let type_ = type_.to_i32();
1190        let mut v = v;
1191        v.do_not_free_on_drop();
1192        let v = v.ptr;
1193        let isl_rs_result = unsafe { isl_set_fix_val(set, type_, pos, v) };
1194        let isl_rs_result = Set { ptr: isl_rs_result,
1195                                  should_free_on_drop: true };
1196        let err = isl_rs_ctx.last_error();
1197        if err != Error::None_ {
1198            let err_msg = isl_rs_ctx.last_error_msg();
1199            isl_rs_ctx.reset_error();
1200            return Err(LibISLError::new(err, err_msg));
1201        }
1202        Ok(isl_rs_result)
1203    }
1204
1205    /// Wraps `isl_set_flat_product`.
1206    pub fn flat_product(self, set2: Set) -> Result<Set, LibISLError> {
1207        let set1 = self;
1208        let isl_rs_ctx = set1.get_ctx();
1209        let mut set1 = set1;
1210        set1.do_not_free_on_drop();
1211        let set1 = set1.ptr;
1212        let mut set2 = set2;
1213        set2.do_not_free_on_drop();
1214        let set2 = set2.ptr;
1215        let isl_rs_result = unsafe { isl_set_flat_product(set1, set2) };
1216        let isl_rs_result = Set { ptr: isl_rs_result,
1217                                  should_free_on_drop: true };
1218        let err = isl_rs_ctx.last_error();
1219        if err != Error::None_ {
1220            let err_msg = isl_rs_ctx.last_error_msg();
1221            isl_rs_ctx.reset_error();
1222            return Err(LibISLError::new(err, err_msg));
1223        }
1224        Ok(isl_rs_result)
1225    }
1226
1227    /// Wraps `isl_set_flatten`.
1228    pub fn flatten(self) -> Result<Set, LibISLError> {
1229        let set = self;
1230        let isl_rs_ctx = set.get_ctx();
1231        let mut set = set;
1232        set.do_not_free_on_drop();
1233        let set = set.ptr;
1234        let isl_rs_result = unsafe { isl_set_flatten(set) };
1235        let isl_rs_result = Set { ptr: isl_rs_result,
1236                                  should_free_on_drop: true };
1237        let err = isl_rs_ctx.last_error();
1238        if err != Error::None_ {
1239            let err_msg = isl_rs_ctx.last_error_msg();
1240            isl_rs_ctx.reset_error();
1241            return Err(LibISLError::new(err, err_msg));
1242        }
1243        Ok(isl_rs_result)
1244    }
1245
1246    /// Wraps `isl_set_flatten_map`.
1247    pub fn flatten_map(self) -> Result<Map, LibISLError> {
1248        let set = self;
1249        let isl_rs_ctx = set.get_ctx();
1250        let mut set = set;
1251        set.do_not_free_on_drop();
1252        let set = set.ptr;
1253        let isl_rs_result = unsafe { isl_set_flatten_map(set) };
1254        let isl_rs_result = Map { ptr: isl_rs_result,
1255                                  should_free_on_drop: true };
1256        let err = isl_rs_ctx.last_error();
1257        if err != Error::None_ {
1258            let err_msg = isl_rs_ctx.last_error_msg();
1259            isl_rs_ctx.reset_error();
1260            return Err(LibISLError::new(err, err_msg));
1261        }
1262        Ok(isl_rs_result)
1263    }
1264
1265    /// Wraps `isl_set_follows_at`.
1266    pub fn follows_at(&self, set2: &Set, pos: i32) -> Result<i32, LibISLError> {
1267        let set1 = self;
1268        let isl_rs_ctx = set1.get_ctx();
1269        let set1 = set1.ptr;
1270        let set2 = set2.ptr;
1271        let isl_rs_result = unsafe { isl_set_follows_at(set1, set2, pos) };
1272        let err = isl_rs_ctx.last_error();
1273        if err != Error::None_ {
1274            let err_msg = isl_rs_ctx.last_error_msg();
1275            isl_rs_ctx.reset_error();
1276            return Err(LibISLError::new(err, err_msg));
1277        }
1278        Ok(isl_rs_result)
1279    }
1280
1281    /// Wraps `isl_set_free`.
1282    pub fn free(self) -> Result<Set, LibISLError> {
1283        let set = self;
1284        let isl_rs_ctx = set.get_ctx();
1285        let mut set = set;
1286        set.do_not_free_on_drop();
1287        let set = set.ptr;
1288        let isl_rs_result = unsafe { isl_set_free(set) };
1289        let isl_rs_result = Set { ptr: isl_rs_result,
1290                                  should_free_on_drop: true };
1291        let err = isl_rs_ctx.last_error();
1292        if err != Error::None_ {
1293            let err_msg = isl_rs_ctx.last_error_msg();
1294            isl_rs_ctx.reset_error();
1295            return Err(LibISLError::new(err, err_msg));
1296        }
1297        Ok(isl_rs_result)
1298    }
1299
1300    /// Wraps `isl_set_from_basic_set`.
1301    pub fn from_basic_set(bset: BasicSet) -> Result<Set, LibISLError> {
1302        let isl_rs_ctx = bset.get_ctx();
1303        let mut bset = bset;
1304        bset.do_not_free_on_drop();
1305        let bset = bset.ptr;
1306        let isl_rs_result = unsafe { isl_set_from_basic_set(bset) };
1307        let isl_rs_result = Set { ptr: isl_rs_result,
1308                                  should_free_on_drop: true };
1309        let err = isl_rs_ctx.last_error();
1310        if err != Error::None_ {
1311            let err_msg = isl_rs_ctx.last_error_msg();
1312            isl_rs_ctx.reset_error();
1313            return Err(LibISLError::new(err, err_msg));
1314        }
1315        Ok(isl_rs_result)
1316    }
1317
1318    /// Wraps `isl_set_from_multi_aff`.
1319    pub fn from_multi_aff(ma: MultiAff) -> Result<Set, LibISLError> {
1320        let isl_rs_ctx = ma.get_ctx();
1321        let mut ma = ma;
1322        ma.do_not_free_on_drop();
1323        let ma = ma.ptr;
1324        let isl_rs_result = unsafe { isl_set_from_multi_aff(ma) };
1325        let isl_rs_result = Set { ptr: isl_rs_result,
1326                                  should_free_on_drop: true };
1327        let err = isl_rs_ctx.last_error();
1328        if err != Error::None_ {
1329            let err_msg = isl_rs_ctx.last_error_msg();
1330            isl_rs_ctx.reset_error();
1331            return Err(LibISLError::new(err, err_msg));
1332        }
1333        Ok(isl_rs_result)
1334    }
1335
1336    /// Wraps `isl_set_from_multi_pw_aff`.
1337    pub fn from_multi_pw_aff(mpa: MultiPwAff) -> Result<Set, LibISLError> {
1338        let isl_rs_ctx = mpa.get_ctx();
1339        let mut mpa = mpa;
1340        mpa.do_not_free_on_drop();
1341        let mpa = mpa.ptr;
1342        let isl_rs_result = unsafe { isl_set_from_multi_pw_aff(mpa) };
1343        let isl_rs_result = Set { ptr: isl_rs_result,
1344                                  should_free_on_drop: true };
1345        let err = isl_rs_ctx.last_error();
1346        if err != Error::None_ {
1347            let err_msg = isl_rs_ctx.last_error_msg();
1348            isl_rs_ctx.reset_error();
1349            return Err(LibISLError::new(err, err_msg));
1350        }
1351        Ok(isl_rs_result)
1352    }
1353
1354    /// Wraps `isl_set_from_params`.
1355    pub fn from_params(self) -> Result<Set, LibISLError> {
1356        let set = self;
1357        let isl_rs_ctx = set.get_ctx();
1358        let mut set = set;
1359        set.do_not_free_on_drop();
1360        let set = set.ptr;
1361        let isl_rs_result = unsafe { isl_set_from_params(set) };
1362        let isl_rs_result = Set { ptr: isl_rs_result,
1363                                  should_free_on_drop: true };
1364        let err = isl_rs_ctx.last_error();
1365        if err != Error::None_ {
1366            let err_msg = isl_rs_ctx.last_error_msg();
1367            isl_rs_ctx.reset_error();
1368            return Err(LibISLError::new(err, err_msg));
1369        }
1370        Ok(isl_rs_result)
1371    }
1372
1373    /// Wraps `isl_set_from_point`.
1374    pub fn from_point(pnt: Point) -> Result<Set, LibISLError> {
1375        let isl_rs_ctx = pnt.get_ctx();
1376        let mut pnt = pnt;
1377        pnt.do_not_free_on_drop();
1378        let pnt = pnt.ptr;
1379        let isl_rs_result = unsafe { isl_set_from_point(pnt) };
1380        let isl_rs_result = Set { ptr: isl_rs_result,
1381                                  should_free_on_drop: true };
1382        let err = isl_rs_ctx.last_error();
1383        if err != Error::None_ {
1384            let err_msg = isl_rs_ctx.last_error_msg();
1385            isl_rs_ctx.reset_error();
1386            return Err(LibISLError::new(err, err_msg));
1387        }
1388        Ok(isl_rs_result)
1389    }
1390
1391    /// Wraps `isl_set_from_pw_aff`.
1392    pub fn from_pw_aff(pwaff: PwAff) -> Result<Set, LibISLError> {
1393        let isl_rs_ctx = pwaff.get_ctx();
1394        let mut pwaff = pwaff;
1395        pwaff.do_not_free_on_drop();
1396        let pwaff = pwaff.ptr;
1397        let isl_rs_result = unsafe { isl_set_from_pw_aff(pwaff) };
1398        let isl_rs_result = Set { ptr: isl_rs_result,
1399                                  should_free_on_drop: true };
1400        let err = isl_rs_ctx.last_error();
1401        if err != Error::None_ {
1402            let err_msg = isl_rs_ctx.last_error_msg();
1403            isl_rs_ctx.reset_error();
1404            return Err(LibISLError::new(err, err_msg));
1405        }
1406        Ok(isl_rs_result)
1407    }
1408
1409    /// Wraps `isl_set_from_pw_multi_aff`.
1410    pub fn from_pw_multi_aff(pma: PwMultiAff) -> Result<Set, LibISLError> {
1411        let isl_rs_ctx = pma.get_ctx();
1412        let mut pma = pma;
1413        pma.do_not_free_on_drop();
1414        let pma = pma.ptr;
1415        let isl_rs_result = unsafe { isl_set_from_pw_multi_aff(pma) };
1416        let isl_rs_result = Set { ptr: isl_rs_result,
1417                                  should_free_on_drop: true };
1418        let err = isl_rs_ctx.last_error();
1419        if err != Error::None_ {
1420            let err_msg = isl_rs_ctx.last_error_msg();
1421            isl_rs_ctx.reset_error();
1422            return Err(LibISLError::new(err, err_msg));
1423        }
1424        Ok(isl_rs_result)
1425    }
1426
1427    /// Wraps `isl_set_from_union_set`.
1428    pub fn from_union_set(uset: UnionSet) -> Result<Set, LibISLError> {
1429        let isl_rs_ctx = uset.get_ctx();
1430        let mut uset = uset;
1431        uset.do_not_free_on_drop();
1432        let uset = uset.ptr;
1433        let isl_rs_result = unsafe { isl_set_from_union_set(uset) };
1434        let isl_rs_result = Set { ptr: isl_rs_result,
1435                                  should_free_on_drop: true };
1436        let err = isl_rs_ctx.last_error();
1437        if err != Error::None_ {
1438            let err_msg = isl_rs_ctx.last_error_msg();
1439            isl_rs_ctx.reset_error();
1440            return Err(LibISLError::new(err, err_msg));
1441        }
1442        Ok(isl_rs_result)
1443    }
1444
1445    /// Wraps `isl_set_get_basic_set_list`.
1446    pub fn get_basic_set_list(&self) -> Result<BasicSetList, LibISLError> {
1447        let set = self;
1448        let isl_rs_ctx = set.get_ctx();
1449        let set = set.ptr;
1450        let isl_rs_result = unsafe { isl_set_get_basic_set_list(set) };
1451        let isl_rs_result = BasicSetList { ptr: isl_rs_result,
1452                                           should_free_on_drop: true };
1453        let err = isl_rs_ctx.last_error();
1454        if err != Error::None_ {
1455            let err_msg = isl_rs_ctx.last_error_msg();
1456            isl_rs_ctx.reset_error();
1457            return Err(LibISLError::new(err, err_msg));
1458        }
1459        Ok(isl_rs_result)
1460    }
1461
1462    /// Wraps `isl_set_get_ctx`.
1463    pub fn get_ctx(&self) -> Context {
1464        let set = self;
1465        let set = set.ptr;
1466        let isl_rs_result = unsafe { isl_set_get_ctx(set) };
1467        let isl_rs_result = Context { ptr: isl_rs_result,
1468                                      should_free_on_drop: false };
1469        isl_rs_result
1470    }
1471
1472    /// Wraps `isl_set_get_dim_id`.
1473    pub fn get_dim_id(&self, type_: DimType, pos: u32) -> Result<Id, LibISLError> {
1474        let set = self;
1475        let isl_rs_ctx = set.get_ctx();
1476        let set = set.ptr;
1477        let type_ = type_.to_i32();
1478        let isl_rs_result = unsafe { isl_set_get_dim_id(set, type_, pos) };
1479        let isl_rs_result = Id { ptr: isl_rs_result,
1480                                 should_free_on_drop: true };
1481        let err = isl_rs_ctx.last_error();
1482        if err != Error::None_ {
1483            let err_msg = isl_rs_ctx.last_error_msg();
1484            isl_rs_ctx.reset_error();
1485            return Err(LibISLError::new(err, err_msg));
1486        }
1487        Ok(isl_rs_result)
1488    }
1489
1490    /// Wraps `isl_set_get_dim_name`.
1491    pub fn get_dim_name(&self, type_: DimType, pos: u32) -> Result<&str, LibISLError> {
1492        let set = self;
1493        let isl_rs_ctx = set.get_ctx();
1494        let set = set.ptr;
1495        let type_ = type_.to_i32();
1496        let isl_rs_result = unsafe { isl_set_get_dim_name(set, type_, pos) };
1497        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
1498        let isl_rs_result = isl_rs_result.to_str().unwrap();
1499        let err = isl_rs_ctx.last_error();
1500        if err != Error::None_ {
1501            let err_msg = isl_rs_ctx.last_error_msg();
1502            isl_rs_ctx.reset_error();
1503            return Err(LibISLError::new(err, err_msg));
1504        }
1505        Ok(isl_rs_result)
1506    }
1507
1508    /// Wraps `isl_set_get_hash`.
1509    pub fn get_hash(&self) -> Result<u32, LibISLError> {
1510        let set = self;
1511        let isl_rs_ctx = set.get_ctx();
1512        let set = set.ptr;
1513        let isl_rs_result = unsafe { isl_set_get_hash(set) };
1514        let err = isl_rs_ctx.last_error();
1515        if err != Error::None_ {
1516            let err_msg = isl_rs_ctx.last_error_msg();
1517            isl_rs_ctx.reset_error();
1518            return Err(LibISLError::new(err, err_msg));
1519        }
1520        Ok(isl_rs_result)
1521    }
1522
1523    /// Wraps `isl_set_get_lattice_tile`.
1524    pub fn get_lattice_tile(&self) -> Result<FixedBox, LibISLError> {
1525        let set = self;
1526        let isl_rs_ctx = set.get_ctx();
1527        let set = set.ptr;
1528        let isl_rs_result = unsafe { isl_set_get_lattice_tile(set) };
1529        let isl_rs_result = FixedBox { ptr: isl_rs_result,
1530                                       should_free_on_drop: true };
1531        let err = isl_rs_ctx.last_error();
1532        if err != Error::None_ {
1533            let err_msg = isl_rs_ctx.last_error_msg();
1534            isl_rs_ctx.reset_error();
1535            return Err(LibISLError::new(err, err_msg));
1536        }
1537        Ok(isl_rs_result)
1538    }
1539
1540    /// Wraps `isl_set_get_plain_multi_val_if_fixed`.
1541    pub fn get_plain_multi_val_if_fixed(&self) -> Result<MultiVal, LibISLError> {
1542        let set = self;
1543        let isl_rs_ctx = set.get_ctx();
1544        let set = set.ptr;
1545        let isl_rs_result = unsafe { isl_set_get_plain_multi_val_if_fixed(set) };
1546        let isl_rs_result = MultiVal { ptr: isl_rs_result,
1547                                       should_free_on_drop: true };
1548        let err = isl_rs_ctx.last_error();
1549        if err != Error::None_ {
1550            let err_msg = isl_rs_ctx.last_error_msg();
1551            isl_rs_ctx.reset_error();
1552            return Err(LibISLError::new(err, err_msg));
1553        }
1554        Ok(isl_rs_result)
1555    }
1556
1557    /// Wraps `isl_set_get_simple_fixed_box_hull`.
1558    pub fn get_simple_fixed_box_hull(&self) -> Result<FixedBox, LibISLError> {
1559        let set = self;
1560        let isl_rs_ctx = set.get_ctx();
1561        let set = set.ptr;
1562        let isl_rs_result = unsafe { isl_set_get_simple_fixed_box_hull(set) };
1563        let isl_rs_result = FixedBox { ptr: isl_rs_result,
1564                                       should_free_on_drop: true };
1565        let err = isl_rs_ctx.last_error();
1566        if err != Error::None_ {
1567            let err_msg = isl_rs_ctx.last_error_msg();
1568            isl_rs_ctx.reset_error();
1569            return Err(LibISLError::new(err, err_msg));
1570        }
1571        Ok(isl_rs_result)
1572    }
1573
1574    /// Wraps `isl_set_get_space`.
1575    pub fn get_space(&self) -> Result<Space, LibISLError> {
1576        let set = self;
1577        let isl_rs_ctx = set.get_ctx();
1578        let set = set.ptr;
1579        let isl_rs_result = unsafe { isl_set_get_space(set) };
1580        let isl_rs_result = Space { ptr: isl_rs_result,
1581                                    should_free_on_drop: true };
1582        let err = isl_rs_ctx.last_error();
1583        if err != Error::None_ {
1584            let err_msg = isl_rs_ctx.last_error_msg();
1585            isl_rs_ctx.reset_error();
1586            return Err(LibISLError::new(err, err_msg));
1587        }
1588        Ok(isl_rs_result)
1589    }
1590
1591    /// Wraps `isl_set_get_stride`.
1592    pub fn get_stride(&self, pos: i32) -> Result<Val, LibISLError> {
1593        let set = self;
1594        let isl_rs_ctx = set.get_ctx();
1595        let set = set.ptr;
1596        let isl_rs_result = unsafe { isl_set_get_stride(set, pos) };
1597        let isl_rs_result = Val { ptr: isl_rs_result,
1598                                  should_free_on_drop: true };
1599        let err = isl_rs_ctx.last_error();
1600        if err != Error::None_ {
1601            let err_msg = isl_rs_ctx.last_error_msg();
1602            isl_rs_ctx.reset_error();
1603            return Err(LibISLError::new(err, err_msg));
1604        }
1605        Ok(isl_rs_result)
1606    }
1607
1608    /// Wraps `isl_set_get_stride_info`.
1609    pub fn get_stride_info(&self, pos: i32) -> Result<StrideInfo, LibISLError> {
1610        let set = self;
1611        let isl_rs_ctx = set.get_ctx();
1612        let set = set.ptr;
1613        let isl_rs_result = unsafe { isl_set_get_stride_info(set, pos) };
1614        let isl_rs_result = StrideInfo { ptr: isl_rs_result,
1615                                         should_free_on_drop: true };
1616        let err = isl_rs_ctx.last_error();
1617        if err != Error::None_ {
1618            let err_msg = isl_rs_ctx.last_error_msg();
1619            isl_rs_ctx.reset_error();
1620            return Err(LibISLError::new(err, err_msg));
1621        }
1622        Ok(isl_rs_result)
1623    }
1624
1625    /// Wraps `isl_set_get_tuple_id`.
1626    pub fn get_tuple_id(&self) -> Result<Id, LibISLError> {
1627        let set = self;
1628        let isl_rs_ctx = set.get_ctx();
1629        let set = set.ptr;
1630        let isl_rs_result = unsafe { isl_set_get_tuple_id(set) };
1631        let isl_rs_result = Id { ptr: isl_rs_result,
1632                                 should_free_on_drop: true };
1633        let err = isl_rs_ctx.last_error();
1634        if err != Error::None_ {
1635            let err_msg = isl_rs_ctx.last_error_msg();
1636            isl_rs_ctx.reset_error();
1637            return Err(LibISLError::new(err, err_msg));
1638        }
1639        Ok(isl_rs_result)
1640    }
1641
1642    /// Wraps `isl_set_get_tuple_name`.
1643    pub fn get_tuple_name(&self) -> Result<&str, LibISLError> {
1644        let set = self;
1645        let isl_rs_ctx = set.get_ctx();
1646        let set = set.ptr;
1647        let isl_rs_result = unsafe { isl_set_get_tuple_name(set) };
1648        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
1649        let isl_rs_result = isl_rs_result.to_str().unwrap();
1650        let err = isl_rs_ctx.last_error();
1651        if err != Error::None_ {
1652            let err_msg = isl_rs_ctx.last_error_msg();
1653            isl_rs_ctx.reset_error();
1654            return Err(LibISLError::new(err, err_msg));
1655        }
1656        Ok(isl_rs_result)
1657    }
1658
1659    /// Wraps `isl_set_gist`.
1660    pub fn gist(self, context: Set) -> Result<Set, LibISLError> {
1661        let set = self;
1662        let isl_rs_ctx = set.get_ctx();
1663        let mut set = set;
1664        set.do_not_free_on_drop();
1665        let set = set.ptr;
1666        let mut context = context;
1667        context.do_not_free_on_drop();
1668        let context = context.ptr;
1669        let isl_rs_result = unsafe { isl_set_gist(set, context) };
1670        let isl_rs_result = Set { ptr: isl_rs_result,
1671                                  should_free_on_drop: true };
1672        let err = isl_rs_ctx.last_error();
1673        if err != Error::None_ {
1674            let err_msg = isl_rs_ctx.last_error_msg();
1675            isl_rs_ctx.reset_error();
1676            return Err(LibISLError::new(err, err_msg));
1677        }
1678        Ok(isl_rs_result)
1679    }
1680
1681    /// Wraps `isl_set_gist_basic_set`.
1682    pub fn gist_basic_set(self, context: BasicSet) -> Result<Set, LibISLError> {
1683        let set = self;
1684        let isl_rs_ctx = set.get_ctx();
1685        let mut set = set;
1686        set.do_not_free_on_drop();
1687        let set = set.ptr;
1688        let mut context = context;
1689        context.do_not_free_on_drop();
1690        let context = context.ptr;
1691        let isl_rs_result = unsafe { isl_set_gist_basic_set(set, context) };
1692        let isl_rs_result = Set { ptr: isl_rs_result,
1693                                  should_free_on_drop: true };
1694        let err = isl_rs_ctx.last_error();
1695        if err != Error::None_ {
1696            let err_msg = isl_rs_ctx.last_error_msg();
1697            isl_rs_ctx.reset_error();
1698            return Err(LibISLError::new(err, err_msg));
1699        }
1700        Ok(isl_rs_result)
1701    }
1702
1703    /// Wraps `isl_set_gist_params`.
1704    pub fn gist_params(self, context: Set) -> Result<Set, LibISLError> {
1705        let set = self;
1706        let isl_rs_ctx = set.get_ctx();
1707        let mut set = set;
1708        set.do_not_free_on_drop();
1709        let set = set.ptr;
1710        let mut context = context;
1711        context.do_not_free_on_drop();
1712        let context = context.ptr;
1713        let isl_rs_result = unsafe { isl_set_gist_params(set, context) };
1714        let isl_rs_result = Set { ptr: isl_rs_result,
1715                                  should_free_on_drop: true };
1716        let err = isl_rs_ctx.last_error();
1717        if err != Error::None_ {
1718            let err_msg = isl_rs_ctx.last_error_msg();
1719            isl_rs_ctx.reset_error();
1720            return Err(LibISLError::new(err, err_msg));
1721        }
1722        Ok(isl_rs_result)
1723    }
1724
1725    /// Wraps `isl_set_has_dim_id`.
1726    pub fn has_dim_id(&self, type_: DimType, pos: u32) -> Result<bool, LibISLError> {
1727        let set = self;
1728        let isl_rs_ctx = set.get_ctx();
1729        let set = set.ptr;
1730        let type_ = type_.to_i32();
1731        let isl_rs_result = unsafe { isl_set_has_dim_id(set, type_, pos) };
1732        let isl_rs_result = match isl_rs_result {
1733            0 => false,
1734            1 => true,
1735            _ => {
1736                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
1737            }
1738        };
1739        let err = isl_rs_ctx.last_error();
1740        if err != Error::None_ {
1741            let err_msg = isl_rs_ctx.last_error_msg();
1742            isl_rs_ctx.reset_error();
1743            return Err(LibISLError::new(err, err_msg));
1744        }
1745        Ok(isl_rs_result)
1746    }
1747
1748    /// Wraps `isl_set_has_dim_name`.
1749    pub fn has_dim_name(&self, type_: DimType, pos: u32) -> Result<bool, LibISLError> {
1750        let set = self;
1751        let isl_rs_ctx = set.get_ctx();
1752        let set = set.ptr;
1753        let type_ = type_.to_i32();
1754        let isl_rs_result = unsafe { isl_set_has_dim_name(set, type_, pos) };
1755        let isl_rs_result = match isl_rs_result {
1756            0 => false,
1757            1 => true,
1758            _ => {
1759                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
1760            }
1761        };
1762        let err = isl_rs_ctx.last_error();
1763        if err != Error::None_ {
1764            let err_msg = isl_rs_ctx.last_error_msg();
1765            isl_rs_ctx.reset_error();
1766            return Err(LibISLError::new(err, err_msg));
1767        }
1768        Ok(isl_rs_result)
1769    }
1770
1771    /// Wraps `isl_set_has_equal_space`.
1772    pub fn has_equal_space(&self, set2: &Set) -> Result<bool, LibISLError> {
1773        let set1 = self;
1774        let isl_rs_ctx = set1.get_ctx();
1775        let set1 = set1.ptr;
1776        let set2 = set2.ptr;
1777        let isl_rs_result = unsafe { isl_set_has_equal_space(set1, set2) };
1778        let isl_rs_result = match isl_rs_result {
1779            0 => false,
1780            1 => true,
1781            _ => {
1782                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
1783            }
1784        };
1785        let err = isl_rs_ctx.last_error();
1786        if err != Error::None_ {
1787            let err_msg = isl_rs_ctx.last_error_msg();
1788            isl_rs_ctx.reset_error();
1789            return Err(LibISLError::new(err, err_msg));
1790        }
1791        Ok(isl_rs_result)
1792    }
1793
1794    /// Wraps `isl_set_has_tuple_id`.
1795    pub fn has_tuple_id(&self) -> Result<bool, LibISLError> {
1796        let set = self;
1797        let isl_rs_ctx = set.get_ctx();
1798        let set = set.ptr;
1799        let isl_rs_result = unsafe { isl_set_has_tuple_id(set) };
1800        let isl_rs_result = match isl_rs_result {
1801            0 => false,
1802            1 => true,
1803            _ => {
1804                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
1805            }
1806        };
1807        let err = isl_rs_ctx.last_error();
1808        if err != Error::None_ {
1809            let err_msg = isl_rs_ctx.last_error_msg();
1810            isl_rs_ctx.reset_error();
1811            return Err(LibISLError::new(err, err_msg));
1812        }
1813        Ok(isl_rs_result)
1814    }
1815
1816    /// Wraps `isl_set_has_tuple_name`.
1817    pub fn has_tuple_name(&self) -> Result<bool, LibISLError> {
1818        let set = self;
1819        let isl_rs_ctx = set.get_ctx();
1820        let set = set.ptr;
1821        let isl_rs_result = unsafe { isl_set_has_tuple_name(set) };
1822        let isl_rs_result = match isl_rs_result {
1823            0 => false,
1824            1 => true,
1825            _ => {
1826                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
1827            }
1828        };
1829        let err = isl_rs_ctx.last_error();
1830        if err != Error::None_ {
1831            let err_msg = isl_rs_ctx.last_error_msg();
1832            isl_rs_ctx.reset_error();
1833            return Err(LibISLError::new(err, err_msg));
1834        }
1835        Ok(isl_rs_result)
1836    }
1837
1838    /// Wraps `isl_set_identity`.
1839    pub fn identity(self) -> Result<Map, LibISLError> {
1840        let set = self;
1841        let isl_rs_ctx = set.get_ctx();
1842        let mut set = set;
1843        set.do_not_free_on_drop();
1844        let set = set.ptr;
1845        let isl_rs_result = unsafe { isl_set_identity(set) };
1846        let isl_rs_result = Map { ptr: isl_rs_result,
1847                                  should_free_on_drop: true };
1848        let err = isl_rs_ctx.last_error();
1849        if err != Error::None_ {
1850            let err_msg = isl_rs_ctx.last_error_msg();
1851            isl_rs_ctx.reset_error();
1852            return Err(LibISLError::new(err, err_msg));
1853        }
1854        Ok(isl_rs_result)
1855    }
1856
1857    /// Wraps `isl_set_indicator_function`.
1858    pub fn indicator_function(self) -> Result<PwAff, LibISLError> {
1859        let set = self;
1860        let isl_rs_ctx = set.get_ctx();
1861        let mut set = set;
1862        set.do_not_free_on_drop();
1863        let set = set.ptr;
1864        let isl_rs_result = unsafe { isl_set_indicator_function(set) };
1865        let isl_rs_result = PwAff { ptr: isl_rs_result,
1866                                    should_free_on_drop: true };
1867        let err = isl_rs_ctx.last_error();
1868        if err != Error::None_ {
1869            let err_msg = isl_rs_ctx.last_error_msg();
1870            isl_rs_ctx.reset_error();
1871            return Err(LibISLError::new(err, err_msg));
1872        }
1873        Ok(isl_rs_result)
1874    }
1875
1876    /// Wraps `isl_set_insert_dims`.
1877    pub fn insert_dims(self, type_: DimType, pos: u32, n: u32) -> Result<Set, LibISLError> {
1878        let set = self;
1879        let isl_rs_ctx = set.get_ctx();
1880        let mut set = set;
1881        set.do_not_free_on_drop();
1882        let set = set.ptr;
1883        let type_ = type_.to_i32();
1884        let isl_rs_result = unsafe { isl_set_insert_dims(set, type_, pos, n) };
1885        let isl_rs_result = Set { ptr: isl_rs_result,
1886                                  should_free_on_drop: true };
1887        let err = isl_rs_ctx.last_error();
1888        if err != Error::None_ {
1889            let err_msg = isl_rs_ctx.last_error_msg();
1890            isl_rs_ctx.reset_error();
1891            return Err(LibISLError::new(err, err_msg));
1892        }
1893        Ok(isl_rs_result)
1894    }
1895
1896    /// Wraps `isl_set_insert_domain`.
1897    pub fn insert_domain(self, domain: Space) -> Result<Map, LibISLError> {
1898        let set = self;
1899        let isl_rs_ctx = set.get_ctx();
1900        let mut set = set;
1901        set.do_not_free_on_drop();
1902        let set = set.ptr;
1903        let mut domain = domain;
1904        domain.do_not_free_on_drop();
1905        let domain = domain.ptr;
1906        let isl_rs_result = unsafe { isl_set_insert_domain(set, domain) };
1907        let isl_rs_result = Map { ptr: isl_rs_result,
1908                                  should_free_on_drop: true };
1909        let err = isl_rs_ctx.last_error();
1910        if err != Error::None_ {
1911            let err_msg = isl_rs_ctx.last_error_msg();
1912            isl_rs_ctx.reset_error();
1913            return Err(LibISLError::new(err, err_msg));
1914        }
1915        Ok(isl_rs_result)
1916    }
1917
1918    /// Wraps `isl_set_intersect`.
1919    pub fn intersect(self, set2: Set) -> Result<Set, LibISLError> {
1920        let set1 = self;
1921        let isl_rs_ctx = set1.get_ctx();
1922        let mut set1 = set1;
1923        set1.do_not_free_on_drop();
1924        let set1 = set1.ptr;
1925        let mut set2 = set2;
1926        set2.do_not_free_on_drop();
1927        let set2 = set2.ptr;
1928        let isl_rs_result = unsafe { isl_set_intersect(set1, set2) };
1929        let isl_rs_result = Set { ptr: isl_rs_result,
1930                                  should_free_on_drop: true };
1931        let err = isl_rs_ctx.last_error();
1932        if err != Error::None_ {
1933            let err_msg = isl_rs_ctx.last_error_msg();
1934            isl_rs_ctx.reset_error();
1935            return Err(LibISLError::new(err, err_msg));
1936        }
1937        Ok(isl_rs_result)
1938    }
1939
1940    /// Wraps `isl_set_intersect_factor_domain`.
1941    pub fn intersect_factor_domain(self, domain: Set) -> Result<Set, LibISLError> {
1942        let set = self;
1943        let isl_rs_ctx = set.get_ctx();
1944        let mut set = set;
1945        set.do_not_free_on_drop();
1946        let set = set.ptr;
1947        let mut domain = domain;
1948        domain.do_not_free_on_drop();
1949        let domain = domain.ptr;
1950        let isl_rs_result = unsafe { isl_set_intersect_factor_domain(set, domain) };
1951        let isl_rs_result = Set { ptr: isl_rs_result,
1952                                  should_free_on_drop: true };
1953        let err = isl_rs_ctx.last_error();
1954        if err != Error::None_ {
1955            let err_msg = isl_rs_ctx.last_error_msg();
1956            isl_rs_ctx.reset_error();
1957            return Err(LibISLError::new(err, err_msg));
1958        }
1959        Ok(isl_rs_result)
1960    }
1961
1962    /// Wraps `isl_set_intersect_factor_range`.
1963    pub fn intersect_factor_range(self, range: Set) -> Result<Set, LibISLError> {
1964        let set = self;
1965        let isl_rs_ctx = set.get_ctx();
1966        let mut set = set;
1967        set.do_not_free_on_drop();
1968        let set = set.ptr;
1969        let mut range = range;
1970        range.do_not_free_on_drop();
1971        let range = range.ptr;
1972        let isl_rs_result = unsafe { isl_set_intersect_factor_range(set, range) };
1973        let isl_rs_result = Set { ptr: isl_rs_result,
1974                                  should_free_on_drop: true };
1975        let err = isl_rs_ctx.last_error();
1976        if err != Error::None_ {
1977            let err_msg = isl_rs_ctx.last_error_msg();
1978            isl_rs_ctx.reset_error();
1979            return Err(LibISLError::new(err, err_msg));
1980        }
1981        Ok(isl_rs_result)
1982    }
1983
1984    /// Wraps `isl_set_intersect_params`.
1985    pub fn intersect_params(self, params: Set) -> Result<Set, LibISLError> {
1986        let set = self;
1987        let isl_rs_ctx = set.get_ctx();
1988        let mut set = set;
1989        set.do_not_free_on_drop();
1990        let set = set.ptr;
1991        let mut params = params;
1992        params.do_not_free_on_drop();
1993        let params = params.ptr;
1994        let isl_rs_result = unsafe { isl_set_intersect_params(set, params) };
1995        let isl_rs_result = Set { ptr: isl_rs_result,
1996                                  should_free_on_drop: true };
1997        let err = isl_rs_ctx.last_error();
1998        if err != Error::None_ {
1999            let err_msg = isl_rs_ctx.last_error_msg();
2000            isl_rs_ctx.reset_error();
2001            return Err(LibISLError::new(err, err_msg));
2002        }
2003        Ok(isl_rs_result)
2004    }
2005
2006    /// Wraps `isl_set_involves_dims`.
2007    pub fn involves_dims(&self, type_: DimType, first: u32, n: u32) -> Result<bool, LibISLError> {
2008        let set = self;
2009        let isl_rs_ctx = set.get_ctx();
2010        let set = set.ptr;
2011        let type_ = type_.to_i32();
2012        let isl_rs_result = unsafe { isl_set_involves_dims(set, type_, first, n) };
2013        let isl_rs_result = match isl_rs_result {
2014            0 => false,
2015            1 => true,
2016            _ => {
2017                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2018            }
2019        };
2020        let err = isl_rs_ctx.last_error();
2021        if err != Error::None_ {
2022            let err_msg = isl_rs_ctx.last_error_msg();
2023            isl_rs_ctx.reset_error();
2024            return Err(LibISLError::new(err, err_msg));
2025        }
2026        Ok(isl_rs_result)
2027    }
2028
2029    /// Wraps `isl_set_involves_locals`.
2030    pub fn involves_locals(&self) -> Result<bool, LibISLError> {
2031        let set = self;
2032        let isl_rs_ctx = set.get_ctx();
2033        let set = set.ptr;
2034        let isl_rs_result = unsafe { isl_set_involves_locals(set) };
2035        let isl_rs_result = match isl_rs_result {
2036            0 => false,
2037            1 => true,
2038            _ => {
2039                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2040            }
2041        };
2042        let err = isl_rs_ctx.last_error();
2043        if err != Error::None_ {
2044            let err_msg = isl_rs_ctx.last_error_msg();
2045            isl_rs_ctx.reset_error();
2046            return Err(LibISLError::new(err, err_msg));
2047        }
2048        Ok(isl_rs_result)
2049    }
2050
2051    /// Wraps `isl_set_is_bounded`.
2052    pub fn is_bounded(&self) -> Result<bool, LibISLError> {
2053        let set = self;
2054        let isl_rs_ctx = set.get_ctx();
2055        let set = set.ptr;
2056        let isl_rs_result = unsafe { isl_set_is_bounded(set) };
2057        let isl_rs_result = match isl_rs_result {
2058            0 => false,
2059            1 => true,
2060            _ => {
2061                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2062            }
2063        };
2064        let err = isl_rs_ctx.last_error();
2065        if err != Error::None_ {
2066            let err_msg = isl_rs_ctx.last_error_msg();
2067            isl_rs_ctx.reset_error();
2068            return Err(LibISLError::new(err, err_msg));
2069        }
2070        Ok(isl_rs_result)
2071    }
2072
2073    /// Wraps `isl_set_is_box`.
2074    pub fn is_box(&self) -> Result<bool, LibISLError> {
2075        let set = self;
2076        let isl_rs_ctx = set.get_ctx();
2077        let set = set.ptr;
2078        let isl_rs_result = unsafe { isl_set_is_box(set) };
2079        let isl_rs_result = match isl_rs_result {
2080            0 => false,
2081            1 => true,
2082            _ => {
2083                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2084            }
2085        };
2086        let err = isl_rs_ctx.last_error();
2087        if err != Error::None_ {
2088            let err_msg = isl_rs_ctx.last_error_msg();
2089            isl_rs_ctx.reset_error();
2090            return Err(LibISLError::new(err, err_msg));
2091        }
2092        Ok(isl_rs_result)
2093    }
2094
2095    /// Wraps `isl_set_is_disjoint`.
2096    pub fn is_disjoint(&self, set2: &Set) -> Result<bool, LibISLError> {
2097        let set1 = self;
2098        let isl_rs_ctx = set1.get_ctx();
2099        let set1 = set1.ptr;
2100        let set2 = set2.ptr;
2101        let isl_rs_result = unsafe { isl_set_is_disjoint(set1, set2) };
2102        let isl_rs_result = match isl_rs_result {
2103            0 => false,
2104            1 => true,
2105            _ => {
2106                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2107            }
2108        };
2109        let err = isl_rs_ctx.last_error();
2110        if err != Error::None_ {
2111            let err_msg = isl_rs_ctx.last_error_msg();
2112            isl_rs_ctx.reset_error();
2113            return Err(LibISLError::new(err, err_msg));
2114        }
2115        Ok(isl_rs_result)
2116    }
2117
2118    /// Wraps `isl_set_is_empty`.
2119    pub fn is_empty(&self) -> Result<bool, LibISLError> {
2120        let set = self;
2121        let isl_rs_ctx = set.get_ctx();
2122        let set = set.ptr;
2123        let isl_rs_result = unsafe { isl_set_is_empty(set) };
2124        let isl_rs_result = match isl_rs_result {
2125            0 => false,
2126            1 => true,
2127            _ => {
2128                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2129            }
2130        };
2131        let err = isl_rs_ctx.last_error();
2132        if err != Error::None_ {
2133            let err_msg = isl_rs_ctx.last_error_msg();
2134            isl_rs_ctx.reset_error();
2135            return Err(LibISLError::new(err, err_msg));
2136        }
2137        Ok(isl_rs_result)
2138    }
2139
2140    /// Wraps `isl_set_is_equal`.
2141    pub fn is_equal(&self, set2: &Set) -> Result<bool, LibISLError> {
2142        let set1 = self;
2143        let isl_rs_ctx = set1.get_ctx();
2144        let set1 = set1.ptr;
2145        let set2 = set2.ptr;
2146        let isl_rs_result = unsafe { isl_set_is_equal(set1, set2) };
2147        let isl_rs_result = match isl_rs_result {
2148            0 => false,
2149            1 => true,
2150            _ => {
2151                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2152            }
2153        };
2154        let err = isl_rs_ctx.last_error();
2155        if err != Error::None_ {
2156            let err_msg = isl_rs_ctx.last_error_msg();
2157            isl_rs_ctx.reset_error();
2158            return Err(LibISLError::new(err, err_msg));
2159        }
2160        Ok(isl_rs_result)
2161    }
2162
2163    /// Wraps `isl_set_is_params`.
2164    pub fn is_params(&self) -> Result<bool, LibISLError> {
2165        let set = self;
2166        let isl_rs_ctx = set.get_ctx();
2167        let set = set.ptr;
2168        let isl_rs_result = unsafe { isl_set_is_params(set) };
2169        let isl_rs_result = match isl_rs_result {
2170            0 => false,
2171            1 => true,
2172            _ => {
2173                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2174            }
2175        };
2176        let err = isl_rs_ctx.last_error();
2177        if err != Error::None_ {
2178            let err_msg = isl_rs_ctx.last_error_msg();
2179            isl_rs_ctx.reset_error();
2180            return Err(LibISLError::new(err, err_msg));
2181        }
2182        Ok(isl_rs_result)
2183    }
2184
2185    /// Wraps `isl_set_is_singleton`.
2186    pub fn is_singleton(&self) -> Result<bool, LibISLError> {
2187        let set = self;
2188        let isl_rs_ctx = set.get_ctx();
2189        let set = set.ptr;
2190        let isl_rs_result = unsafe { isl_set_is_singleton(set) };
2191        let isl_rs_result = match isl_rs_result {
2192            0 => false,
2193            1 => true,
2194            _ => {
2195                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2196            }
2197        };
2198        let err = isl_rs_ctx.last_error();
2199        if err != Error::None_ {
2200            let err_msg = isl_rs_ctx.last_error_msg();
2201            isl_rs_ctx.reset_error();
2202            return Err(LibISLError::new(err, err_msg));
2203        }
2204        Ok(isl_rs_result)
2205    }
2206
2207    /// Wraps `isl_set_is_strict_subset`.
2208    pub fn is_strict_subset(&self, set2: &Set) -> Result<bool, LibISLError> {
2209        let set1 = self;
2210        let isl_rs_ctx = set1.get_ctx();
2211        let set1 = set1.ptr;
2212        let set2 = set2.ptr;
2213        let isl_rs_result = unsafe { isl_set_is_strict_subset(set1, set2) };
2214        let isl_rs_result = match isl_rs_result {
2215            0 => false,
2216            1 => true,
2217            _ => {
2218                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2219            }
2220        };
2221        let err = isl_rs_ctx.last_error();
2222        if err != Error::None_ {
2223            let err_msg = isl_rs_ctx.last_error_msg();
2224            isl_rs_ctx.reset_error();
2225            return Err(LibISLError::new(err, err_msg));
2226        }
2227        Ok(isl_rs_result)
2228    }
2229
2230    /// Wraps `isl_set_is_subset`.
2231    pub fn is_subset(&self, set2: &Set) -> Result<bool, LibISLError> {
2232        let set1 = self;
2233        let isl_rs_ctx = set1.get_ctx();
2234        let set1 = set1.ptr;
2235        let set2 = set2.ptr;
2236        let isl_rs_result = unsafe { isl_set_is_subset(set1, set2) };
2237        let isl_rs_result = match isl_rs_result {
2238            0 => false,
2239            1 => true,
2240            _ => {
2241                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2242            }
2243        };
2244        let err = isl_rs_ctx.last_error();
2245        if err != Error::None_ {
2246            let err_msg = isl_rs_ctx.last_error_msg();
2247            isl_rs_ctx.reset_error();
2248            return Err(LibISLError::new(err, err_msg));
2249        }
2250        Ok(isl_rs_result)
2251    }
2252
2253    /// Wraps `isl_set_is_wrapping`.
2254    pub fn is_wrapping(&self) -> Result<bool, LibISLError> {
2255        let set = self;
2256        let isl_rs_ctx = set.get_ctx();
2257        let set = set.ptr;
2258        let isl_rs_result = unsafe { isl_set_is_wrapping(set) };
2259        let isl_rs_result = match isl_rs_result {
2260            0 => false,
2261            1 => true,
2262            _ => {
2263                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2264            }
2265        };
2266        let err = isl_rs_ctx.last_error();
2267        if err != Error::None_ {
2268            let err_msg = isl_rs_ctx.last_error_msg();
2269            isl_rs_ctx.reset_error();
2270            return Err(LibISLError::new(err, err_msg));
2271        }
2272        Ok(isl_rs_result)
2273    }
2274
2275    /// Wraps `isl_set_lex_ge_set`.
2276    pub fn lex_ge_set(self, set2: Set) -> Result<Map, LibISLError> {
2277        let set1 = self;
2278        let isl_rs_ctx = set1.get_ctx();
2279        let mut set1 = set1;
2280        set1.do_not_free_on_drop();
2281        let set1 = set1.ptr;
2282        let mut set2 = set2;
2283        set2.do_not_free_on_drop();
2284        let set2 = set2.ptr;
2285        let isl_rs_result = unsafe { isl_set_lex_ge_set(set1, set2) };
2286        let isl_rs_result = Map { ptr: isl_rs_result,
2287                                  should_free_on_drop: true };
2288        let err = isl_rs_ctx.last_error();
2289        if err != Error::None_ {
2290            let err_msg = isl_rs_ctx.last_error_msg();
2291            isl_rs_ctx.reset_error();
2292            return Err(LibISLError::new(err, err_msg));
2293        }
2294        Ok(isl_rs_result)
2295    }
2296
2297    /// Wraps `isl_set_lex_gt_set`.
2298    pub fn lex_gt_set(self, set2: Set) -> Result<Map, LibISLError> {
2299        let set1 = self;
2300        let isl_rs_ctx = set1.get_ctx();
2301        let mut set1 = set1;
2302        set1.do_not_free_on_drop();
2303        let set1 = set1.ptr;
2304        let mut set2 = set2;
2305        set2.do_not_free_on_drop();
2306        let set2 = set2.ptr;
2307        let isl_rs_result = unsafe { isl_set_lex_gt_set(set1, set2) };
2308        let isl_rs_result = Map { ptr: isl_rs_result,
2309                                  should_free_on_drop: true };
2310        let err = isl_rs_ctx.last_error();
2311        if err != Error::None_ {
2312            let err_msg = isl_rs_ctx.last_error_msg();
2313            isl_rs_ctx.reset_error();
2314            return Err(LibISLError::new(err, err_msg));
2315        }
2316        Ok(isl_rs_result)
2317    }
2318
2319    /// Wraps `isl_set_lex_le_set`.
2320    pub fn lex_le_set(self, set2: Set) -> Result<Map, LibISLError> {
2321        let set1 = self;
2322        let isl_rs_ctx = set1.get_ctx();
2323        let mut set1 = set1;
2324        set1.do_not_free_on_drop();
2325        let set1 = set1.ptr;
2326        let mut set2 = set2;
2327        set2.do_not_free_on_drop();
2328        let set2 = set2.ptr;
2329        let isl_rs_result = unsafe { isl_set_lex_le_set(set1, set2) };
2330        let isl_rs_result = Map { ptr: isl_rs_result,
2331                                  should_free_on_drop: true };
2332        let err = isl_rs_ctx.last_error();
2333        if err != Error::None_ {
2334            let err_msg = isl_rs_ctx.last_error_msg();
2335            isl_rs_ctx.reset_error();
2336            return Err(LibISLError::new(err, err_msg));
2337        }
2338        Ok(isl_rs_result)
2339    }
2340
2341    /// Wraps `isl_set_lex_lt_set`.
2342    pub fn lex_lt_set(self, set2: Set) -> Result<Map, LibISLError> {
2343        let set1 = self;
2344        let isl_rs_ctx = set1.get_ctx();
2345        let mut set1 = set1;
2346        set1.do_not_free_on_drop();
2347        let set1 = set1.ptr;
2348        let mut set2 = set2;
2349        set2.do_not_free_on_drop();
2350        let set2 = set2.ptr;
2351        let isl_rs_result = unsafe { isl_set_lex_lt_set(set1, set2) };
2352        let isl_rs_result = Map { ptr: isl_rs_result,
2353                                  should_free_on_drop: true };
2354        let err = isl_rs_ctx.last_error();
2355        if err != Error::None_ {
2356            let err_msg = isl_rs_ctx.last_error_msg();
2357            isl_rs_ctx.reset_error();
2358            return Err(LibISLError::new(err, err_msg));
2359        }
2360        Ok(isl_rs_result)
2361    }
2362
2363    /// Wraps `isl_set_lexmax`.
2364    pub fn lexmax(self) -> Result<Set, LibISLError> {
2365        let set = self;
2366        let isl_rs_ctx = set.get_ctx();
2367        let mut set = set;
2368        set.do_not_free_on_drop();
2369        let set = set.ptr;
2370        let isl_rs_result = unsafe { isl_set_lexmax(set) };
2371        let isl_rs_result = Set { ptr: isl_rs_result,
2372                                  should_free_on_drop: true };
2373        let err = isl_rs_ctx.last_error();
2374        if err != Error::None_ {
2375            let err_msg = isl_rs_ctx.last_error_msg();
2376            isl_rs_ctx.reset_error();
2377            return Err(LibISLError::new(err, err_msg));
2378        }
2379        Ok(isl_rs_result)
2380    }
2381
2382    /// Wraps `isl_set_lexmax_pw_multi_aff`.
2383    pub fn lexmax_pw_multi_aff(self) -> Result<PwMultiAff, LibISLError> {
2384        let set = self;
2385        let isl_rs_ctx = set.get_ctx();
2386        let mut set = set;
2387        set.do_not_free_on_drop();
2388        let set = set.ptr;
2389        let isl_rs_result = unsafe { isl_set_lexmax_pw_multi_aff(set) };
2390        let isl_rs_result = PwMultiAff { ptr: isl_rs_result,
2391                                         should_free_on_drop: true };
2392        let err = isl_rs_ctx.last_error();
2393        if err != Error::None_ {
2394            let err_msg = isl_rs_ctx.last_error_msg();
2395            isl_rs_ctx.reset_error();
2396            return Err(LibISLError::new(err, err_msg));
2397        }
2398        Ok(isl_rs_result)
2399    }
2400
2401    /// Wraps `isl_set_lexmin`.
2402    pub fn lexmin(self) -> Result<Set, LibISLError> {
2403        let set = self;
2404        let isl_rs_ctx = set.get_ctx();
2405        let mut set = set;
2406        set.do_not_free_on_drop();
2407        let set = set.ptr;
2408        let isl_rs_result = unsafe { isl_set_lexmin(set) };
2409        let isl_rs_result = Set { ptr: isl_rs_result,
2410                                  should_free_on_drop: true };
2411        let err = isl_rs_ctx.last_error();
2412        if err != Error::None_ {
2413            let err_msg = isl_rs_ctx.last_error_msg();
2414            isl_rs_ctx.reset_error();
2415            return Err(LibISLError::new(err, err_msg));
2416        }
2417        Ok(isl_rs_result)
2418    }
2419
2420    /// Wraps `isl_set_lexmin_pw_multi_aff`.
2421    pub fn lexmin_pw_multi_aff(self) -> Result<PwMultiAff, LibISLError> {
2422        let set = self;
2423        let isl_rs_ctx = set.get_ctx();
2424        let mut set = set;
2425        set.do_not_free_on_drop();
2426        let set = set.ptr;
2427        let isl_rs_result = unsafe { isl_set_lexmin_pw_multi_aff(set) };
2428        let isl_rs_result = PwMultiAff { ptr: isl_rs_result,
2429                                         should_free_on_drop: true };
2430        let err = isl_rs_ctx.last_error();
2431        if err != Error::None_ {
2432            let err_msg = isl_rs_ctx.last_error_msg();
2433            isl_rs_ctx.reset_error();
2434            return Err(LibISLError::new(err, err_msg));
2435        }
2436        Ok(isl_rs_result)
2437    }
2438
2439    /// Wraps `isl_set_lift`.
2440    pub fn lift(self) -> Result<Set, LibISLError> {
2441        let set = self;
2442        let isl_rs_ctx = set.get_ctx();
2443        let mut set = set;
2444        set.do_not_free_on_drop();
2445        let set = set.ptr;
2446        let isl_rs_result = unsafe { isl_set_lift(set) };
2447        let isl_rs_result = Set { ptr: isl_rs_result,
2448                                  should_free_on_drop: true };
2449        let err = isl_rs_ctx.last_error();
2450        if err != Error::None_ {
2451            let err_msg = isl_rs_ctx.last_error_msg();
2452            isl_rs_ctx.reset_error();
2453            return Err(LibISLError::new(err, err_msg));
2454        }
2455        Ok(isl_rs_result)
2456    }
2457
2458    /// Wraps `isl_set_lower_bound_multi_pw_aff`.
2459    pub fn lower_bound_multi_pw_aff(self, lower: MultiPwAff) -> Result<Set, LibISLError> {
2460        let set = self;
2461        let isl_rs_ctx = set.get_ctx();
2462        let mut set = set;
2463        set.do_not_free_on_drop();
2464        let set = set.ptr;
2465        let mut lower = lower;
2466        lower.do_not_free_on_drop();
2467        let lower = lower.ptr;
2468        let isl_rs_result = unsafe { isl_set_lower_bound_multi_pw_aff(set, lower) };
2469        let isl_rs_result = Set { ptr: isl_rs_result,
2470                                  should_free_on_drop: true };
2471        let err = isl_rs_ctx.last_error();
2472        if err != Error::None_ {
2473            let err_msg = isl_rs_ctx.last_error_msg();
2474            isl_rs_ctx.reset_error();
2475            return Err(LibISLError::new(err, err_msg));
2476        }
2477        Ok(isl_rs_result)
2478    }
2479
2480    /// Wraps `isl_set_lower_bound_multi_val`.
2481    pub fn lower_bound_multi_val(self, lower: MultiVal) -> Result<Set, LibISLError> {
2482        let set = self;
2483        let isl_rs_ctx = set.get_ctx();
2484        let mut set = set;
2485        set.do_not_free_on_drop();
2486        let set = set.ptr;
2487        let mut lower = lower;
2488        lower.do_not_free_on_drop();
2489        let lower = lower.ptr;
2490        let isl_rs_result = unsafe { isl_set_lower_bound_multi_val(set, lower) };
2491        let isl_rs_result = Set { ptr: isl_rs_result,
2492                                  should_free_on_drop: true };
2493        let err = isl_rs_ctx.last_error();
2494        if err != Error::None_ {
2495            let err_msg = isl_rs_ctx.last_error_msg();
2496            isl_rs_ctx.reset_error();
2497            return Err(LibISLError::new(err, err_msg));
2498        }
2499        Ok(isl_rs_result)
2500    }
2501
2502    /// Wraps `isl_set_lower_bound_si`.
2503    pub fn lower_bound_si(self, type_: DimType, pos: u32, value: i32) -> Result<Set, LibISLError> {
2504        let set = self;
2505        let isl_rs_ctx = set.get_ctx();
2506        let mut set = set;
2507        set.do_not_free_on_drop();
2508        let set = set.ptr;
2509        let type_ = type_.to_i32();
2510        let isl_rs_result = unsafe { isl_set_lower_bound_si(set, type_, pos, value) };
2511        let isl_rs_result = Set { ptr: isl_rs_result,
2512                                  should_free_on_drop: true };
2513        let err = isl_rs_ctx.last_error();
2514        if err != Error::None_ {
2515            let err_msg = isl_rs_ctx.last_error_msg();
2516            isl_rs_ctx.reset_error();
2517            return Err(LibISLError::new(err, err_msg));
2518        }
2519        Ok(isl_rs_result)
2520    }
2521
2522    /// Wraps `isl_set_lower_bound_val`.
2523    pub fn lower_bound_val(self, type_: DimType, pos: u32, value: Val) -> Result<Set, LibISLError> {
2524        let set = self;
2525        let isl_rs_ctx = set.get_ctx();
2526        let mut set = set;
2527        set.do_not_free_on_drop();
2528        let set = set.ptr;
2529        let type_ = type_.to_i32();
2530        let mut value = value;
2531        value.do_not_free_on_drop();
2532        let value = value.ptr;
2533        let isl_rs_result = unsafe { isl_set_lower_bound_val(set, type_, pos, value) };
2534        let isl_rs_result = Set { ptr: isl_rs_result,
2535                                  should_free_on_drop: true };
2536        let err = isl_rs_ctx.last_error();
2537        if err != Error::None_ {
2538            let err_msg = isl_rs_ctx.last_error_msg();
2539            isl_rs_ctx.reset_error();
2540            return Err(LibISLError::new(err, err_msg));
2541        }
2542        Ok(isl_rs_result)
2543    }
2544
2545    /// Wraps `isl_set_make_disjoint`.
2546    pub fn make_disjoint(self) -> Result<Set, LibISLError> {
2547        let set = self;
2548        let isl_rs_ctx = set.get_ctx();
2549        let mut set = set;
2550        set.do_not_free_on_drop();
2551        let set = set.ptr;
2552        let isl_rs_result = unsafe { isl_set_make_disjoint(set) };
2553        let isl_rs_result = Set { ptr: isl_rs_result,
2554                                  should_free_on_drop: true };
2555        let err = isl_rs_ctx.last_error();
2556        if err != Error::None_ {
2557            let err_msg = isl_rs_ctx.last_error_msg();
2558            isl_rs_ctx.reset_error();
2559            return Err(LibISLError::new(err, err_msg));
2560        }
2561        Ok(isl_rs_result)
2562    }
2563
2564    /// Wraps `isl_set_max_multi_pw_aff`.
2565    pub fn max_multi_pw_aff(self) -> Result<MultiPwAff, LibISLError> {
2566        let set = self;
2567        let isl_rs_ctx = set.get_ctx();
2568        let mut set = set;
2569        set.do_not_free_on_drop();
2570        let set = set.ptr;
2571        let isl_rs_result = unsafe { isl_set_max_multi_pw_aff(set) };
2572        let isl_rs_result = MultiPwAff { ptr: isl_rs_result,
2573                                         should_free_on_drop: true };
2574        let err = isl_rs_ctx.last_error();
2575        if err != Error::None_ {
2576            let err_msg = isl_rs_ctx.last_error_msg();
2577            isl_rs_ctx.reset_error();
2578            return Err(LibISLError::new(err, err_msg));
2579        }
2580        Ok(isl_rs_result)
2581    }
2582
2583    /// Wraps `isl_set_max_val`.
2584    pub fn max_val(&self, obj: &Aff) -> Result<Val, LibISLError> {
2585        let set = self;
2586        let isl_rs_ctx = set.get_ctx();
2587        let set = set.ptr;
2588        let obj = obj.ptr;
2589        let isl_rs_result = unsafe { isl_set_max_val(set, obj) };
2590        let isl_rs_result = Val { ptr: isl_rs_result,
2591                                  should_free_on_drop: true };
2592        let err = isl_rs_ctx.last_error();
2593        if err != Error::None_ {
2594            let err_msg = isl_rs_ctx.last_error_msg();
2595            isl_rs_ctx.reset_error();
2596            return Err(LibISLError::new(err, err_msg));
2597        }
2598        Ok(isl_rs_result)
2599    }
2600
2601    /// Wraps `isl_set_min_multi_pw_aff`.
2602    pub fn min_multi_pw_aff(self) -> Result<MultiPwAff, LibISLError> {
2603        let set = self;
2604        let isl_rs_ctx = set.get_ctx();
2605        let mut set = set;
2606        set.do_not_free_on_drop();
2607        let set = set.ptr;
2608        let isl_rs_result = unsafe { isl_set_min_multi_pw_aff(set) };
2609        let isl_rs_result = MultiPwAff { ptr: isl_rs_result,
2610                                         should_free_on_drop: true };
2611        let err = isl_rs_ctx.last_error();
2612        if err != Error::None_ {
2613            let err_msg = isl_rs_ctx.last_error_msg();
2614            isl_rs_ctx.reset_error();
2615            return Err(LibISLError::new(err, err_msg));
2616        }
2617        Ok(isl_rs_result)
2618    }
2619
2620    /// Wraps `isl_set_min_val`.
2621    pub fn min_val(&self, obj: &Aff) -> Result<Val, LibISLError> {
2622        let set = self;
2623        let isl_rs_ctx = set.get_ctx();
2624        let set = set.ptr;
2625        let obj = obj.ptr;
2626        let isl_rs_result = unsafe { isl_set_min_val(set, obj) };
2627        let isl_rs_result = Val { ptr: isl_rs_result,
2628                                  should_free_on_drop: true };
2629        let err = isl_rs_ctx.last_error();
2630        if err != Error::None_ {
2631            let err_msg = isl_rs_ctx.last_error_msg();
2632            isl_rs_ctx.reset_error();
2633            return Err(LibISLError::new(err, err_msg));
2634        }
2635        Ok(isl_rs_result)
2636    }
2637
2638    /// Wraps `isl_set_move_dims`.
2639    pub fn move_dims(self, dst_type: DimType, dst_pos: u32, src_type: DimType, src_pos: u32,
2640                     n: u32)
2641                     -> Result<Set, LibISLError> {
2642        let set = self;
2643        let isl_rs_ctx = set.get_ctx();
2644        let mut set = set;
2645        set.do_not_free_on_drop();
2646        let set = set.ptr;
2647        let dst_type = dst_type.to_i32();
2648        let src_type = src_type.to_i32();
2649        let isl_rs_result =
2650            unsafe { isl_set_move_dims(set, dst_type, dst_pos, src_type, src_pos, n) };
2651        let isl_rs_result = Set { ptr: isl_rs_result,
2652                                  should_free_on_drop: true };
2653        let err = isl_rs_ctx.last_error();
2654        if err != Error::None_ {
2655            let err_msg = isl_rs_ctx.last_error_msg();
2656            isl_rs_ctx.reset_error();
2657            return Err(LibISLError::new(err, err_msg));
2658        }
2659        Ok(isl_rs_result)
2660    }
2661
2662    /// Wraps `isl_set_n_basic_set`.
2663    pub fn n_basic_set(&self) -> Result<i32, LibISLError> {
2664        let set = self;
2665        let isl_rs_ctx = set.get_ctx();
2666        let set = set.ptr;
2667        let isl_rs_result = unsafe { isl_set_n_basic_set(set) };
2668        let err = isl_rs_ctx.last_error();
2669        if err != Error::None_ {
2670            let err_msg = isl_rs_ctx.last_error_msg();
2671            isl_rs_ctx.reset_error();
2672            return Err(LibISLError::new(err, err_msg));
2673        }
2674        Ok(isl_rs_result)
2675    }
2676
2677    /// Wraps `isl_set_n_dim`.
2678    pub fn n_dim(&self) -> Result<i32, LibISLError> {
2679        let set = self;
2680        let isl_rs_ctx = set.get_ctx();
2681        let set = set.ptr;
2682        let isl_rs_result = unsafe { isl_set_n_dim(set) };
2683        let err = isl_rs_ctx.last_error();
2684        if err != Error::None_ {
2685            let err_msg = isl_rs_ctx.last_error_msg();
2686            isl_rs_ctx.reset_error();
2687            return Err(LibISLError::new(err, err_msg));
2688        }
2689        Ok(isl_rs_result)
2690    }
2691
2692    /// Wraps `isl_set_n_param`.
2693    pub fn n_param(&self) -> Result<i32, LibISLError> {
2694        let set = self;
2695        let isl_rs_ctx = set.get_ctx();
2696        let set = set.ptr;
2697        let isl_rs_result = unsafe { isl_set_n_param(set) };
2698        let err = isl_rs_ctx.last_error();
2699        if err != Error::None_ {
2700            let err_msg = isl_rs_ctx.last_error_msg();
2701            isl_rs_ctx.reset_error();
2702            return Err(LibISLError::new(err, err_msg));
2703        }
2704        Ok(isl_rs_result)
2705    }
2706
2707    /// Wraps `isl_set_nat_universe`.
2708    pub fn nat_universe(space: Space) -> Result<Set, LibISLError> {
2709        let isl_rs_ctx = space.get_ctx();
2710        let mut space = space;
2711        space.do_not_free_on_drop();
2712        let space = space.ptr;
2713        let isl_rs_result = unsafe { isl_set_nat_universe(space) };
2714        let isl_rs_result = Set { ptr: isl_rs_result,
2715                                  should_free_on_drop: true };
2716        let err = isl_rs_ctx.last_error();
2717        if err != Error::None_ {
2718            let err_msg = isl_rs_ctx.last_error_msg();
2719            isl_rs_ctx.reset_error();
2720            return Err(LibISLError::new(err, err_msg));
2721        }
2722        Ok(isl_rs_result)
2723    }
2724
2725    /// Wraps `isl_set_neg`.
2726    pub fn neg(self) -> Result<Set, LibISLError> {
2727        let set = self;
2728        let isl_rs_ctx = set.get_ctx();
2729        let mut set = set;
2730        set.do_not_free_on_drop();
2731        let set = set.ptr;
2732        let isl_rs_result = unsafe { isl_set_neg(set) };
2733        let isl_rs_result = Set { ptr: isl_rs_result,
2734                                  should_free_on_drop: true };
2735        let err = isl_rs_ctx.last_error();
2736        if err != Error::None_ {
2737            let err_msg = isl_rs_ctx.last_error_msg();
2738            isl_rs_ctx.reset_error();
2739            return Err(LibISLError::new(err, err_msg));
2740        }
2741        Ok(isl_rs_result)
2742    }
2743
2744    /// Wraps `isl_set_param_pw_aff_on_domain_id`.
2745    pub fn param_pw_aff_on_domain_id(self, id: Id) -> Result<PwAff, LibISLError> {
2746        let domain = self;
2747        let isl_rs_ctx = domain.get_ctx();
2748        let mut domain = domain;
2749        domain.do_not_free_on_drop();
2750        let domain = domain.ptr;
2751        let mut id = id;
2752        id.do_not_free_on_drop();
2753        let id = id.ptr;
2754        let isl_rs_result = unsafe { isl_set_param_pw_aff_on_domain_id(domain, id) };
2755        let isl_rs_result = PwAff { ptr: isl_rs_result,
2756                                    should_free_on_drop: true };
2757        let err = isl_rs_ctx.last_error();
2758        if err != Error::None_ {
2759            let err_msg = isl_rs_ctx.last_error_msg();
2760            isl_rs_ctx.reset_error();
2761            return Err(LibISLError::new(err, err_msg));
2762        }
2763        Ok(isl_rs_result)
2764    }
2765
2766    /// Wraps `isl_set_params`.
2767    pub fn params(self) -> Result<Set, LibISLError> {
2768        let set = self;
2769        let isl_rs_ctx = set.get_ctx();
2770        let mut set = set;
2771        set.do_not_free_on_drop();
2772        let set = set.ptr;
2773        let isl_rs_result = unsafe { isl_set_params(set) };
2774        let isl_rs_result = Set { ptr: isl_rs_result,
2775                                  should_free_on_drop: true };
2776        let err = isl_rs_ctx.last_error();
2777        if err != Error::None_ {
2778            let err_msg = isl_rs_ctx.last_error_msg();
2779            isl_rs_ctx.reset_error();
2780            return Err(LibISLError::new(err, err_msg));
2781        }
2782        Ok(isl_rs_result)
2783    }
2784
2785    /// Wraps `isl_set_plain_cmp`.
2786    pub fn plain_cmp(&self, set2: &Set) -> Result<i32, LibISLError> {
2787        let set1 = self;
2788        let isl_rs_ctx = set1.get_ctx();
2789        let set1 = set1.ptr;
2790        let set2 = set2.ptr;
2791        let isl_rs_result = unsafe { isl_set_plain_cmp(set1, set2) };
2792        let err = isl_rs_ctx.last_error();
2793        if err != Error::None_ {
2794            let err_msg = isl_rs_ctx.last_error_msg();
2795            isl_rs_ctx.reset_error();
2796            return Err(LibISLError::new(err, err_msg));
2797        }
2798        Ok(isl_rs_result)
2799    }
2800
2801    /// Wraps `isl_set_plain_get_val_if_fixed`.
2802    pub fn plain_get_val_if_fixed(&self, type_: DimType, pos: u32) -> Result<Val, LibISLError> {
2803        let set = self;
2804        let isl_rs_ctx = set.get_ctx();
2805        let set = set.ptr;
2806        let type_ = type_.to_i32();
2807        let isl_rs_result = unsafe { isl_set_plain_get_val_if_fixed(set, type_, pos) };
2808        let isl_rs_result = Val { ptr: isl_rs_result,
2809                                  should_free_on_drop: true };
2810        let err = isl_rs_ctx.last_error();
2811        if err != Error::None_ {
2812            let err_msg = isl_rs_ctx.last_error_msg();
2813            isl_rs_ctx.reset_error();
2814            return Err(LibISLError::new(err, err_msg));
2815        }
2816        Ok(isl_rs_result)
2817    }
2818
2819    /// Wraps `isl_set_plain_is_disjoint`.
2820    pub fn plain_is_disjoint(&self, set2: &Set) -> Result<bool, LibISLError> {
2821        let set1 = self;
2822        let isl_rs_ctx = set1.get_ctx();
2823        let set1 = set1.ptr;
2824        let set2 = set2.ptr;
2825        let isl_rs_result = unsafe { isl_set_plain_is_disjoint(set1, set2) };
2826        let isl_rs_result = match isl_rs_result {
2827            0 => false,
2828            1 => true,
2829            _ => {
2830                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2831            }
2832        };
2833        let err = isl_rs_ctx.last_error();
2834        if err != Error::None_ {
2835            let err_msg = isl_rs_ctx.last_error_msg();
2836            isl_rs_ctx.reset_error();
2837            return Err(LibISLError::new(err, err_msg));
2838        }
2839        Ok(isl_rs_result)
2840    }
2841
2842    /// Wraps `isl_set_plain_is_empty`.
2843    pub fn plain_is_empty(&self) -> Result<bool, LibISLError> {
2844        let set = self;
2845        let isl_rs_ctx = set.get_ctx();
2846        let set = set.ptr;
2847        let isl_rs_result = unsafe { isl_set_plain_is_empty(set) };
2848        let isl_rs_result = match isl_rs_result {
2849            0 => false,
2850            1 => true,
2851            _ => {
2852                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2853            }
2854        };
2855        let err = isl_rs_ctx.last_error();
2856        if err != Error::None_ {
2857            let err_msg = isl_rs_ctx.last_error_msg();
2858            isl_rs_ctx.reset_error();
2859            return Err(LibISLError::new(err, err_msg));
2860        }
2861        Ok(isl_rs_result)
2862    }
2863
2864    /// Wraps `isl_set_plain_is_equal`.
2865    pub fn plain_is_equal(&self, set2: &Set) -> Result<bool, LibISLError> {
2866        let set1 = self;
2867        let isl_rs_ctx = set1.get_ctx();
2868        let set1 = set1.ptr;
2869        let set2 = set2.ptr;
2870        let isl_rs_result = unsafe { isl_set_plain_is_equal(set1, set2) };
2871        let isl_rs_result = match isl_rs_result {
2872            0 => false,
2873            1 => true,
2874            _ => {
2875                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2876            }
2877        };
2878        let err = isl_rs_ctx.last_error();
2879        if err != Error::None_ {
2880            let err_msg = isl_rs_ctx.last_error_msg();
2881            isl_rs_ctx.reset_error();
2882            return Err(LibISLError::new(err, err_msg));
2883        }
2884        Ok(isl_rs_result)
2885    }
2886
2887    /// Wraps `isl_set_plain_is_universe`.
2888    pub fn plain_is_universe(&self) -> Result<bool, LibISLError> {
2889        let set = self;
2890        let isl_rs_ctx = set.get_ctx();
2891        let set = set.ptr;
2892        let isl_rs_result = unsafe { isl_set_plain_is_universe(set) };
2893        let isl_rs_result = match isl_rs_result {
2894            0 => false,
2895            1 => true,
2896            _ => {
2897                return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
2898            }
2899        };
2900        let err = isl_rs_ctx.last_error();
2901        if err != Error::None_ {
2902            let err_msg = isl_rs_ctx.last_error_msg();
2903            isl_rs_ctx.reset_error();
2904            return Err(LibISLError::new(err, err_msg));
2905        }
2906        Ok(isl_rs_result)
2907    }
2908
2909    /// Wraps `isl_set_plain_unshifted_simple_hull`.
2910    pub fn plain_unshifted_simple_hull(self) -> Result<BasicSet, LibISLError> {
2911        let set = self;
2912        let isl_rs_ctx = set.get_ctx();
2913        let mut set = set;
2914        set.do_not_free_on_drop();
2915        let set = set.ptr;
2916        let isl_rs_result = unsafe { isl_set_plain_unshifted_simple_hull(set) };
2917        let isl_rs_result = BasicSet { ptr: isl_rs_result,
2918                                       should_free_on_drop: true };
2919        let err = isl_rs_ctx.last_error();
2920        if err != Error::None_ {
2921            let err_msg = isl_rs_ctx.last_error_msg();
2922            isl_rs_ctx.reset_error();
2923            return Err(LibISLError::new(err, err_msg));
2924        }
2925        Ok(isl_rs_result)
2926    }
2927
2928    /// Wraps `isl_set_polyhedral_hull`.
2929    pub fn polyhedral_hull(self) -> Result<BasicSet, LibISLError> {
2930        let set = self;
2931        let isl_rs_ctx = set.get_ctx();
2932        let mut set = set;
2933        set.do_not_free_on_drop();
2934        let set = set.ptr;
2935        let isl_rs_result = unsafe { isl_set_polyhedral_hull(set) };
2936        let isl_rs_result = BasicSet { ptr: isl_rs_result,
2937                                       should_free_on_drop: true };
2938        let err = isl_rs_ctx.last_error();
2939        if err != Error::None_ {
2940            let err_msg = isl_rs_ctx.last_error_msg();
2941            isl_rs_ctx.reset_error();
2942            return Err(LibISLError::new(err, err_msg));
2943        }
2944        Ok(isl_rs_result)
2945    }
2946
2947    /// Wraps `isl_set_preimage_multi_aff`.
2948    pub fn preimage_multi_aff(self, ma: MultiAff) -> Result<Set, LibISLError> {
2949        let set = self;
2950        let isl_rs_ctx = set.get_ctx();
2951        let mut set = set;
2952        set.do_not_free_on_drop();
2953        let set = set.ptr;
2954        let mut ma = ma;
2955        ma.do_not_free_on_drop();
2956        let ma = ma.ptr;
2957        let isl_rs_result = unsafe { isl_set_preimage_multi_aff(set, ma) };
2958        let isl_rs_result = Set { ptr: isl_rs_result,
2959                                  should_free_on_drop: true };
2960        let err = isl_rs_ctx.last_error();
2961        if err != Error::None_ {
2962            let err_msg = isl_rs_ctx.last_error_msg();
2963            isl_rs_ctx.reset_error();
2964            return Err(LibISLError::new(err, err_msg));
2965        }
2966        Ok(isl_rs_result)
2967    }
2968
2969    /// Wraps `isl_set_preimage_multi_pw_aff`.
2970    pub fn preimage_multi_pw_aff(self, mpa: MultiPwAff) -> Result<Set, LibISLError> {
2971        let set = self;
2972        let isl_rs_ctx = set.get_ctx();
2973        let mut set = set;
2974        set.do_not_free_on_drop();
2975        let set = set.ptr;
2976        let mut mpa = mpa;
2977        mpa.do_not_free_on_drop();
2978        let mpa = mpa.ptr;
2979        let isl_rs_result = unsafe { isl_set_preimage_multi_pw_aff(set, mpa) };
2980        let isl_rs_result = Set { ptr: isl_rs_result,
2981                                  should_free_on_drop: true };
2982        let err = isl_rs_ctx.last_error();
2983        if err != Error::None_ {
2984            let err_msg = isl_rs_ctx.last_error_msg();
2985            isl_rs_ctx.reset_error();
2986            return Err(LibISLError::new(err, err_msg));
2987        }
2988        Ok(isl_rs_result)
2989    }
2990
2991    /// Wraps `isl_set_preimage_pw_multi_aff`.
2992    pub fn preimage_pw_multi_aff(self, pma: PwMultiAff) -> Result<Set, LibISLError> {
2993        let set = self;
2994        let isl_rs_ctx = set.get_ctx();
2995        let mut set = set;
2996        set.do_not_free_on_drop();
2997        let set = set.ptr;
2998        let mut pma = pma;
2999        pma.do_not_free_on_drop();
3000        let pma = pma.ptr;
3001        let isl_rs_result = unsafe { isl_set_preimage_pw_multi_aff(set, pma) };
3002        let isl_rs_result = Set { ptr: isl_rs_result,
3003                                  should_free_on_drop: true };
3004        let err = isl_rs_ctx.last_error();
3005        if err != Error::None_ {
3006            let err_msg = isl_rs_ctx.last_error_msg();
3007            isl_rs_ctx.reset_error();
3008            return Err(LibISLError::new(err, err_msg));
3009        }
3010        Ok(isl_rs_result)
3011    }
3012
3013    /// Wraps `isl_set_product`.
3014    pub fn product(self, set2: Set) -> Result<Set, LibISLError> {
3015        let set1 = self;
3016        let isl_rs_ctx = set1.get_ctx();
3017        let mut set1 = set1;
3018        set1.do_not_free_on_drop();
3019        let set1 = set1.ptr;
3020        let mut set2 = set2;
3021        set2.do_not_free_on_drop();
3022        let set2 = set2.ptr;
3023        let isl_rs_result = unsafe { isl_set_product(set1, set2) };
3024        let isl_rs_result = Set { ptr: isl_rs_result,
3025                                  should_free_on_drop: true };
3026        let err = isl_rs_ctx.last_error();
3027        if err != Error::None_ {
3028            let err_msg = isl_rs_ctx.last_error_msg();
3029            isl_rs_ctx.reset_error();
3030            return Err(LibISLError::new(err, err_msg));
3031        }
3032        Ok(isl_rs_result)
3033    }
3034
3035    /// Wraps `isl_set_project_onto_map`.
3036    pub fn project_onto_map(self, type_: DimType, first: u32, n: u32) -> Result<Map, LibISLError> {
3037        let set = self;
3038        let isl_rs_ctx = set.get_ctx();
3039        let mut set = set;
3040        set.do_not_free_on_drop();
3041        let set = set.ptr;
3042        let type_ = type_.to_i32();
3043        let isl_rs_result = unsafe { isl_set_project_onto_map(set, type_, first, n) };
3044        let isl_rs_result = Map { ptr: isl_rs_result,
3045                                  should_free_on_drop: true };
3046        let err = isl_rs_ctx.last_error();
3047        if err != Error::None_ {
3048            let err_msg = isl_rs_ctx.last_error_msg();
3049            isl_rs_ctx.reset_error();
3050            return Err(LibISLError::new(err, err_msg));
3051        }
3052        Ok(isl_rs_result)
3053    }
3054
3055    /// Wraps `isl_set_project_out`.
3056    pub fn project_out(self, type_: DimType, first: u32, n: u32) -> Result<Set, LibISLError> {
3057        let set = self;
3058        let isl_rs_ctx = set.get_ctx();
3059        let mut set = set;
3060        set.do_not_free_on_drop();
3061        let set = set.ptr;
3062        let type_ = type_.to_i32();
3063        let isl_rs_result = unsafe { isl_set_project_out(set, type_, first, n) };
3064        let isl_rs_result = Set { ptr: isl_rs_result,
3065                                  should_free_on_drop: true };
3066        let err = isl_rs_ctx.last_error();
3067        if err != Error::None_ {
3068            let err_msg = isl_rs_ctx.last_error_msg();
3069            isl_rs_ctx.reset_error();
3070            return Err(LibISLError::new(err, err_msg));
3071        }
3072        Ok(isl_rs_result)
3073    }
3074
3075    /// Wraps `isl_set_project_out_all_params`.
3076    pub fn project_out_all_params(self) -> Result<Set, LibISLError> {
3077        let set = self;
3078        let isl_rs_ctx = set.get_ctx();
3079        let mut set = set;
3080        set.do_not_free_on_drop();
3081        let set = set.ptr;
3082        let isl_rs_result = unsafe { isl_set_project_out_all_params(set) };
3083        let isl_rs_result = Set { ptr: isl_rs_result,
3084                                  should_free_on_drop: true };
3085        let err = isl_rs_ctx.last_error();
3086        if err != Error::None_ {
3087            let err_msg = isl_rs_ctx.last_error_msg();
3088            isl_rs_ctx.reset_error();
3089            return Err(LibISLError::new(err, err_msg));
3090        }
3091        Ok(isl_rs_result)
3092    }
3093
3094    /// Wraps `isl_set_project_out_param_id`.
3095    pub fn project_out_param_id(self, id: Id) -> Result<Set, LibISLError> {
3096        let set = self;
3097        let isl_rs_ctx = set.get_ctx();
3098        let mut set = set;
3099        set.do_not_free_on_drop();
3100        let set = set.ptr;
3101        let mut id = id;
3102        id.do_not_free_on_drop();
3103        let id = id.ptr;
3104        let isl_rs_result = unsafe { isl_set_project_out_param_id(set, id) };
3105        let isl_rs_result = Set { ptr: isl_rs_result,
3106                                  should_free_on_drop: true };
3107        let err = isl_rs_ctx.last_error();
3108        if err != Error::None_ {
3109            let err_msg = isl_rs_ctx.last_error_msg();
3110            isl_rs_ctx.reset_error();
3111            return Err(LibISLError::new(err, err_msg));
3112        }
3113        Ok(isl_rs_result)
3114    }
3115
3116    /// Wraps `isl_set_project_out_param_id_list`.
3117    pub fn project_out_param_id_list(self, list: IdList) -> Result<Set, LibISLError> {
3118        let set = self;
3119        let isl_rs_ctx = set.get_ctx();
3120        let mut set = set;
3121        set.do_not_free_on_drop();
3122        let set = set.ptr;
3123        let mut list = list;
3124        list.do_not_free_on_drop();
3125        let list = list.ptr;
3126        let isl_rs_result = unsafe { isl_set_project_out_param_id_list(set, list) };
3127        let isl_rs_result = Set { ptr: isl_rs_result,
3128                                  should_free_on_drop: true };
3129        let err = isl_rs_ctx.last_error();
3130        if err != Error::None_ {
3131            let err_msg = isl_rs_ctx.last_error_msg();
3132            isl_rs_ctx.reset_error();
3133            return Err(LibISLError::new(err, err_msg));
3134        }
3135        Ok(isl_rs_result)
3136    }
3137
3138    /// Wraps `isl_set_pw_aff_on_domain_val`.
3139    pub fn pw_aff_on_domain_val(self, v: Val) -> Result<PwAff, LibISLError> {
3140        let domain = self;
3141        let isl_rs_ctx = domain.get_ctx();
3142        let mut domain = domain;
3143        domain.do_not_free_on_drop();
3144        let domain = domain.ptr;
3145        let mut v = v;
3146        v.do_not_free_on_drop();
3147        let v = v.ptr;
3148        let isl_rs_result = unsafe { isl_set_pw_aff_on_domain_val(domain, v) };
3149        let isl_rs_result = PwAff { ptr: isl_rs_result,
3150                                    should_free_on_drop: true };
3151        let err = isl_rs_ctx.last_error();
3152        if err != Error::None_ {
3153            let err_msg = isl_rs_ctx.last_error_msg();
3154            isl_rs_ctx.reset_error();
3155            return Err(LibISLError::new(err, err_msg));
3156        }
3157        Ok(isl_rs_result)
3158    }
3159
3160    /// Wraps `isl_set_pw_multi_aff_on_domain_multi_val`.
3161    pub fn pw_multi_aff_on_domain_multi_val(self, mv: MultiVal) -> Result<PwMultiAff, LibISLError> {
3162        let domain = self;
3163        let isl_rs_ctx = domain.get_ctx();
3164        let mut domain = domain;
3165        domain.do_not_free_on_drop();
3166        let domain = domain.ptr;
3167        let mut mv = mv;
3168        mv.do_not_free_on_drop();
3169        let mv = mv.ptr;
3170        let isl_rs_result = unsafe { isl_set_pw_multi_aff_on_domain_multi_val(domain, mv) };
3171        let isl_rs_result = PwMultiAff { ptr: isl_rs_result,
3172                                         should_free_on_drop: true };
3173        let err = isl_rs_ctx.last_error();
3174        if err != Error::None_ {
3175            let err_msg = isl_rs_ctx.last_error_msg();
3176            isl_rs_ctx.reset_error();
3177            return Err(LibISLError::new(err, err_msg));
3178        }
3179        Ok(isl_rs_result)
3180    }
3181
3182    /// Wraps `isl_set_read_from_str`.
3183    pub fn read_from_str(ctx: &Context, str_: &str) -> Result<Set, LibISLError> {
3184        let isl_rs_ctx = Context { ptr: ctx.ptr,
3185                                   should_free_on_drop: false };
3186        let ctx = ctx.ptr;
3187        let str_ = CString::new(str_).unwrap();
3188        let str_ = str_.as_ptr();
3189        let isl_rs_result = unsafe { isl_set_read_from_str(ctx, str_) };
3190        let isl_rs_result = Set { ptr: isl_rs_result,
3191                                  should_free_on_drop: true };
3192        let err = isl_rs_ctx.last_error();
3193        if err != Error::None_ {
3194            let err_msg = isl_rs_ctx.last_error_msg();
3195            isl_rs_ctx.reset_error();
3196            return Err(LibISLError::new(err, err_msg));
3197        }
3198        Ok(isl_rs_result)
3199    }
3200
3201    /// Wraps `isl_set_remove_dims`.
3202    pub fn remove_dims(self, type_: DimType, first: u32, n: u32) -> Result<Set, LibISLError> {
3203        let bset = self;
3204        let isl_rs_ctx = bset.get_ctx();
3205        let mut bset = bset;
3206        bset.do_not_free_on_drop();
3207        let bset = bset.ptr;
3208        let type_ = type_.to_i32();
3209        let isl_rs_result = unsafe { isl_set_remove_dims(bset, type_, first, n) };
3210        let isl_rs_result = Set { ptr: isl_rs_result,
3211                                  should_free_on_drop: true };
3212        let err = isl_rs_ctx.last_error();
3213        if err != Error::None_ {
3214            let err_msg = isl_rs_ctx.last_error_msg();
3215            isl_rs_ctx.reset_error();
3216            return Err(LibISLError::new(err, err_msg));
3217        }
3218        Ok(isl_rs_result)
3219    }
3220
3221    /// Wraps `isl_set_remove_divs`.
3222    pub fn remove_divs(self) -> Result<Set, LibISLError> {
3223        let set = self;
3224        let isl_rs_ctx = set.get_ctx();
3225        let mut set = set;
3226        set.do_not_free_on_drop();
3227        let set = set.ptr;
3228        let isl_rs_result = unsafe { isl_set_remove_divs(set) };
3229        let isl_rs_result = Set { ptr: isl_rs_result,
3230                                  should_free_on_drop: true };
3231        let err = isl_rs_ctx.last_error();
3232        if err != Error::None_ {
3233            let err_msg = isl_rs_ctx.last_error_msg();
3234            isl_rs_ctx.reset_error();
3235            return Err(LibISLError::new(err, err_msg));
3236        }
3237        Ok(isl_rs_result)
3238    }
3239
3240    /// Wraps `isl_set_remove_divs_involving_dims`.
3241    pub fn remove_divs_involving_dims(self, type_: DimType, first: u32, n: u32)
3242                                      -> Result<Set, LibISLError> {
3243        let set = self;
3244        let isl_rs_ctx = set.get_ctx();
3245        let mut set = set;
3246        set.do_not_free_on_drop();
3247        let set = set.ptr;
3248        let type_ = type_.to_i32();
3249        let isl_rs_result = unsafe { isl_set_remove_divs_involving_dims(set, type_, first, n) };
3250        let isl_rs_result = Set { ptr: isl_rs_result,
3251                                  should_free_on_drop: true };
3252        let err = isl_rs_ctx.last_error();
3253        if err != Error::None_ {
3254            let err_msg = isl_rs_ctx.last_error_msg();
3255            isl_rs_ctx.reset_error();
3256            return Err(LibISLError::new(err, err_msg));
3257        }
3258        Ok(isl_rs_result)
3259    }
3260
3261    /// Wraps `isl_set_remove_redundancies`.
3262    pub fn remove_redundancies(self) -> Result<Set, LibISLError> {
3263        let set = self;
3264        let isl_rs_ctx = set.get_ctx();
3265        let mut set = set;
3266        set.do_not_free_on_drop();
3267        let set = set.ptr;
3268        let isl_rs_result = unsafe { isl_set_remove_redundancies(set) };
3269        let isl_rs_result = Set { ptr: isl_rs_result,
3270                                  should_free_on_drop: true };
3271        let err = isl_rs_ctx.last_error();
3272        if err != Error::None_ {
3273            let err_msg = isl_rs_ctx.last_error_msg();
3274            isl_rs_ctx.reset_error();
3275            return Err(LibISLError::new(err, err_msg));
3276        }
3277        Ok(isl_rs_result)
3278    }
3279
3280    /// Wraps `isl_set_remove_unknown_divs`.
3281    pub fn remove_unknown_divs(self) -> Result<Set, LibISLError> {
3282        let set = self;
3283        let isl_rs_ctx = set.get_ctx();
3284        let mut set = set;
3285        set.do_not_free_on_drop();
3286        let set = set.ptr;
3287        let isl_rs_result = unsafe { isl_set_remove_unknown_divs(set) };
3288        let isl_rs_result = Set { ptr: isl_rs_result,
3289                                  should_free_on_drop: true };
3290        let err = isl_rs_ctx.last_error();
3291        if err != Error::None_ {
3292            let err_msg = isl_rs_ctx.last_error_msg();
3293            isl_rs_ctx.reset_error();
3294            return Err(LibISLError::new(err, err_msg));
3295        }
3296        Ok(isl_rs_result)
3297    }
3298
3299    /// Wraps `isl_set_reset_space`.
3300    pub fn reset_space(self, space: Space) -> Result<Set, LibISLError> {
3301        let set = self;
3302        let isl_rs_ctx = set.get_ctx();
3303        let mut set = set;
3304        set.do_not_free_on_drop();
3305        let set = set.ptr;
3306        let mut space = space;
3307        space.do_not_free_on_drop();
3308        let space = space.ptr;
3309        let isl_rs_result = unsafe { isl_set_reset_space(set, space) };
3310        let isl_rs_result = Set { ptr: isl_rs_result,
3311                                  should_free_on_drop: true };
3312        let err = isl_rs_ctx.last_error();
3313        if err != Error::None_ {
3314            let err_msg = isl_rs_ctx.last_error_msg();
3315            isl_rs_ctx.reset_error();
3316            return Err(LibISLError::new(err, err_msg));
3317        }
3318        Ok(isl_rs_result)
3319    }
3320
3321    /// Wraps `isl_set_reset_tuple_id`.
3322    pub fn reset_tuple_id(self) -> Result<Set, LibISLError> {
3323        let set = self;
3324        let isl_rs_ctx = set.get_ctx();
3325        let mut set = set;
3326        set.do_not_free_on_drop();
3327        let set = set.ptr;
3328        let isl_rs_result = unsafe { isl_set_reset_tuple_id(set) };
3329        let isl_rs_result = Set { ptr: isl_rs_result,
3330                                  should_free_on_drop: true };
3331        let err = isl_rs_ctx.last_error();
3332        if err != Error::None_ {
3333            let err_msg = isl_rs_ctx.last_error_msg();
3334            isl_rs_ctx.reset_error();
3335            return Err(LibISLError::new(err, err_msg));
3336        }
3337        Ok(isl_rs_result)
3338    }
3339
3340    /// Wraps `isl_set_reset_user`.
3341    pub fn reset_user(self) -> Result<Set, LibISLError> {
3342        let set = self;
3343        let isl_rs_ctx = set.get_ctx();
3344        let mut set = set;
3345        set.do_not_free_on_drop();
3346        let set = set.ptr;
3347        let isl_rs_result = unsafe { isl_set_reset_user(set) };
3348        let isl_rs_result = Set { ptr: isl_rs_result,
3349                                  should_free_on_drop: true };
3350        let err = isl_rs_ctx.last_error();
3351        if err != Error::None_ {
3352            let err_msg = isl_rs_ctx.last_error_msg();
3353            isl_rs_ctx.reset_error();
3354            return Err(LibISLError::new(err, err_msg));
3355        }
3356        Ok(isl_rs_result)
3357    }
3358
3359    /// Wraps `isl_set_sample`.
3360    pub fn sample(self) -> Result<BasicSet, LibISLError> {
3361        let set = self;
3362        let isl_rs_ctx = set.get_ctx();
3363        let mut set = set;
3364        set.do_not_free_on_drop();
3365        let set = set.ptr;
3366        let isl_rs_result = unsafe { isl_set_sample(set) };
3367        let isl_rs_result = BasicSet { ptr: isl_rs_result,
3368                                       should_free_on_drop: true };
3369        let err = isl_rs_ctx.last_error();
3370        if err != Error::None_ {
3371            let err_msg = isl_rs_ctx.last_error_msg();
3372            isl_rs_ctx.reset_error();
3373            return Err(LibISLError::new(err, err_msg));
3374        }
3375        Ok(isl_rs_result)
3376    }
3377
3378    /// Wraps `isl_set_sample_point`.
3379    pub fn sample_point(self) -> Result<Point, LibISLError> {
3380        let set = self;
3381        let isl_rs_ctx = set.get_ctx();
3382        let mut set = set;
3383        set.do_not_free_on_drop();
3384        let set = set.ptr;
3385        let isl_rs_result = unsafe { isl_set_sample_point(set) };
3386        let isl_rs_result = Point { ptr: isl_rs_result,
3387                                    should_free_on_drop: true };
3388        let err = isl_rs_ctx.last_error();
3389        if err != Error::None_ {
3390            let err_msg = isl_rs_ctx.last_error_msg();
3391            isl_rs_ctx.reset_error();
3392            return Err(LibISLError::new(err, err_msg));
3393        }
3394        Ok(isl_rs_result)
3395    }
3396
3397    /// Wraps `isl_set_set_dim_id`.
3398    pub fn set_dim_id(self, type_: DimType, pos: u32, id: Id) -> Result<Set, LibISLError> {
3399        let set = self;
3400        let isl_rs_ctx = set.get_ctx();
3401        let mut set = set;
3402        set.do_not_free_on_drop();
3403        let set = set.ptr;
3404        let type_ = type_.to_i32();
3405        let mut id = id;
3406        id.do_not_free_on_drop();
3407        let id = id.ptr;
3408        let isl_rs_result = unsafe { isl_set_set_dim_id(set, type_, pos, id) };
3409        let isl_rs_result = Set { ptr: isl_rs_result,
3410                                  should_free_on_drop: true };
3411        let err = isl_rs_ctx.last_error();
3412        if err != Error::None_ {
3413            let err_msg = isl_rs_ctx.last_error_msg();
3414            isl_rs_ctx.reset_error();
3415            return Err(LibISLError::new(err, err_msg));
3416        }
3417        Ok(isl_rs_result)
3418    }
3419
3420    /// Wraps `isl_set_set_dim_name`.
3421    pub fn set_dim_name(self, type_: DimType, pos: u32, s: &str) -> Result<Set, LibISLError> {
3422        let set = self;
3423        let isl_rs_ctx = set.get_ctx();
3424        let mut set = set;
3425        set.do_not_free_on_drop();
3426        let set = set.ptr;
3427        let type_ = type_.to_i32();
3428        let s = CString::new(s).unwrap();
3429        let s = s.as_ptr();
3430        let isl_rs_result = unsafe { isl_set_set_dim_name(set, type_, pos, s) };
3431        let isl_rs_result = Set { ptr: isl_rs_result,
3432                                  should_free_on_drop: true };
3433        let err = isl_rs_ctx.last_error();
3434        if err != Error::None_ {
3435            let err_msg = isl_rs_ctx.last_error_msg();
3436            isl_rs_ctx.reset_error();
3437            return Err(LibISLError::new(err, err_msg));
3438        }
3439        Ok(isl_rs_result)
3440    }
3441
3442    /// Wraps `isl_set_set_tuple_id`.
3443    pub fn set_tuple_id(self, id: Id) -> Result<Set, LibISLError> {
3444        let set = self;
3445        let isl_rs_ctx = set.get_ctx();
3446        let mut set = set;
3447        set.do_not_free_on_drop();
3448        let set = set.ptr;
3449        let mut id = id;
3450        id.do_not_free_on_drop();
3451        let id = id.ptr;
3452        let isl_rs_result = unsafe { isl_set_set_tuple_id(set, id) };
3453        let isl_rs_result = Set { ptr: isl_rs_result,
3454                                  should_free_on_drop: true };
3455        let err = isl_rs_ctx.last_error();
3456        if err != Error::None_ {
3457            let err_msg = isl_rs_ctx.last_error_msg();
3458            isl_rs_ctx.reset_error();
3459            return Err(LibISLError::new(err, err_msg));
3460        }
3461        Ok(isl_rs_result)
3462    }
3463
3464    /// Wraps `isl_set_set_tuple_name`.
3465    pub fn set_tuple_name(self, s: &str) -> Result<Set, LibISLError> {
3466        let set = self;
3467        let isl_rs_ctx = set.get_ctx();
3468        let mut set = set;
3469        set.do_not_free_on_drop();
3470        let set = set.ptr;
3471        let s = CString::new(s).unwrap();
3472        let s = s.as_ptr();
3473        let isl_rs_result = unsafe { isl_set_set_tuple_name(set, s) };
3474        let isl_rs_result = Set { ptr: isl_rs_result,
3475                                  should_free_on_drop: true };
3476        let err = isl_rs_ctx.last_error();
3477        if err != Error::None_ {
3478            let err_msg = isl_rs_ctx.last_error_msg();
3479            isl_rs_ctx.reset_error();
3480            return Err(LibISLError::new(err, err_msg));
3481        }
3482        Ok(isl_rs_result)
3483    }
3484
3485    /// Wraps `isl_set_simple_hull`.
3486    pub fn simple_hull(self) -> Result<BasicSet, LibISLError> {
3487        let set = self;
3488        let isl_rs_ctx = set.get_ctx();
3489        let mut set = set;
3490        set.do_not_free_on_drop();
3491        let set = set.ptr;
3492        let isl_rs_result = unsafe { isl_set_simple_hull(set) };
3493        let isl_rs_result = BasicSet { ptr: isl_rs_result,
3494                                       should_free_on_drop: true };
3495        let err = isl_rs_ctx.last_error();
3496        if err != Error::None_ {
3497            let err_msg = isl_rs_ctx.last_error_msg();
3498            isl_rs_ctx.reset_error();
3499            return Err(LibISLError::new(err, err_msg));
3500        }
3501        Ok(isl_rs_result)
3502    }
3503
3504    /// Wraps `isl_set_size`.
3505    pub fn size(&self) -> Result<i32, LibISLError> {
3506        let set = self;
3507        let isl_rs_ctx = set.get_ctx();
3508        let set = set.ptr;
3509        let isl_rs_result = unsafe { isl_set_size(set) };
3510        let err = isl_rs_ctx.last_error();
3511        if err != Error::None_ {
3512            let err_msg = isl_rs_ctx.last_error_msg();
3513            isl_rs_ctx.reset_error();
3514            return Err(LibISLError::new(err, err_msg));
3515        }
3516        Ok(isl_rs_result)
3517    }
3518
3519    /// Wraps `isl_set_solutions`.
3520    pub fn solutions(self) -> Result<BasicSet, LibISLError> {
3521        let set = self;
3522        let isl_rs_ctx = set.get_ctx();
3523        let mut set = set;
3524        set.do_not_free_on_drop();
3525        let set = set.ptr;
3526        let isl_rs_result = unsafe { isl_set_solutions(set) };
3527        let isl_rs_result = BasicSet { ptr: isl_rs_result,
3528                                       should_free_on_drop: true };
3529        let err = isl_rs_ctx.last_error();
3530        if err != Error::None_ {
3531            let err_msg = isl_rs_ctx.last_error_msg();
3532            isl_rs_ctx.reset_error();
3533            return Err(LibISLError::new(err, err_msg));
3534        }
3535        Ok(isl_rs_result)
3536    }
3537
3538    /// Wraps `isl_set_split_dims`.
3539    pub fn split_dims(self, type_: DimType, first: u32, n: u32) -> Result<Set, LibISLError> {
3540        let set = self;
3541        let isl_rs_ctx = set.get_ctx();
3542        let mut set = set;
3543        set.do_not_free_on_drop();
3544        let set = set.ptr;
3545        let type_ = type_.to_i32();
3546        let isl_rs_result = unsafe { isl_set_split_dims(set, type_, first, n) };
3547        let isl_rs_result = Set { ptr: isl_rs_result,
3548                                  should_free_on_drop: true };
3549        let err = isl_rs_ctx.last_error();
3550        if err != Error::None_ {
3551            let err_msg = isl_rs_ctx.last_error_msg();
3552            isl_rs_ctx.reset_error();
3553            return Err(LibISLError::new(err, err_msg));
3554        }
3555        Ok(isl_rs_result)
3556    }
3557
3558    /// Wraps `isl_set_subtract`.
3559    pub fn subtract(self, set2: Set) -> Result<Set, LibISLError> {
3560        let set1 = self;
3561        let isl_rs_ctx = set1.get_ctx();
3562        let mut set1 = set1;
3563        set1.do_not_free_on_drop();
3564        let set1 = set1.ptr;
3565        let mut set2 = set2;
3566        set2.do_not_free_on_drop();
3567        let set2 = set2.ptr;
3568        let isl_rs_result = unsafe { isl_set_subtract(set1, set2) };
3569        let isl_rs_result = Set { ptr: isl_rs_result,
3570                                  should_free_on_drop: true };
3571        let err = isl_rs_ctx.last_error();
3572        if err != Error::None_ {
3573            let err_msg = isl_rs_ctx.last_error_msg();
3574            isl_rs_ctx.reset_error();
3575            return Err(LibISLError::new(err, err_msg));
3576        }
3577        Ok(isl_rs_result)
3578    }
3579
3580    /// Wraps `isl_set_sum`.
3581    pub fn sum(self, set2: Set) -> Result<Set, LibISLError> {
3582        let set1 = self;
3583        let isl_rs_ctx = set1.get_ctx();
3584        let mut set1 = set1;
3585        set1.do_not_free_on_drop();
3586        let set1 = set1.ptr;
3587        let mut set2 = set2;
3588        set2.do_not_free_on_drop();
3589        let set2 = set2.ptr;
3590        let isl_rs_result = unsafe { isl_set_sum(set1, set2) };
3591        let isl_rs_result = Set { ptr: isl_rs_result,
3592                                  should_free_on_drop: true };
3593        let err = isl_rs_ctx.last_error();
3594        if err != Error::None_ {
3595            let err_msg = isl_rs_ctx.last_error_msg();
3596            isl_rs_ctx.reset_error();
3597            return Err(LibISLError::new(err, err_msg));
3598        }
3599        Ok(isl_rs_result)
3600    }
3601
3602    /// Wraps `isl_set_to_list`.
3603    pub fn to_list(self) -> Result<SetList, LibISLError> {
3604        let el = self;
3605        let isl_rs_ctx = el.get_ctx();
3606        let mut el = el;
3607        el.do_not_free_on_drop();
3608        let el = el.ptr;
3609        let isl_rs_result = unsafe { isl_set_to_list(el) };
3610        let isl_rs_result = SetList { ptr: isl_rs_result,
3611                                      should_free_on_drop: true };
3612        let err = isl_rs_ctx.last_error();
3613        if err != Error::None_ {
3614            let err_msg = isl_rs_ctx.last_error_msg();
3615            isl_rs_ctx.reset_error();
3616            return Err(LibISLError::new(err, err_msg));
3617        }
3618        Ok(isl_rs_result)
3619    }
3620
3621    /// Wraps `isl_set_to_str`.
3622    pub fn to_str(&self) -> Result<&str, LibISLError> {
3623        let set = self;
3624        let isl_rs_ctx = set.get_ctx();
3625        let set = set.ptr;
3626        let isl_rs_result = unsafe { isl_set_to_str(set) };
3627        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
3628        let isl_rs_result = isl_rs_result.to_str().unwrap();
3629        let err = isl_rs_ctx.last_error();
3630        if err != Error::None_ {
3631            let err_msg = isl_rs_ctx.last_error_msg();
3632            isl_rs_ctx.reset_error();
3633            return Err(LibISLError::new(err, err_msg));
3634        }
3635        Ok(isl_rs_result)
3636    }
3637
3638    /// Wraps `isl_set_to_union_set`.
3639    pub fn to_union_set(self) -> Result<UnionSet, LibISLError> {
3640        let set = self;
3641        let isl_rs_ctx = set.get_ctx();
3642        let mut set = set;
3643        set.do_not_free_on_drop();
3644        let set = set.ptr;
3645        let isl_rs_result = unsafe { isl_set_to_union_set(set) };
3646        let isl_rs_result = UnionSet { ptr: isl_rs_result,
3647                                       should_free_on_drop: true };
3648        let err = isl_rs_ctx.last_error();
3649        if err != Error::None_ {
3650            let err_msg = isl_rs_ctx.last_error_msg();
3651            isl_rs_ctx.reset_error();
3652            return Err(LibISLError::new(err, err_msg));
3653        }
3654        Ok(isl_rs_result)
3655    }
3656
3657    /// Wraps `isl_set_translation`.
3658    pub fn translation(self) -> Result<Map, LibISLError> {
3659        let deltas = self;
3660        let isl_rs_ctx = deltas.get_ctx();
3661        let mut deltas = deltas;
3662        deltas.do_not_free_on_drop();
3663        let deltas = deltas.ptr;
3664        let isl_rs_result = unsafe { isl_set_translation(deltas) };
3665        let isl_rs_result = Map { ptr: isl_rs_result,
3666                                  should_free_on_drop: true };
3667        let err = isl_rs_ctx.last_error();
3668        if err != Error::None_ {
3669            let err_msg = isl_rs_ctx.last_error_msg();
3670            isl_rs_ctx.reset_error();
3671            return Err(LibISLError::new(err, err_msg));
3672        }
3673        Ok(isl_rs_result)
3674    }
3675
3676    /// Wraps `isl_set_tuple_dim`.
3677    pub fn tuple_dim(&self) -> Result<i32, LibISLError> {
3678        let set = self;
3679        let isl_rs_ctx = set.get_ctx();
3680        let set = set.ptr;
3681        let isl_rs_result = unsafe { isl_set_tuple_dim(set) };
3682        let err = isl_rs_ctx.last_error();
3683        if err != Error::None_ {
3684            let err_msg = isl_rs_ctx.last_error_msg();
3685            isl_rs_ctx.reset_error();
3686            return Err(LibISLError::new(err, err_msg));
3687        }
3688        Ok(isl_rs_result)
3689    }
3690
3691    /// Wraps `isl_set_unbind_params`.
3692    pub fn unbind_params(self, tuple: MultiId) -> Result<Set, LibISLError> {
3693        let set = self;
3694        let isl_rs_ctx = set.get_ctx();
3695        let mut set = set;
3696        set.do_not_free_on_drop();
3697        let set = set.ptr;
3698        let mut tuple = tuple;
3699        tuple.do_not_free_on_drop();
3700        let tuple = tuple.ptr;
3701        let isl_rs_result = unsafe { isl_set_unbind_params(set, tuple) };
3702        let isl_rs_result = Set { ptr: isl_rs_result,
3703                                  should_free_on_drop: true };
3704        let err = isl_rs_ctx.last_error();
3705        if err != Error::None_ {
3706            let err_msg = isl_rs_ctx.last_error_msg();
3707            isl_rs_ctx.reset_error();
3708            return Err(LibISLError::new(err, err_msg));
3709        }
3710        Ok(isl_rs_result)
3711    }
3712
3713    /// Wraps `isl_set_unbind_params_insert_domain`.
3714    pub fn unbind_params_insert_domain(self, domain: MultiId) -> Result<Map, LibISLError> {
3715        let set = self;
3716        let isl_rs_ctx = set.get_ctx();
3717        let mut set = set;
3718        set.do_not_free_on_drop();
3719        let set = set.ptr;
3720        let mut domain = domain;
3721        domain.do_not_free_on_drop();
3722        let domain = domain.ptr;
3723        let isl_rs_result = unsafe { isl_set_unbind_params_insert_domain(set, domain) };
3724        let isl_rs_result = Map { ptr: isl_rs_result,
3725                                  should_free_on_drop: true };
3726        let err = isl_rs_ctx.last_error();
3727        if err != Error::None_ {
3728            let err_msg = isl_rs_ctx.last_error_msg();
3729            isl_rs_ctx.reset_error();
3730            return Err(LibISLError::new(err, err_msg));
3731        }
3732        Ok(isl_rs_result)
3733    }
3734
3735    /// Wraps `isl_set_union`.
3736    pub fn union(self, set2: Set) -> Result<Set, LibISLError> {
3737        let set1 = self;
3738        let isl_rs_ctx = set1.get_ctx();
3739        let mut set1 = set1;
3740        set1.do_not_free_on_drop();
3741        let set1 = set1.ptr;
3742        let mut set2 = set2;
3743        set2.do_not_free_on_drop();
3744        let set2 = set2.ptr;
3745        let isl_rs_result = unsafe { isl_set_union(set1, set2) };
3746        let isl_rs_result = Set { ptr: isl_rs_result,
3747                                  should_free_on_drop: true };
3748        let err = isl_rs_ctx.last_error();
3749        if err != Error::None_ {
3750            let err_msg = isl_rs_ctx.last_error_msg();
3751            isl_rs_ctx.reset_error();
3752            return Err(LibISLError::new(err, err_msg));
3753        }
3754        Ok(isl_rs_result)
3755    }
3756
3757    /// Wraps `isl_set_union_disjoint`.
3758    pub fn union_disjoint(self, set2: Set) -> Result<Set, LibISLError> {
3759        let set1 = self;
3760        let isl_rs_ctx = set1.get_ctx();
3761        let mut set1 = set1;
3762        set1.do_not_free_on_drop();
3763        let set1 = set1.ptr;
3764        let mut set2 = set2;
3765        set2.do_not_free_on_drop();
3766        let set2 = set2.ptr;
3767        let isl_rs_result = unsafe { isl_set_union_disjoint(set1, set2) };
3768        let isl_rs_result = Set { ptr: isl_rs_result,
3769                                  should_free_on_drop: true };
3770        let err = isl_rs_ctx.last_error();
3771        if err != Error::None_ {
3772            let err_msg = isl_rs_ctx.last_error_msg();
3773            isl_rs_ctx.reset_error();
3774            return Err(LibISLError::new(err, err_msg));
3775        }
3776        Ok(isl_rs_result)
3777    }
3778
3779    /// Wraps `isl_set_universe`.
3780    pub fn universe(space: Space) -> Result<Set, LibISLError> {
3781        let isl_rs_ctx = space.get_ctx();
3782        let mut space = space;
3783        space.do_not_free_on_drop();
3784        let space = space.ptr;
3785        let isl_rs_result = unsafe { isl_set_universe(space) };
3786        let isl_rs_result = Set { ptr: isl_rs_result,
3787                                  should_free_on_drop: true };
3788        let err = isl_rs_ctx.last_error();
3789        if err != Error::None_ {
3790            let err_msg = isl_rs_ctx.last_error_msg();
3791            isl_rs_ctx.reset_error();
3792            return Err(LibISLError::new(err, err_msg));
3793        }
3794        Ok(isl_rs_result)
3795    }
3796
3797    /// Wraps `isl_set_unshifted_simple_hull`.
3798    pub fn unshifted_simple_hull(self) -> Result<BasicSet, LibISLError> {
3799        let set = self;
3800        let isl_rs_ctx = set.get_ctx();
3801        let mut set = set;
3802        set.do_not_free_on_drop();
3803        let set = set.ptr;
3804        let isl_rs_result = unsafe { isl_set_unshifted_simple_hull(set) };
3805        let isl_rs_result = BasicSet { ptr: isl_rs_result,
3806                                       should_free_on_drop: true };
3807        let err = isl_rs_ctx.last_error();
3808        if err != Error::None_ {
3809            let err_msg = isl_rs_ctx.last_error_msg();
3810            isl_rs_ctx.reset_error();
3811            return Err(LibISLError::new(err, err_msg));
3812        }
3813        Ok(isl_rs_result)
3814    }
3815
3816    /// Wraps `isl_set_unshifted_simple_hull_from_set_list`.
3817    pub fn unshifted_simple_hull_from_set_list(self, list: SetList)
3818                                               -> Result<BasicSet, LibISLError> {
3819        let set = self;
3820        let isl_rs_ctx = set.get_ctx();
3821        let mut set = set;
3822        set.do_not_free_on_drop();
3823        let set = set.ptr;
3824        let mut list = list;
3825        list.do_not_free_on_drop();
3826        let list = list.ptr;
3827        let isl_rs_result = unsafe { isl_set_unshifted_simple_hull_from_set_list(set, list) };
3828        let isl_rs_result = BasicSet { ptr: isl_rs_result,
3829                                       should_free_on_drop: true };
3830        let err = isl_rs_ctx.last_error();
3831        if err != Error::None_ {
3832            let err_msg = isl_rs_ctx.last_error_msg();
3833            isl_rs_ctx.reset_error();
3834            return Err(LibISLError::new(err, err_msg));
3835        }
3836        Ok(isl_rs_result)
3837    }
3838
3839    /// Wraps `isl_set_unwrap`.
3840    pub fn unwrap(self) -> Result<Map, LibISLError> {
3841        let set = self;
3842        let isl_rs_ctx = set.get_ctx();
3843        let mut set = set;
3844        set.do_not_free_on_drop();
3845        let set = set.ptr;
3846        let isl_rs_result = unsafe { isl_set_unwrap(set) };
3847        let isl_rs_result = Map { ptr: isl_rs_result,
3848                                  should_free_on_drop: true };
3849        let err = isl_rs_ctx.last_error();
3850        if err != Error::None_ {
3851            let err_msg = isl_rs_ctx.last_error_msg();
3852            isl_rs_ctx.reset_error();
3853            return Err(LibISLError::new(err, err_msg));
3854        }
3855        Ok(isl_rs_result)
3856    }
3857
3858    /// Wraps `isl_set_upper_bound_multi_pw_aff`.
3859    pub fn upper_bound_multi_pw_aff(self, upper: MultiPwAff) -> Result<Set, LibISLError> {
3860        let set = self;
3861        let isl_rs_ctx = set.get_ctx();
3862        let mut set = set;
3863        set.do_not_free_on_drop();
3864        let set = set.ptr;
3865        let mut upper = upper;
3866        upper.do_not_free_on_drop();
3867        let upper = upper.ptr;
3868        let isl_rs_result = unsafe { isl_set_upper_bound_multi_pw_aff(set, upper) };
3869        let isl_rs_result = Set { ptr: isl_rs_result,
3870                                  should_free_on_drop: true };
3871        let err = isl_rs_ctx.last_error();
3872        if err != Error::None_ {
3873            let err_msg = isl_rs_ctx.last_error_msg();
3874            isl_rs_ctx.reset_error();
3875            return Err(LibISLError::new(err, err_msg));
3876        }
3877        Ok(isl_rs_result)
3878    }
3879
3880    /// Wraps `isl_set_upper_bound_multi_val`.
3881    pub fn upper_bound_multi_val(self, upper: MultiVal) -> Result<Set, LibISLError> {
3882        let set = self;
3883        let isl_rs_ctx = set.get_ctx();
3884        let mut set = set;
3885        set.do_not_free_on_drop();
3886        let set = set.ptr;
3887        let mut upper = upper;
3888        upper.do_not_free_on_drop();
3889        let upper = upper.ptr;
3890        let isl_rs_result = unsafe { isl_set_upper_bound_multi_val(set, upper) };
3891        let isl_rs_result = Set { ptr: isl_rs_result,
3892                                  should_free_on_drop: true };
3893        let err = isl_rs_ctx.last_error();
3894        if err != Error::None_ {
3895            let err_msg = isl_rs_ctx.last_error_msg();
3896            isl_rs_ctx.reset_error();
3897            return Err(LibISLError::new(err, err_msg));
3898        }
3899        Ok(isl_rs_result)
3900    }
3901
3902    /// Wraps `isl_set_upper_bound_si`.
3903    pub fn upper_bound_si(self, type_: DimType, pos: u32, value: i32) -> Result<Set, LibISLError> {
3904        let set = self;
3905        let isl_rs_ctx = set.get_ctx();
3906        let mut set = set;
3907        set.do_not_free_on_drop();
3908        let set = set.ptr;
3909        let type_ = type_.to_i32();
3910        let isl_rs_result = unsafe { isl_set_upper_bound_si(set, type_, pos, value) };
3911        let isl_rs_result = Set { ptr: isl_rs_result,
3912                                  should_free_on_drop: true };
3913        let err = isl_rs_ctx.last_error();
3914        if err != Error::None_ {
3915            let err_msg = isl_rs_ctx.last_error_msg();
3916            isl_rs_ctx.reset_error();
3917            return Err(LibISLError::new(err, err_msg));
3918        }
3919        Ok(isl_rs_result)
3920    }
3921
3922    /// Wraps `isl_set_upper_bound_val`.
3923    pub fn upper_bound_val(self, type_: DimType, pos: u32, value: Val) -> Result<Set, LibISLError> {
3924        let set = self;
3925        let isl_rs_ctx = set.get_ctx();
3926        let mut set = set;
3927        set.do_not_free_on_drop();
3928        let set = set.ptr;
3929        let type_ = type_.to_i32();
3930        let mut value = value;
3931        value.do_not_free_on_drop();
3932        let value = value.ptr;
3933        let isl_rs_result = unsafe { isl_set_upper_bound_val(set, type_, pos, value) };
3934        let isl_rs_result = Set { ptr: isl_rs_result,
3935                                  should_free_on_drop: true };
3936        let err = isl_rs_ctx.last_error();
3937        if err != Error::None_ {
3938            let err_msg = isl_rs_ctx.last_error_msg();
3939            isl_rs_ctx.reset_error();
3940            return Err(LibISLError::new(err, err_msg));
3941        }
3942        Ok(isl_rs_result)
3943    }
3944
3945    /// Wraps `isl_set_wrapped_domain_map`.
3946    pub fn wrapped_domain_map(self) -> Result<Map, LibISLError> {
3947        let set = self;
3948        let isl_rs_ctx = set.get_ctx();
3949        let mut set = set;
3950        set.do_not_free_on_drop();
3951        let set = set.ptr;
3952        let isl_rs_result = unsafe { isl_set_wrapped_domain_map(set) };
3953        let isl_rs_result = Map { ptr: isl_rs_result,
3954                                  should_free_on_drop: true };
3955        let err = isl_rs_ctx.last_error();
3956        if err != Error::None_ {
3957            let err_msg = isl_rs_ctx.last_error_msg();
3958            isl_rs_ctx.reset_error();
3959            return Err(LibISLError::new(err, err_msg));
3960        }
3961        Ok(isl_rs_result)
3962    }
3963
3964    /// Wraps `isl_set_wrapped_reverse`.
3965    pub fn wrapped_reverse(self) -> Result<Set, LibISLError> {
3966        let set = self;
3967        let isl_rs_ctx = set.get_ctx();
3968        let mut set = set;
3969        set.do_not_free_on_drop();
3970        let set = set.ptr;
3971        let isl_rs_result = unsafe { isl_set_wrapped_reverse(set) };
3972        let isl_rs_result = Set { ptr: isl_rs_result,
3973                                  should_free_on_drop: true };
3974        let err = isl_rs_ctx.last_error();
3975        if err != Error::None_ {
3976            let err_msg = isl_rs_ctx.last_error_msg();
3977            isl_rs_ctx.reset_error();
3978            return Err(LibISLError::new(err, err_msg));
3979        }
3980        Ok(isl_rs_result)
3981    }
3982
3983    /// Does not call isl_set_free() on being dropped. (For internal use only.)
3984    pub fn do_not_free_on_drop(&mut self) {
3985        self.should_free_on_drop = false;
3986    }
3987}
3988
3989impl Drop for Set {
3990    fn drop(&mut self) {
3991        if self.should_free_on_drop {
3992            unsafe {
3993                isl_set_free(self.ptr);
3994            }
3995        }
3996    }
3997}