isl_rs/bindings/
set.rs

1// Automatically generated by isl_bindings_generator.
2// LICENSE: MIT
3
4use crate::bindings::{
5    BasicSet, Context, DimType, FixedBox, Id, Map, Point, PwAff, Space, StrideInfo, Val,
6};
7use libc::uintptr_t;
8use std::ffi::{CStr, CString};
9use std::os::raw::c_char;
10
11/// Wraps `isl_set`.
12pub struct Set {
13    pub ptr: uintptr_t,
14    pub should_free_on_drop: bool,
15}
16
17extern "C" {
18
19    fn isl_set_n_dim(set: uintptr_t) -> i32;
20
21    fn isl_set_n_param(set: uintptr_t) -> i32;
22
23    fn isl_set_tuple_dim(set: uintptr_t) -> i32;
24
25    fn isl_set_dim(set: uintptr_t, type_: DimType) -> i32;
26
27    fn isl_set_get_ctx(set: uintptr_t) -> uintptr_t;
28
29    fn isl_set_get_space(set: uintptr_t) -> uintptr_t;
30
31    fn isl_set_reset_space(set: uintptr_t, space: uintptr_t) -> uintptr_t;
32
33    fn isl_set_has_tuple_name(set: uintptr_t) -> i32;
34
35    fn isl_set_get_tuple_name(set: uintptr_t) -> *const c_char;
36
37    fn isl_set_set_tuple_name(set: uintptr_t, s: *const c_char) -> uintptr_t;
38
39    fn isl_set_has_dim_name(set: uintptr_t, type_: DimType, pos: u32) -> i32;
40
41    fn isl_set_get_dim_name(set: uintptr_t, type_: DimType, pos: u32) -> *const c_char;
42
43    fn isl_set_set_dim_name(set: uintptr_t, type_: DimType, pos: u32, s: *const c_char)
44                            -> uintptr_t;
45
46    fn isl_set_set_dim_id(set: uintptr_t, type_: DimType, pos: u32, id: uintptr_t) -> uintptr_t;
47
48    fn isl_set_has_dim_id(set: uintptr_t, type_: DimType, pos: u32) -> i32;
49
50    fn isl_set_get_dim_id(set: uintptr_t, type_: DimType, pos: u32) -> uintptr_t;
51
52    fn isl_set_set_tuple_id(set: uintptr_t, id: uintptr_t) -> uintptr_t;
53
54    fn isl_set_reset_tuple_id(set: uintptr_t) -> uintptr_t;
55
56    fn isl_set_has_tuple_id(set: uintptr_t) -> i32;
57
58    fn isl_set_get_tuple_id(set: uintptr_t) -> uintptr_t;
59
60    fn isl_set_reset_user(set: uintptr_t) -> uintptr_t;
61
62    fn isl_set_find_dim_by_id(set: uintptr_t, type_: DimType, id: uintptr_t) -> i32;
63
64    fn isl_set_find_dim_by_name(set: uintptr_t, type_: DimType, name: *const c_char) -> i32;
65
66    fn isl_set_remove_redundancies(set: uintptr_t) -> uintptr_t;
67
68    fn isl_set_read_from_str(ctx: uintptr_t, str_: *const c_char) -> uintptr_t;
69
70    fn isl_set_dump(set: uintptr_t);
71
72    fn isl_set_fix_si(set: uintptr_t, type_: DimType, pos: u32, value: i32) -> uintptr_t;
73
74    fn isl_set_lower_bound_si(set: uintptr_t, type_: DimType, pos: u32, value: i32) -> uintptr_t;
75
76    fn isl_set_lower_bound_val(set: uintptr_t, type_: DimType, pos: u32, value: uintptr_t)
77                               -> uintptr_t;
78
79    fn isl_set_upper_bound_si(set: uintptr_t, type_: DimType, pos: u32, value: i32) -> uintptr_t;
80
81    fn isl_set_upper_bound_val(set: uintptr_t, type_: DimType, pos: u32, value: uintptr_t)
82                               -> uintptr_t;
83
84    fn isl_set_equate(set: uintptr_t, type1: DimType, pos1: i32, type2: DimType, pos2: i32)
85                      -> uintptr_t;
86
87    fn isl_set_lexmin(set: uintptr_t) -> uintptr_t;
88
89    fn isl_set_lexmax(set: uintptr_t) -> uintptr_t;
90
91    fn isl_set_follows_at(set1: uintptr_t, set2: uintptr_t, pos: i32) -> i32;
92
93    fn isl_set_params(set: uintptr_t) -> uintptr_t;
94
95    fn isl_set_from_params(set: uintptr_t) -> uintptr_t;
96
97    fn isl_set_empty(space: uintptr_t) -> uintptr_t;
98
99    fn isl_set_universe(space: uintptr_t) -> uintptr_t;
100
101    fn isl_set_nat_universe(space: uintptr_t) -> uintptr_t;
102
103    fn isl_set_copy(set: uintptr_t) -> uintptr_t;
104
105    fn isl_set_free(set: uintptr_t) -> uintptr_t;
106
107    fn isl_set_from_basic_set(bset: uintptr_t) -> uintptr_t;
108
109    fn isl_set_sample(set: uintptr_t) -> uintptr_t;
110
111    fn isl_set_sample_point(set: uintptr_t) -> uintptr_t;
112
113    fn isl_set_detect_equalities(set: uintptr_t) -> uintptr_t;
114
115    fn isl_set_affine_hull(set: uintptr_t) -> uintptr_t;
116
117    fn isl_set_convex_hull(set: uintptr_t) -> uintptr_t;
118
119    fn isl_set_polyhedral_hull(set: uintptr_t) -> uintptr_t;
120
121    fn isl_set_simple_hull(set: uintptr_t) -> uintptr_t;
122
123    fn isl_set_unshifted_simple_hull(set: uintptr_t) -> uintptr_t;
124
125    fn isl_set_plain_unshifted_simple_hull(set: uintptr_t) -> uintptr_t;
126
127    fn isl_set_bounded_simple_hull(set: uintptr_t) -> uintptr_t;
128
129    fn isl_set_union_disjoint(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
130
131    fn isl_set_union(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
132
133    fn isl_set_product(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
134
135    fn isl_set_flat_product(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
136
137    fn isl_set_intersect(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
138
139    fn isl_set_intersect_params(set: uintptr_t, params: uintptr_t) -> uintptr_t;
140
141    fn isl_set_intersect_factor_domain(set: uintptr_t, domain: uintptr_t) -> uintptr_t;
142
143    fn isl_set_intersect_factor_range(set: uintptr_t, range: uintptr_t) -> uintptr_t;
144
145    fn isl_set_subtract(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
146
147    fn isl_set_complement(set: uintptr_t) -> uintptr_t;
148
149    fn isl_set_apply(set: uintptr_t, map: uintptr_t) -> uintptr_t;
150
151    fn isl_set_fix_val(set: uintptr_t, type_: DimType, pos: u32, v: uintptr_t) -> uintptr_t;
152
153    fn isl_set_fix_dim_si(set: uintptr_t, dim: u32, value: i32) -> uintptr_t;
154
155    fn isl_set_insert_dims(set: uintptr_t, type_: DimType, pos: u32, n: u32) -> uintptr_t;
156
157    fn isl_set_add_dims(set: uintptr_t, type_: DimType, n: u32) -> uintptr_t;
158
159    fn isl_set_move_dims(set: uintptr_t, dst_type: DimType, dst_pos: u32, src_type: DimType,
160                         src_pos: u32, n: u32)
161                         -> uintptr_t;
162
163    fn isl_set_project_out_param_id(set: uintptr_t, id: uintptr_t) -> uintptr_t;
164
165    fn isl_set_project_out(set: uintptr_t, type_: DimType, first: u32, n: u32) -> uintptr_t;
166
167    fn isl_set_project_out_all_params(set: uintptr_t) -> uintptr_t;
168
169    fn isl_set_project_onto_map(set: uintptr_t, type_: DimType, first: u32, n: u32) -> uintptr_t;
170
171    fn isl_set_eliminate(set: uintptr_t, type_: DimType, first: u32, n: u32) -> uintptr_t;
172
173    fn isl_set_eliminate_dims(set: uintptr_t, first: u32, n: u32) -> uintptr_t;
174
175    fn isl_set_remove_dims(bset: uintptr_t, type_: DimType, first: u32, n: u32) -> uintptr_t;
176
177    fn isl_set_remove_divs_involving_dims(set: uintptr_t, type_: DimType, first: u32, n: u32)
178                                          -> uintptr_t;
179
180    fn isl_set_remove_unknown_divs(set: uintptr_t) -> uintptr_t;
181
182    fn isl_set_remove_divs(set: uintptr_t) -> uintptr_t;
183
184    fn isl_set_split_dims(set: uintptr_t, type_: DimType, first: u32, n: u32) -> uintptr_t;
185
186    fn isl_set_drop_constraints_involving_dims(set: uintptr_t, type_: DimType, first: u32, n: u32)
187                                               -> uintptr_t;
188
189    fn isl_set_drop_constraints_not_involving_dims(set: uintptr_t, type_: DimType, first: u32,
190                                                   n: u32)
191                                                   -> uintptr_t;
192
193    fn isl_set_involves_locals(set: uintptr_t) -> i32;
194
195    fn isl_set_involves_dims(set: uintptr_t, type_: DimType, first: u32, n: u32) -> i32;
196
197    fn isl_set_plain_is_empty(set: uintptr_t) -> i32;
198
199    fn isl_set_plain_is_universe(set: uintptr_t) -> i32;
200
201    fn isl_set_is_params(set: uintptr_t) -> i32;
202
203    fn isl_set_is_empty(set: uintptr_t) -> i32;
204
205    fn isl_set_is_bounded(set: uintptr_t) -> i32;
206
207    fn isl_set_is_subset(set1: uintptr_t, set2: uintptr_t) -> i32;
208
209    fn isl_set_is_strict_subset(set1: uintptr_t, set2: uintptr_t) -> i32;
210
211    fn isl_set_is_equal(set1: uintptr_t, set2: uintptr_t) -> i32;
212
213    fn isl_set_is_disjoint(set1: uintptr_t, set2: uintptr_t) -> i32;
214
215    fn isl_set_is_singleton(set: uintptr_t) -> i32;
216
217    fn isl_set_is_box(set: uintptr_t) -> i32;
218
219    fn isl_set_has_equal_space(set1: uintptr_t, set2: uintptr_t) -> i32;
220
221    fn isl_set_sum(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
222
223    fn isl_set_neg(set: uintptr_t) -> uintptr_t;
224
225    fn isl_set_make_disjoint(set: uintptr_t) -> uintptr_t;
226
227    fn isl_set_compute_divs(set: uintptr_t) -> uintptr_t;
228
229    fn isl_set_align_divs(set: uintptr_t) -> uintptr_t;
230
231    fn isl_set_plain_get_val_if_fixed(set: uintptr_t, type_: DimType, pos: u32) -> uintptr_t;
232
233    fn isl_set_dim_is_bounded(set: uintptr_t, type_: DimType, pos: u32) -> i32;
234
235    fn isl_set_dim_has_lower_bound(set: uintptr_t, type_: DimType, pos: u32) -> i32;
236
237    fn isl_set_dim_has_upper_bound(set: uintptr_t, type_: DimType, pos: u32) -> i32;
238
239    fn isl_set_dim_has_any_lower_bound(set: uintptr_t, type_: DimType, pos: u32) -> i32;
240
241    fn isl_set_dim_has_any_upper_bound(set: uintptr_t, type_: DimType, pos: u32) -> i32;
242
243    fn isl_set_gist_basic_set(set: uintptr_t, context: uintptr_t) -> uintptr_t;
244
245    fn isl_set_gist(set: uintptr_t, context: uintptr_t) -> uintptr_t;
246
247    fn isl_set_gist_params(set: uintptr_t, context: uintptr_t) -> uintptr_t;
248
249    fn isl_set_get_stride_info(set: uintptr_t, pos: i32) -> uintptr_t;
250
251    fn isl_set_get_stride(set: uintptr_t, pos: i32) -> uintptr_t;
252
253    fn isl_set_get_lattice_tile(set: uintptr_t) -> uintptr_t;
254
255    fn isl_set_get_simple_fixed_box_hull(set: uintptr_t) -> uintptr_t;
256
257    fn isl_set_coalesce(set: uintptr_t) -> uintptr_t;
258
259    fn isl_set_plain_cmp(set1: uintptr_t, set2: uintptr_t) -> i32;
260
261    fn isl_set_plain_is_equal(set1: uintptr_t, set2: uintptr_t) -> i32;
262
263    fn isl_set_plain_is_disjoint(set1: uintptr_t, set2: uintptr_t) -> i32;
264
265    fn isl_set_get_hash(set: uintptr_t) -> u32;
266
267    fn isl_set_n_basic_set(set: uintptr_t) -> i32;
268
269    fn isl_set_count_val(set: uintptr_t) -> uintptr_t;
270
271    fn isl_set_from_point(pnt: uintptr_t) -> uintptr_t;
272
273    fn isl_set_box_from_points(pnt1: uintptr_t, pnt2: uintptr_t) -> uintptr_t;
274
275    fn isl_set_lift(set: uintptr_t) -> uintptr_t;
276
277    fn isl_set_lex_le_set(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
278
279    fn isl_set_lex_lt_set(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
280
281    fn isl_set_lex_ge_set(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
282
283    fn isl_set_lex_gt_set(set1: uintptr_t, set2: uintptr_t) -> uintptr_t;
284
285    fn isl_set_size(set: uintptr_t) -> i32;
286
287    fn isl_set_align_params(set: uintptr_t, model: uintptr_t) -> uintptr_t;
288
289    fn isl_set_drop_unused_params(set: uintptr_t) -> uintptr_t;
290
291    fn isl_set_coefficients(set: uintptr_t) -> uintptr_t;
292
293    fn isl_set_solutions(set: uintptr_t) -> uintptr_t;
294
295    fn isl_set_dim_max(set: uintptr_t, pos: i32) -> uintptr_t;
296
297    fn isl_set_dim_min(set: uintptr_t, pos: i32) -> uintptr_t;
298
299    fn isl_set_to_str(set: uintptr_t) -> *const c_char;
300
301}
302
303impl Set {
304    /// Wraps `isl_set_n_dim`.
305    pub fn n_dim(&self) -> i32 {
306        let set = self;
307        let set = set.ptr;
308        let isl_rs_result = unsafe { isl_set_n_dim(set) };
309        isl_rs_result
310    }
311
312    /// Wraps `isl_set_n_param`.
313    pub fn n_param(&self) -> i32 {
314        let set = self;
315        let set = set.ptr;
316        let isl_rs_result = unsafe { isl_set_n_param(set) };
317        isl_rs_result
318    }
319
320    /// Wraps `isl_set_tuple_dim`.
321    pub fn tuple_dim(&self) -> i32 {
322        let set = self;
323        let set = set.ptr;
324        let isl_rs_result = unsafe { isl_set_tuple_dim(set) };
325        isl_rs_result
326    }
327
328    /// Wraps `isl_set_dim`.
329    pub fn dim(&self, type_: DimType) -> i32 {
330        let set = self;
331        let set = set.ptr;
332        let isl_rs_result = unsafe { isl_set_dim(set, type_) };
333        isl_rs_result
334    }
335
336    /// Wraps `isl_set_get_ctx`.
337    pub fn get_ctx(&self) -> Context {
338        let set = self;
339        let set = set.ptr;
340        let isl_rs_result = unsafe { isl_set_get_ctx(set) };
341        let isl_rs_result = Context { ptr: isl_rs_result,
342                                      should_free_on_drop: true };
343        let mut isl_rs_result = isl_rs_result;
344        isl_rs_result.do_not_free_on_drop();
345        isl_rs_result
346    }
347
348    /// Wraps `isl_set_get_space`.
349    pub fn get_space(&self) -> Space {
350        let set = self;
351        let set = set.ptr;
352        let isl_rs_result = unsafe { isl_set_get_space(set) };
353        let isl_rs_result = Space { ptr: isl_rs_result,
354                                    should_free_on_drop: true };
355        isl_rs_result
356    }
357
358    /// Wraps `isl_set_reset_space`.
359    pub fn reset_space(self, space: Space) -> Set {
360        let set = self;
361        let mut set = set;
362        set.do_not_free_on_drop();
363        let set = set.ptr;
364        let mut space = space;
365        space.do_not_free_on_drop();
366        let space = space.ptr;
367        let isl_rs_result = unsafe { isl_set_reset_space(set, space) };
368        let isl_rs_result = Set { ptr: isl_rs_result,
369                                  should_free_on_drop: true };
370        isl_rs_result
371    }
372
373    /// Wraps `isl_set_has_tuple_name`.
374    pub fn has_tuple_name(&self) -> bool {
375        let set = self;
376        let set = set.ptr;
377        let isl_rs_result = unsafe { isl_set_has_tuple_name(set) };
378        let isl_rs_result = match isl_rs_result {
379            0 => false,
380            1 => true,
381            _ => panic!("Got isl_bool = -1"),
382        };
383        isl_rs_result
384    }
385
386    /// Wraps `isl_set_get_tuple_name`.
387    pub fn get_tuple_name(&self) -> &str {
388        let set = self;
389        let set = set.ptr;
390        let isl_rs_result = unsafe { isl_set_get_tuple_name(set) };
391        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
392        let isl_rs_result = isl_rs_result.to_str().unwrap();
393        isl_rs_result
394    }
395
396    /// Wraps `isl_set_set_tuple_name`.
397    pub fn set_tuple_name(self, s: &str) -> Set {
398        let set = self;
399        let mut set = set;
400        set.do_not_free_on_drop();
401        let set = set.ptr;
402        let s = CString::new(s).unwrap();
403        let s = s.as_ptr();
404        let isl_rs_result = unsafe { isl_set_set_tuple_name(set, s) };
405        let isl_rs_result = Set { ptr: isl_rs_result,
406                                  should_free_on_drop: true };
407        isl_rs_result
408    }
409
410    /// Wraps `isl_set_has_dim_name`.
411    pub fn has_dim_name(&self, type_: DimType, pos: u32) -> bool {
412        let set = self;
413        let set = set.ptr;
414        let isl_rs_result = unsafe { isl_set_has_dim_name(set, type_, pos) };
415        let isl_rs_result = match isl_rs_result {
416            0 => false,
417            1 => true,
418            _ => panic!("Got isl_bool = -1"),
419        };
420        isl_rs_result
421    }
422
423    /// Wraps `isl_set_get_dim_name`.
424    pub fn get_dim_name(&self, type_: DimType, pos: u32) -> &str {
425        let set = self;
426        let set = set.ptr;
427        let isl_rs_result = unsafe { isl_set_get_dim_name(set, type_, pos) };
428        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
429        let isl_rs_result = isl_rs_result.to_str().unwrap();
430        isl_rs_result
431    }
432
433    /// Wraps `isl_set_set_dim_name`.
434    pub fn set_dim_name(self, type_: DimType, pos: u32, s: &str) -> Set {
435        let set = self;
436        let mut set = set;
437        set.do_not_free_on_drop();
438        let set = set.ptr;
439        let s = CString::new(s).unwrap();
440        let s = s.as_ptr();
441        let isl_rs_result = unsafe { isl_set_set_dim_name(set, type_, pos, s) };
442        let isl_rs_result = Set { ptr: isl_rs_result,
443                                  should_free_on_drop: true };
444        isl_rs_result
445    }
446
447    /// Wraps `isl_set_set_dim_id`.
448    pub fn set_dim_id(self, type_: DimType, pos: u32, id: Id) -> Set {
449        let set = self;
450        let mut set = set;
451        set.do_not_free_on_drop();
452        let set = set.ptr;
453        let mut id = id;
454        id.do_not_free_on_drop();
455        let id = id.ptr;
456        let isl_rs_result = unsafe { isl_set_set_dim_id(set, type_, pos, id) };
457        let isl_rs_result = Set { ptr: isl_rs_result,
458                                  should_free_on_drop: true };
459        isl_rs_result
460    }
461
462    /// Wraps `isl_set_has_dim_id`.
463    pub fn has_dim_id(&self, type_: DimType, pos: u32) -> bool {
464        let set = self;
465        let set = set.ptr;
466        let isl_rs_result = unsafe { isl_set_has_dim_id(set, type_, pos) };
467        let isl_rs_result = match isl_rs_result {
468            0 => false,
469            1 => true,
470            _ => panic!("Got isl_bool = -1"),
471        };
472        isl_rs_result
473    }
474
475    /// Wraps `isl_set_get_dim_id`.
476    pub fn get_dim_id(&self, type_: DimType, pos: u32) -> Id {
477        let set = self;
478        let set = set.ptr;
479        let isl_rs_result = unsafe { isl_set_get_dim_id(set, type_, pos) };
480        let isl_rs_result = Id { ptr: isl_rs_result,
481                                 should_free_on_drop: true };
482        isl_rs_result
483    }
484
485    /// Wraps `isl_set_set_tuple_id`.
486    pub fn set_tuple_id(self, id: Id) -> Set {
487        let set = self;
488        let mut set = set;
489        set.do_not_free_on_drop();
490        let set = set.ptr;
491        let mut id = id;
492        id.do_not_free_on_drop();
493        let id = id.ptr;
494        let isl_rs_result = unsafe { isl_set_set_tuple_id(set, id) };
495        let isl_rs_result = Set { ptr: isl_rs_result,
496                                  should_free_on_drop: true };
497        isl_rs_result
498    }
499
500    /// Wraps `isl_set_reset_tuple_id`.
501    pub fn reset_tuple_id(self) -> Set {
502        let set = self;
503        let mut set = set;
504        set.do_not_free_on_drop();
505        let set = set.ptr;
506        let isl_rs_result = unsafe { isl_set_reset_tuple_id(set) };
507        let isl_rs_result = Set { ptr: isl_rs_result,
508                                  should_free_on_drop: true };
509        isl_rs_result
510    }
511
512    /// Wraps `isl_set_has_tuple_id`.
513    pub fn has_tuple_id(&self) -> bool {
514        let set = self;
515        let set = set.ptr;
516        let isl_rs_result = unsafe { isl_set_has_tuple_id(set) };
517        let isl_rs_result = match isl_rs_result {
518            0 => false,
519            1 => true,
520            _ => panic!("Got isl_bool = -1"),
521        };
522        isl_rs_result
523    }
524
525    /// Wraps `isl_set_get_tuple_id`.
526    pub fn get_tuple_id(&self) -> Id {
527        let set = self;
528        let set = set.ptr;
529        let isl_rs_result = unsafe { isl_set_get_tuple_id(set) };
530        let isl_rs_result = Id { ptr: isl_rs_result,
531                                 should_free_on_drop: true };
532        isl_rs_result
533    }
534
535    /// Wraps `isl_set_reset_user`.
536    pub fn reset_user(self) -> Set {
537        let set = self;
538        let mut set = set;
539        set.do_not_free_on_drop();
540        let set = set.ptr;
541        let isl_rs_result = unsafe { isl_set_reset_user(set) };
542        let isl_rs_result = Set { ptr: isl_rs_result,
543                                  should_free_on_drop: true };
544        isl_rs_result
545    }
546
547    /// Wraps `isl_set_find_dim_by_id`.
548    pub fn find_dim_by_id(&self, type_: DimType, id: &Id) -> i32 {
549        let set = self;
550        let set = set.ptr;
551        let id = id.ptr;
552        let isl_rs_result = unsafe { isl_set_find_dim_by_id(set, type_, id) };
553        isl_rs_result
554    }
555
556    /// Wraps `isl_set_find_dim_by_name`.
557    pub fn find_dim_by_name(&self, type_: DimType, name: &str) -> i32 {
558        let set = self;
559        let set = set.ptr;
560        let name = CString::new(name).unwrap();
561        let name = name.as_ptr();
562        let isl_rs_result = unsafe { isl_set_find_dim_by_name(set, type_, name) };
563        isl_rs_result
564    }
565
566    /// Wraps `isl_set_remove_redundancies`.
567    pub fn remove_redundancies(self) -> Set {
568        let set = self;
569        let mut set = set;
570        set.do_not_free_on_drop();
571        let set = set.ptr;
572        let isl_rs_result = unsafe { isl_set_remove_redundancies(set) };
573        let isl_rs_result = Set { ptr: isl_rs_result,
574                                  should_free_on_drop: true };
575        isl_rs_result
576    }
577
578    /// Wraps `isl_set_read_from_str`.
579    pub fn read_from_str(ctx: &Context, str_: &str) -> Set {
580        let ctx = ctx.ptr;
581        let str_ = CString::new(str_).unwrap();
582        let str_ = str_.as_ptr();
583        let isl_rs_result = unsafe { isl_set_read_from_str(ctx, str_) };
584        let isl_rs_result = Set { ptr: isl_rs_result,
585                                  should_free_on_drop: true };
586        isl_rs_result
587    }
588
589    /// Wraps `isl_set_dump`.
590    pub fn dump(&self) {
591        let set = self;
592        let set = set.ptr;
593        let isl_rs_result = unsafe { isl_set_dump(set) };
594        isl_rs_result
595    }
596
597    /// Wraps `isl_set_fix_si`.
598    pub fn fix_si(self, type_: DimType, pos: u32, value: i32) -> Set {
599        let set = self;
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_fix_si(set, type_, pos, value) };
604        let isl_rs_result = Set { ptr: isl_rs_result,
605                                  should_free_on_drop: true };
606        isl_rs_result
607    }
608
609    /// Wraps `isl_set_lower_bound_si`.
610    pub fn lower_bound_si(self, type_: DimType, pos: u32, value: i32) -> Set {
611        let set = self;
612        let mut set = set;
613        set.do_not_free_on_drop();
614        let set = set.ptr;
615        let isl_rs_result = unsafe { isl_set_lower_bound_si(set, type_, pos, value) };
616        let isl_rs_result = Set { ptr: isl_rs_result,
617                                  should_free_on_drop: true };
618        isl_rs_result
619    }
620
621    /// Wraps `isl_set_lower_bound_val`.
622    pub fn lower_bound_val(self, type_: DimType, pos: u32, value: Val) -> Set {
623        let set = self;
624        let mut set = set;
625        set.do_not_free_on_drop();
626        let set = set.ptr;
627        let mut value = value;
628        value.do_not_free_on_drop();
629        let value = value.ptr;
630        let isl_rs_result = unsafe { isl_set_lower_bound_val(set, type_, pos, value) };
631        let isl_rs_result = Set { ptr: isl_rs_result,
632                                  should_free_on_drop: true };
633        isl_rs_result
634    }
635
636    /// Wraps `isl_set_upper_bound_si`.
637    pub fn upper_bound_si(self, type_: DimType, pos: u32, value: i32) -> Set {
638        let set = self;
639        let mut set = set;
640        set.do_not_free_on_drop();
641        let set = set.ptr;
642        let isl_rs_result = unsafe { isl_set_upper_bound_si(set, type_, pos, value) };
643        let isl_rs_result = Set { ptr: isl_rs_result,
644                                  should_free_on_drop: true };
645        isl_rs_result
646    }
647
648    /// Wraps `isl_set_upper_bound_val`.
649    pub fn upper_bound_val(self, type_: DimType, pos: u32, value: Val) -> Set {
650        let set = self;
651        let mut set = set;
652        set.do_not_free_on_drop();
653        let set = set.ptr;
654        let mut value = value;
655        value.do_not_free_on_drop();
656        let value = value.ptr;
657        let isl_rs_result = unsafe { isl_set_upper_bound_val(set, type_, pos, value) };
658        let isl_rs_result = Set { ptr: isl_rs_result,
659                                  should_free_on_drop: true };
660        isl_rs_result
661    }
662
663    /// Wraps `isl_set_equate`.
664    pub fn equate(self, type1: DimType, pos1: i32, type2: DimType, pos2: i32) -> Set {
665        let set = self;
666        let mut set = set;
667        set.do_not_free_on_drop();
668        let set = set.ptr;
669        let isl_rs_result = unsafe { isl_set_equate(set, type1, pos1, type2, pos2) };
670        let isl_rs_result = Set { ptr: isl_rs_result,
671                                  should_free_on_drop: true };
672        isl_rs_result
673    }
674
675    /// Wraps `isl_set_lexmin`.
676    pub fn lexmin(self) -> Set {
677        let set = self;
678        let mut set = set;
679        set.do_not_free_on_drop();
680        let set = set.ptr;
681        let isl_rs_result = unsafe { isl_set_lexmin(set) };
682        let isl_rs_result = Set { ptr: isl_rs_result,
683                                  should_free_on_drop: true };
684        isl_rs_result
685    }
686
687    /// Wraps `isl_set_lexmax`.
688    pub fn lexmax(self) -> Set {
689        let set = self;
690        let mut set = set;
691        set.do_not_free_on_drop();
692        let set = set.ptr;
693        let isl_rs_result = unsafe { isl_set_lexmax(set) };
694        let isl_rs_result = Set { ptr: isl_rs_result,
695                                  should_free_on_drop: true };
696        isl_rs_result
697    }
698
699    /// Wraps `isl_set_follows_at`.
700    pub fn follows_at(&self, set2: &Set, pos: i32) -> i32 {
701        let set1 = self;
702        let set1 = set1.ptr;
703        let set2 = set2.ptr;
704        let isl_rs_result = unsafe { isl_set_follows_at(set1, set2, pos) };
705        isl_rs_result
706    }
707
708    /// Wraps `isl_set_params`.
709    pub fn params(self) -> Set {
710        let set = self;
711        let mut set = set;
712        set.do_not_free_on_drop();
713        let set = set.ptr;
714        let isl_rs_result = unsafe { isl_set_params(set) };
715        let isl_rs_result = Set { ptr: isl_rs_result,
716                                  should_free_on_drop: true };
717        isl_rs_result
718    }
719
720    /// Wraps `isl_set_from_params`.
721    pub fn from_params(self) -> Set {
722        let set = self;
723        let mut set = set;
724        set.do_not_free_on_drop();
725        let set = set.ptr;
726        let isl_rs_result = unsafe { isl_set_from_params(set) };
727        let isl_rs_result = Set { ptr: isl_rs_result,
728                                  should_free_on_drop: true };
729        isl_rs_result
730    }
731
732    /// Wraps `isl_set_empty`.
733    pub fn empty(space: Space) -> Set {
734        let mut space = space;
735        space.do_not_free_on_drop();
736        let space = space.ptr;
737        let isl_rs_result = unsafe { isl_set_empty(space) };
738        let isl_rs_result = Set { ptr: isl_rs_result,
739                                  should_free_on_drop: true };
740        isl_rs_result
741    }
742
743    /// Wraps `isl_set_universe`.
744    pub fn universe(space: Space) -> Set {
745        let mut space = space;
746        space.do_not_free_on_drop();
747        let space = space.ptr;
748        let isl_rs_result = unsafe { isl_set_universe(space) };
749        let isl_rs_result = Set { ptr: isl_rs_result,
750                                  should_free_on_drop: true };
751        isl_rs_result
752    }
753
754    /// Wraps `isl_set_nat_universe`.
755    pub fn nat_universe(space: Space) -> Set {
756        let mut space = space;
757        space.do_not_free_on_drop();
758        let space = space.ptr;
759        let isl_rs_result = unsafe { isl_set_nat_universe(space) };
760        let isl_rs_result = Set { ptr: isl_rs_result,
761                                  should_free_on_drop: true };
762        isl_rs_result
763    }
764
765    /// Wraps `isl_set_copy`.
766    pub fn copy(&self) -> Set {
767        let set = self;
768        let set = set.ptr;
769        let isl_rs_result = unsafe { isl_set_copy(set) };
770        let isl_rs_result = Set { ptr: isl_rs_result,
771                                  should_free_on_drop: true };
772        isl_rs_result
773    }
774
775    /// Wraps `isl_set_free`.
776    pub fn free(self) -> Set {
777        let set = self;
778        let mut set = set;
779        set.do_not_free_on_drop();
780        let set = set.ptr;
781        let isl_rs_result = unsafe { isl_set_free(set) };
782        let isl_rs_result = Set { ptr: isl_rs_result,
783                                  should_free_on_drop: true };
784        isl_rs_result
785    }
786
787    /// Wraps `isl_set_from_basic_set`.
788    pub fn from_basic_set(bset: BasicSet) -> Set {
789        let mut bset = bset;
790        bset.do_not_free_on_drop();
791        let bset = bset.ptr;
792        let isl_rs_result = unsafe { isl_set_from_basic_set(bset) };
793        let isl_rs_result = Set { ptr: isl_rs_result,
794                                  should_free_on_drop: true };
795        isl_rs_result
796    }
797
798    /// Wraps `isl_set_sample`.
799    pub fn sample(self) -> BasicSet {
800        let set = self;
801        let mut set = set;
802        set.do_not_free_on_drop();
803        let set = set.ptr;
804        let isl_rs_result = unsafe { isl_set_sample(set) };
805        let isl_rs_result = BasicSet { ptr: isl_rs_result,
806                                       should_free_on_drop: true };
807        isl_rs_result
808    }
809
810    /// Wraps `isl_set_sample_point`.
811    pub fn sample_point(self) -> Point {
812        let set = self;
813        let mut set = set;
814        set.do_not_free_on_drop();
815        let set = set.ptr;
816        let isl_rs_result = unsafe { isl_set_sample_point(set) };
817        let isl_rs_result = Point { ptr: isl_rs_result,
818                                    should_free_on_drop: true };
819        isl_rs_result
820    }
821
822    /// Wraps `isl_set_detect_equalities`.
823    pub fn detect_equalities(self) -> Set {
824        let set = self;
825        let mut set = set;
826        set.do_not_free_on_drop();
827        let set = set.ptr;
828        let isl_rs_result = unsafe { isl_set_detect_equalities(set) };
829        let isl_rs_result = Set { ptr: isl_rs_result,
830                                  should_free_on_drop: true };
831        isl_rs_result
832    }
833
834    /// Wraps `isl_set_affine_hull`.
835    pub fn affine_hull(self) -> BasicSet {
836        let set = self;
837        let mut set = set;
838        set.do_not_free_on_drop();
839        let set = set.ptr;
840        let isl_rs_result = unsafe { isl_set_affine_hull(set) };
841        let isl_rs_result = BasicSet { ptr: isl_rs_result,
842                                       should_free_on_drop: true };
843        isl_rs_result
844    }
845
846    /// Wraps `isl_set_convex_hull`.
847    pub fn convex_hull(self) -> BasicSet {
848        let set = self;
849        let mut set = set;
850        set.do_not_free_on_drop();
851        let set = set.ptr;
852        let isl_rs_result = unsafe { isl_set_convex_hull(set) };
853        let isl_rs_result = BasicSet { ptr: isl_rs_result,
854                                       should_free_on_drop: true };
855        isl_rs_result
856    }
857
858    /// Wraps `isl_set_polyhedral_hull`.
859    pub fn polyhedral_hull(self) -> BasicSet {
860        let set = self;
861        let mut set = set;
862        set.do_not_free_on_drop();
863        let set = set.ptr;
864        let isl_rs_result = unsafe { isl_set_polyhedral_hull(set) };
865        let isl_rs_result = BasicSet { ptr: isl_rs_result,
866                                       should_free_on_drop: true };
867        isl_rs_result
868    }
869
870    /// Wraps `isl_set_simple_hull`.
871    pub fn simple_hull(self) -> BasicSet {
872        let set = self;
873        let mut set = set;
874        set.do_not_free_on_drop();
875        let set = set.ptr;
876        let isl_rs_result = unsafe { isl_set_simple_hull(set) };
877        let isl_rs_result = BasicSet { ptr: isl_rs_result,
878                                       should_free_on_drop: true };
879        isl_rs_result
880    }
881
882    /// Wraps `isl_set_unshifted_simple_hull`.
883    pub fn unshifted_simple_hull(self) -> BasicSet {
884        let set = self;
885        let mut set = set;
886        set.do_not_free_on_drop();
887        let set = set.ptr;
888        let isl_rs_result = unsafe { isl_set_unshifted_simple_hull(set) };
889        let isl_rs_result = BasicSet { ptr: isl_rs_result,
890                                       should_free_on_drop: true };
891        isl_rs_result
892    }
893
894    /// Wraps `isl_set_plain_unshifted_simple_hull`.
895    pub fn plain_unshifted_simple_hull(self) -> BasicSet {
896        let set = self;
897        let mut set = set;
898        set.do_not_free_on_drop();
899        let set = set.ptr;
900        let isl_rs_result = unsafe { isl_set_plain_unshifted_simple_hull(set) };
901        let isl_rs_result = BasicSet { ptr: isl_rs_result,
902                                       should_free_on_drop: true };
903        isl_rs_result
904    }
905
906    /// Wraps `isl_set_bounded_simple_hull`.
907    pub fn bounded_simple_hull(self) -> BasicSet {
908        let set = self;
909        let mut set = set;
910        set.do_not_free_on_drop();
911        let set = set.ptr;
912        let isl_rs_result = unsafe { isl_set_bounded_simple_hull(set) };
913        let isl_rs_result = BasicSet { ptr: isl_rs_result,
914                                       should_free_on_drop: true };
915        isl_rs_result
916    }
917
918    /// Wraps `isl_set_union_disjoint`.
919    pub fn union_disjoint(self, set2: Set) -> Set {
920        let set1 = self;
921        let mut set1 = set1;
922        set1.do_not_free_on_drop();
923        let set1 = set1.ptr;
924        let mut set2 = set2;
925        set2.do_not_free_on_drop();
926        let set2 = set2.ptr;
927        let isl_rs_result = unsafe { isl_set_union_disjoint(set1, set2) };
928        let isl_rs_result = Set { ptr: isl_rs_result,
929                                  should_free_on_drop: true };
930        isl_rs_result
931    }
932
933    /// Wraps `isl_set_union`.
934    pub fn union(self, set2: Set) -> Set {
935        let set1 = self;
936        let mut set1 = set1;
937        set1.do_not_free_on_drop();
938        let set1 = set1.ptr;
939        let mut set2 = set2;
940        set2.do_not_free_on_drop();
941        let set2 = set2.ptr;
942        let isl_rs_result = unsafe { isl_set_union(set1, set2) };
943        let isl_rs_result = Set { ptr: isl_rs_result,
944                                  should_free_on_drop: true };
945        isl_rs_result
946    }
947
948    /// Wraps `isl_set_product`.
949    pub fn product(self, set2: Set) -> Set {
950        let set1 = self;
951        let mut set1 = set1;
952        set1.do_not_free_on_drop();
953        let set1 = set1.ptr;
954        let mut set2 = set2;
955        set2.do_not_free_on_drop();
956        let set2 = set2.ptr;
957        let isl_rs_result = unsafe { isl_set_product(set1, set2) };
958        let isl_rs_result = Set { ptr: isl_rs_result,
959                                  should_free_on_drop: true };
960        isl_rs_result
961    }
962
963    /// Wraps `isl_set_flat_product`.
964    pub fn flat_product(self, set2: Set) -> Set {
965        let set1 = self;
966        let mut set1 = set1;
967        set1.do_not_free_on_drop();
968        let set1 = set1.ptr;
969        let mut set2 = set2;
970        set2.do_not_free_on_drop();
971        let set2 = set2.ptr;
972        let isl_rs_result = unsafe { isl_set_flat_product(set1, set2) };
973        let isl_rs_result = Set { ptr: isl_rs_result,
974                                  should_free_on_drop: true };
975        isl_rs_result
976    }
977
978    /// Wraps `isl_set_intersect`.
979    pub fn intersect(self, set2: Set) -> Set {
980        let set1 = self;
981        let mut set1 = set1;
982        set1.do_not_free_on_drop();
983        let set1 = set1.ptr;
984        let mut set2 = set2;
985        set2.do_not_free_on_drop();
986        let set2 = set2.ptr;
987        let isl_rs_result = unsafe { isl_set_intersect(set1, set2) };
988        let isl_rs_result = Set { ptr: isl_rs_result,
989                                  should_free_on_drop: true };
990        isl_rs_result
991    }
992
993    /// Wraps `isl_set_intersect_params`.
994    pub fn intersect_params(self, params: Set) -> Set {
995        let set = self;
996        let mut set = set;
997        set.do_not_free_on_drop();
998        let set = set.ptr;
999        let mut params = params;
1000        params.do_not_free_on_drop();
1001        let params = params.ptr;
1002        let isl_rs_result = unsafe { isl_set_intersect_params(set, params) };
1003        let isl_rs_result = Set { ptr: isl_rs_result,
1004                                  should_free_on_drop: true };
1005        isl_rs_result
1006    }
1007
1008    /// Wraps `isl_set_intersect_factor_domain`.
1009    pub fn intersect_factor_domain(self, domain: Set) -> Set {
1010        let set = self;
1011        let mut set = set;
1012        set.do_not_free_on_drop();
1013        let set = set.ptr;
1014        let mut domain = domain;
1015        domain.do_not_free_on_drop();
1016        let domain = domain.ptr;
1017        let isl_rs_result = unsafe { isl_set_intersect_factor_domain(set, domain) };
1018        let isl_rs_result = Set { ptr: isl_rs_result,
1019                                  should_free_on_drop: true };
1020        isl_rs_result
1021    }
1022
1023    /// Wraps `isl_set_intersect_factor_range`.
1024    pub fn intersect_factor_range(self, range: Set) -> Set {
1025        let set = self;
1026        let mut set = set;
1027        set.do_not_free_on_drop();
1028        let set = set.ptr;
1029        let mut range = range;
1030        range.do_not_free_on_drop();
1031        let range = range.ptr;
1032        let isl_rs_result = unsafe { isl_set_intersect_factor_range(set, range) };
1033        let isl_rs_result = Set { ptr: isl_rs_result,
1034                                  should_free_on_drop: true };
1035        isl_rs_result
1036    }
1037
1038    /// Wraps `isl_set_subtract`.
1039    pub fn subtract(self, set2: Set) -> Set {
1040        let set1 = self;
1041        let mut set1 = set1;
1042        set1.do_not_free_on_drop();
1043        let set1 = set1.ptr;
1044        let mut set2 = set2;
1045        set2.do_not_free_on_drop();
1046        let set2 = set2.ptr;
1047        let isl_rs_result = unsafe { isl_set_subtract(set1, set2) };
1048        let isl_rs_result = Set { ptr: isl_rs_result,
1049                                  should_free_on_drop: true };
1050        isl_rs_result
1051    }
1052
1053    /// Wraps `isl_set_complement`.
1054    pub fn complement(self) -> Set {
1055        let set = self;
1056        let mut set = set;
1057        set.do_not_free_on_drop();
1058        let set = set.ptr;
1059        let isl_rs_result = unsafe { isl_set_complement(set) };
1060        let isl_rs_result = Set { ptr: isl_rs_result,
1061                                  should_free_on_drop: true };
1062        isl_rs_result
1063    }
1064
1065    /// Wraps `isl_set_apply`.
1066    pub fn apply(self, map: Map) -> Set {
1067        let set = self;
1068        let mut set = set;
1069        set.do_not_free_on_drop();
1070        let set = set.ptr;
1071        let mut map = map;
1072        map.do_not_free_on_drop();
1073        let map = map.ptr;
1074        let isl_rs_result = unsafe { isl_set_apply(set, map) };
1075        let isl_rs_result = Set { ptr: isl_rs_result,
1076                                  should_free_on_drop: true };
1077        isl_rs_result
1078    }
1079
1080    /// Wraps `isl_set_fix_val`.
1081    pub fn fix_val(self, type_: DimType, pos: u32, v: Val) -> Set {
1082        let set = self;
1083        let mut set = set;
1084        set.do_not_free_on_drop();
1085        let set = set.ptr;
1086        let mut v = v;
1087        v.do_not_free_on_drop();
1088        let v = v.ptr;
1089        let isl_rs_result = unsafe { isl_set_fix_val(set, type_, pos, v) };
1090        let isl_rs_result = Set { ptr: isl_rs_result,
1091                                  should_free_on_drop: true };
1092        isl_rs_result
1093    }
1094
1095    /// Wraps `isl_set_fix_dim_si`.
1096    pub fn fix_dim_si(self, dim: u32, value: i32) -> Set {
1097        let set = self;
1098        let mut set = set;
1099        set.do_not_free_on_drop();
1100        let set = set.ptr;
1101        let isl_rs_result = unsafe { isl_set_fix_dim_si(set, dim, value) };
1102        let isl_rs_result = Set { ptr: isl_rs_result,
1103                                  should_free_on_drop: true };
1104        isl_rs_result
1105    }
1106
1107    /// Wraps `isl_set_insert_dims`.
1108    pub fn insert_dims(self, type_: DimType, pos: u32, n: u32) -> Set {
1109        let set = self;
1110        let mut set = set;
1111        set.do_not_free_on_drop();
1112        let set = set.ptr;
1113        let isl_rs_result = unsafe { isl_set_insert_dims(set, type_, pos, n) };
1114        let isl_rs_result = Set { ptr: isl_rs_result,
1115                                  should_free_on_drop: true };
1116        isl_rs_result
1117    }
1118
1119    /// Wraps `isl_set_add_dims`.
1120    pub fn add_dims(self, type_: DimType, n: u32) -> Set {
1121        let set = self;
1122        let mut set = set;
1123        set.do_not_free_on_drop();
1124        let set = set.ptr;
1125        let isl_rs_result = unsafe { isl_set_add_dims(set, type_, n) };
1126        let isl_rs_result = Set { ptr: isl_rs_result,
1127                                  should_free_on_drop: true };
1128        isl_rs_result
1129    }
1130
1131    /// Wraps `isl_set_move_dims`.
1132    pub fn move_dims(self, dst_type: DimType, dst_pos: u32, src_type: DimType, src_pos: u32,
1133                     n: u32)
1134                     -> Set {
1135        let set = self;
1136        let mut set = set;
1137        set.do_not_free_on_drop();
1138        let set = set.ptr;
1139        let isl_rs_result =
1140            unsafe { isl_set_move_dims(set, dst_type, dst_pos, src_type, src_pos, n) };
1141        let isl_rs_result = Set { ptr: isl_rs_result,
1142                                  should_free_on_drop: true };
1143        isl_rs_result
1144    }
1145
1146    /// Wraps `isl_set_project_out_param_id`.
1147    pub fn project_out_param_id(self, id: Id) -> Set {
1148        let set = self;
1149        let mut set = set;
1150        set.do_not_free_on_drop();
1151        let set = set.ptr;
1152        let mut id = id;
1153        id.do_not_free_on_drop();
1154        let id = id.ptr;
1155        let isl_rs_result = unsafe { isl_set_project_out_param_id(set, id) };
1156        let isl_rs_result = Set { ptr: isl_rs_result,
1157                                  should_free_on_drop: true };
1158        isl_rs_result
1159    }
1160
1161    /// Wraps `isl_set_project_out`.
1162    pub fn project_out(self, type_: DimType, first: u32, n: u32) -> Set {
1163        let set = self;
1164        let mut set = set;
1165        set.do_not_free_on_drop();
1166        let set = set.ptr;
1167        let isl_rs_result = unsafe { isl_set_project_out(set, type_, first, n) };
1168        let isl_rs_result = Set { ptr: isl_rs_result,
1169                                  should_free_on_drop: true };
1170        isl_rs_result
1171    }
1172
1173    /// Wraps `isl_set_project_out_all_params`.
1174    pub fn project_out_all_params(self) -> Set {
1175        let set = self;
1176        let mut set = set;
1177        set.do_not_free_on_drop();
1178        let set = set.ptr;
1179        let isl_rs_result = unsafe { isl_set_project_out_all_params(set) };
1180        let isl_rs_result = Set { ptr: isl_rs_result,
1181                                  should_free_on_drop: true };
1182        isl_rs_result
1183    }
1184
1185    /// Wraps `isl_set_project_onto_map`.
1186    pub fn project_onto_map(self, type_: DimType, first: u32, n: u32) -> Map {
1187        let set = self;
1188        let mut set = set;
1189        set.do_not_free_on_drop();
1190        let set = set.ptr;
1191        let isl_rs_result = unsafe { isl_set_project_onto_map(set, type_, first, n) };
1192        let isl_rs_result = Map { ptr: isl_rs_result,
1193                                  should_free_on_drop: true };
1194        isl_rs_result
1195    }
1196
1197    /// Wraps `isl_set_eliminate`.
1198    pub fn eliminate(self, type_: DimType, first: u32, n: u32) -> Set {
1199        let set = self;
1200        let mut set = set;
1201        set.do_not_free_on_drop();
1202        let set = set.ptr;
1203        let isl_rs_result = unsafe { isl_set_eliminate(set, type_, first, n) };
1204        let isl_rs_result = Set { ptr: isl_rs_result,
1205                                  should_free_on_drop: true };
1206        isl_rs_result
1207    }
1208
1209    /// Wraps `isl_set_eliminate_dims`.
1210    pub fn eliminate_dims(self, first: u32, n: u32) -> Set {
1211        let set = self;
1212        let mut set = set;
1213        set.do_not_free_on_drop();
1214        let set = set.ptr;
1215        let isl_rs_result = unsafe { isl_set_eliminate_dims(set, first, n) };
1216        let isl_rs_result = Set { ptr: isl_rs_result,
1217                                  should_free_on_drop: true };
1218        isl_rs_result
1219    }
1220
1221    /// Wraps `isl_set_remove_dims`.
1222    pub fn remove_dims(self, type_: DimType, first: u32, n: u32) -> Set {
1223        let bset = self;
1224        let mut bset = bset;
1225        bset.do_not_free_on_drop();
1226        let bset = bset.ptr;
1227        let isl_rs_result = unsafe { isl_set_remove_dims(bset, type_, first, n) };
1228        let isl_rs_result = Set { ptr: isl_rs_result,
1229                                  should_free_on_drop: true };
1230        isl_rs_result
1231    }
1232
1233    /// Wraps `isl_set_remove_divs_involving_dims`.
1234    pub fn remove_divs_involving_dims(self, type_: DimType, first: u32, n: u32) -> Set {
1235        let set = self;
1236        let mut set = set;
1237        set.do_not_free_on_drop();
1238        let set = set.ptr;
1239        let isl_rs_result = unsafe { isl_set_remove_divs_involving_dims(set, type_, first, n) };
1240        let isl_rs_result = Set { ptr: isl_rs_result,
1241                                  should_free_on_drop: true };
1242        isl_rs_result
1243    }
1244
1245    /// Wraps `isl_set_remove_unknown_divs`.
1246    pub fn remove_unknown_divs(self) -> Set {
1247        let set = self;
1248        let mut set = set;
1249        set.do_not_free_on_drop();
1250        let set = set.ptr;
1251        let isl_rs_result = unsafe { isl_set_remove_unknown_divs(set) };
1252        let isl_rs_result = Set { ptr: isl_rs_result,
1253                                  should_free_on_drop: true };
1254        isl_rs_result
1255    }
1256
1257    /// Wraps `isl_set_remove_divs`.
1258    pub fn remove_divs(self) -> Set {
1259        let set = self;
1260        let mut set = set;
1261        set.do_not_free_on_drop();
1262        let set = set.ptr;
1263        let isl_rs_result = unsafe { isl_set_remove_divs(set) };
1264        let isl_rs_result = Set { ptr: isl_rs_result,
1265                                  should_free_on_drop: true };
1266        isl_rs_result
1267    }
1268
1269    /// Wraps `isl_set_split_dims`.
1270    pub fn split_dims(self, type_: DimType, first: u32, n: u32) -> Set {
1271        let set = self;
1272        let mut set = set;
1273        set.do_not_free_on_drop();
1274        let set = set.ptr;
1275        let isl_rs_result = unsafe { isl_set_split_dims(set, type_, first, n) };
1276        let isl_rs_result = Set { ptr: isl_rs_result,
1277                                  should_free_on_drop: true };
1278        isl_rs_result
1279    }
1280
1281    /// Wraps `isl_set_drop_constraints_involving_dims`.
1282    pub fn drop_constraints_involving_dims(self, type_: DimType, first: u32, n: u32) -> Set {
1283        let set = self;
1284        let mut set = set;
1285        set.do_not_free_on_drop();
1286        let set = set.ptr;
1287        let isl_rs_result =
1288            unsafe { isl_set_drop_constraints_involving_dims(set, type_, first, n) };
1289        let isl_rs_result = Set { ptr: isl_rs_result,
1290                                  should_free_on_drop: true };
1291        isl_rs_result
1292    }
1293
1294    /// Wraps `isl_set_drop_constraints_not_involving_dims`.
1295    pub fn drop_constraints_not_involving_dims(self, type_: DimType, first: u32, n: u32) -> Set {
1296        let set = self;
1297        let mut set = set;
1298        set.do_not_free_on_drop();
1299        let set = set.ptr;
1300        let isl_rs_result =
1301            unsafe { isl_set_drop_constraints_not_involving_dims(set, type_, first, n) };
1302        let isl_rs_result = Set { ptr: isl_rs_result,
1303                                  should_free_on_drop: true };
1304        isl_rs_result
1305    }
1306
1307    /// Wraps `isl_set_involves_locals`.
1308    pub fn involves_locals(&self) -> bool {
1309        let set = self;
1310        let set = set.ptr;
1311        let isl_rs_result = unsafe { isl_set_involves_locals(set) };
1312        let isl_rs_result = match isl_rs_result {
1313            0 => false,
1314            1 => true,
1315            _ => panic!("Got isl_bool = -1"),
1316        };
1317        isl_rs_result
1318    }
1319
1320    /// Wraps `isl_set_involves_dims`.
1321    pub fn involves_dims(&self, type_: DimType, first: u32, n: u32) -> bool {
1322        let set = self;
1323        let set = set.ptr;
1324        let isl_rs_result = unsafe { isl_set_involves_dims(set, type_, first, n) };
1325        let isl_rs_result = match isl_rs_result {
1326            0 => false,
1327            1 => true,
1328            _ => panic!("Got isl_bool = -1"),
1329        };
1330        isl_rs_result
1331    }
1332
1333    /// Wraps `isl_set_plain_is_empty`.
1334    pub fn plain_is_empty(&self) -> bool {
1335        let set = self;
1336        let set = set.ptr;
1337        let isl_rs_result = unsafe { isl_set_plain_is_empty(set) };
1338        let isl_rs_result = match isl_rs_result {
1339            0 => false,
1340            1 => true,
1341            _ => panic!("Got isl_bool = -1"),
1342        };
1343        isl_rs_result
1344    }
1345
1346    /// Wraps `isl_set_plain_is_universe`.
1347    pub fn plain_is_universe(&self) -> bool {
1348        let set = self;
1349        let set = set.ptr;
1350        let isl_rs_result = unsafe { isl_set_plain_is_universe(set) };
1351        let isl_rs_result = match isl_rs_result {
1352            0 => false,
1353            1 => true,
1354            _ => panic!("Got isl_bool = -1"),
1355        };
1356        isl_rs_result
1357    }
1358
1359    /// Wraps `isl_set_is_params`.
1360    pub fn is_params(&self) -> bool {
1361        let set = self;
1362        let set = set.ptr;
1363        let isl_rs_result = unsafe { isl_set_is_params(set) };
1364        let isl_rs_result = match isl_rs_result {
1365            0 => false,
1366            1 => true,
1367            _ => panic!("Got isl_bool = -1"),
1368        };
1369        isl_rs_result
1370    }
1371
1372    /// Wraps `isl_set_is_empty`.
1373    pub fn is_empty(&self) -> bool {
1374        let set = self;
1375        let set = set.ptr;
1376        let isl_rs_result = unsafe { isl_set_is_empty(set) };
1377        let isl_rs_result = match isl_rs_result {
1378            0 => false,
1379            1 => true,
1380            _ => panic!("Got isl_bool = -1"),
1381        };
1382        isl_rs_result
1383    }
1384
1385    /// Wraps `isl_set_is_bounded`.
1386    pub fn is_bounded(&self) -> bool {
1387        let set = self;
1388        let set = set.ptr;
1389        let isl_rs_result = unsafe { isl_set_is_bounded(set) };
1390        let isl_rs_result = match isl_rs_result {
1391            0 => false,
1392            1 => true,
1393            _ => panic!("Got isl_bool = -1"),
1394        };
1395        isl_rs_result
1396    }
1397
1398    /// Wraps `isl_set_is_subset`.
1399    pub fn is_subset(&self, set2: &Set) -> bool {
1400        let set1 = self;
1401        let set1 = set1.ptr;
1402        let set2 = set2.ptr;
1403        let isl_rs_result = unsafe { isl_set_is_subset(set1, set2) };
1404        let isl_rs_result = match isl_rs_result {
1405            0 => false,
1406            1 => true,
1407            _ => panic!("Got isl_bool = -1"),
1408        };
1409        isl_rs_result
1410    }
1411
1412    /// Wraps `isl_set_is_strict_subset`.
1413    pub fn is_strict_subset(&self, set2: &Set) -> bool {
1414        let set1 = self;
1415        let set1 = set1.ptr;
1416        let set2 = set2.ptr;
1417        let isl_rs_result = unsafe { isl_set_is_strict_subset(set1, set2) };
1418        let isl_rs_result = match isl_rs_result {
1419            0 => false,
1420            1 => true,
1421            _ => panic!("Got isl_bool = -1"),
1422        };
1423        isl_rs_result
1424    }
1425
1426    /// Wraps `isl_set_is_equal`.
1427    pub fn is_equal(&self, set2: &Set) -> bool {
1428        let set1 = self;
1429        let set1 = set1.ptr;
1430        let set2 = set2.ptr;
1431        let isl_rs_result = unsafe { isl_set_is_equal(set1, set2) };
1432        let isl_rs_result = match isl_rs_result {
1433            0 => false,
1434            1 => true,
1435            _ => panic!("Got isl_bool = -1"),
1436        };
1437        isl_rs_result
1438    }
1439
1440    /// Wraps `isl_set_is_disjoint`.
1441    pub fn is_disjoint(&self, set2: &Set) -> bool {
1442        let set1 = self;
1443        let set1 = set1.ptr;
1444        let set2 = set2.ptr;
1445        let isl_rs_result = unsafe { isl_set_is_disjoint(set1, set2) };
1446        let isl_rs_result = match isl_rs_result {
1447            0 => false,
1448            1 => true,
1449            _ => panic!("Got isl_bool = -1"),
1450        };
1451        isl_rs_result
1452    }
1453
1454    /// Wraps `isl_set_is_singleton`.
1455    pub fn is_singleton(&self) -> bool {
1456        let set = self;
1457        let set = set.ptr;
1458        let isl_rs_result = unsafe { isl_set_is_singleton(set) };
1459        let isl_rs_result = match isl_rs_result {
1460            0 => false,
1461            1 => true,
1462            _ => panic!("Got isl_bool = -1"),
1463        };
1464        isl_rs_result
1465    }
1466
1467    /// Wraps `isl_set_is_box`.
1468    pub fn is_box(&self) -> bool {
1469        let set = self;
1470        let set = set.ptr;
1471        let isl_rs_result = unsafe { isl_set_is_box(set) };
1472        let isl_rs_result = match isl_rs_result {
1473            0 => false,
1474            1 => true,
1475            _ => panic!("Got isl_bool = -1"),
1476        };
1477        isl_rs_result
1478    }
1479
1480    /// Wraps `isl_set_has_equal_space`.
1481    pub fn has_equal_space(&self, set2: &Set) -> bool {
1482        let set1 = self;
1483        let set1 = set1.ptr;
1484        let set2 = set2.ptr;
1485        let isl_rs_result = unsafe { isl_set_has_equal_space(set1, set2) };
1486        let isl_rs_result = match isl_rs_result {
1487            0 => false,
1488            1 => true,
1489            _ => panic!("Got isl_bool = -1"),
1490        };
1491        isl_rs_result
1492    }
1493
1494    /// Wraps `isl_set_sum`.
1495    pub fn sum(self, set2: Set) -> Set {
1496        let set1 = self;
1497        let mut set1 = set1;
1498        set1.do_not_free_on_drop();
1499        let set1 = set1.ptr;
1500        let mut set2 = set2;
1501        set2.do_not_free_on_drop();
1502        let set2 = set2.ptr;
1503        let isl_rs_result = unsafe { isl_set_sum(set1, set2) };
1504        let isl_rs_result = Set { ptr: isl_rs_result,
1505                                  should_free_on_drop: true };
1506        isl_rs_result
1507    }
1508
1509    /// Wraps `isl_set_neg`.
1510    pub fn neg(self) -> Set {
1511        let set = self;
1512        let mut set = set;
1513        set.do_not_free_on_drop();
1514        let set = set.ptr;
1515        let isl_rs_result = unsafe { isl_set_neg(set) };
1516        let isl_rs_result = Set { ptr: isl_rs_result,
1517                                  should_free_on_drop: true };
1518        isl_rs_result
1519    }
1520
1521    /// Wraps `isl_set_make_disjoint`.
1522    pub fn make_disjoint(self) -> Set {
1523        let set = self;
1524        let mut set = set;
1525        set.do_not_free_on_drop();
1526        let set = set.ptr;
1527        let isl_rs_result = unsafe { isl_set_make_disjoint(set) };
1528        let isl_rs_result = Set { ptr: isl_rs_result,
1529                                  should_free_on_drop: true };
1530        isl_rs_result
1531    }
1532
1533    /// Wraps `isl_set_compute_divs`.
1534    pub fn compute_divs(self) -> Set {
1535        let set = self;
1536        let mut set = set;
1537        set.do_not_free_on_drop();
1538        let set = set.ptr;
1539        let isl_rs_result = unsafe { isl_set_compute_divs(set) };
1540        let isl_rs_result = Set { ptr: isl_rs_result,
1541                                  should_free_on_drop: true };
1542        isl_rs_result
1543    }
1544
1545    /// Wraps `isl_set_align_divs`.
1546    pub fn align_divs(self) -> Set {
1547        let set = self;
1548        let mut set = set;
1549        set.do_not_free_on_drop();
1550        let set = set.ptr;
1551        let isl_rs_result = unsafe { isl_set_align_divs(set) };
1552        let isl_rs_result = Set { ptr: isl_rs_result,
1553                                  should_free_on_drop: true };
1554        isl_rs_result
1555    }
1556
1557    /// Wraps `isl_set_plain_get_val_if_fixed`.
1558    pub fn plain_get_val_if_fixed(&self, type_: DimType, pos: u32) -> Val {
1559        let set = self;
1560        let set = set.ptr;
1561        let isl_rs_result = unsafe { isl_set_plain_get_val_if_fixed(set, type_, pos) };
1562        let isl_rs_result = Val { ptr: isl_rs_result,
1563                                  should_free_on_drop: true };
1564        isl_rs_result
1565    }
1566
1567    /// Wraps `isl_set_dim_is_bounded`.
1568    pub fn dim_is_bounded(&self, type_: DimType, pos: u32) -> bool {
1569        let set = self;
1570        let set = set.ptr;
1571        let isl_rs_result = unsafe { isl_set_dim_is_bounded(set, type_, pos) };
1572        let isl_rs_result = match isl_rs_result {
1573            0 => false,
1574            1 => true,
1575            _ => panic!("Got isl_bool = -1"),
1576        };
1577        isl_rs_result
1578    }
1579
1580    /// Wraps `isl_set_dim_has_lower_bound`.
1581    pub fn dim_has_lower_bound(&self, type_: DimType, pos: u32) -> bool {
1582        let set = self;
1583        let set = set.ptr;
1584        let isl_rs_result = unsafe { isl_set_dim_has_lower_bound(set, type_, pos) };
1585        let isl_rs_result = match isl_rs_result {
1586            0 => false,
1587            1 => true,
1588            _ => panic!("Got isl_bool = -1"),
1589        };
1590        isl_rs_result
1591    }
1592
1593    /// Wraps `isl_set_dim_has_upper_bound`.
1594    pub fn dim_has_upper_bound(&self, type_: DimType, pos: u32) -> bool {
1595        let set = self;
1596        let set = set.ptr;
1597        let isl_rs_result = unsafe { isl_set_dim_has_upper_bound(set, type_, pos) };
1598        let isl_rs_result = match isl_rs_result {
1599            0 => false,
1600            1 => true,
1601            _ => panic!("Got isl_bool = -1"),
1602        };
1603        isl_rs_result
1604    }
1605
1606    /// Wraps `isl_set_dim_has_any_lower_bound`.
1607    pub fn dim_has_any_lower_bound(&self, type_: DimType, pos: u32) -> bool {
1608        let set = self;
1609        let set = set.ptr;
1610        let isl_rs_result = unsafe { isl_set_dim_has_any_lower_bound(set, type_, pos) };
1611        let isl_rs_result = match isl_rs_result {
1612            0 => false,
1613            1 => true,
1614            _ => panic!("Got isl_bool = -1"),
1615        };
1616        isl_rs_result
1617    }
1618
1619    /// Wraps `isl_set_dim_has_any_upper_bound`.
1620    pub fn dim_has_any_upper_bound(&self, type_: DimType, pos: u32) -> bool {
1621        let set = self;
1622        let set = set.ptr;
1623        let isl_rs_result = unsafe { isl_set_dim_has_any_upper_bound(set, type_, pos) };
1624        let isl_rs_result = match isl_rs_result {
1625            0 => false,
1626            1 => true,
1627            _ => panic!("Got isl_bool = -1"),
1628        };
1629        isl_rs_result
1630    }
1631
1632    /// Wraps `isl_set_gist_basic_set`.
1633    pub fn gist_basic_set(self, context: BasicSet) -> Set {
1634        let set = self;
1635        let mut set = set;
1636        set.do_not_free_on_drop();
1637        let set = set.ptr;
1638        let mut context = context;
1639        context.do_not_free_on_drop();
1640        let context = context.ptr;
1641        let isl_rs_result = unsafe { isl_set_gist_basic_set(set, context) };
1642        let isl_rs_result = Set { ptr: isl_rs_result,
1643                                  should_free_on_drop: true };
1644        isl_rs_result
1645    }
1646
1647    /// Wraps `isl_set_gist`.
1648    pub fn gist(self, context: Set) -> Set {
1649        let set = self;
1650        let mut set = set;
1651        set.do_not_free_on_drop();
1652        let set = set.ptr;
1653        let mut context = context;
1654        context.do_not_free_on_drop();
1655        let context = context.ptr;
1656        let isl_rs_result = unsafe { isl_set_gist(set, context) };
1657        let isl_rs_result = Set { ptr: isl_rs_result,
1658                                  should_free_on_drop: true };
1659        isl_rs_result
1660    }
1661
1662    /// Wraps `isl_set_gist_params`.
1663    pub fn gist_params(self, context: Set) -> Set {
1664        let set = self;
1665        let mut set = set;
1666        set.do_not_free_on_drop();
1667        let set = set.ptr;
1668        let mut context = context;
1669        context.do_not_free_on_drop();
1670        let context = context.ptr;
1671        let isl_rs_result = unsafe { isl_set_gist_params(set, context) };
1672        let isl_rs_result = Set { ptr: isl_rs_result,
1673                                  should_free_on_drop: true };
1674        isl_rs_result
1675    }
1676
1677    /// Wraps `isl_set_get_stride_info`.
1678    pub fn get_stride_info(&self, pos: i32) -> StrideInfo {
1679        let set = self;
1680        let set = set.ptr;
1681        let isl_rs_result = unsafe { isl_set_get_stride_info(set, pos) };
1682        let isl_rs_result = StrideInfo { ptr: isl_rs_result,
1683                                         should_free_on_drop: true };
1684        isl_rs_result
1685    }
1686
1687    /// Wraps `isl_set_get_stride`.
1688    pub fn get_stride(&self, pos: i32) -> Val {
1689        let set = self;
1690        let set = set.ptr;
1691        let isl_rs_result = unsafe { isl_set_get_stride(set, pos) };
1692        let isl_rs_result = Val { ptr: isl_rs_result,
1693                                  should_free_on_drop: true };
1694        isl_rs_result
1695    }
1696
1697    /// Wraps `isl_set_get_lattice_tile`.
1698    pub fn get_lattice_tile(&self) -> FixedBox {
1699        let set = self;
1700        let set = set.ptr;
1701        let isl_rs_result = unsafe { isl_set_get_lattice_tile(set) };
1702        let isl_rs_result = FixedBox { ptr: isl_rs_result,
1703                                       should_free_on_drop: true };
1704        isl_rs_result
1705    }
1706
1707    /// Wraps `isl_set_get_simple_fixed_box_hull`.
1708    pub fn get_simple_fixed_box_hull(&self) -> FixedBox {
1709        let set = self;
1710        let set = set.ptr;
1711        let isl_rs_result = unsafe { isl_set_get_simple_fixed_box_hull(set) };
1712        let isl_rs_result = FixedBox { ptr: isl_rs_result,
1713                                       should_free_on_drop: true };
1714        isl_rs_result
1715    }
1716
1717    /// Wraps `isl_set_coalesce`.
1718    pub fn coalesce(self) -> Set {
1719        let set = self;
1720        let mut set = set;
1721        set.do_not_free_on_drop();
1722        let set = set.ptr;
1723        let isl_rs_result = unsafe { isl_set_coalesce(set) };
1724        let isl_rs_result = Set { ptr: isl_rs_result,
1725                                  should_free_on_drop: true };
1726        isl_rs_result
1727    }
1728
1729    /// Wraps `isl_set_plain_cmp`.
1730    pub fn plain_cmp(&self, set2: &Set) -> i32 {
1731        let set1 = self;
1732        let set1 = set1.ptr;
1733        let set2 = set2.ptr;
1734        let isl_rs_result = unsafe { isl_set_plain_cmp(set1, set2) };
1735        isl_rs_result
1736    }
1737
1738    /// Wraps `isl_set_plain_is_equal`.
1739    pub fn plain_is_equal(&self, set2: &Set) -> bool {
1740        let set1 = self;
1741        let set1 = set1.ptr;
1742        let set2 = set2.ptr;
1743        let isl_rs_result = unsafe { isl_set_plain_is_equal(set1, set2) };
1744        let isl_rs_result = match isl_rs_result {
1745            0 => false,
1746            1 => true,
1747            _ => panic!("Got isl_bool = -1"),
1748        };
1749        isl_rs_result
1750    }
1751
1752    /// Wraps `isl_set_plain_is_disjoint`.
1753    pub fn plain_is_disjoint(&self, set2: &Set) -> bool {
1754        let set1 = self;
1755        let set1 = set1.ptr;
1756        let set2 = set2.ptr;
1757        let isl_rs_result = unsafe { isl_set_plain_is_disjoint(set1, set2) };
1758        let isl_rs_result = match isl_rs_result {
1759            0 => false,
1760            1 => true,
1761            _ => panic!("Got isl_bool = -1"),
1762        };
1763        isl_rs_result
1764    }
1765
1766    /// Wraps `isl_set_get_hash`.
1767    pub fn get_hash(&self) -> u32 {
1768        let set = self;
1769        let set = set.ptr;
1770        let isl_rs_result = unsafe { isl_set_get_hash(set) };
1771        isl_rs_result
1772    }
1773
1774    /// Wraps `isl_set_n_basic_set`.
1775    pub fn n_basic_set(&self) -> i32 {
1776        let set = self;
1777        let set = set.ptr;
1778        let isl_rs_result = unsafe { isl_set_n_basic_set(set) };
1779        isl_rs_result
1780    }
1781
1782    /// Wraps `isl_set_count_val`.
1783    pub fn count_val(&self) -> Val {
1784        let set = self;
1785        let set = set.ptr;
1786        let isl_rs_result = unsafe { isl_set_count_val(set) };
1787        let isl_rs_result = Val { ptr: isl_rs_result,
1788                                  should_free_on_drop: true };
1789        isl_rs_result
1790    }
1791
1792    /// Wraps `isl_set_from_point`.
1793    pub fn from_point(pnt: Point) -> Set {
1794        let mut pnt = pnt;
1795        pnt.do_not_free_on_drop();
1796        let pnt = pnt.ptr;
1797        let isl_rs_result = unsafe { isl_set_from_point(pnt) };
1798        let isl_rs_result = Set { ptr: isl_rs_result,
1799                                  should_free_on_drop: true };
1800        isl_rs_result
1801    }
1802
1803    /// Wraps `isl_set_box_from_points`.
1804    pub fn box_from_points(pnt1: Point, pnt2: Point) -> Set {
1805        let mut pnt1 = pnt1;
1806        pnt1.do_not_free_on_drop();
1807        let pnt1 = pnt1.ptr;
1808        let mut pnt2 = pnt2;
1809        pnt2.do_not_free_on_drop();
1810        let pnt2 = pnt2.ptr;
1811        let isl_rs_result = unsafe { isl_set_box_from_points(pnt1, pnt2) };
1812        let isl_rs_result = Set { ptr: isl_rs_result,
1813                                  should_free_on_drop: true };
1814        isl_rs_result
1815    }
1816
1817    /// Wraps `isl_set_lift`.
1818    pub fn lift(self) -> Set {
1819        let set = self;
1820        let mut set = set;
1821        set.do_not_free_on_drop();
1822        let set = set.ptr;
1823        let isl_rs_result = unsafe { isl_set_lift(set) };
1824        let isl_rs_result = Set { ptr: isl_rs_result,
1825                                  should_free_on_drop: true };
1826        isl_rs_result
1827    }
1828
1829    /// Wraps `isl_set_lex_le_set`.
1830    pub fn lex_le_set(self, set2: Set) -> Map {
1831        let set1 = self;
1832        let mut set1 = set1;
1833        set1.do_not_free_on_drop();
1834        let set1 = set1.ptr;
1835        let mut set2 = set2;
1836        set2.do_not_free_on_drop();
1837        let set2 = set2.ptr;
1838        let isl_rs_result = unsafe { isl_set_lex_le_set(set1, set2) };
1839        let isl_rs_result = Map { ptr: isl_rs_result,
1840                                  should_free_on_drop: true };
1841        isl_rs_result
1842    }
1843
1844    /// Wraps `isl_set_lex_lt_set`.
1845    pub fn lex_lt_set(self, set2: Set) -> Map {
1846        let set1 = self;
1847        let mut set1 = set1;
1848        set1.do_not_free_on_drop();
1849        let set1 = set1.ptr;
1850        let mut set2 = set2;
1851        set2.do_not_free_on_drop();
1852        let set2 = set2.ptr;
1853        let isl_rs_result = unsafe { isl_set_lex_lt_set(set1, set2) };
1854        let isl_rs_result = Map { ptr: isl_rs_result,
1855                                  should_free_on_drop: true };
1856        isl_rs_result
1857    }
1858
1859    /// Wraps `isl_set_lex_ge_set`.
1860    pub fn lex_ge_set(self, set2: Set) -> Map {
1861        let set1 = self;
1862        let mut set1 = set1;
1863        set1.do_not_free_on_drop();
1864        let set1 = set1.ptr;
1865        let mut set2 = set2;
1866        set2.do_not_free_on_drop();
1867        let set2 = set2.ptr;
1868        let isl_rs_result = unsafe { isl_set_lex_ge_set(set1, set2) };
1869        let isl_rs_result = Map { ptr: isl_rs_result,
1870                                  should_free_on_drop: true };
1871        isl_rs_result
1872    }
1873
1874    /// Wraps `isl_set_lex_gt_set`.
1875    pub fn lex_gt_set(self, set2: Set) -> Map {
1876        let set1 = self;
1877        let mut set1 = set1;
1878        set1.do_not_free_on_drop();
1879        let set1 = set1.ptr;
1880        let mut set2 = set2;
1881        set2.do_not_free_on_drop();
1882        let set2 = set2.ptr;
1883        let isl_rs_result = unsafe { isl_set_lex_gt_set(set1, set2) };
1884        let isl_rs_result = Map { ptr: isl_rs_result,
1885                                  should_free_on_drop: true };
1886        isl_rs_result
1887    }
1888
1889    /// Wraps `isl_set_size`.
1890    pub fn size(&self) -> i32 {
1891        let set = self;
1892        let set = set.ptr;
1893        let isl_rs_result = unsafe { isl_set_size(set) };
1894        isl_rs_result
1895    }
1896
1897    /// Wraps `isl_set_align_params`.
1898    pub fn align_params(self, model: Space) -> Set {
1899        let set = self;
1900        let mut set = set;
1901        set.do_not_free_on_drop();
1902        let set = set.ptr;
1903        let mut model = model;
1904        model.do_not_free_on_drop();
1905        let model = model.ptr;
1906        let isl_rs_result = unsafe { isl_set_align_params(set, model) };
1907        let isl_rs_result = Set { ptr: isl_rs_result,
1908                                  should_free_on_drop: true };
1909        isl_rs_result
1910    }
1911
1912    /// Wraps `isl_set_drop_unused_params`.
1913    pub fn drop_unused_params(self) -> Set {
1914        let set = self;
1915        let mut set = set;
1916        set.do_not_free_on_drop();
1917        let set = set.ptr;
1918        let isl_rs_result = unsafe { isl_set_drop_unused_params(set) };
1919        let isl_rs_result = Set { ptr: isl_rs_result,
1920                                  should_free_on_drop: true };
1921        isl_rs_result
1922    }
1923
1924    /// Wraps `isl_set_coefficients`.
1925    pub fn coefficients(self) -> BasicSet {
1926        let set = self;
1927        let mut set = set;
1928        set.do_not_free_on_drop();
1929        let set = set.ptr;
1930        let isl_rs_result = unsafe { isl_set_coefficients(set) };
1931        let isl_rs_result = BasicSet { ptr: isl_rs_result,
1932                                       should_free_on_drop: true };
1933        isl_rs_result
1934    }
1935
1936    /// Wraps `isl_set_solutions`.
1937    pub fn solutions(self) -> BasicSet {
1938        let set = self;
1939        let mut set = set;
1940        set.do_not_free_on_drop();
1941        let set = set.ptr;
1942        let isl_rs_result = unsafe { isl_set_solutions(set) };
1943        let isl_rs_result = BasicSet { ptr: isl_rs_result,
1944                                       should_free_on_drop: true };
1945        isl_rs_result
1946    }
1947
1948    /// Wraps `isl_set_dim_max`.
1949    pub fn dim_max(self, pos: i32) -> PwAff {
1950        let set = self;
1951        let mut set = set;
1952        set.do_not_free_on_drop();
1953        let set = set.ptr;
1954        let isl_rs_result = unsafe { isl_set_dim_max(set, pos) };
1955        let isl_rs_result = PwAff { ptr: isl_rs_result,
1956                                    should_free_on_drop: true };
1957        isl_rs_result
1958    }
1959
1960    /// Wraps `isl_set_dim_min`.
1961    pub fn dim_min(self, pos: i32) -> PwAff {
1962        let set = self;
1963        let mut set = set;
1964        set.do_not_free_on_drop();
1965        let set = set.ptr;
1966        let isl_rs_result = unsafe { isl_set_dim_min(set, pos) };
1967        let isl_rs_result = PwAff { ptr: isl_rs_result,
1968                                    should_free_on_drop: true };
1969        isl_rs_result
1970    }
1971
1972    /// Wraps `isl_set_to_str`.
1973    pub fn to_str(&self) -> &str {
1974        let set = self;
1975        let set = set.ptr;
1976        let isl_rs_result = unsafe { isl_set_to_str(set) };
1977        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
1978        let isl_rs_result = isl_rs_result.to_str().unwrap();
1979        isl_rs_result
1980    }
1981
1982    /// Does not call isl_xxx_free() on being dropped. (For internal use only.)
1983    pub fn do_not_free_on_drop(&mut self) {
1984        self.should_free_on_drop = false;
1985    }
1986}
1987
1988impl Drop for Set {
1989    fn drop(&mut self) {
1990        if self.should_free_on_drop {
1991            unsafe {
1992                isl_set_free(self.ptr);
1993            }
1994        }
1995    }
1996}