isl_rs/bindings/
options.rs

1// Automatically generated by isl_bindings_generator.
2// LICENSE: MIT
3
4use super::{Context, Error, LibISLError, Stat};
5use libc::uintptr_t;
6use std::ffi::{CStr, CString};
7use std::os::raw::c_char;
8
9/// Wraps `isl_options`.
10pub struct Options {
11    pub ptr: uintptr_t,
12    pub should_free_on_drop: bool,
13}
14
15extern "C" {
16
17    fn isl_options_free(opt: uintptr_t) -> ();
18
19    fn isl_options_get_ast_always_print_block(ctx: uintptr_t) -> i32;
20
21    fn isl_options_get_ast_iterator_type(ctx: uintptr_t) -> *const c_char;
22
23    fn isl_options_get_ast_print_macro_once(ctx: uintptr_t) -> i32;
24
25    fn isl_options_get_ast_print_outermost_block(ctx: uintptr_t) -> i32;
26
27    fn isl_options_get_bound(ctx: uintptr_t) -> i32;
28
29    fn isl_options_get_coalesce_bounded_wrapping(ctx: uintptr_t) -> i32;
30
31    fn isl_options_get_coalesce_preserve_locals(ctx: uintptr_t) -> i32;
32
33    fn isl_options_get_gbr_only_first(ctx: uintptr_t) -> i32;
34
35    fn isl_options_get_on_error(ctx: uintptr_t) -> i32;
36
37    fn isl_options_get_pip_symmetry(ctx: uintptr_t) -> i32;
38
39    fn isl_options_get_schedule_algorithm(ctx: uintptr_t) -> i32;
40
41    fn isl_options_get_schedule_carry_self_first(ctx: uintptr_t) -> i32;
42
43    fn isl_options_get_schedule_max_coefficient(ctx: uintptr_t) -> i32;
44
45    fn isl_options_get_schedule_max_constant_term(ctx: uintptr_t) -> i32;
46
47    fn isl_options_get_schedule_maximize_band_depth(ctx: uintptr_t) -> i32;
48
49    fn isl_options_get_schedule_maximize_coincidence(ctx: uintptr_t) -> i32;
50
51    fn isl_options_get_schedule_outer_coincidence(ctx: uintptr_t) -> i32;
52
53    fn isl_options_get_schedule_separate_components(ctx: uintptr_t) -> i32;
54
55    fn isl_options_get_schedule_serialize_sccs(ctx: uintptr_t) -> i32;
56
57    fn isl_options_get_schedule_split_scaled(ctx: uintptr_t) -> i32;
58
59    fn isl_options_get_schedule_treat_coalescing(ctx: uintptr_t) -> i32;
60
61    fn isl_options_get_schedule_whole_component(ctx: uintptr_t) -> i32;
62
63    fn isl_options_get_tile_scale_tile_loops(ctx: uintptr_t) -> i32;
64
65    fn isl_options_get_tile_shift_point_loops(ctx: uintptr_t) -> i32;
66
67    fn isl_options_new_with_defaults() -> uintptr_t;
68
69    fn isl_options_set_ast_always_print_block(ctx: uintptr_t, val: i32) -> i32;
70
71    fn isl_options_set_ast_iterator_type(ctx: uintptr_t, val: *const c_char) -> i32;
72
73    fn isl_options_set_ast_print_macro_once(ctx: uintptr_t, val: i32) -> i32;
74
75    fn isl_options_set_ast_print_outermost_block(ctx: uintptr_t, val: i32) -> i32;
76
77    fn isl_options_set_bound(ctx: uintptr_t, val: i32) -> i32;
78
79    fn isl_options_set_coalesce_bounded_wrapping(ctx: uintptr_t, val: i32) -> i32;
80
81    fn isl_options_set_coalesce_preserve_locals(ctx: uintptr_t, val: i32) -> i32;
82
83    fn isl_options_set_gbr_only_first(ctx: uintptr_t, val: i32) -> i32;
84
85    fn isl_options_set_on_error(ctx: uintptr_t, val: i32) -> i32;
86
87    fn isl_options_set_pip_symmetry(ctx: uintptr_t, val: i32) -> i32;
88
89    fn isl_options_set_schedule_algorithm(ctx: uintptr_t, val: i32) -> i32;
90
91    fn isl_options_set_schedule_carry_self_first(ctx: uintptr_t, val: i32) -> i32;
92
93    fn isl_options_set_schedule_max_coefficient(ctx: uintptr_t, val: i32) -> i32;
94
95    fn isl_options_set_schedule_max_constant_term(ctx: uintptr_t, val: i32) -> i32;
96
97    fn isl_options_set_schedule_maximize_band_depth(ctx: uintptr_t, val: i32) -> i32;
98
99    fn isl_options_set_schedule_maximize_coincidence(ctx: uintptr_t, val: i32) -> i32;
100
101    fn isl_options_set_schedule_outer_coincidence(ctx: uintptr_t, val: i32) -> i32;
102
103    fn isl_options_set_schedule_separate_components(ctx: uintptr_t, val: i32) -> i32;
104
105    fn isl_options_set_schedule_serialize_sccs(ctx: uintptr_t, val: i32) -> i32;
106
107    fn isl_options_set_schedule_split_scaled(ctx: uintptr_t, val: i32) -> i32;
108
109    fn isl_options_set_schedule_treat_coalescing(ctx: uintptr_t, val: i32) -> i32;
110
111    fn isl_options_set_schedule_whole_component(ctx: uintptr_t, val: i32) -> i32;
112
113    fn isl_options_set_tile_scale_tile_loops(ctx: uintptr_t, val: i32) -> i32;
114
115    fn isl_options_set_tile_shift_point_loops(ctx: uintptr_t, val: i32) -> i32;
116
117}
118
119impl Options {
120    /// Wraps `isl_options_free`.
121    pub fn free(self) -> () {
122        let opt = self;
123        let mut opt = opt;
124        opt.do_not_free_on_drop();
125        let opt = opt.ptr;
126        let isl_rs_result = unsafe { isl_options_free(opt) };
127        isl_rs_result
128    }
129
130    /// Wraps `isl_options_get_ast_always_print_block`.
131    pub fn get_ast_always_print_block(ctx: &Context) -> Result<i32, LibISLError> {
132        let isl_rs_ctx = Context { ptr: ctx.ptr,
133                                   should_free_on_drop: false };
134        let ctx = ctx.ptr;
135        let isl_rs_result = unsafe { isl_options_get_ast_always_print_block(ctx) };
136        let err = isl_rs_ctx.last_error();
137        if err != Error::None_ {
138            let err_msg = isl_rs_ctx.last_error_msg();
139            isl_rs_ctx.reset_error();
140            return Err(LibISLError::new(err, err_msg));
141        }
142        Ok(isl_rs_result)
143    }
144
145    /// Wraps `isl_options_get_ast_iterator_type`.
146    pub fn get_ast_iterator_type(ctx: &Context) -> Result<&str, LibISLError> {
147        let isl_rs_ctx = Context { ptr: ctx.ptr,
148                                   should_free_on_drop: false };
149        let ctx = ctx.ptr;
150        let isl_rs_result = unsafe { isl_options_get_ast_iterator_type(ctx) };
151        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
152        let isl_rs_result = isl_rs_result.to_str().unwrap();
153        let err = isl_rs_ctx.last_error();
154        if err != Error::None_ {
155            let err_msg = isl_rs_ctx.last_error_msg();
156            isl_rs_ctx.reset_error();
157            return Err(LibISLError::new(err, err_msg));
158        }
159        Ok(isl_rs_result)
160    }
161
162    /// Wraps `isl_options_get_ast_print_macro_once`.
163    pub fn get_ast_print_macro_once(ctx: &Context) -> Result<i32, LibISLError> {
164        let isl_rs_ctx = Context { ptr: ctx.ptr,
165                                   should_free_on_drop: false };
166        let ctx = ctx.ptr;
167        let isl_rs_result = unsafe { isl_options_get_ast_print_macro_once(ctx) };
168        let err = isl_rs_ctx.last_error();
169        if err != Error::None_ {
170            let err_msg = isl_rs_ctx.last_error_msg();
171            isl_rs_ctx.reset_error();
172            return Err(LibISLError::new(err, err_msg));
173        }
174        Ok(isl_rs_result)
175    }
176
177    /// Wraps `isl_options_get_ast_print_outermost_block`.
178    pub fn get_ast_print_outermost_block(ctx: &Context) -> Result<i32, LibISLError> {
179        let isl_rs_ctx = Context { ptr: ctx.ptr,
180                                   should_free_on_drop: false };
181        let ctx = ctx.ptr;
182        let isl_rs_result = unsafe { isl_options_get_ast_print_outermost_block(ctx) };
183        let err = isl_rs_ctx.last_error();
184        if err != Error::None_ {
185            let err_msg = isl_rs_ctx.last_error_msg();
186            isl_rs_ctx.reset_error();
187            return Err(LibISLError::new(err, err_msg));
188        }
189        Ok(isl_rs_result)
190    }
191
192    /// Wraps `isl_options_get_bound`.
193    pub fn get_bound(ctx: &Context) -> Result<i32, LibISLError> {
194        let isl_rs_ctx = Context { ptr: ctx.ptr,
195                                   should_free_on_drop: false };
196        let ctx = ctx.ptr;
197        let isl_rs_result = unsafe { isl_options_get_bound(ctx) };
198        let err = isl_rs_ctx.last_error();
199        if err != Error::None_ {
200            let err_msg = isl_rs_ctx.last_error_msg();
201            isl_rs_ctx.reset_error();
202            return Err(LibISLError::new(err, err_msg));
203        }
204        Ok(isl_rs_result)
205    }
206
207    /// Wraps `isl_options_get_coalesce_bounded_wrapping`.
208    pub fn get_coalesce_bounded_wrapping(ctx: &Context) -> Result<i32, LibISLError> {
209        let isl_rs_ctx = Context { ptr: ctx.ptr,
210                                   should_free_on_drop: false };
211        let ctx = ctx.ptr;
212        let isl_rs_result = unsafe { isl_options_get_coalesce_bounded_wrapping(ctx) };
213        let err = isl_rs_ctx.last_error();
214        if err != Error::None_ {
215            let err_msg = isl_rs_ctx.last_error_msg();
216            isl_rs_ctx.reset_error();
217            return Err(LibISLError::new(err, err_msg));
218        }
219        Ok(isl_rs_result)
220    }
221
222    /// Wraps `isl_options_get_coalesce_preserve_locals`.
223    pub fn get_coalesce_preserve_locals(ctx: &Context) -> Result<i32, LibISLError> {
224        let isl_rs_ctx = Context { ptr: ctx.ptr,
225                                   should_free_on_drop: false };
226        let ctx = ctx.ptr;
227        let isl_rs_result = unsafe { isl_options_get_coalesce_preserve_locals(ctx) };
228        let err = isl_rs_ctx.last_error();
229        if err != Error::None_ {
230            let err_msg = isl_rs_ctx.last_error_msg();
231            isl_rs_ctx.reset_error();
232            return Err(LibISLError::new(err, err_msg));
233        }
234        Ok(isl_rs_result)
235    }
236
237    /// Wraps `isl_options_get_gbr_only_first`.
238    pub fn get_gbr_only_first(ctx: &Context) -> Result<i32, LibISLError> {
239        let isl_rs_ctx = Context { ptr: ctx.ptr,
240                                   should_free_on_drop: false };
241        let ctx = ctx.ptr;
242        let isl_rs_result = unsafe { isl_options_get_gbr_only_first(ctx) };
243        let err = isl_rs_ctx.last_error();
244        if err != Error::None_ {
245            let err_msg = isl_rs_ctx.last_error_msg();
246            isl_rs_ctx.reset_error();
247            return Err(LibISLError::new(err, err_msg));
248        }
249        Ok(isl_rs_result)
250    }
251
252    /// Wraps `isl_options_get_on_error`.
253    pub fn get_on_error(ctx: &Context) -> Result<i32, LibISLError> {
254        let isl_rs_ctx = Context { ptr: ctx.ptr,
255                                   should_free_on_drop: false };
256        let ctx = ctx.ptr;
257        let isl_rs_result = unsafe { isl_options_get_on_error(ctx) };
258        let err = isl_rs_ctx.last_error();
259        if err != Error::None_ {
260            let err_msg = isl_rs_ctx.last_error_msg();
261            isl_rs_ctx.reset_error();
262            return Err(LibISLError::new(err, err_msg));
263        }
264        Ok(isl_rs_result)
265    }
266
267    /// Wraps `isl_options_get_pip_symmetry`.
268    pub fn get_pip_symmetry(ctx: &Context) -> Result<i32, LibISLError> {
269        let isl_rs_ctx = Context { ptr: ctx.ptr,
270                                   should_free_on_drop: false };
271        let ctx = ctx.ptr;
272        let isl_rs_result = unsafe { isl_options_get_pip_symmetry(ctx) };
273        let err = isl_rs_ctx.last_error();
274        if err != Error::None_ {
275            let err_msg = isl_rs_ctx.last_error_msg();
276            isl_rs_ctx.reset_error();
277            return Err(LibISLError::new(err, err_msg));
278        }
279        Ok(isl_rs_result)
280    }
281
282    /// Wraps `isl_options_get_schedule_algorithm`.
283    pub fn get_schedule_algorithm(ctx: &Context) -> Result<i32, LibISLError> {
284        let isl_rs_ctx = Context { ptr: ctx.ptr,
285                                   should_free_on_drop: false };
286        let ctx = ctx.ptr;
287        let isl_rs_result = unsafe { isl_options_get_schedule_algorithm(ctx) };
288        let err = isl_rs_ctx.last_error();
289        if err != Error::None_ {
290            let err_msg = isl_rs_ctx.last_error_msg();
291            isl_rs_ctx.reset_error();
292            return Err(LibISLError::new(err, err_msg));
293        }
294        Ok(isl_rs_result)
295    }
296
297    /// Wraps `isl_options_get_schedule_carry_self_first`.
298    pub fn get_schedule_carry_self_first(ctx: &Context) -> Result<i32, LibISLError> {
299        let isl_rs_ctx = Context { ptr: ctx.ptr,
300                                   should_free_on_drop: false };
301        let ctx = ctx.ptr;
302        let isl_rs_result = unsafe { isl_options_get_schedule_carry_self_first(ctx) };
303        let err = isl_rs_ctx.last_error();
304        if err != Error::None_ {
305            let err_msg = isl_rs_ctx.last_error_msg();
306            isl_rs_ctx.reset_error();
307            return Err(LibISLError::new(err, err_msg));
308        }
309        Ok(isl_rs_result)
310    }
311
312    /// Wraps `isl_options_get_schedule_max_coefficient`.
313    pub fn get_schedule_max_coefficient(ctx: &Context) -> Result<i32, LibISLError> {
314        let isl_rs_ctx = Context { ptr: ctx.ptr,
315                                   should_free_on_drop: false };
316        let ctx = ctx.ptr;
317        let isl_rs_result = unsafe { isl_options_get_schedule_max_coefficient(ctx) };
318        let err = isl_rs_ctx.last_error();
319        if err != Error::None_ {
320            let err_msg = isl_rs_ctx.last_error_msg();
321            isl_rs_ctx.reset_error();
322            return Err(LibISLError::new(err, err_msg));
323        }
324        Ok(isl_rs_result)
325    }
326
327    /// Wraps `isl_options_get_schedule_max_constant_term`.
328    pub fn get_schedule_max_constant_term(ctx: &Context) -> Result<i32, LibISLError> {
329        let isl_rs_ctx = Context { ptr: ctx.ptr,
330                                   should_free_on_drop: false };
331        let ctx = ctx.ptr;
332        let isl_rs_result = unsafe { isl_options_get_schedule_max_constant_term(ctx) };
333        let err = isl_rs_ctx.last_error();
334        if err != Error::None_ {
335            let err_msg = isl_rs_ctx.last_error_msg();
336            isl_rs_ctx.reset_error();
337            return Err(LibISLError::new(err, err_msg));
338        }
339        Ok(isl_rs_result)
340    }
341
342    /// Wraps `isl_options_get_schedule_maximize_band_depth`.
343    pub fn get_schedule_maximize_band_depth(ctx: &Context) -> Result<i32, LibISLError> {
344        let isl_rs_ctx = Context { ptr: ctx.ptr,
345                                   should_free_on_drop: false };
346        let ctx = ctx.ptr;
347        let isl_rs_result = unsafe { isl_options_get_schedule_maximize_band_depth(ctx) };
348        let err = isl_rs_ctx.last_error();
349        if err != Error::None_ {
350            let err_msg = isl_rs_ctx.last_error_msg();
351            isl_rs_ctx.reset_error();
352            return Err(LibISLError::new(err, err_msg));
353        }
354        Ok(isl_rs_result)
355    }
356
357    /// Wraps `isl_options_get_schedule_maximize_coincidence`.
358    pub fn get_schedule_maximize_coincidence(ctx: &Context) -> Result<i32, LibISLError> {
359        let isl_rs_ctx = Context { ptr: ctx.ptr,
360                                   should_free_on_drop: false };
361        let ctx = ctx.ptr;
362        let isl_rs_result = unsafe { isl_options_get_schedule_maximize_coincidence(ctx) };
363        let err = isl_rs_ctx.last_error();
364        if err != Error::None_ {
365            let err_msg = isl_rs_ctx.last_error_msg();
366            isl_rs_ctx.reset_error();
367            return Err(LibISLError::new(err, err_msg));
368        }
369        Ok(isl_rs_result)
370    }
371
372    /// Wraps `isl_options_get_schedule_outer_coincidence`.
373    pub fn get_schedule_outer_coincidence(ctx: &Context) -> Result<i32, LibISLError> {
374        let isl_rs_ctx = Context { ptr: ctx.ptr,
375                                   should_free_on_drop: false };
376        let ctx = ctx.ptr;
377        let isl_rs_result = unsafe { isl_options_get_schedule_outer_coincidence(ctx) };
378        let err = isl_rs_ctx.last_error();
379        if err != Error::None_ {
380            let err_msg = isl_rs_ctx.last_error_msg();
381            isl_rs_ctx.reset_error();
382            return Err(LibISLError::new(err, err_msg));
383        }
384        Ok(isl_rs_result)
385    }
386
387    /// Wraps `isl_options_get_schedule_separate_components`.
388    pub fn get_schedule_separate_components(ctx: &Context) -> Result<i32, LibISLError> {
389        let isl_rs_ctx = Context { ptr: ctx.ptr,
390                                   should_free_on_drop: false };
391        let ctx = ctx.ptr;
392        let isl_rs_result = unsafe { isl_options_get_schedule_separate_components(ctx) };
393        let err = isl_rs_ctx.last_error();
394        if err != Error::None_ {
395            let err_msg = isl_rs_ctx.last_error_msg();
396            isl_rs_ctx.reset_error();
397            return Err(LibISLError::new(err, err_msg));
398        }
399        Ok(isl_rs_result)
400    }
401
402    /// Wraps `isl_options_get_schedule_serialize_sccs`.
403    pub fn get_schedule_serialize_sccs(ctx: &Context) -> Result<i32, LibISLError> {
404        let isl_rs_ctx = Context { ptr: ctx.ptr,
405                                   should_free_on_drop: false };
406        let ctx = ctx.ptr;
407        let isl_rs_result = unsafe { isl_options_get_schedule_serialize_sccs(ctx) };
408        let err = isl_rs_ctx.last_error();
409        if err != Error::None_ {
410            let err_msg = isl_rs_ctx.last_error_msg();
411            isl_rs_ctx.reset_error();
412            return Err(LibISLError::new(err, err_msg));
413        }
414        Ok(isl_rs_result)
415    }
416
417    /// Wraps `isl_options_get_schedule_split_scaled`.
418    pub fn get_schedule_split_scaled(ctx: &Context) -> Result<i32, LibISLError> {
419        let isl_rs_ctx = Context { ptr: ctx.ptr,
420                                   should_free_on_drop: false };
421        let ctx = ctx.ptr;
422        let isl_rs_result = unsafe { isl_options_get_schedule_split_scaled(ctx) };
423        let err = isl_rs_ctx.last_error();
424        if err != Error::None_ {
425            let err_msg = isl_rs_ctx.last_error_msg();
426            isl_rs_ctx.reset_error();
427            return Err(LibISLError::new(err, err_msg));
428        }
429        Ok(isl_rs_result)
430    }
431
432    /// Wraps `isl_options_get_schedule_treat_coalescing`.
433    pub fn get_schedule_treat_coalescing(ctx: &Context) -> Result<i32, LibISLError> {
434        let isl_rs_ctx = Context { ptr: ctx.ptr,
435                                   should_free_on_drop: false };
436        let ctx = ctx.ptr;
437        let isl_rs_result = unsafe { isl_options_get_schedule_treat_coalescing(ctx) };
438        let err = isl_rs_ctx.last_error();
439        if err != Error::None_ {
440            let err_msg = isl_rs_ctx.last_error_msg();
441            isl_rs_ctx.reset_error();
442            return Err(LibISLError::new(err, err_msg));
443        }
444        Ok(isl_rs_result)
445    }
446
447    /// Wraps `isl_options_get_schedule_whole_component`.
448    pub fn get_schedule_whole_component(ctx: &Context) -> Result<i32, LibISLError> {
449        let isl_rs_ctx = Context { ptr: ctx.ptr,
450                                   should_free_on_drop: false };
451        let ctx = ctx.ptr;
452        let isl_rs_result = unsafe { isl_options_get_schedule_whole_component(ctx) };
453        let err = isl_rs_ctx.last_error();
454        if err != Error::None_ {
455            let err_msg = isl_rs_ctx.last_error_msg();
456            isl_rs_ctx.reset_error();
457            return Err(LibISLError::new(err, err_msg));
458        }
459        Ok(isl_rs_result)
460    }
461
462    /// Wraps `isl_options_get_tile_scale_tile_loops`.
463    pub fn get_tile_scale_tile_loops(ctx: &Context) -> Result<i32, LibISLError> {
464        let isl_rs_ctx = Context { ptr: ctx.ptr,
465                                   should_free_on_drop: false };
466        let ctx = ctx.ptr;
467        let isl_rs_result = unsafe { isl_options_get_tile_scale_tile_loops(ctx) };
468        let err = isl_rs_ctx.last_error();
469        if err != Error::None_ {
470            let err_msg = isl_rs_ctx.last_error_msg();
471            isl_rs_ctx.reset_error();
472            return Err(LibISLError::new(err, err_msg));
473        }
474        Ok(isl_rs_result)
475    }
476
477    /// Wraps `isl_options_get_tile_shift_point_loops`.
478    pub fn get_tile_shift_point_loops(ctx: &Context) -> Result<i32, LibISLError> {
479        let isl_rs_ctx = Context { ptr: ctx.ptr,
480                                   should_free_on_drop: false };
481        let ctx = ctx.ptr;
482        let isl_rs_result = unsafe { isl_options_get_tile_shift_point_loops(ctx) };
483        let err = isl_rs_ctx.last_error();
484        if err != Error::None_ {
485            let err_msg = isl_rs_ctx.last_error_msg();
486            isl_rs_ctx.reset_error();
487            return Err(LibISLError::new(err, err_msg));
488        }
489        Ok(isl_rs_result)
490    }
491
492    /// Wraps `isl_options_new_with_defaults`.
493    pub fn new_with_defaults() -> Options {
494        let isl_rs_result = unsafe { isl_options_new_with_defaults() };
495        let isl_rs_result = Options { ptr: isl_rs_result,
496                                      should_free_on_drop: true };
497        isl_rs_result
498    }
499
500    /// Wraps `isl_options_set_ast_always_print_block`.
501    pub fn set_ast_always_print_block(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
502        let isl_rs_ctx = Context { ptr: ctx.ptr,
503                                   should_free_on_drop: false };
504        let ctx = ctx.ptr;
505        let isl_rs_result = unsafe { isl_options_set_ast_always_print_block(ctx, val) };
506        let isl_rs_result = Stat::from_i32(isl_rs_result);
507        let err = isl_rs_ctx.last_error();
508        if err != Error::None_ {
509            let err_msg = isl_rs_ctx.last_error_msg();
510            isl_rs_ctx.reset_error();
511            return Err(LibISLError::new(err, err_msg));
512        }
513        Ok(isl_rs_result)
514    }
515
516    /// Wraps `isl_options_set_ast_iterator_type`.
517    pub fn set_ast_iterator_type(ctx: &Context, val: &str) -> Result<Stat, LibISLError> {
518        let isl_rs_ctx = Context { ptr: ctx.ptr,
519                                   should_free_on_drop: false };
520        let ctx = ctx.ptr;
521        let val = CString::new(val).unwrap();
522        let val = val.as_ptr();
523        let isl_rs_result = unsafe { isl_options_set_ast_iterator_type(ctx, val) };
524        let isl_rs_result = Stat::from_i32(isl_rs_result);
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_options_set_ast_print_macro_once`.
535    pub fn set_ast_print_macro_once(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
536        let isl_rs_ctx = Context { ptr: ctx.ptr,
537                                   should_free_on_drop: false };
538        let ctx = ctx.ptr;
539        let isl_rs_result = unsafe { isl_options_set_ast_print_macro_once(ctx, val) };
540        let isl_rs_result = Stat::from_i32(isl_rs_result);
541        let err = isl_rs_ctx.last_error();
542        if err != Error::None_ {
543            let err_msg = isl_rs_ctx.last_error_msg();
544            isl_rs_ctx.reset_error();
545            return Err(LibISLError::new(err, err_msg));
546        }
547        Ok(isl_rs_result)
548    }
549
550    /// Wraps `isl_options_set_ast_print_outermost_block`.
551    pub fn set_ast_print_outermost_block(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
552        let isl_rs_ctx = Context { ptr: ctx.ptr,
553                                   should_free_on_drop: false };
554        let ctx = ctx.ptr;
555        let isl_rs_result = unsafe { isl_options_set_ast_print_outermost_block(ctx, val) };
556        let isl_rs_result = Stat::from_i32(isl_rs_result);
557        let err = isl_rs_ctx.last_error();
558        if err != Error::None_ {
559            let err_msg = isl_rs_ctx.last_error_msg();
560            isl_rs_ctx.reset_error();
561            return Err(LibISLError::new(err, err_msg));
562        }
563        Ok(isl_rs_result)
564    }
565
566    /// Wraps `isl_options_set_bound`.
567    pub fn set_bound(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
568        let isl_rs_ctx = Context { ptr: ctx.ptr,
569                                   should_free_on_drop: false };
570        let ctx = ctx.ptr;
571        let isl_rs_result = unsafe { isl_options_set_bound(ctx, val) };
572        let isl_rs_result = Stat::from_i32(isl_rs_result);
573        let err = isl_rs_ctx.last_error();
574        if err != Error::None_ {
575            let err_msg = isl_rs_ctx.last_error_msg();
576            isl_rs_ctx.reset_error();
577            return Err(LibISLError::new(err, err_msg));
578        }
579        Ok(isl_rs_result)
580    }
581
582    /// Wraps `isl_options_set_coalesce_bounded_wrapping`.
583    pub fn set_coalesce_bounded_wrapping(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
584        let isl_rs_ctx = Context { ptr: ctx.ptr,
585                                   should_free_on_drop: false };
586        let ctx = ctx.ptr;
587        let isl_rs_result = unsafe { isl_options_set_coalesce_bounded_wrapping(ctx, val) };
588        let isl_rs_result = Stat::from_i32(isl_rs_result);
589        let err = isl_rs_ctx.last_error();
590        if err != Error::None_ {
591            let err_msg = isl_rs_ctx.last_error_msg();
592            isl_rs_ctx.reset_error();
593            return Err(LibISLError::new(err, err_msg));
594        }
595        Ok(isl_rs_result)
596    }
597
598    /// Wraps `isl_options_set_coalesce_preserve_locals`.
599    pub fn set_coalesce_preserve_locals(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
600        let isl_rs_ctx = Context { ptr: ctx.ptr,
601                                   should_free_on_drop: false };
602        let ctx = ctx.ptr;
603        let isl_rs_result = unsafe { isl_options_set_coalesce_preserve_locals(ctx, val) };
604        let isl_rs_result = Stat::from_i32(isl_rs_result);
605        let err = isl_rs_ctx.last_error();
606        if err != Error::None_ {
607            let err_msg = isl_rs_ctx.last_error_msg();
608            isl_rs_ctx.reset_error();
609            return Err(LibISLError::new(err, err_msg));
610        }
611        Ok(isl_rs_result)
612    }
613
614    /// Wraps `isl_options_set_gbr_only_first`.
615    pub fn set_gbr_only_first(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
616        let isl_rs_ctx = Context { ptr: ctx.ptr,
617                                   should_free_on_drop: false };
618        let ctx = ctx.ptr;
619        let isl_rs_result = unsafe { isl_options_set_gbr_only_first(ctx, val) };
620        let isl_rs_result = Stat::from_i32(isl_rs_result);
621        let err = isl_rs_ctx.last_error();
622        if err != Error::None_ {
623            let err_msg = isl_rs_ctx.last_error_msg();
624            isl_rs_ctx.reset_error();
625            return Err(LibISLError::new(err, err_msg));
626        }
627        Ok(isl_rs_result)
628    }
629
630    /// Wraps `isl_options_set_on_error`.
631    pub fn set_on_error(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
632        let isl_rs_ctx = Context { ptr: ctx.ptr,
633                                   should_free_on_drop: false };
634        let ctx = ctx.ptr;
635        let isl_rs_result = unsafe { isl_options_set_on_error(ctx, val) };
636        let isl_rs_result = Stat::from_i32(isl_rs_result);
637        let err = isl_rs_ctx.last_error();
638        if err != Error::None_ {
639            let err_msg = isl_rs_ctx.last_error_msg();
640            isl_rs_ctx.reset_error();
641            return Err(LibISLError::new(err, err_msg));
642        }
643        Ok(isl_rs_result)
644    }
645
646    /// Wraps `isl_options_set_pip_symmetry`.
647    pub fn set_pip_symmetry(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
648        let isl_rs_ctx = Context { ptr: ctx.ptr,
649                                   should_free_on_drop: false };
650        let ctx = ctx.ptr;
651        let isl_rs_result = unsafe { isl_options_set_pip_symmetry(ctx, val) };
652        let isl_rs_result = Stat::from_i32(isl_rs_result);
653        let err = isl_rs_ctx.last_error();
654        if err != Error::None_ {
655            let err_msg = isl_rs_ctx.last_error_msg();
656            isl_rs_ctx.reset_error();
657            return Err(LibISLError::new(err, err_msg));
658        }
659        Ok(isl_rs_result)
660    }
661
662    /// Wraps `isl_options_set_schedule_algorithm`.
663    pub fn set_schedule_algorithm(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
664        let isl_rs_ctx = Context { ptr: ctx.ptr,
665                                   should_free_on_drop: false };
666        let ctx = ctx.ptr;
667        let isl_rs_result = unsafe { isl_options_set_schedule_algorithm(ctx, val) };
668        let isl_rs_result = Stat::from_i32(isl_rs_result);
669        let err = isl_rs_ctx.last_error();
670        if err != Error::None_ {
671            let err_msg = isl_rs_ctx.last_error_msg();
672            isl_rs_ctx.reset_error();
673            return Err(LibISLError::new(err, err_msg));
674        }
675        Ok(isl_rs_result)
676    }
677
678    /// Wraps `isl_options_set_schedule_carry_self_first`.
679    pub fn set_schedule_carry_self_first(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
680        let isl_rs_ctx = Context { ptr: ctx.ptr,
681                                   should_free_on_drop: false };
682        let ctx = ctx.ptr;
683        let isl_rs_result = unsafe { isl_options_set_schedule_carry_self_first(ctx, val) };
684        let isl_rs_result = Stat::from_i32(isl_rs_result);
685        let err = isl_rs_ctx.last_error();
686        if err != Error::None_ {
687            let err_msg = isl_rs_ctx.last_error_msg();
688            isl_rs_ctx.reset_error();
689            return Err(LibISLError::new(err, err_msg));
690        }
691        Ok(isl_rs_result)
692    }
693
694    /// Wraps `isl_options_set_schedule_max_coefficient`.
695    pub fn set_schedule_max_coefficient(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
696        let isl_rs_ctx = Context { ptr: ctx.ptr,
697                                   should_free_on_drop: false };
698        let ctx = ctx.ptr;
699        let isl_rs_result = unsafe { isl_options_set_schedule_max_coefficient(ctx, val) };
700        let isl_rs_result = Stat::from_i32(isl_rs_result);
701        let err = isl_rs_ctx.last_error();
702        if err != Error::None_ {
703            let err_msg = isl_rs_ctx.last_error_msg();
704            isl_rs_ctx.reset_error();
705            return Err(LibISLError::new(err, err_msg));
706        }
707        Ok(isl_rs_result)
708    }
709
710    /// Wraps `isl_options_set_schedule_max_constant_term`.
711    pub fn set_schedule_max_constant_term(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
712        let isl_rs_ctx = Context { ptr: ctx.ptr,
713                                   should_free_on_drop: false };
714        let ctx = ctx.ptr;
715        let isl_rs_result = unsafe { isl_options_set_schedule_max_constant_term(ctx, val) };
716        let isl_rs_result = Stat::from_i32(isl_rs_result);
717        let err = isl_rs_ctx.last_error();
718        if err != Error::None_ {
719            let err_msg = isl_rs_ctx.last_error_msg();
720            isl_rs_ctx.reset_error();
721            return Err(LibISLError::new(err, err_msg));
722        }
723        Ok(isl_rs_result)
724    }
725
726    /// Wraps `isl_options_set_schedule_maximize_band_depth`.
727    pub fn set_schedule_maximize_band_depth(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
728        let isl_rs_ctx = Context { ptr: ctx.ptr,
729                                   should_free_on_drop: false };
730        let ctx = ctx.ptr;
731        let isl_rs_result = unsafe { isl_options_set_schedule_maximize_band_depth(ctx, val) };
732        let isl_rs_result = Stat::from_i32(isl_rs_result);
733        let err = isl_rs_ctx.last_error();
734        if err != Error::None_ {
735            let err_msg = isl_rs_ctx.last_error_msg();
736            isl_rs_ctx.reset_error();
737            return Err(LibISLError::new(err, err_msg));
738        }
739        Ok(isl_rs_result)
740    }
741
742    /// Wraps `isl_options_set_schedule_maximize_coincidence`.
743    pub fn set_schedule_maximize_coincidence(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
744        let isl_rs_ctx = Context { ptr: ctx.ptr,
745                                   should_free_on_drop: false };
746        let ctx = ctx.ptr;
747        let isl_rs_result = unsafe { isl_options_set_schedule_maximize_coincidence(ctx, val) };
748        let isl_rs_result = Stat::from_i32(isl_rs_result);
749        let err = isl_rs_ctx.last_error();
750        if err != Error::None_ {
751            let err_msg = isl_rs_ctx.last_error_msg();
752            isl_rs_ctx.reset_error();
753            return Err(LibISLError::new(err, err_msg));
754        }
755        Ok(isl_rs_result)
756    }
757
758    /// Wraps `isl_options_set_schedule_outer_coincidence`.
759    pub fn set_schedule_outer_coincidence(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
760        let isl_rs_ctx = Context { ptr: ctx.ptr,
761                                   should_free_on_drop: false };
762        let ctx = ctx.ptr;
763        let isl_rs_result = unsafe { isl_options_set_schedule_outer_coincidence(ctx, val) };
764        let isl_rs_result = Stat::from_i32(isl_rs_result);
765        let err = isl_rs_ctx.last_error();
766        if err != Error::None_ {
767            let err_msg = isl_rs_ctx.last_error_msg();
768            isl_rs_ctx.reset_error();
769            return Err(LibISLError::new(err, err_msg));
770        }
771        Ok(isl_rs_result)
772    }
773
774    /// Wraps `isl_options_set_schedule_separate_components`.
775    pub fn set_schedule_separate_components(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
776        let isl_rs_ctx = Context { ptr: ctx.ptr,
777                                   should_free_on_drop: false };
778        let ctx = ctx.ptr;
779        let isl_rs_result = unsafe { isl_options_set_schedule_separate_components(ctx, val) };
780        let isl_rs_result = Stat::from_i32(isl_rs_result);
781        let err = isl_rs_ctx.last_error();
782        if err != Error::None_ {
783            let err_msg = isl_rs_ctx.last_error_msg();
784            isl_rs_ctx.reset_error();
785            return Err(LibISLError::new(err, err_msg));
786        }
787        Ok(isl_rs_result)
788    }
789
790    /// Wraps `isl_options_set_schedule_serialize_sccs`.
791    pub fn set_schedule_serialize_sccs(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
792        let isl_rs_ctx = Context { ptr: ctx.ptr,
793                                   should_free_on_drop: false };
794        let ctx = ctx.ptr;
795        let isl_rs_result = unsafe { isl_options_set_schedule_serialize_sccs(ctx, val) };
796        let isl_rs_result = Stat::from_i32(isl_rs_result);
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_options_set_schedule_split_scaled`.
807    pub fn set_schedule_split_scaled(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
808        let isl_rs_ctx = Context { ptr: ctx.ptr,
809                                   should_free_on_drop: false };
810        let ctx = ctx.ptr;
811        let isl_rs_result = unsafe { isl_options_set_schedule_split_scaled(ctx, val) };
812        let isl_rs_result = Stat::from_i32(isl_rs_result);
813        let err = isl_rs_ctx.last_error();
814        if err != Error::None_ {
815            let err_msg = isl_rs_ctx.last_error_msg();
816            isl_rs_ctx.reset_error();
817            return Err(LibISLError::new(err, err_msg));
818        }
819        Ok(isl_rs_result)
820    }
821
822    /// Wraps `isl_options_set_schedule_treat_coalescing`.
823    pub fn set_schedule_treat_coalescing(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
824        let isl_rs_ctx = Context { ptr: ctx.ptr,
825                                   should_free_on_drop: false };
826        let ctx = ctx.ptr;
827        let isl_rs_result = unsafe { isl_options_set_schedule_treat_coalescing(ctx, val) };
828        let isl_rs_result = Stat::from_i32(isl_rs_result);
829        let err = isl_rs_ctx.last_error();
830        if err != Error::None_ {
831            let err_msg = isl_rs_ctx.last_error_msg();
832            isl_rs_ctx.reset_error();
833            return Err(LibISLError::new(err, err_msg));
834        }
835        Ok(isl_rs_result)
836    }
837
838    /// Wraps `isl_options_set_schedule_whole_component`.
839    pub fn set_schedule_whole_component(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
840        let isl_rs_ctx = Context { ptr: ctx.ptr,
841                                   should_free_on_drop: false };
842        let ctx = ctx.ptr;
843        let isl_rs_result = unsafe { isl_options_set_schedule_whole_component(ctx, val) };
844        let isl_rs_result = Stat::from_i32(isl_rs_result);
845        let err = isl_rs_ctx.last_error();
846        if err != Error::None_ {
847            let err_msg = isl_rs_ctx.last_error_msg();
848            isl_rs_ctx.reset_error();
849            return Err(LibISLError::new(err, err_msg));
850        }
851        Ok(isl_rs_result)
852    }
853
854    /// Wraps `isl_options_set_tile_scale_tile_loops`.
855    pub fn set_tile_scale_tile_loops(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
856        let isl_rs_ctx = Context { ptr: ctx.ptr,
857                                   should_free_on_drop: false };
858        let ctx = ctx.ptr;
859        let isl_rs_result = unsafe { isl_options_set_tile_scale_tile_loops(ctx, val) };
860        let isl_rs_result = Stat::from_i32(isl_rs_result);
861        let err = isl_rs_ctx.last_error();
862        if err != Error::None_ {
863            let err_msg = isl_rs_ctx.last_error_msg();
864            isl_rs_ctx.reset_error();
865            return Err(LibISLError::new(err, err_msg));
866        }
867        Ok(isl_rs_result)
868    }
869
870    /// Wraps `isl_options_set_tile_shift_point_loops`.
871    pub fn set_tile_shift_point_loops(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
872        let isl_rs_ctx = Context { ptr: ctx.ptr,
873                                   should_free_on_drop: false };
874        let ctx = ctx.ptr;
875        let isl_rs_result = unsafe { isl_options_set_tile_shift_point_loops(ctx, val) };
876        let isl_rs_result = Stat::from_i32(isl_rs_result);
877        let err = isl_rs_ctx.last_error();
878        if err != Error::None_ {
879            let err_msg = isl_rs_ctx.last_error_msg();
880            isl_rs_ctx.reset_error();
881            return Err(LibISLError::new(err, err_msg));
882        }
883        Ok(isl_rs_result)
884    }
885
886    /// Does not call isl_options_free() on being dropped. (For internal use
887    /// only.)
888    pub fn do_not_free_on_drop(&mut self) {
889        self.should_free_on_drop = false;
890    }
891}
892
893impl Drop for Options {
894    fn drop(&mut self) {
895        if self.should_free_on_drop {
896            unsafe {
897                isl_options_free(self.ptr);
898            }
899        }
900    }
901}