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            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
139        }
140        Ok(isl_rs_result)
141    }
142
143    /// Wraps `isl_options_get_ast_iterator_type`.
144    pub fn get_ast_iterator_type(ctx: &Context) -> Result<&str, LibISLError> {
145        let isl_rs_ctx = Context { ptr: ctx.ptr,
146                                   should_free_on_drop: false };
147        let ctx = ctx.ptr;
148        let isl_rs_result = unsafe { isl_options_get_ast_iterator_type(ctx) };
149        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
150        let isl_rs_result = isl_rs_result.to_str().unwrap();
151        let err = isl_rs_ctx.last_error();
152        if err != Error::None_ {
153            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
154        }
155        Ok(isl_rs_result)
156    }
157
158    /// Wraps `isl_options_get_ast_print_macro_once`.
159    pub fn get_ast_print_macro_once(ctx: &Context) -> Result<i32, LibISLError> {
160        let isl_rs_ctx = Context { ptr: ctx.ptr,
161                                   should_free_on_drop: false };
162        let ctx = ctx.ptr;
163        let isl_rs_result = unsafe { isl_options_get_ast_print_macro_once(ctx) };
164        let err = isl_rs_ctx.last_error();
165        if err != Error::None_ {
166            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
167        }
168        Ok(isl_rs_result)
169    }
170
171    /// Wraps `isl_options_get_ast_print_outermost_block`.
172    pub fn get_ast_print_outermost_block(ctx: &Context) -> Result<i32, LibISLError> {
173        let isl_rs_ctx = Context { ptr: ctx.ptr,
174                                   should_free_on_drop: false };
175        let ctx = ctx.ptr;
176        let isl_rs_result = unsafe { isl_options_get_ast_print_outermost_block(ctx) };
177        let err = isl_rs_ctx.last_error();
178        if err != Error::None_ {
179            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
180        }
181        Ok(isl_rs_result)
182    }
183
184    /// Wraps `isl_options_get_bound`.
185    pub fn get_bound(ctx: &Context) -> Result<i32, LibISLError> {
186        let isl_rs_ctx = Context { ptr: ctx.ptr,
187                                   should_free_on_drop: false };
188        let ctx = ctx.ptr;
189        let isl_rs_result = unsafe { isl_options_get_bound(ctx) };
190        let err = isl_rs_ctx.last_error();
191        if err != Error::None_ {
192            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
193        }
194        Ok(isl_rs_result)
195    }
196
197    /// Wraps `isl_options_get_coalesce_bounded_wrapping`.
198    pub fn get_coalesce_bounded_wrapping(ctx: &Context) -> Result<i32, LibISLError> {
199        let isl_rs_ctx = Context { ptr: ctx.ptr,
200                                   should_free_on_drop: false };
201        let ctx = ctx.ptr;
202        let isl_rs_result = unsafe { isl_options_get_coalesce_bounded_wrapping(ctx) };
203        let err = isl_rs_ctx.last_error();
204        if err != Error::None_ {
205            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
206        }
207        Ok(isl_rs_result)
208    }
209
210    /// Wraps `isl_options_get_coalesce_preserve_locals`.
211    pub fn get_coalesce_preserve_locals(ctx: &Context) -> Result<i32, LibISLError> {
212        let isl_rs_ctx = Context { ptr: ctx.ptr,
213                                   should_free_on_drop: false };
214        let ctx = ctx.ptr;
215        let isl_rs_result = unsafe { isl_options_get_coalesce_preserve_locals(ctx) };
216        let err = isl_rs_ctx.last_error();
217        if err != Error::None_ {
218            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
219        }
220        Ok(isl_rs_result)
221    }
222
223    /// Wraps `isl_options_get_gbr_only_first`.
224    pub fn get_gbr_only_first(ctx: &Context) -> Result<i32, LibISLError> {
225        let isl_rs_ctx = Context { ptr: ctx.ptr,
226                                   should_free_on_drop: false };
227        let ctx = ctx.ptr;
228        let isl_rs_result = unsafe { isl_options_get_gbr_only_first(ctx) };
229        let err = isl_rs_ctx.last_error();
230        if err != Error::None_ {
231            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
232        }
233        Ok(isl_rs_result)
234    }
235
236    /// Wraps `isl_options_get_on_error`.
237    pub fn get_on_error(ctx: &Context) -> Result<i32, LibISLError> {
238        let isl_rs_ctx = Context { ptr: ctx.ptr,
239                                   should_free_on_drop: false };
240        let ctx = ctx.ptr;
241        let isl_rs_result = unsafe { isl_options_get_on_error(ctx) };
242        let err = isl_rs_ctx.last_error();
243        if err != Error::None_ {
244            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
245        }
246        Ok(isl_rs_result)
247    }
248
249    /// Wraps `isl_options_get_pip_symmetry`.
250    pub fn get_pip_symmetry(ctx: &Context) -> Result<i32, LibISLError> {
251        let isl_rs_ctx = Context { ptr: ctx.ptr,
252                                   should_free_on_drop: false };
253        let ctx = ctx.ptr;
254        let isl_rs_result = unsafe { isl_options_get_pip_symmetry(ctx) };
255        let err = isl_rs_ctx.last_error();
256        if err != Error::None_ {
257            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
258        }
259        Ok(isl_rs_result)
260    }
261
262    /// Wraps `isl_options_get_schedule_algorithm`.
263    pub fn get_schedule_algorithm(ctx: &Context) -> Result<i32, LibISLError> {
264        let isl_rs_ctx = Context { ptr: ctx.ptr,
265                                   should_free_on_drop: false };
266        let ctx = ctx.ptr;
267        let isl_rs_result = unsafe { isl_options_get_schedule_algorithm(ctx) };
268        let err = isl_rs_ctx.last_error();
269        if err != Error::None_ {
270            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
271        }
272        Ok(isl_rs_result)
273    }
274
275    /// Wraps `isl_options_get_schedule_carry_self_first`.
276    pub fn get_schedule_carry_self_first(ctx: &Context) -> Result<i32, LibISLError> {
277        let isl_rs_ctx = Context { ptr: ctx.ptr,
278                                   should_free_on_drop: false };
279        let ctx = ctx.ptr;
280        let isl_rs_result = unsafe { isl_options_get_schedule_carry_self_first(ctx) };
281        let err = isl_rs_ctx.last_error();
282        if err != Error::None_ {
283            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
284        }
285        Ok(isl_rs_result)
286    }
287
288    /// Wraps `isl_options_get_schedule_max_coefficient`.
289    pub fn get_schedule_max_coefficient(ctx: &Context) -> Result<i32, LibISLError> {
290        let isl_rs_ctx = Context { ptr: ctx.ptr,
291                                   should_free_on_drop: false };
292        let ctx = ctx.ptr;
293        let isl_rs_result = unsafe { isl_options_get_schedule_max_coefficient(ctx) };
294        let err = isl_rs_ctx.last_error();
295        if err != Error::None_ {
296            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
297        }
298        Ok(isl_rs_result)
299    }
300
301    /// Wraps `isl_options_get_schedule_max_constant_term`.
302    pub fn get_schedule_max_constant_term(ctx: &Context) -> Result<i32, LibISLError> {
303        let isl_rs_ctx = Context { ptr: ctx.ptr,
304                                   should_free_on_drop: false };
305        let ctx = ctx.ptr;
306        let isl_rs_result = unsafe { isl_options_get_schedule_max_constant_term(ctx) };
307        let err = isl_rs_ctx.last_error();
308        if err != Error::None_ {
309            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
310        }
311        Ok(isl_rs_result)
312    }
313
314    /// Wraps `isl_options_get_schedule_maximize_band_depth`.
315    pub fn get_schedule_maximize_band_depth(ctx: &Context) -> Result<i32, LibISLError> {
316        let isl_rs_ctx = Context { ptr: ctx.ptr,
317                                   should_free_on_drop: false };
318        let ctx = ctx.ptr;
319        let isl_rs_result = unsafe { isl_options_get_schedule_maximize_band_depth(ctx) };
320        let err = isl_rs_ctx.last_error();
321        if err != Error::None_ {
322            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
323        }
324        Ok(isl_rs_result)
325    }
326
327    /// Wraps `isl_options_get_schedule_maximize_coincidence`.
328    pub fn get_schedule_maximize_coincidence(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_maximize_coincidence(ctx) };
333        let err = isl_rs_ctx.last_error();
334        if err != Error::None_ {
335            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
336        }
337        Ok(isl_rs_result)
338    }
339
340    /// Wraps `isl_options_get_schedule_outer_coincidence`.
341    pub fn get_schedule_outer_coincidence(ctx: &Context) -> Result<i32, LibISLError> {
342        let isl_rs_ctx = Context { ptr: ctx.ptr,
343                                   should_free_on_drop: false };
344        let ctx = ctx.ptr;
345        let isl_rs_result = unsafe { isl_options_get_schedule_outer_coincidence(ctx) };
346        let err = isl_rs_ctx.last_error();
347        if err != Error::None_ {
348            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
349        }
350        Ok(isl_rs_result)
351    }
352
353    /// Wraps `isl_options_get_schedule_separate_components`.
354    pub fn get_schedule_separate_components(ctx: &Context) -> Result<i32, LibISLError> {
355        let isl_rs_ctx = Context { ptr: ctx.ptr,
356                                   should_free_on_drop: false };
357        let ctx = ctx.ptr;
358        let isl_rs_result = unsafe { isl_options_get_schedule_separate_components(ctx) };
359        let err = isl_rs_ctx.last_error();
360        if err != Error::None_ {
361            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
362        }
363        Ok(isl_rs_result)
364    }
365
366    /// Wraps `isl_options_get_schedule_serialize_sccs`.
367    pub fn get_schedule_serialize_sccs(ctx: &Context) -> Result<i32, LibISLError> {
368        let isl_rs_ctx = Context { ptr: ctx.ptr,
369                                   should_free_on_drop: false };
370        let ctx = ctx.ptr;
371        let isl_rs_result = unsafe { isl_options_get_schedule_serialize_sccs(ctx) };
372        let err = isl_rs_ctx.last_error();
373        if err != Error::None_ {
374            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
375        }
376        Ok(isl_rs_result)
377    }
378
379    /// Wraps `isl_options_get_schedule_split_scaled`.
380    pub fn get_schedule_split_scaled(ctx: &Context) -> Result<i32, LibISLError> {
381        let isl_rs_ctx = Context { ptr: ctx.ptr,
382                                   should_free_on_drop: false };
383        let ctx = ctx.ptr;
384        let isl_rs_result = unsafe { isl_options_get_schedule_split_scaled(ctx) };
385        let err = isl_rs_ctx.last_error();
386        if err != Error::None_ {
387            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
388        }
389        Ok(isl_rs_result)
390    }
391
392    /// Wraps `isl_options_get_schedule_treat_coalescing`.
393    pub fn get_schedule_treat_coalescing(ctx: &Context) -> Result<i32, LibISLError> {
394        let isl_rs_ctx = Context { ptr: ctx.ptr,
395                                   should_free_on_drop: false };
396        let ctx = ctx.ptr;
397        let isl_rs_result = unsafe { isl_options_get_schedule_treat_coalescing(ctx) };
398        let err = isl_rs_ctx.last_error();
399        if err != Error::None_ {
400            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
401        }
402        Ok(isl_rs_result)
403    }
404
405    /// Wraps `isl_options_get_schedule_whole_component`.
406    pub fn get_schedule_whole_component(ctx: &Context) -> Result<i32, LibISLError> {
407        let isl_rs_ctx = Context { ptr: ctx.ptr,
408                                   should_free_on_drop: false };
409        let ctx = ctx.ptr;
410        let isl_rs_result = unsafe { isl_options_get_schedule_whole_component(ctx) };
411        let err = isl_rs_ctx.last_error();
412        if err != Error::None_ {
413            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
414        }
415        Ok(isl_rs_result)
416    }
417
418    /// Wraps `isl_options_get_tile_scale_tile_loops`.
419    pub fn get_tile_scale_tile_loops(ctx: &Context) -> Result<i32, LibISLError> {
420        let isl_rs_ctx = Context { ptr: ctx.ptr,
421                                   should_free_on_drop: false };
422        let ctx = ctx.ptr;
423        let isl_rs_result = unsafe { isl_options_get_tile_scale_tile_loops(ctx) };
424        let err = isl_rs_ctx.last_error();
425        if err != Error::None_ {
426            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
427        }
428        Ok(isl_rs_result)
429    }
430
431    /// Wraps `isl_options_get_tile_shift_point_loops`.
432    pub fn get_tile_shift_point_loops(ctx: &Context) -> Result<i32, LibISLError> {
433        let isl_rs_ctx = Context { ptr: ctx.ptr,
434                                   should_free_on_drop: false };
435        let ctx = ctx.ptr;
436        let isl_rs_result = unsafe { isl_options_get_tile_shift_point_loops(ctx) };
437        let err = isl_rs_ctx.last_error();
438        if err != Error::None_ {
439            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
440        }
441        Ok(isl_rs_result)
442    }
443
444    /// Wraps `isl_options_new_with_defaults`.
445    pub fn new_with_defaults() -> Options {
446        let isl_rs_result = unsafe { isl_options_new_with_defaults() };
447        let isl_rs_result = Options { ptr: isl_rs_result,
448                                      should_free_on_drop: true };
449        isl_rs_result
450    }
451
452    /// Wraps `isl_options_set_ast_always_print_block`.
453    pub fn set_ast_always_print_block(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
454        let isl_rs_ctx = Context { ptr: ctx.ptr,
455                                   should_free_on_drop: false };
456        let ctx = ctx.ptr;
457        let isl_rs_result = unsafe { isl_options_set_ast_always_print_block(ctx, val) };
458        let isl_rs_result = Stat::from_i32(isl_rs_result);
459        let err = isl_rs_ctx.last_error();
460        if err != Error::None_ {
461            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
462        }
463        Ok(isl_rs_result)
464    }
465
466    /// Wraps `isl_options_set_ast_iterator_type`.
467    pub fn set_ast_iterator_type(ctx: &Context, val: &str) -> Result<Stat, LibISLError> {
468        let isl_rs_ctx = Context { ptr: ctx.ptr,
469                                   should_free_on_drop: false };
470        let ctx = ctx.ptr;
471        let val = CString::new(val).unwrap();
472        let val = val.as_ptr();
473        let isl_rs_result = unsafe { isl_options_set_ast_iterator_type(ctx, val) };
474        let isl_rs_result = Stat::from_i32(isl_rs_result);
475        let err = isl_rs_ctx.last_error();
476        if err != Error::None_ {
477            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
478        }
479        Ok(isl_rs_result)
480    }
481
482    /// Wraps `isl_options_set_ast_print_macro_once`.
483    pub fn set_ast_print_macro_once(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
484        let isl_rs_ctx = Context { ptr: ctx.ptr,
485                                   should_free_on_drop: false };
486        let ctx = ctx.ptr;
487        let isl_rs_result = unsafe { isl_options_set_ast_print_macro_once(ctx, val) };
488        let isl_rs_result = Stat::from_i32(isl_rs_result);
489        let err = isl_rs_ctx.last_error();
490        if err != Error::None_ {
491            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
492        }
493        Ok(isl_rs_result)
494    }
495
496    /// Wraps `isl_options_set_ast_print_outermost_block`.
497    pub fn set_ast_print_outermost_block(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
498        let isl_rs_ctx = Context { ptr: ctx.ptr,
499                                   should_free_on_drop: false };
500        let ctx = ctx.ptr;
501        let isl_rs_result = unsafe { isl_options_set_ast_print_outermost_block(ctx, val) };
502        let isl_rs_result = Stat::from_i32(isl_rs_result);
503        let err = isl_rs_ctx.last_error();
504        if err != Error::None_ {
505            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
506        }
507        Ok(isl_rs_result)
508    }
509
510    /// Wraps `isl_options_set_bound`.
511    pub fn set_bound(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
512        let isl_rs_ctx = Context { ptr: ctx.ptr,
513                                   should_free_on_drop: false };
514        let ctx = ctx.ptr;
515        let isl_rs_result = unsafe { isl_options_set_bound(ctx, val) };
516        let isl_rs_result = Stat::from_i32(isl_rs_result);
517        let err = isl_rs_ctx.last_error();
518        if err != Error::None_ {
519            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
520        }
521        Ok(isl_rs_result)
522    }
523
524    /// Wraps `isl_options_set_coalesce_bounded_wrapping`.
525    pub fn set_coalesce_bounded_wrapping(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
526        let isl_rs_ctx = Context { ptr: ctx.ptr,
527                                   should_free_on_drop: false };
528        let ctx = ctx.ptr;
529        let isl_rs_result = unsafe { isl_options_set_coalesce_bounded_wrapping(ctx, val) };
530        let isl_rs_result = Stat::from_i32(isl_rs_result);
531        let err = isl_rs_ctx.last_error();
532        if err != Error::None_ {
533            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
534        }
535        Ok(isl_rs_result)
536    }
537
538    /// Wraps `isl_options_set_coalesce_preserve_locals`.
539    pub fn set_coalesce_preserve_locals(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
540        let isl_rs_ctx = Context { ptr: ctx.ptr,
541                                   should_free_on_drop: false };
542        let ctx = ctx.ptr;
543        let isl_rs_result = unsafe { isl_options_set_coalesce_preserve_locals(ctx, val) };
544        let isl_rs_result = Stat::from_i32(isl_rs_result);
545        let err = isl_rs_ctx.last_error();
546        if err != Error::None_ {
547            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
548        }
549        Ok(isl_rs_result)
550    }
551
552    /// Wraps `isl_options_set_gbr_only_first`.
553    pub fn set_gbr_only_first(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
554        let isl_rs_ctx = Context { ptr: ctx.ptr,
555                                   should_free_on_drop: false };
556        let ctx = ctx.ptr;
557        let isl_rs_result = unsafe { isl_options_set_gbr_only_first(ctx, val) };
558        let isl_rs_result = Stat::from_i32(isl_rs_result);
559        let err = isl_rs_ctx.last_error();
560        if err != Error::None_ {
561            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
562        }
563        Ok(isl_rs_result)
564    }
565
566    /// Wraps `isl_options_set_on_error`.
567    pub fn set_on_error(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_on_error(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            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
576        }
577        Ok(isl_rs_result)
578    }
579
580    /// Wraps `isl_options_set_pip_symmetry`.
581    pub fn set_pip_symmetry(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
582        let isl_rs_ctx = Context { ptr: ctx.ptr,
583                                   should_free_on_drop: false };
584        let ctx = ctx.ptr;
585        let isl_rs_result = unsafe { isl_options_set_pip_symmetry(ctx, val) };
586        let isl_rs_result = Stat::from_i32(isl_rs_result);
587        let err = isl_rs_ctx.last_error();
588        if err != Error::None_ {
589            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
590        }
591        Ok(isl_rs_result)
592    }
593
594    /// Wraps `isl_options_set_schedule_algorithm`.
595    pub fn set_schedule_algorithm(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
596        let isl_rs_ctx = Context { ptr: ctx.ptr,
597                                   should_free_on_drop: false };
598        let ctx = ctx.ptr;
599        let isl_rs_result = unsafe { isl_options_set_schedule_algorithm(ctx, val) };
600        let isl_rs_result = Stat::from_i32(isl_rs_result);
601        let err = isl_rs_ctx.last_error();
602        if err != Error::None_ {
603            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
604        }
605        Ok(isl_rs_result)
606    }
607
608    /// Wraps `isl_options_set_schedule_carry_self_first`.
609    pub fn set_schedule_carry_self_first(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
610        let isl_rs_ctx = Context { ptr: ctx.ptr,
611                                   should_free_on_drop: false };
612        let ctx = ctx.ptr;
613        let isl_rs_result = unsafe { isl_options_set_schedule_carry_self_first(ctx, val) };
614        let isl_rs_result = Stat::from_i32(isl_rs_result);
615        let err = isl_rs_ctx.last_error();
616        if err != Error::None_ {
617            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
618        }
619        Ok(isl_rs_result)
620    }
621
622    /// Wraps `isl_options_set_schedule_max_coefficient`.
623    pub fn set_schedule_max_coefficient(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
624        let isl_rs_ctx = Context { ptr: ctx.ptr,
625                                   should_free_on_drop: false };
626        let ctx = ctx.ptr;
627        let isl_rs_result = unsafe { isl_options_set_schedule_max_coefficient(ctx, val) };
628        let isl_rs_result = Stat::from_i32(isl_rs_result);
629        let err = isl_rs_ctx.last_error();
630        if err != Error::None_ {
631            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
632        }
633        Ok(isl_rs_result)
634    }
635
636    /// Wraps `isl_options_set_schedule_max_constant_term`.
637    pub fn set_schedule_max_constant_term(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
638        let isl_rs_ctx = Context { ptr: ctx.ptr,
639                                   should_free_on_drop: false };
640        let ctx = ctx.ptr;
641        let isl_rs_result = unsafe { isl_options_set_schedule_max_constant_term(ctx, val) };
642        let isl_rs_result = Stat::from_i32(isl_rs_result);
643        let err = isl_rs_ctx.last_error();
644        if err != Error::None_ {
645            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
646        }
647        Ok(isl_rs_result)
648    }
649
650    /// Wraps `isl_options_set_schedule_maximize_band_depth`.
651    pub fn set_schedule_maximize_band_depth(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
652        let isl_rs_ctx = Context { ptr: ctx.ptr,
653                                   should_free_on_drop: false };
654        let ctx = ctx.ptr;
655        let isl_rs_result = unsafe { isl_options_set_schedule_maximize_band_depth(ctx, val) };
656        let isl_rs_result = Stat::from_i32(isl_rs_result);
657        let err = isl_rs_ctx.last_error();
658        if err != Error::None_ {
659            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
660        }
661        Ok(isl_rs_result)
662    }
663
664    /// Wraps `isl_options_set_schedule_maximize_coincidence`.
665    pub fn set_schedule_maximize_coincidence(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
666        let isl_rs_ctx = Context { ptr: ctx.ptr,
667                                   should_free_on_drop: false };
668        let ctx = ctx.ptr;
669        let isl_rs_result = unsafe { isl_options_set_schedule_maximize_coincidence(ctx, val) };
670        let isl_rs_result = Stat::from_i32(isl_rs_result);
671        let err = isl_rs_ctx.last_error();
672        if err != Error::None_ {
673            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
674        }
675        Ok(isl_rs_result)
676    }
677
678    /// Wraps `isl_options_set_schedule_outer_coincidence`.
679    pub fn set_schedule_outer_coincidence(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_outer_coincidence(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            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
688        }
689        Ok(isl_rs_result)
690    }
691
692    /// Wraps `isl_options_set_schedule_separate_components`.
693    pub fn set_schedule_separate_components(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
694        let isl_rs_ctx = Context { ptr: ctx.ptr,
695                                   should_free_on_drop: false };
696        let ctx = ctx.ptr;
697        let isl_rs_result = unsafe { isl_options_set_schedule_separate_components(ctx, val) };
698        let isl_rs_result = Stat::from_i32(isl_rs_result);
699        let err = isl_rs_ctx.last_error();
700        if err != Error::None_ {
701            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
702        }
703        Ok(isl_rs_result)
704    }
705
706    /// Wraps `isl_options_set_schedule_serialize_sccs`.
707    pub fn set_schedule_serialize_sccs(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
708        let isl_rs_ctx = Context { ptr: ctx.ptr,
709                                   should_free_on_drop: false };
710        let ctx = ctx.ptr;
711        let isl_rs_result = unsafe { isl_options_set_schedule_serialize_sccs(ctx, val) };
712        let isl_rs_result = Stat::from_i32(isl_rs_result);
713        let err = isl_rs_ctx.last_error();
714        if err != Error::None_ {
715            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
716        }
717        Ok(isl_rs_result)
718    }
719
720    /// Wraps `isl_options_set_schedule_split_scaled`.
721    pub fn set_schedule_split_scaled(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
722        let isl_rs_ctx = Context { ptr: ctx.ptr,
723                                   should_free_on_drop: false };
724        let ctx = ctx.ptr;
725        let isl_rs_result = unsafe { isl_options_set_schedule_split_scaled(ctx, val) };
726        let isl_rs_result = Stat::from_i32(isl_rs_result);
727        let err = isl_rs_ctx.last_error();
728        if err != Error::None_ {
729            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
730        }
731        Ok(isl_rs_result)
732    }
733
734    /// Wraps `isl_options_set_schedule_treat_coalescing`.
735    pub fn set_schedule_treat_coalescing(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
736        let isl_rs_ctx = Context { ptr: ctx.ptr,
737                                   should_free_on_drop: false };
738        let ctx = ctx.ptr;
739        let isl_rs_result = unsafe { isl_options_set_schedule_treat_coalescing(ctx, val) };
740        let isl_rs_result = Stat::from_i32(isl_rs_result);
741        let err = isl_rs_ctx.last_error();
742        if err != Error::None_ {
743            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
744        }
745        Ok(isl_rs_result)
746    }
747
748    /// Wraps `isl_options_set_schedule_whole_component`.
749    pub fn set_schedule_whole_component(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
750        let isl_rs_ctx = Context { ptr: ctx.ptr,
751                                   should_free_on_drop: false };
752        let ctx = ctx.ptr;
753        let isl_rs_result = unsafe { isl_options_set_schedule_whole_component(ctx, val) };
754        let isl_rs_result = Stat::from_i32(isl_rs_result);
755        let err = isl_rs_ctx.last_error();
756        if err != Error::None_ {
757            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
758        }
759        Ok(isl_rs_result)
760    }
761
762    /// Wraps `isl_options_set_tile_scale_tile_loops`.
763    pub fn set_tile_scale_tile_loops(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
764        let isl_rs_ctx = Context { ptr: ctx.ptr,
765                                   should_free_on_drop: false };
766        let ctx = ctx.ptr;
767        let isl_rs_result = unsafe { isl_options_set_tile_scale_tile_loops(ctx, val) };
768        let isl_rs_result = Stat::from_i32(isl_rs_result);
769        let err = isl_rs_ctx.last_error();
770        if err != Error::None_ {
771            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
772        }
773        Ok(isl_rs_result)
774    }
775
776    /// Wraps `isl_options_set_tile_shift_point_loops`.
777    pub fn set_tile_shift_point_loops(ctx: &Context, val: i32) -> Result<Stat, LibISLError> {
778        let isl_rs_ctx = Context { ptr: ctx.ptr,
779                                   should_free_on_drop: false };
780        let ctx = ctx.ptr;
781        let isl_rs_result = unsafe { isl_options_set_tile_shift_point_loops(ctx, val) };
782        let isl_rs_result = Stat::from_i32(isl_rs_result);
783        let err = isl_rs_ctx.last_error();
784        if err != Error::None_ {
785            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
786        }
787        Ok(isl_rs_result)
788    }
789
790    /// Does not call isl_options_free() on being dropped. (For internal use
791    /// only.)
792    pub fn do_not_free_on_drop(&mut self) {
793        self.should_free_on_drop = false;
794    }
795}
796
797impl Drop for Options {
798    fn drop(&mut self) {
799        if self.should_free_on_drop {
800            unsafe {
801                isl_options_free(self.ptr);
802            }
803        }
804    }
805}