isl_rs/bindings/
printer.rs

1// Automatically generated by isl_bindings_generator.
2// LICENSE: MIT
3
4use super::{
5    ASTExpr, ASTExprList, ASTNode, ASTNodeList, Aff, AffList, BasicMap, BasicMapList, BasicSet,
6    BasicSetList, Constraint, ConstraintList, Context, Error, FixedBox, Id, IdList, IdToASTExpr,
7    LibISLError, LocalSpace, Map, MapList, MultiAff, MultiId, MultiPwAff, MultiUnionPwAff,
8    MultiVal, Point, PwAff, PwAffList, PwMultiAff, PwMultiAffList, PwQPolynomial,
9    PwQPolynomialFold, PwQPolynomialFoldList, PwQPolynomialList, QPolynomial, QPolynomialFold,
10    QPolynomialList, Schedule, ScheduleConstraints, ScheduleNode, Set, SetList, Space,
11    UnionAccessInfo, UnionFlow, UnionMap, UnionMapList, UnionPwAff, UnionPwAffList,
12    UnionPwMultiAff, UnionPwMultiAffList, UnionPwQPolynomial, UnionPwQPolynomialFold, UnionSet,
13    UnionSetList, Val, ValList, Vec,
14};
15use libc::uintptr_t;
16use std::ffi::{CStr, CString};
17use std::os::raw::c_char;
18
19/// Wraps `isl_printer`.
20pub struct Printer {
21    pub ptr: uintptr_t,
22    pub should_free_on_drop: bool,
23}
24
25extern "C" {
26
27    fn isl_printer_end_line(p: uintptr_t) -> uintptr_t;
28
29    fn isl_printer_flush(p: uintptr_t) -> uintptr_t;
30
31    fn isl_printer_free(printer: uintptr_t) -> uintptr_t;
32
33    fn isl_printer_get_ctx(printer: uintptr_t) -> uintptr_t;
34
35    fn isl_printer_get_note(p: uintptr_t, id: uintptr_t) -> uintptr_t;
36
37    fn isl_printer_get_output_format(p: uintptr_t) -> i32;
38
39    fn isl_printer_get_str(printer: uintptr_t) -> *const c_char;
40
41    fn isl_printer_get_yaml_style(p: uintptr_t) -> i32;
42
43    fn isl_printer_has_note(p: uintptr_t, id: uintptr_t) -> i32;
44
45    fn isl_printer_indent(p: uintptr_t, indent: i32) -> uintptr_t;
46
47    fn isl_printer_print_aff(p: uintptr_t, aff: uintptr_t) -> uintptr_t;
48
49    fn isl_printer_print_aff_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
50
51    fn isl_printer_print_ast_expr(p: uintptr_t, expr: uintptr_t) -> uintptr_t;
52
53    fn isl_printer_print_ast_expr_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
54
55    fn isl_printer_print_ast_node(p: uintptr_t, node: uintptr_t) -> uintptr_t;
56
57    fn isl_printer_print_ast_node_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
58
59    fn isl_printer_print_basic_map(printer: uintptr_t, bmap: uintptr_t) -> uintptr_t;
60
61    fn isl_printer_print_basic_map_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
62
63    fn isl_printer_print_basic_set(printer: uintptr_t, bset: uintptr_t) -> uintptr_t;
64
65    fn isl_printer_print_basic_set_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
66
67    fn isl_printer_print_constraint(p: uintptr_t, c: uintptr_t) -> uintptr_t;
68
69    fn isl_printer_print_constraint_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
70
71    fn isl_printer_print_double(p: uintptr_t, d: f64) -> uintptr_t;
72
73    fn isl_printer_print_fixed_box(p: uintptr_t, box_: uintptr_t) -> uintptr_t;
74
75    fn isl_printer_print_id(p: uintptr_t, id: uintptr_t) -> uintptr_t;
76
77    fn isl_printer_print_id_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
78
79    fn isl_printer_print_id_to_ast_expr(p: uintptr_t, hmap: uintptr_t) -> uintptr_t;
80
81    fn isl_printer_print_int(p: uintptr_t, i: i32) -> uintptr_t;
82
83    fn isl_printer_print_local_space(p: uintptr_t, ls: uintptr_t) -> uintptr_t;
84
85    fn isl_printer_print_map(printer: uintptr_t, map: uintptr_t) -> uintptr_t;
86
87    fn isl_printer_print_map_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
88
89    fn isl_printer_print_multi_aff(p: uintptr_t, maff: uintptr_t) -> uintptr_t;
90
91    fn isl_printer_print_multi_id(p: uintptr_t, mi: uintptr_t) -> uintptr_t;
92
93    fn isl_printer_print_multi_pw_aff(p: uintptr_t, mpa: uintptr_t) -> uintptr_t;
94
95    fn isl_printer_print_multi_union_pw_aff(p: uintptr_t, mupa: uintptr_t) -> uintptr_t;
96
97    fn isl_printer_print_multi_val(p: uintptr_t, mv: uintptr_t) -> uintptr_t;
98
99    fn isl_printer_print_point(printer: uintptr_t, pnt: uintptr_t) -> uintptr_t;
100
101    fn isl_printer_print_pw_aff(p: uintptr_t, pwaff: uintptr_t) -> uintptr_t;
102
103    fn isl_printer_print_pw_aff_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
104
105    fn isl_printer_print_pw_multi_aff(p: uintptr_t, pma: uintptr_t) -> uintptr_t;
106
107    fn isl_printer_print_pw_multi_aff_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
108
109    fn isl_printer_print_pw_qpolynomial(p: uintptr_t, pwqp: uintptr_t) -> uintptr_t;
110
111    fn isl_printer_print_pw_qpolynomial_fold(p: uintptr_t, pwf: uintptr_t) -> uintptr_t;
112
113    fn isl_printer_print_pw_qpolynomial_fold_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
114
115    fn isl_printer_print_pw_qpolynomial_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
116
117    fn isl_printer_print_qpolynomial(p: uintptr_t, qp: uintptr_t) -> uintptr_t;
118
119    fn isl_printer_print_qpolynomial_fold(p: uintptr_t, fold: uintptr_t) -> uintptr_t;
120
121    fn isl_printer_print_qpolynomial_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
122
123    fn isl_printer_print_schedule(p: uintptr_t, schedule: uintptr_t) -> uintptr_t;
124
125    fn isl_printer_print_schedule_constraints(p: uintptr_t, sc: uintptr_t) -> uintptr_t;
126
127    fn isl_printer_print_schedule_node(p: uintptr_t, node: uintptr_t) -> uintptr_t;
128
129    fn isl_printer_print_set(printer: uintptr_t, map: uintptr_t) -> uintptr_t;
130
131    fn isl_printer_print_set_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
132
133    fn isl_printer_print_space(p: uintptr_t, space: uintptr_t) -> uintptr_t;
134
135    fn isl_printer_print_str(p: uintptr_t, s: *const c_char) -> uintptr_t;
136
137    fn isl_printer_print_union_access_info(p: uintptr_t, access: uintptr_t) -> uintptr_t;
138
139    fn isl_printer_print_union_flow(p: uintptr_t, flow: uintptr_t) -> uintptr_t;
140
141    fn isl_printer_print_union_map(p: uintptr_t, umap: uintptr_t) -> uintptr_t;
142
143    fn isl_printer_print_union_map_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
144
145    fn isl_printer_print_union_pw_aff(p: uintptr_t, upa: uintptr_t) -> uintptr_t;
146
147    fn isl_printer_print_union_pw_aff_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
148
149    fn isl_printer_print_union_pw_multi_aff(p: uintptr_t, upma: uintptr_t) -> uintptr_t;
150
151    fn isl_printer_print_union_pw_multi_aff_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
152
153    fn isl_printer_print_union_pw_qpolynomial(p: uintptr_t, upwqp: uintptr_t) -> uintptr_t;
154
155    fn isl_printer_print_union_pw_qpolynomial_fold(p: uintptr_t, upwf: uintptr_t) -> uintptr_t;
156
157    fn isl_printer_print_union_set(p: uintptr_t, uset: uintptr_t) -> uintptr_t;
158
159    fn isl_printer_print_union_set_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
160
161    fn isl_printer_print_val(p: uintptr_t, v: uintptr_t) -> uintptr_t;
162
163    fn isl_printer_print_val_list(p: uintptr_t, list: uintptr_t) -> uintptr_t;
164
165    fn isl_printer_print_vec(printer: uintptr_t, vec: uintptr_t) -> uintptr_t;
166
167    fn isl_printer_set_indent(p: uintptr_t, indent: i32) -> uintptr_t;
168
169    fn isl_printer_set_indent_prefix(p: uintptr_t, prefix: *const c_char) -> uintptr_t;
170
171    fn isl_printer_set_isl_int_width(p: uintptr_t, width: i32) -> uintptr_t;
172
173    fn isl_printer_set_note(p: uintptr_t, id: uintptr_t, note: uintptr_t) -> uintptr_t;
174
175    fn isl_printer_set_output_format(p: uintptr_t, output_format: i32) -> uintptr_t;
176
177    fn isl_printer_set_prefix(p: uintptr_t, prefix: *const c_char) -> uintptr_t;
178
179    fn isl_printer_set_suffix(p: uintptr_t, suffix: *const c_char) -> uintptr_t;
180
181    fn isl_printer_set_yaml_style(p: uintptr_t, yaml_style: i32) -> uintptr_t;
182
183    fn isl_printer_start_line(p: uintptr_t) -> uintptr_t;
184
185    fn isl_printer_to_str(ctx: uintptr_t) -> uintptr_t;
186
187    fn isl_printer_yaml_end_mapping(p: uintptr_t) -> uintptr_t;
188
189    fn isl_printer_yaml_end_sequence(p: uintptr_t) -> uintptr_t;
190
191    fn isl_printer_yaml_next(p: uintptr_t) -> uintptr_t;
192
193    fn isl_printer_yaml_start_mapping(p: uintptr_t) -> uintptr_t;
194
195    fn isl_printer_yaml_start_sequence(p: uintptr_t) -> uintptr_t;
196
197}
198
199impl Printer {
200    /// Wraps `isl_printer_end_line`.
201    pub fn end_line(self) -> Result<Printer, LibISLError> {
202        let p = self;
203        let isl_rs_ctx = p.get_ctx();
204        let mut p = p;
205        p.do_not_free_on_drop();
206        let p = p.ptr;
207        let isl_rs_result = unsafe { isl_printer_end_line(p) };
208        let isl_rs_result = Printer { ptr: isl_rs_result,
209                                      should_free_on_drop: true };
210        let err = isl_rs_ctx.last_error();
211        if err != Error::None_ {
212            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
213        }
214        Ok(isl_rs_result)
215    }
216
217    /// Wraps `isl_printer_flush`.
218    pub fn flush(self) -> Result<Printer, LibISLError> {
219        let p = self;
220        let isl_rs_ctx = p.get_ctx();
221        let mut p = p;
222        p.do_not_free_on_drop();
223        let p = p.ptr;
224        let isl_rs_result = unsafe { isl_printer_flush(p) };
225        let isl_rs_result = Printer { ptr: isl_rs_result,
226                                      should_free_on_drop: true };
227        let err = isl_rs_ctx.last_error();
228        if err != Error::None_ {
229            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
230        }
231        Ok(isl_rs_result)
232    }
233
234    /// Wraps `isl_printer_free`.
235    pub fn free(self) -> Result<Printer, LibISLError> {
236        let printer = self;
237        let isl_rs_ctx = printer.get_ctx();
238        let mut printer = printer;
239        printer.do_not_free_on_drop();
240        let printer = printer.ptr;
241        let isl_rs_result = unsafe { isl_printer_free(printer) };
242        let isl_rs_result = Printer { ptr: isl_rs_result,
243                                      should_free_on_drop: true };
244        let err = isl_rs_ctx.last_error();
245        if err != Error::None_ {
246            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
247        }
248        Ok(isl_rs_result)
249    }
250
251    /// Wraps `isl_printer_get_ctx`.
252    pub fn get_ctx(&self) -> Context {
253        let printer = self;
254        let printer = printer.ptr;
255        let isl_rs_result = unsafe { isl_printer_get_ctx(printer) };
256        let isl_rs_result = Context { ptr: isl_rs_result,
257                                      should_free_on_drop: false };
258        isl_rs_result
259    }
260
261    /// Wraps `isl_printer_get_note`.
262    pub fn get_note(&self, id: Id) -> Result<Id, LibISLError> {
263        let p = self;
264        let isl_rs_ctx = p.get_ctx();
265        let p = p.ptr;
266        let mut id = id;
267        id.do_not_free_on_drop();
268        let id = id.ptr;
269        let isl_rs_result = unsafe { isl_printer_get_note(p, id) };
270        let isl_rs_result = Id { ptr: isl_rs_result,
271                                 should_free_on_drop: true };
272        let err = isl_rs_ctx.last_error();
273        if err != Error::None_ {
274            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
275        }
276        Ok(isl_rs_result)
277    }
278
279    /// Wraps `isl_printer_get_output_format`.
280    pub fn get_output_format(&self) -> Result<i32, LibISLError> {
281        let p = self;
282        let isl_rs_ctx = p.get_ctx();
283        let p = p.ptr;
284        let isl_rs_result = unsafe { isl_printer_get_output_format(p) };
285        let err = isl_rs_ctx.last_error();
286        if err != Error::None_ {
287            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
288        }
289        Ok(isl_rs_result)
290    }
291
292    /// Wraps `isl_printer_get_str`.
293    pub fn get_str(&self) -> Result<&str, LibISLError> {
294        let printer = self;
295        let isl_rs_ctx = printer.get_ctx();
296        let printer = printer.ptr;
297        let isl_rs_result = unsafe { isl_printer_get_str(printer) };
298        let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
299        let isl_rs_result = isl_rs_result.to_str().unwrap();
300        let err = isl_rs_ctx.last_error();
301        if err != Error::None_ {
302            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
303        }
304        Ok(isl_rs_result)
305    }
306
307    /// Wraps `isl_printer_get_yaml_style`.
308    pub fn get_yaml_style(&self) -> Result<i32, LibISLError> {
309        let p = self;
310        let isl_rs_ctx = p.get_ctx();
311        let p = p.ptr;
312        let isl_rs_result = unsafe { isl_printer_get_yaml_style(p) };
313        let err = isl_rs_ctx.last_error();
314        if err != Error::None_ {
315            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
316        }
317        Ok(isl_rs_result)
318    }
319
320    /// Wraps `isl_printer_has_note`.
321    pub fn has_note(&self, id: &Id) -> Result<bool, LibISLError> {
322        let p = self;
323        let isl_rs_ctx = p.get_ctx();
324        let p = p.ptr;
325        let id = id.ptr;
326        let isl_rs_result = unsafe { isl_printer_has_note(p, id) };
327        let isl_rs_result = match isl_rs_result {
328            0 => false,
329            1 => true,
330            _ => panic!("Got isl_bool = -1"),
331        };
332        let err = isl_rs_ctx.last_error();
333        if err != Error::None_ {
334            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
335        }
336        Ok(isl_rs_result)
337    }
338
339    /// Wraps `isl_printer_indent`.
340    pub fn indent(self, indent: i32) -> Result<Printer, LibISLError> {
341        let p = self;
342        let isl_rs_ctx = p.get_ctx();
343        let mut p = p;
344        p.do_not_free_on_drop();
345        let p = p.ptr;
346        let isl_rs_result = unsafe { isl_printer_indent(p, indent) };
347        let isl_rs_result = Printer { ptr: isl_rs_result,
348                                      should_free_on_drop: true };
349        let err = isl_rs_ctx.last_error();
350        if err != Error::None_ {
351            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
352        }
353        Ok(isl_rs_result)
354    }
355
356    /// Wraps `isl_printer_print_aff`.
357    pub fn print_aff(self, aff: &Aff) -> Result<Printer, LibISLError> {
358        let p = self;
359        let isl_rs_ctx = p.get_ctx();
360        let mut p = p;
361        p.do_not_free_on_drop();
362        let p = p.ptr;
363        let aff = aff.ptr;
364        let isl_rs_result = unsafe { isl_printer_print_aff(p, aff) };
365        let isl_rs_result = Printer { ptr: isl_rs_result,
366                                      should_free_on_drop: true };
367        let err = isl_rs_ctx.last_error();
368        if err != Error::None_ {
369            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
370        }
371        Ok(isl_rs_result)
372    }
373
374    /// Wraps `isl_printer_print_aff_list`.
375    pub fn print_aff_list(self, list: &AffList) -> Result<Printer, LibISLError> {
376        let p = self;
377        let isl_rs_ctx = p.get_ctx();
378        let mut p = p;
379        p.do_not_free_on_drop();
380        let p = p.ptr;
381        let list = list.ptr;
382        let isl_rs_result = unsafe { isl_printer_print_aff_list(p, list) };
383        let isl_rs_result = Printer { ptr: isl_rs_result,
384                                      should_free_on_drop: true };
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_printer_print_ast_expr`.
393    pub fn print_ast_expr(self, expr: &ASTExpr) -> Result<Printer, LibISLError> {
394        let p = self;
395        let isl_rs_ctx = p.get_ctx();
396        let mut p = p;
397        p.do_not_free_on_drop();
398        let p = p.ptr;
399        let expr = expr.ptr;
400        let isl_rs_result = unsafe { isl_printer_print_ast_expr(p, expr) };
401        let isl_rs_result = Printer { ptr: isl_rs_result,
402                                      should_free_on_drop: true };
403        let err = isl_rs_ctx.last_error();
404        if err != Error::None_ {
405            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
406        }
407        Ok(isl_rs_result)
408    }
409
410    /// Wraps `isl_printer_print_ast_expr_list`.
411    pub fn print_ast_expr_list(self, list: &ASTExprList) -> Result<Printer, LibISLError> {
412        let p = self;
413        let isl_rs_ctx = p.get_ctx();
414        let mut p = p;
415        p.do_not_free_on_drop();
416        let p = p.ptr;
417        let list = list.ptr;
418        let isl_rs_result = unsafe { isl_printer_print_ast_expr_list(p, list) };
419        let isl_rs_result = Printer { ptr: isl_rs_result,
420                                      should_free_on_drop: true };
421        let err = isl_rs_ctx.last_error();
422        if err != Error::None_ {
423            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
424        }
425        Ok(isl_rs_result)
426    }
427
428    /// Wraps `isl_printer_print_ast_node`.
429    pub fn print_ast_node(self, node: &ASTNode) -> Result<Printer, LibISLError> {
430        let p = self;
431        let isl_rs_ctx = p.get_ctx();
432        let mut p = p;
433        p.do_not_free_on_drop();
434        let p = p.ptr;
435        let node = node.ptr;
436        let isl_rs_result = unsafe { isl_printer_print_ast_node(p, node) };
437        let isl_rs_result = Printer { ptr: isl_rs_result,
438                                      should_free_on_drop: true };
439        let err = isl_rs_ctx.last_error();
440        if err != Error::None_ {
441            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
442        }
443        Ok(isl_rs_result)
444    }
445
446    /// Wraps `isl_printer_print_ast_node_list`.
447    pub fn print_ast_node_list(self, list: &ASTNodeList) -> Result<Printer, LibISLError> {
448        let p = self;
449        let isl_rs_ctx = p.get_ctx();
450        let mut p = p;
451        p.do_not_free_on_drop();
452        let p = p.ptr;
453        let list = list.ptr;
454        let isl_rs_result = unsafe { isl_printer_print_ast_node_list(p, list) };
455        let isl_rs_result = Printer { ptr: isl_rs_result,
456                                      should_free_on_drop: true };
457        let err = isl_rs_ctx.last_error();
458        if err != Error::None_ {
459            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
460        }
461        Ok(isl_rs_result)
462    }
463
464    /// Wraps `isl_printer_print_basic_map`.
465    pub fn print_basic_map(self, bmap: &BasicMap) -> Result<Printer, LibISLError> {
466        let printer = self;
467        let isl_rs_ctx = printer.get_ctx();
468        let mut printer = printer;
469        printer.do_not_free_on_drop();
470        let printer = printer.ptr;
471        let bmap = bmap.ptr;
472        let isl_rs_result = unsafe { isl_printer_print_basic_map(printer, bmap) };
473        let isl_rs_result = Printer { ptr: isl_rs_result,
474                                      should_free_on_drop: true };
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_printer_print_basic_map_list`.
483    pub fn print_basic_map_list(self, list: &BasicMapList) -> Result<Printer, LibISLError> {
484        let p = self;
485        let isl_rs_ctx = p.get_ctx();
486        let mut p = p;
487        p.do_not_free_on_drop();
488        let p = p.ptr;
489        let list = list.ptr;
490        let isl_rs_result = unsafe { isl_printer_print_basic_map_list(p, list) };
491        let isl_rs_result = Printer { ptr: isl_rs_result,
492                                      should_free_on_drop: true };
493        let err = isl_rs_ctx.last_error();
494        if err != Error::None_ {
495            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
496        }
497        Ok(isl_rs_result)
498    }
499
500    /// Wraps `isl_printer_print_basic_set`.
501    pub fn print_basic_set(self, bset: &BasicSet) -> Result<Printer, LibISLError> {
502        let printer = self;
503        let isl_rs_ctx = printer.get_ctx();
504        let mut printer = printer;
505        printer.do_not_free_on_drop();
506        let printer = printer.ptr;
507        let bset = bset.ptr;
508        let isl_rs_result = unsafe { isl_printer_print_basic_set(printer, bset) };
509        let isl_rs_result = Printer { ptr: isl_rs_result,
510                                      should_free_on_drop: true };
511        let err = isl_rs_ctx.last_error();
512        if err != Error::None_ {
513            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
514        }
515        Ok(isl_rs_result)
516    }
517
518    /// Wraps `isl_printer_print_basic_set_list`.
519    pub fn print_basic_set_list(self, list: &BasicSetList) -> Result<Printer, LibISLError> {
520        let p = self;
521        let isl_rs_ctx = p.get_ctx();
522        let mut p = p;
523        p.do_not_free_on_drop();
524        let p = p.ptr;
525        let list = list.ptr;
526        let isl_rs_result = unsafe { isl_printer_print_basic_set_list(p, list) };
527        let isl_rs_result = Printer { ptr: isl_rs_result,
528                                      should_free_on_drop: true };
529        let err = isl_rs_ctx.last_error();
530        if err != Error::None_ {
531            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
532        }
533        Ok(isl_rs_result)
534    }
535
536    /// Wraps `isl_printer_print_constraint`.
537    pub fn print_constraint(self, c: &Constraint) -> Result<Printer, LibISLError> {
538        let p = self;
539        let isl_rs_ctx = p.get_ctx();
540        let mut p = p;
541        p.do_not_free_on_drop();
542        let p = p.ptr;
543        let c = c.ptr;
544        let isl_rs_result = unsafe { isl_printer_print_constraint(p, c) };
545        let isl_rs_result = Printer { ptr: isl_rs_result,
546                                      should_free_on_drop: true };
547        let err = isl_rs_ctx.last_error();
548        if err != Error::None_ {
549            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
550        }
551        Ok(isl_rs_result)
552    }
553
554    /// Wraps `isl_printer_print_constraint_list`.
555    pub fn print_constraint_list(self, list: &ConstraintList) -> Result<Printer, LibISLError> {
556        let p = self;
557        let isl_rs_ctx = p.get_ctx();
558        let mut p = p;
559        p.do_not_free_on_drop();
560        let p = p.ptr;
561        let list = list.ptr;
562        let isl_rs_result = unsafe { isl_printer_print_constraint_list(p, list) };
563        let isl_rs_result = Printer { ptr: isl_rs_result,
564                                      should_free_on_drop: true };
565        let err = isl_rs_ctx.last_error();
566        if err != Error::None_ {
567            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
568        }
569        Ok(isl_rs_result)
570    }
571
572    /// Wraps `isl_printer_print_double`.
573    pub fn print_double(self, d: f64) -> Result<Printer, LibISLError> {
574        let p = self;
575        let isl_rs_ctx = p.get_ctx();
576        let mut p = p;
577        p.do_not_free_on_drop();
578        let p = p.ptr;
579        let isl_rs_result = unsafe { isl_printer_print_double(p, d) };
580        let isl_rs_result = Printer { ptr: isl_rs_result,
581                                      should_free_on_drop: true };
582        let err = isl_rs_ctx.last_error();
583        if err != Error::None_ {
584            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
585        }
586        Ok(isl_rs_result)
587    }
588
589    /// Wraps `isl_printer_print_fixed_box`.
590    pub fn print_fixed_box(self, box_: &FixedBox) -> Result<Printer, LibISLError> {
591        let p = self;
592        let isl_rs_ctx = p.get_ctx();
593        let mut p = p;
594        p.do_not_free_on_drop();
595        let p = p.ptr;
596        let box_ = box_.ptr;
597        let isl_rs_result = unsafe { isl_printer_print_fixed_box(p, box_) };
598        let isl_rs_result = Printer { ptr: isl_rs_result,
599                                      should_free_on_drop: true };
600        let err = isl_rs_ctx.last_error();
601        if err != Error::None_ {
602            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
603        }
604        Ok(isl_rs_result)
605    }
606
607    /// Wraps `isl_printer_print_id`.
608    pub fn print_id(self, id: &Id) -> Result<Printer, LibISLError> {
609        let p = self;
610        let isl_rs_ctx = p.get_ctx();
611        let mut p = p;
612        p.do_not_free_on_drop();
613        let p = p.ptr;
614        let id = id.ptr;
615        let isl_rs_result = unsafe { isl_printer_print_id(p, id) };
616        let isl_rs_result = Printer { ptr: isl_rs_result,
617                                      should_free_on_drop: true };
618        let err = isl_rs_ctx.last_error();
619        if err != Error::None_ {
620            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
621        }
622        Ok(isl_rs_result)
623    }
624
625    /// Wraps `isl_printer_print_id_list`.
626    pub fn print_id_list(self, list: &IdList) -> Result<Printer, LibISLError> {
627        let p = self;
628        let isl_rs_ctx = p.get_ctx();
629        let mut p = p;
630        p.do_not_free_on_drop();
631        let p = p.ptr;
632        let list = list.ptr;
633        let isl_rs_result = unsafe { isl_printer_print_id_list(p, list) };
634        let isl_rs_result = Printer { ptr: isl_rs_result,
635                                      should_free_on_drop: true };
636        let err = isl_rs_ctx.last_error();
637        if err != Error::None_ {
638            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
639        }
640        Ok(isl_rs_result)
641    }
642
643    /// Wraps `isl_printer_print_id_to_ast_expr`.
644    pub fn print_id_to_ast_expr(self, hmap: &IdToASTExpr) -> Result<Printer, LibISLError> {
645        let p = self;
646        let isl_rs_ctx = p.get_ctx();
647        let mut p = p;
648        p.do_not_free_on_drop();
649        let p = p.ptr;
650        let hmap = hmap.ptr;
651        let isl_rs_result = unsafe { isl_printer_print_id_to_ast_expr(p, hmap) };
652        let isl_rs_result = Printer { ptr: isl_rs_result,
653                                      should_free_on_drop: true };
654        let err = isl_rs_ctx.last_error();
655        if err != Error::None_ {
656            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
657        }
658        Ok(isl_rs_result)
659    }
660
661    /// Wraps `isl_printer_print_int`.
662    pub fn print_int(self, i: i32) -> Result<Printer, LibISLError> {
663        let p = self;
664        let isl_rs_ctx = p.get_ctx();
665        let mut p = p;
666        p.do_not_free_on_drop();
667        let p = p.ptr;
668        let isl_rs_result = unsafe { isl_printer_print_int(p, i) };
669        let isl_rs_result = Printer { ptr: isl_rs_result,
670                                      should_free_on_drop: true };
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_printer_print_local_space`.
679    pub fn print_local_space(self, ls: &LocalSpace) -> Result<Printer, LibISLError> {
680        let p = self;
681        let isl_rs_ctx = p.get_ctx();
682        let mut p = p;
683        p.do_not_free_on_drop();
684        let p = p.ptr;
685        let ls = ls.ptr;
686        let isl_rs_result = unsafe { isl_printer_print_local_space(p, ls) };
687        let isl_rs_result = Printer { ptr: isl_rs_result,
688                                      should_free_on_drop: true };
689        let err = isl_rs_ctx.last_error();
690        if err != Error::None_ {
691            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
692        }
693        Ok(isl_rs_result)
694    }
695
696    /// Wraps `isl_printer_print_map`.
697    pub fn print_map(self, map: &Map) -> Result<Printer, LibISLError> {
698        let printer = self;
699        let isl_rs_ctx = printer.get_ctx();
700        let mut printer = printer;
701        printer.do_not_free_on_drop();
702        let printer = printer.ptr;
703        let map = map.ptr;
704        let isl_rs_result = unsafe { isl_printer_print_map(printer, map) };
705        let isl_rs_result = Printer { ptr: isl_rs_result,
706                                      should_free_on_drop: true };
707        let err = isl_rs_ctx.last_error();
708        if err != Error::None_ {
709            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
710        }
711        Ok(isl_rs_result)
712    }
713
714    /// Wraps `isl_printer_print_map_list`.
715    pub fn print_map_list(self, list: &MapList) -> Result<Printer, LibISLError> {
716        let p = self;
717        let isl_rs_ctx = p.get_ctx();
718        let mut p = p;
719        p.do_not_free_on_drop();
720        let p = p.ptr;
721        let list = list.ptr;
722        let isl_rs_result = unsafe { isl_printer_print_map_list(p, list) };
723        let isl_rs_result = Printer { ptr: isl_rs_result,
724                                      should_free_on_drop: true };
725        let err = isl_rs_ctx.last_error();
726        if err != Error::None_ {
727            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
728        }
729        Ok(isl_rs_result)
730    }
731
732    /// Wraps `isl_printer_print_multi_aff`.
733    pub fn print_multi_aff(self, maff: &MultiAff) -> Result<Printer, LibISLError> {
734        let p = self;
735        let isl_rs_ctx = p.get_ctx();
736        let mut p = p;
737        p.do_not_free_on_drop();
738        let p = p.ptr;
739        let maff = maff.ptr;
740        let isl_rs_result = unsafe { isl_printer_print_multi_aff(p, maff) };
741        let isl_rs_result = Printer { ptr: isl_rs_result,
742                                      should_free_on_drop: true };
743        let err = isl_rs_ctx.last_error();
744        if err != Error::None_ {
745            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
746        }
747        Ok(isl_rs_result)
748    }
749
750    /// Wraps `isl_printer_print_multi_id`.
751    pub fn print_multi_id(self, mi: &MultiId) -> Result<Printer, LibISLError> {
752        let p = self;
753        let isl_rs_ctx = p.get_ctx();
754        let mut p = p;
755        p.do_not_free_on_drop();
756        let p = p.ptr;
757        let mi = mi.ptr;
758        let isl_rs_result = unsafe { isl_printer_print_multi_id(p, mi) };
759        let isl_rs_result = Printer { ptr: isl_rs_result,
760                                      should_free_on_drop: true };
761        let err = isl_rs_ctx.last_error();
762        if err != Error::None_ {
763            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
764        }
765        Ok(isl_rs_result)
766    }
767
768    /// Wraps `isl_printer_print_multi_pw_aff`.
769    pub fn print_multi_pw_aff(self, mpa: &MultiPwAff) -> Result<Printer, LibISLError> {
770        let p = self;
771        let isl_rs_ctx = p.get_ctx();
772        let mut p = p;
773        p.do_not_free_on_drop();
774        let p = p.ptr;
775        let mpa = mpa.ptr;
776        let isl_rs_result = unsafe { isl_printer_print_multi_pw_aff(p, mpa) };
777        let isl_rs_result = Printer { ptr: isl_rs_result,
778                                      should_free_on_drop: true };
779        let err = isl_rs_ctx.last_error();
780        if err != Error::None_ {
781            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
782        }
783        Ok(isl_rs_result)
784    }
785
786    /// Wraps `isl_printer_print_multi_union_pw_aff`.
787    pub fn print_multi_union_pw_aff(self, mupa: &MultiUnionPwAff) -> Result<Printer, LibISLError> {
788        let p = self;
789        let isl_rs_ctx = p.get_ctx();
790        let mut p = p;
791        p.do_not_free_on_drop();
792        let p = p.ptr;
793        let mupa = mupa.ptr;
794        let isl_rs_result = unsafe { isl_printer_print_multi_union_pw_aff(p, mupa) };
795        let isl_rs_result = Printer { ptr: isl_rs_result,
796                                      should_free_on_drop: true };
797        let err = isl_rs_ctx.last_error();
798        if err != Error::None_ {
799            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
800        }
801        Ok(isl_rs_result)
802    }
803
804    /// Wraps `isl_printer_print_multi_val`.
805    pub fn print_multi_val(self, mv: &MultiVal) -> Result<Printer, LibISLError> {
806        let p = self;
807        let isl_rs_ctx = p.get_ctx();
808        let mut p = p;
809        p.do_not_free_on_drop();
810        let p = p.ptr;
811        let mv = mv.ptr;
812        let isl_rs_result = unsafe { isl_printer_print_multi_val(p, mv) };
813        let isl_rs_result = Printer { ptr: isl_rs_result,
814                                      should_free_on_drop: true };
815        let err = isl_rs_ctx.last_error();
816        if err != Error::None_ {
817            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
818        }
819        Ok(isl_rs_result)
820    }
821
822    /// Wraps `isl_printer_print_point`.
823    pub fn print_point(self, pnt: &Point) -> Result<Printer, LibISLError> {
824        let printer = self;
825        let isl_rs_ctx = printer.get_ctx();
826        let mut printer = printer;
827        printer.do_not_free_on_drop();
828        let printer = printer.ptr;
829        let pnt = pnt.ptr;
830        let isl_rs_result = unsafe { isl_printer_print_point(printer, pnt) };
831        let isl_rs_result = Printer { ptr: isl_rs_result,
832                                      should_free_on_drop: true };
833        let err = isl_rs_ctx.last_error();
834        if err != Error::None_ {
835            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
836        }
837        Ok(isl_rs_result)
838    }
839
840    /// Wraps `isl_printer_print_pw_aff`.
841    pub fn print_pw_aff(self, pwaff: &PwAff) -> Result<Printer, LibISLError> {
842        let p = self;
843        let isl_rs_ctx = p.get_ctx();
844        let mut p = p;
845        p.do_not_free_on_drop();
846        let p = p.ptr;
847        let pwaff = pwaff.ptr;
848        let isl_rs_result = unsafe { isl_printer_print_pw_aff(p, pwaff) };
849        let isl_rs_result = Printer { ptr: isl_rs_result,
850                                      should_free_on_drop: true };
851        let err = isl_rs_ctx.last_error();
852        if err != Error::None_ {
853            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
854        }
855        Ok(isl_rs_result)
856    }
857
858    /// Wraps `isl_printer_print_pw_aff_list`.
859    pub fn print_pw_aff_list(self, list: &PwAffList) -> Result<Printer, LibISLError> {
860        let p = self;
861        let isl_rs_ctx = p.get_ctx();
862        let mut p = p;
863        p.do_not_free_on_drop();
864        let p = p.ptr;
865        let list = list.ptr;
866        let isl_rs_result = unsafe { isl_printer_print_pw_aff_list(p, list) };
867        let isl_rs_result = Printer { ptr: isl_rs_result,
868                                      should_free_on_drop: true };
869        let err = isl_rs_ctx.last_error();
870        if err != Error::None_ {
871            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
872        }
873        Ok(isl_rs_result)
874    }
875
876    /// Wraps `isl_printer_print_pw_multi_aff`.
877    pub fn print_pw_multi_aff(self, pma: &PwMultiAff) -> Result<Printer, LibISLError> {
878        let p = self;
879        let isl_rs_ctx = p.get_ctx();
880        let mut p = p;
881        p.do_not_free_on_drop();
882        let p = p.ptr;
883        let pma = pma.ptr;
884        let isl_rs_result = unsafe { isl_printer_print_pw_multi_aff(p, pma) };
885        let isl_rs_result = Printer { ptr: isl_rs_result,
886                                      should_free_on_drop: true };
887        let err = isl_rs_ctx.last_error();
888        if err != Error::None_ {
889            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
890        }
891        Ok(isl_rs_result)
892    }
893
894    /// Wraps `isl_printer_print_pw_multi_aff_list`.
895    pub fn print_pw_multi_aff_list(self, list: &PwMultiAffList) -> Result<Printer, LibISLError> {
896        let p = self;
897        let isl_rs_ctx = p.get_ctx();
898        let mut p = p;
899        p.do_not_free_on_drop();
900        let p = p.ptr;
901        let list = list.ptr;
902        let isl_rs_result = unsafe { isl_printer_print_pw_multi_aff_list(p, list) };
903        let isl_rs_result = Printer { ptr: isl_rs_result,
904                                      should_free_on_drop: true };
905        let err = isl_rs_ctx.last_error();
906        if err != Error::None_ {
907            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
908        }
909        Ok(isl_rs_result)
910    }
911
912    /// Wraps `isl_printer_print_pw_qpolynomial`.
913    pub fn print_pw_qpolynomial(self, pwqp: &PwQPolynomial) -> Result<Printer, LibISLError> {
914        let p = self;
915        let isl_rs_ctx = p.get_ctx();
916        let mut p = p;
917        p.do_not_free_on_drop();
918        let p = p.ptr;
919        let pwqp = pwqp.ptr;
920        let isl_rs_result = unsafe { isl_printer_print_pw_qpolynomial(p, pwqp) };
921        let isl_rs_result = Printer { ptr: isl_rs_result,
922                                      should_free_on_drop: true };
923        let err = isl_rs_ctx.last_error();
924        if err != Error::None_ {
925            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
926        }
927        Ok(isl_rs_result)
928    }
929
930    /// Wraps `isl_printer_print_pw_qpolynomial_fold`.
931    pub fn print_pw_qpolynomial_fold(self, pwf: &PwQPolynomialFold)
932                                     -> Result<Printer, LibISLError> {
933        let p = self;
934        let isl_rs_ctx = p.get_ctx();
935        let mut p = p;
936        p.do_not_free_on_drop();
937        let p = p.ptr;
938        let pwf = pwf.ptr;
939        let isl_rs_result = unsafe { isl_printer_print_pw_qpolynomial_fold(p, pwf) };
940        let isl_rs_result = Printer { ptr: isl_rs_result,
941                                      should_free_on_drop: true };
942        let err = isl_rs_ctx.last_error();
943        if err != Error::None_ {
944            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
945        }
946        Ok(isl_rs_result)
947    }
948
949    /// Wraps `isl_printer_print_pw_qpolynomial_fold_list`.
950    pub fn print_pw_qpolynomial_fold_list(self, list: &PwQPolynomialFoldList)
951                                          -> Result<Printer, LibISLError> {
952        let p = self;
953        let isl_rs_ctx = p.get_ctx();
954        let mut p = p;
955        p.do_not_free_on_drop();
956        let p = p.ptr;
957        let list = list.ptr;
958        let isl_rs_result = unsafe { isl_printer_print_pw_qpolynomial_fold_list(p, list) };
959        let isl_rs_result = Printer { ptr: isl_rs_result,
960                                      should_free_on_drop: true };
961        let err = isl_rs_ctx.last_error();
962        if err != Error::None_ {
963            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
964        }
965        Ok(isl_rs_result)
966    }
967
968    /// Wraps `isl_printer_print_pw_qpolynomial_list`.
969    pub fn print_pw_qpolynomial_list(self, list: &PwQPolynomialList)
970                                     -> Result<Printer, LibISLError> {
971        let p = self;
972        let isl_rs_ctx = p.get_ctx();
973        let mut p = p;
974        p.do_not_free_on_drop();
975        let p = p.ptr;
976        let list = list.ptr;
977        let isl_rs_result = unsafe { isl_printer_print_pw_qpolynomial_list(p, list) };
978        let isl_rs_result = Printer { ptr: isl_rs_result,
979                                      should_free_on_drop: true };
980        let err = isl_rs_ctx.last_error();
981        if err != Error::None_ {
982            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
983        }
984        Ok(isl_rs_result)
985    }
986
987    /// Wraps `isl_printer_print_qpolynomial`.
988    pub fn print_qpolynomial(self, qp: &QPolynomial) -> Result<Printer, LibISLError> {
989        let p = self;
990        let isl_rs_ctx = p.get_ctx();
991        let mut p = p;
992        p.do_not_free_on_drop();
993        let p = p.ptr;
994        let qp = qp.ptr;
995        let isl_rs_result = unsafe { isl_printer_print_qpolynomial(p, qp) };
996        let isl_rs_result = Printer { ptr: isl_rs_result,
997                                      should_free_on_drop: true };
998        let err = isl_rs_ctx.last_error();
999        if err != Error::None_ {
1000            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1001        }
1002        Ok(isl_rs_result)
1003    }
1004
1005    /// Wraps `isl_printer_print_qpolynomial_fold`.
1006    pub fn print_qpolynomial_fold(self, fold: &QPolynomialFold) -> Result<Printer, LibISLError> {
1007        let p = self;
1008        let isl_rs_ctx = p.get_ctx();
1009        let mut p = p;
1010        p.do_not_free_on_drop();
1011        let p = p.ptr;
1012        let fold = fold.ptr;
1013        let isl_rs_result = unsafe { isl_printer_print_qpolynomial_fold(p, fold) };
1014        let isl_rs_result = Printer { ptr: isl_rs_result,
1015                                      should_free_on_drop: true };
1016        let err = isl_rs_ctx.last_error();
1017        if err != Error::None_ {
1018            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1019        }
1020        Ok(isl_rs_result)
1021    }
1022
1023    /// Wraps `isl_printer_print_qpolynomial_list`.
1024    pub fn print_qpolynomial_list(self, list: &QPolynomialList) -> Result<Printer, LibISLError> {
1025        let p = self;
1026        let isl_rs_ctx = p.get_ctx();
1027        let mut p = p;
1028        p.do_not_free_on_drop();
1029        let p = p.ptr;
1030        let list = list.ptr;
1031        let isl_rs_result = unsafe { isl_printer_print_qpolynomial_list(p, list) };
1032        let isl_rs_result = Printer { ptr: isl_rs_result,
1033                                      should_free_on_drop: true };
1034        let err = isl_rs_ctx.last_error();
1035        if err != Error::None_ {
1036            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1037        }
1038        Ok(isl_rs_result)
1039    }
1040
1041    /// Wraps `isl_printer_print_schedule`.
1042    pub fn print_schedule(self, schedule: &Schedule) -> Result<Printer, LibISLError> {
1043        let p = self;
1044        let isl_rs_ctx = p.get_ctx();
1045        let mut p = p;
1046        p.do_not_free_on_drop();
1047        let p = p.ptr;
1048        let schedule = schedule.ptr;
1049        let isl_rs_result = unsafe { isl_printer_print_schedule(p, schedule) };
1050        let isl_rs_result = Printer { ptr: isl_rs_result,
1051                                      should_free_on_drop: true };
1052        let err = isl_rs_ctx.last_error();
1053        if err != Error::None_ {
1054            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1055        }
1056        Ok(isl_rs_result)
1057    }
1058
1059    /// Wraps `isl_printer_print_schedule_constraints`.
1060    pub fn print_schedule_constraints(self, sc: &ScheduleConstraints)
1061                                      -> Result<Printer, LibISLError> {
1062        let p = self;
1063        let isl_rs_ctx = p.get_ctx();
1064        let mut p = p;
1065        p.do_not_free_on_drop();
1066        let p = p.ptr;
1067        let sc = sc.ptr;
1068        let isl_rs_result = unsafe { isl_printer_print_schedule_constraints(p, sc) };
1069        let isl_rs_result = Printer { ptr: isl_rs_result,
1070                                      should_free_on_drop: true };
1071        let err = isl_rs_ctx.last_error();
1072        if err != Error::None_ {
1073            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1074        }
1075        Ok(isl_rs_result)
1076    }
1077
1078    /// Wraps `isl_printer_print_schedule_node`.
1079    pub fn print_schedule_node(self, node: &ScheduleNode) -> Result<Printer, LibISLError> {
1080        let p = self;
1081        let isl_rs_ctx = p.get_ctx();
1082        let mut p = p;
1083        p.do_not_free_on_drop();
1084        let p = p.ptr;
1085        let node = node.ptr;
1086        let isl_rs_result = unsafe { isl_printer_print_schedule_node(p, node) };
1087        let isl_rs_result = Printer { ptr: isl_rs_result,
1088                                      should_free_on_drop: true };
1089        let err = isl_rs_ctx.last_error();
1090        if err != Error::None_ {
1091            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1092        }
1093        Ok(isl_rs_result)
1094    }
1095
1096    /// Wraps `isl_printer_print_set`.
1097    pub fn print_set(self, map: &Set) -> Result<Printer, LibISLError> {
1098        let printer = self;
1099        let isl_rs_ctx = printer.get_ctx();
1100        let mut printer = printer;
1101        printer.do_not_free_on_drop();
1102        let printer = printer.ptr;
1103        let map = map.ptr;
1104        let isl_rs_result = unsafe { isl_printer_print_set(printer, map) };
1105        let isl_rs_result = Printer { ptr: isl_rs_result,
1106                                      should_free_on_drop: true };
1107        let err = isl_rs_ctx.last_error();
1108        if err != Error::None_ {
1109            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1110        }
1111        Ok(isl_rs_result)
1112    }
1113
1114    /// Wraps `isl_printer_print_set_list`.
1115    pub fn print_set_list(self, list: &SetList) -> Result<Printer, LibISLError> {
1116        let p = self;
1117        let isl_rs_ctx = p.get_ctx();
1118        let mut p = p;
1119        p.do_not_free_on_drop();
1120        let p = p.ptr;
1121        let list = list.ptr;
1122        let isl_rs_result = unsafe { isl_printer_print_set_list(p, list) };
1123        let isl_rs_result = Printer { ptr: isl_rs_result,
1124                                      should_free_on_drop: true };
1125        let err = isl_rs_ctx.last_error();
1126        if err != Error::None_ {
1127            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1128        }
1129        Ok(isl_rs_result)
1130    }
1131
1132    /// Wraps `isl_printer_print_space`.
1133    pub fn print_space(self, space: &Space) -> Result<Printer, LibISLError> {
1134        let p = self;
1135        let isl_rs_ctx = p.get_ctx();
1136        let mut p = p;
1137        p.do_not_free_on_drop();
1138        let p = p.ptr;
1139        let space = space.ptr;
1140        let isl_rs_result = unsafe { isl_printer_print_space(p, space) };
1141        let isl_rs_result = Printer { ptr: isl_rs_result,
1142                                      should_free_on_drop: true };
1143        let err = isl_rs_ctx.last_error();
1144        if err != Error::None_ {
1145            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1146        }
1147        Ok(isl_rs_result)
1148    }
1149
1150    /// Wraps `isl_printer_print_str`.
1151    pub fn print_str(self, s: &str) -> Result<Printer, LibISLError> {
1152        let p = self;
1153        let isl_rs_ctx = p.get_ctx();
1154        let mut p = p;
1155        p.do_not_free_on_drop();
1156        let p = p.ptr;
1157        let s = CString::new(s).unwrap();
1158        let s = s.as_ptr();
1159        let isl_rs_result = unsafe { isl_printer_print_str(p, s) };
1160        let isl_rs_result = Printer { ptr: isl_rs_result,
1161                                      should_free_on_drop: true };
1162        let err = isl_rs_ctx.last_error();
1163        if err != Error::None_ {
1164            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1165        }
1166        Ok(isl_rs_result)
1167    }
1168
1169    /// Wraps `isl_printer_print_union_access_info`.
1170    pub fn print_union_access_info(self, access: &UnionAccessInfo) -> Result<Printer, LibISLError> {
1171        let p = self;
1172        let isl_rs_ctx = p.get_ctx();
1173        let mut p = p;
1174        p.do_not_free_on_drop();
1175        let p = p.ptr;
1176        let access = access.ptr;
1177        let isl_rs_result = unsafe { isl_printer_print_union_access_info(p, access) };
1178        let isl_rs_result = Printer { ptr: isl_rs_result,
1179                                      should_free_on_drop: true };
1180        let err = isl_rs_ctx.last_error();
1181        if err != Error::None_ {
1182            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1183        }
1184        Ok(isl_rs_result)
1185    }
1186
1187    /// Wraps `isl_printer_print_union_flow`.
1188    pub fn print_union_flow(self, flow: &UnionFlow) -> Result<Printer, LibISLError> {
1189        let p = self;
1190        let isl_rs_ctx = p.get_ctx();
1191        let mut p = p;
1192        p.do_not_free_on_drop();
1193        let p = p.ptr;
1194        let flow = flow.ptr;
1195        let isl_rs_result = unsafe { isl_printer_print_union_flow(p, flow) };
1196        let isl_rs_result = Printer { ptr: isl_rs_result,
1197                                      should_free_on_drop: true };
1198        let err = isl_rs_ctx.last_error();
1199        if err != Error::None_ {
1200            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1201        }
1202        Ok(isl_rs_result)
1203    }
1204
1205    /// Wraps `isl_printer_print_union_map`.
1206    pub fn print_union_map(self, umap: &UnionMap) -> Result<Printer, LibISLError> {
1207        let p = self;
1208        let isl_rs_ctx = p.get_ctx();
1209        let mut p = p;
1210        p.do_not_free_on_drop();
1211        let p = p.ptr;
1212        let umap = umap.ptr;
1213        let isl_rs_result = unsafe { isl_printer_print_union_map(p, umap) };
1214        let isl_rs_result = Printer { ptr: isl_rs_result,
1215                                      should_free_on_drop: true };
1216        let err = isl_rs_ctx.last_error();
1217        if err != Error::None_ {
1218            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1219        }
1220        Ok(isl_rs_result)
1221    }
1222
1223    /// Wraps `isl_printer_print_union_map_list`.
1224    pub fn print_union_map_list(self, list: &UnionMapList) -> Result<Printer, LibISLError> {
1225        let p = self;
1226        let isl_rs_ctx = p.get_ctx();
1227        let mut p = p;
1228        p.do_not_free_on_drop();
1229        let p = p.ptr;
1230        let list = list.ptr;
1231        let isl_rs_result = unsafe { isl_printer_print_union_map_list(p, list) };
1232        let isl_rs_result = Printer { ptr: isl_rs_result,
1233                                      should_free_on_drop: true };
1234        let err = isl_rs_ctx.last_error();
1235        if err != Error::None_ {
1236            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1237        }
1238        Ok(isl_rs_result)
1239    }
1240
1241    /// Wraps `isl_printer_print_union_pw_aff`.
1242    pub fn print_union_pw_aff(self, upa: &UnionPwAff) -> Result<Printer, LibISLError> {
1243        let p = self;
1244        let isl_rs_ctx = p.get_ctx();
1245        let mut p = p;
1246        p.do_not_free_on_drop();
1247        let p = p.ptr;
1248        let upa = upa.ptr;
1249        let isl_rs_result = unsafe { isl_printer_print_union_pw_aff(p, upa) };
1250        let isl_rs_result = Printer { ptr: isl_rs_result,
1251                                      should_free_on_drop: true };
1252        let err = isl_rs_ctx.last_error();
1253        if err != Error::None_ {
1254            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1255        }
1256        Ok(isl_rs_result)
1257    }
1258
1259    /// Wraps `isl_printer_print_union_pw_aff_list`.
1260    pub fn print_union_pw_aff_list(self, list: &UnionPwAffList) -> Result<Printer, LibISLError> {
1261        let p = self;
1262        let isl_rs_ctx = p.get_ctx();
1263        let mut p = p;
1264        p.do_not_free_on_drop();
1265        let p = p.ptr;
1266        let list = list.ptr;
1267        let isl_rs_result = unsafe { isl_printer_print_union_pw_aff_list(p, list) };
1268        let isl_rs_result = Printer { ptr: isl_rs_result,
1269                                      should_free_on_drop: true };
1270        let err = isl_rs_ctx.last_error();
1271        if err != Error::None_ {
1272            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1273        }
1274        Ok(isl_rs_result)
1275    }
1276
1277    /// Wraps `isl_printer_print_union_pw_multi_aff`.
1278    pub fn print_union_pw_multi_aff(self, upma: &UnionPwMultiAff) -> Result<Printer, LibISLError> {
1279        let p = self;
1280        let isl_rs_ctx = p.get_ctx();
1281        let mut p = p;
1282        p.do_not_free_on_drop();
1283        let p = p.ptr;
1284        let upma = upma.ptr;
1285        let isl_rs_result = unsafe { isl_printer_print_union_pw_multi_aff(p, upma) };
1286        let isl_rs_result = Printer { ptr: isl_rs_result,
1287                                      should_free_on_drop: true };
1288        let err = isl_rs_ctx.last_error();
1289        if err != Error::None_ {
1290            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1291        }
1292        Ok(isl_rs_result)
1293    }
1294
1295    /// Wraps `isl_printer_print_union_pw_multi_aff_list`.
1296    pub fn print_union_pw_multi_aff_list(self, list: &UnionPwMultiAffList)
1297                                         -> Result<Printer, LibISLError> {
1298        let p = self;
1299        let isl_rs_ctx = p.get_ctx();
1300        let mut p = p;
1301        p.do_not_free_on_drop();
1302        let p = p.ptr;
1303        let list = list.ptr;
1304        let isl_rs_result = unsafe { isl_printer_print_union_pw_multi_aff_list(p, list) };
1305        let isl_rs_result = Printer { ptr: isl_rs_result,
1306                                      should_free_on_drop: true };
1307        let err = isl_rs_ctx.last_error();
1308        if err != Error::None_ {
1309            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1310        }
1311        Ok(isl_rs_result)
1312    }
1313
1314    /// Wraps `isl_printer_print_union_pw_qpolynomial`.
1315    pub fn print_union_pw_qpolynomial(self, upwqp: &UnionPwQPolynomial)
1316                                      -> Result<Printer, LibISLError> {
1317        let p = self;
1318        let isl_rs_ctx = p.get_ctx();
1319        let mut p = p;
1320        p.do_not_free_on_drop();
1321        let p = p.ptr;
1322        let upwqp = upwqp.ptr;
1323        let isl_rs_result = unsafe { isl_printer_print_union_pw_qpolynomial(p, upwqp) };
1324        let isl_rs_result = Printer { ptr: isl_rs_result,
1325                                      should_free_on_drop: true };
1326        let err = isl_rs_ctx.last_error();
1327        if err != Error::None_ {
1328            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1329        }
1330        Ok(isl_rs_result)
1331    }
1332
1333    /// Wraps `isl_printer_print_union_pw_qpolynomial_fold`.
1334    pub fn print_union_pw_qpolynomial_fold(self, upwf: &UnionPwQPolynomialFold)
1335                                           -> Result<Printer, LibISLError> {
1336        let p = self;
1337        let isl_rs_ctx = p.get_ctx();
1338        let mut p = p;
1339        p.do_not_free_on_drop();
1340        let p = p.ptr;
1341        let upwf = upwf.ptr;
1342        let isl_rs_result = unsafe { isl_printer_print_union_pw_qpolynomial_fold(p, upwf) };
1343        let isl_rs_result = Printer { ptr: isl_rs_result,
1344                                      should_free_on_drop: true };
1345        let err = isl_rs_ctx.last_error();
1346        if err != Error::None_ {
1347            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1348        }
1349        Ok(isl_rs_result)
1350    }
1351
1352    /// Wraps `isl_printer_print_union_set`.
1353    pub fn print_union_set(self, uset: &UnionSet) -> Result<Printer, LibISLError> {
1354        let p = self;
1355        let isl_rs_ctx = p.get_ctx();
1356        let mut p = p;
1357        p.do_not_free_on_drop();
1358        let p = p.ptr;
1359        let uset = uset.ptr;
1360        let isl_rs_result = unsafe { isl_printer_print_union_set(p, uset) };
1361        let isl_rs_result = Printer { ptr: isl_rs_result,
1362                                      should_free_on_drop: true };
1363        let err = isl_rs_ctx.last_error();
1364        if err != Error::None_ {
1365            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1366        }
1367        Ok(isl_rs_result)
1368    }
1369
1370    /// Wraps `isl_printer_print_union_set_list`.
1371    pub fn print_union_set_list(self, list: &UnionSetList) -> Result<Printer, LibISLError> {
1372        let p = self;
1373        let isl_rs_ctx = p.get_ctx();
1374        let mut p = p;
1375        p.do_not_free_on_drop();
1376        let p = p.ptr;
1377        let list = list.ptr;
1378        let isl_rs_result = unsafe { isl_printer_print_union_set_list(p, list) };
1379        let isl_rs_result = Printer { ptr: isl_rs_result,
1380                                      should_free_on_drop: true };
1381        let err = isl_rs_ctx.last_error();
1382        if err != Error::None_ {
1383            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1384        }
1385        Ok(isl_rs_result)
1386    }
1387
1388    /// Wraps `isl_printer_print_val`.
1389    pub fn print_val(self, v: &Val) -> Result<Printer, LibISLError> {
1390        let p = self;
1391        let isl_rs_ctx = p.get_ctx();
1392        let mut p = p;
1393        p.do_not_free_on_drop();
1394        let p = p.ptr;
1395        let v = v.ptr;
1396        let isl_rs_result = unsafe { isl_printer_print_val(p, v) };
1397        let isl_rs_result = Printer { ptr: isl_rs_result,
1398                                      should_free_on_drop: true };
1399        let err = isl_rs_ctx.last_error();
1400        if err != Error::None_ {
1401            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1402        }
1403        Ok(isl_rs_result)
1404    }
1405
1406    /// Wraps `isl_printer_print_val_list`.
1407    pub fn print_val_list(self, list: &ValList) -> Result<Printer, LibISLError> {
1408        let p = self;
1409        let isl_rs_ctx = p.get_ctx();
1410        let mut p = p;
1411        p.do_not_free_on_drop();
1412        let p = p.ptr;
1413        let list = list.ptr;
1414        let isl_rs_result = unsafe { isl_printer_print_val_list(p, list) };
1415        let isl_rs_result = Printer { ptr: isl_rs_result,
1416                                      should_free_on_drop: true };
1417        let err = isl_rs_ctx.last_error();
1418        if err != Error::None_ {
1419            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1420        }
1421        Ok(isl_rs_result)
1422    }
1423
1424    /// Wraps `isl_printer_print_vec`.
1425    pub fn print_vec(self, vec: &Vec) -> Result<Printer, LibISLError> {
1426        let printer = self;
1427        let isl_rs_ctx = printer.get_ctx();
1428        let mut printer = printer;
1429        printer.do_not_free_on_drop();
1430        let printer = printer.ptr;
1431        let vec = vec.ptr;
1432        let isl_rs_result = unsafe { isl_printer_print_vec(printer, vec) };
1433        let isl_rs_result = Printer { ptr: isl_rs_result,
1434                                      should_free_on_drop: true };
1435        let err = isl_rs_ctx.last_error();
1436        if err != Error::None_ {
1437            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1438        }
1439        Ok(isl_rs_result)
1440    }
1441
1442    /// Wraps `isl_printer_set_indent`.
1443    pub fn set_indent(self, indent: i32) -> Result<Printer, LibISLError> {
1444        let p = self;
1445        let isl_rs_ctx = p.get_ctx();
1446        let mut p = p;
1447        p.do_not_free_on_drop();
1448        let p = p.ptr;
1449        let isl_rs_result = unsafe { isl_printer_set_indent(p, indent) };
1450        let isl_rs_result = Printer { ptr: isl_rs_result,
1451                                      should_free_on_drop: true };
1452        let err = isl_rs_ctx.last_error();
1453        if err != Error::None_ {
1454            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1455        }
1456        Ok(isl_rs_result)
1457    }
1458
1459    /// Wraps `isl_printer_set_indent_prefix`.
1460    pub fn set_indent_prefix(self, prefix: &str) -> Result<Printer, LibISLError> {
1461        let p = self;
1462        let isl_rs_ctx = p.get_ctx();
1463        let mut p = p;
1464        p.do_not_free_on_drop();
1465        let p = p.ptr;
1466        let prefix = CString::new(prefix).unwrap();
1467        let prefix = prefix.as_ptr();
1468        let isl_rs_result = unsafe { isl_printer_set_indent_prefix(p, prefix) };
1469        let isl_rs_result = Printer { ptr: isl_rs_result,
1470                                      should_free_on_drop: true };
1471        let err = isl_rs_ctx.last_error();
1472        if err != Error::None_ {
1473            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1474        }
1475        Ok(isl_rs_result)
1476    }
1477
1478    /// Wraps `isl_printer_set_isl_int_width`.
1479    pub fn set_isl_int_width(self, width: i32) -> Result<Printer, LibISLError> {
1480        let p = self;
1481        let isl_rs_ctx = p.get_ctx();
1482        let mut p = p;
1483        p.do_not_free_on_drop();
1484        let p = p.ptr;
1485        let isl_rs_result = unsafe { isl_printer_set_isl_int_width(p, width) };
1486        let isl_rs_result = Printer { ptr: isl_rs_result,
1487                                      should_free_on_drop: true };
1488        let err = isl_rs_ctx.last_error();
1489        if err != Error::None_ {
1490            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1491        }
1492        Ok(isl_rs_result)
1493    }
1494
1495    /// Wraps `isl_printer_set_note`.
1496    pub fn set_note(self, id: Id, note: Id) -> Result<Printer, LibISLError> {
1497        let p = self;
1498        let isl_rs_ctx = p.get_ctx();
1499        let mut p = p;
1500        p.do_not_free_on_drop();
1501        let p = p.ptr;
1502        let mut id = id;
1503        id.do_not_free_on_drop();
1504        let id = id.ptr;
1505        let mut note = note;
1506        note.do_not_free_on_drop();
1507        let note = note.ptr;
1508        let isl_rs_result = unsafe { isl_printer_set_note(p, id, note) };
1509        let isl_rs_result = Printer { ptr: isl_rs_result,
1510                                      should_free_on_drop: true };
1511        let err = isl_rs_ctx.last_error();
1512        if err != Error::None_ {
1513            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1514        }
1515        Ok(isl_rs_result)
1516    }
1517
1518    /// Wraps `isl_printer_set_output_format`.
1519    pub fn set_output_format(self, output_format: i32) -> Result<Printer, LibISLError> {
1520        let p = self;
1521        let isl_rs_ctx = p.get_ctx();
1522        let mut p = p;
1523        p.do_not_free_on_drop();
1524        let p = p.ptr;
1525        let isl_rs_result = unsafe { isl_printer_set_output_format(p, output_format) };
1526        let isl_rs_result = Printer { ptr: isl_rs_result,
1527                                      should_free_on_drop: true };
1528        let err = isl_rs_ctx.last_error();
1529        if err != Error::None_ {
1530            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1531        }
1532        Ok(isl_rs_result)
1533    }
1534
1535    /// Wraps `isl_printer_set_prefix`.
1536    pub fn set_prefix(self, prefix: &str) -> Result<Printer, LibISLError> {
1537        let p = self;
1538        let isl_rs_ctx = p.get_ctx();
1539        let mut p = p;
1540        p.do_not_free_on_drop();
1541        let p = p.ptr;
1542        let prefix = CString::new(prefix).unwrap();
1543        let prefix = prefix.as_ptr();
1544        let isl_rs_result = unsafe { isl_printer_set_prefix(p, prefix) };
1545        let isl_rs_result = Printer { ptr: isl_rs_result,
1546                                      should_free_on_drop: true };
1547        let err = isl_rs_ctx.last_error();
1548        if err != Error::None_ {
1549            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1550        }
1551        Ok(isl_rs_result)
1552    }
1553
1554    /// Wraps `isl_printer_set_suffix`.
1555    pub fn set_suffix(self, suffix: &str) -> Result<Printer, LibISLError> {
1556        let p = self;
1557        let isl_rs_ctx = p.get_ctx();
1558        let mut p = p;
1559        p.do_not_free_on_drop();
1560        let p = p.ptr;
1561        let suffix = CString::new(suffix).unwrap();
1562        let suffix = suffix.as_ptr();
1563        let isl_rs_result = unsafe { isl_printer_set_suffix(p, suffix) };
1564        let isl_rs_result = Printer { ptr: isl_rs_result,
1565                                      should_free_on_drop: true };
1566        let err = isl_rs_ctx.last_error();
1567        if err != Error::None_ {
1568            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1569        }
1570        Ok(isl_rs_result)
1571    }
1572
1573    /// Wraps `isl_printer_set_yaml_style`.
1574    pub fn set_yaml_style(self, yaml_style: i32) -> Result<Printer, LibISLError> {
1575        let p = self;
1576        let isl_rs_ctx = p.get_ctx();
1577        let mut p = p;
1578        p.do_not_free_on_drop();
1579        let p = p.ptr;
1580        let isl_rs_result = unsafe { isl_printer_set_yaml_style(p, yaml_style) };
1581        let isl_rs_result = Printer { ptr: isl_rs_result,
1582                                      should_free_on_drop: true };
1583        let err = isl_rs_ctx.last_error();
1584        if err != Error::None_ {
1585            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1586        }
1587        Ok(isl_rs_result)
1588    }
1589
1590    /// Wraps `isl_printer_start_line`.
1591    pub fn start_line(self) -> Result<Printer, LibISLError> {
1592        let p = self;
1593        let isl_rs_ctx = p.get_ctx();
1594        let mut p = p;
1595        p.do_not_free_on_drop();
1596        let p = p.ptr;
1597        let isl_rs_result = unsafe { isl_printer_start_line(p) };
1598        let isl_rs_result = Printer { ptr: isl_rs_result,
1599                                      should_free_on_drop: true };
1600        let err = isl_rs_ctx.last_error();
1601        if err != Error::None_ {
1602            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1603        }
1604        Ok(isl_rs_result)
1605    }
1606
1607    /// Wraps `isl_printer_to_str`.
1608    pub fn to_str(ctx: &Context) -> Result<Printer, LibISLError> {
1609        let isl_rs_ctx = Context { ptr: ctx.ptr,
1610                                   should_free_on_drop: false };
1611        let ctx = ctx.ptr;
1612        let isl_rs_result = unsafe { isl_printer_to_str(ctx) };
1613        let isl_rs_result = Printer { ptr: isl_rs_result,
1614                                      should_free_on_drop: true };
1615        let err = isl_rs_ctx.last_error();
1616        if err != Error::None_ {
1617            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1618        }
1619        Ok(isl_rs_result)
1620    }
1621
1622    /// Wraps `isl_printer_yaml_end_mapping`.
1623    pub fn yaml_end_mapping(self) -> Result<Printer, LibISLError> {
1624        let p = self;
1625        let isl_rs_ctx = p.get_ctx();
1626        let mut p = p;
1627        p.do_not_free_on_drop();
1628        let p = p.ptr;
1629        let isl_rs_result = unsafe { isl_printer_yaml_end_mapping(p) };
1630        let isl_rs_result = Printer { ptr: isl_rs_result,
1631                                      should_free_on_drop: true };
1632        let err = isl_rs_ctx.last_error();
1633        if err != Error::None_ {
1634            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1635        }
1636        Ok(isl_rs_result)
1637    }
1638
1639    /// Wraps `isl_printer_yaml_end_sequence`.
1640    pub fn yaml_end_sequence(self) -> Result<Printer, LibISLError> {
1641        let p = self;
1642        let isl_rs_ctx = p.get_ctx();
1643        let mut p = p;
1644        p.do_not_free_on_drop();
1645        let p = p.ptr;
1646        let isl_rs_result = unsafe { isl_printer_yaml_end_sequence(p) };
1647        let isl_rs_result = Printer { ptr: isl_rs_result,
1648                                      should_free_on_drop: true };
1649        let err = isl_rs_ctx.last_error();
1650        if err != Error::None_ {
1651            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1652        }
1653        Ok(isl_rs_result)
1654    }
1655
1656    /// Wraps `isl_printer_yaml_next`.
1657    pub fn yaml_next(self) -> Result<Printer, LibISLError> {
1658        let p = self;
1659        let isl_rs_ctx = p.get_ctx();
1660        let mut p = p;
1661        p.do_not_free_on_drop();
1662        let p = p.ptr;
1663        let isl_rs_result = unsafe { isl_printer_yaml_next(p) };
1664        let isl_rs_result = Printer { ptr: isl_rs_result,
1665                                      should_free_on_drop: true };
1666        let err = isl_rs_ctx.last_error();
1667        if err != Error::None_ {
1668            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1669        }
1670        Ok(isl_rs_result)
1671    }
1672
1673    /// Wraps `isl_printer_yaml_start_mapping`.
1674    pub fn yaml_start_mapping(self) -> Result<Printer, LibISLError> {
1675        let p = self;
1676        let isl_rs_ctx = p.get_ctx();
1677        let mut p = p;
1678        p.do_not_free_on_drop();
1679        let p = p.ptr;
1680        let isl_rs_result = unsafe { isl_printer_yaml_start_mapping(p) };
1681        let isl_rs_result = Printer { ptr: isl_rs_result,
1682                                      should_free_on_drop: true };
1683        let err = isl_rs_ctx.last_error();
1684        if err != Error::None_ {
1685            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1686        }
1687        Ok(isl_rs_result)
1688    }
1689
1690    /// Wraps `isl_printer_yaml_start_sequence`.
1691    pub fn yaml_start_sequence(self) -> Result<Printer, LibISLError> {
1692        let p = self;
1693        let isl_rs_ctx = p.get_ctx();
1694        let mut p = p;
1695        p.do_not_free_on_drop();
1696        let p = p.ptr;
1697        let isl_rs_result = unsafe { isl_printer_yaml_start_sequence(p) };
1698        let isl_rs_result = Printer { ptr: isl_rs_result,
1699                                      should_free_on_drop: true };
1700        let err = isl_rs_ctx.last_error();
1701        if err != Error::None_ {
1702            return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
1703        }
1704        Ok(isl_rs_result)
1705    }
1706
1707    /// Does not call isl_printer_free() on being dropped. (For internal use
1708    /// only.)
1709    pub fn do_not_free_on_drop(&mut self) {
1710        self.should_free_on_drop = false;
1711    }
1712}
1713
1714impl Drop for Printer {
1715    fn drop(&mut self) {
1716        if self.should_free_on_drop {
1717            unsafe {
1718                isl_printer_free(self.ptr);
1719            }
1720        }
1721    }
1722}