1use 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
19pub 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 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 let err_msg = isl_rs_ctx.last_error_msg();
213 isl_rs_ctx.reset_error();
214 return Err(LibISLError::new(err, err_msg));
215 }
216 Ok(isl_rs_result)
217 }
218
219 pub fn flush(self) -> Result<Printer, LibISLError> {
221 let p = self;
222 let isl_rs_ctx = p.get_ctx();
223 let mut p = p;
224 p.do_not_free_on_drop();
225 let p = p.ptr;
226 let isl_rs_result = unsafe { isl_printer_flush(p) };
227 let isl_rs_result = Printer { ptr: isl_rs_result,
228 should_free_on_drop: true };
229 let err = isl_rs_ctx.last_error();
230 if err != Error::None_ {
231 let err_msg = isl_rs_ctx.last_error_msg();
232 isl_rs_ctx.reset_error();
233 return Err(LibISLError::new(err, err_msg));
234 }
235 Ok(isl_rs_result)
236 }
237
238 pub fn free(self) -> Result<Printer, LibISLError> {
240 let printer = self;
241 let isl_rs_ctx = printer.get_ctx();
242 let mut printer = printer;
243 printer.do_not_free_on_drop();
244 let printer = printer.ptr;
245 let isl_rs_result = unsafe { isl_printer_free(printer) };
246 let isl_rs_result = Printer { ptr: isl_rs_result,
247 should_free_on_drop: true };
248 let err = isl_rs_ctx.last_error();
249 if err != Error::None_ {
250 let err_msg = isl_rs_ctx.last_error_msg();
251 isl_rs_ctx.reset_error();
252 return Err(LibISLError::new(err, err_msg));
253 }
254 Ok(isl_rs_result)
255 }
256
257 pub fn get_ctx(&self) -> Context {
259 let printer = self;
260 let printer = printer.ptr;
261 let isl_rs_result = unsafe { isl_printer_get_ctx(printer) };
262 let isl_rs_result = Context { ptr: isl_rs_result,
263 should_free_on_drop: false };
264 isl_rs_result
265 }
266
267 pub fn get_note(&self, id: Id) -> Result<Id, LibISLError> {
269 let p = self;
270 let isl_rs_ctx = p.get_ctx();
271 let p = p.ptr;
272 let mut id = id;
273 id.do_not_free_on_drop();
274 let id = id.ptr;
275 let isl_rs_result = unsafe { isl_printer_get_note(p, id) };
276 let isl_rs_result = Id { ptr: isl_rs_result,
277 should_free_on_drop: true };
278 let err = isl_rs_ctx.last_error();
279 if err != Error::None_ {
280 let err_msg = isl_rs_ctx.last_error_msg();
281 isl_rs_ctx.reset_error();
282 return Err(LibISLError::new(err, err_msg));
283 }
284 Ok(isl_rs_result)
285 }
286
287 pub fn get_output_format(&self) -> Result<i32, LibISLError> {
289 let p = self;
290 let isl_rs_ctx = p.get_ctx();
291 let p = p.ptr;
292 let isl_rs_result = unsafe { isl_printer_get_output_format(p) };
293 let err = isl_rs_ctx.last_error();
294 if err != Error::None_ {
295 let err_msg = isl_rs_ctx.last_error_msg();
296 isl_rs_ctx.reset_error();
297 return Err(LibISLError::new(err, err_msg));
298 }
299 Ok(isl_rs_result)
300 }
301
302 pub fn get_str(&self) -> Result<&str, LibISLError> {
304 let printer = self;
305 let isl_rs_ctx = printer.get_ctx();
306 let printer = printer.ptr;
307 let isl_rs_result = unsafe { isl_printer_get_str(printer) };
308 let isl_rs_result = unsafe { CStr::from_ptr(isl_rs_result) };
309 let isl_rs_result = isl_rs_result.to_str().unwrap();
310 let err = isl_rs_ctx.last_error();
311 if err != Error::None_ {
312 let err_msg = isl_rs_ctx.last_error_msg();
313 isl_rs_ctx.reset_error();
314 return Err(LibISLError::new(err, err_msg));
315 }
316 Ok(isl_rs_result)
317 }
318
319 pub fn get_yaml_style(&self) -> Result<i32, LibISLError> {
321 let p = self;
322 let isl_rs_ctx = p.get_ctx();
323 let p = p.ptr;
324 let isl_rs_result = unsafe { isl_printer_get_yaml_style(p) };
325 let err = isl_rs_ctx.last_error();
326 if err != Error::None_ {
327 let err_msg = isl_rs_ctx.last_error_msg();
328 isl_rs_ctx.reset_error();
329 return Err(LibISLError::new(err, err_msg));
330 }
331 Ok(isl_rs_result)
332 }
333
334 pub fn has_note(&self, id: &Id) -> Result<bool, LibISLError> {
336 let p = self;
337 let isl_rs_ctx = p.get_ctx();
338 let p = p.ptr;
339 let id = id.ptr;
340 let isl_rs_result = unsafe { isl_printer_has_note(p, id) };
341 let isl_rs_result = match isl_rs_result {
342 0 => false,
343 1 => true,
344 _ => {
345 return Err(LibISLError::new(Error::Unknown, "Got isl_bool = -1"));
346 }
347 };
348 let err = isl_rs_ctx.last_error();
349 if err != Error::None_ {
350 let err_msg = isl_rs_ctx.last_error_msg();
351 isl_rs_ctx.reset_error();
352 return Err(LibISLError::new(err, err_msg));
353 }
354 Ok(isl_rs_result)
355 }
356
357 pub fn indent(self, indent: i32) -> Result<Printer, LibISLError> {
359 let p = self;
360 let isl_rs_ctx = p.get_ctx();
361 let mut p = p;
362 p.do_not_free_on_drop();
363 let p = p.ptr;
364 let isl_rs_result = unsafe { isl_printer_indent(p, indent) };
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 let err_msg = isl_rs_ctx.last_error_msg();
370 isl_rs_ctx.reset_error();
371 return Err(LibISLError::new(err, err_msg));
372 }
373 Ok(isl_rs_result)
374 }
375
376 pub fn print_aff(self, aff: &Aff) -> Result<Printer, LibISLError> {
378 let p = self;
379 let isl_rs_ctx = p.get_ctx();
380 let mut p = p;
381 p.do_not_free_on_drop();
382 let p = p.ptr;
383 let aff = aff.ptr;
384 let isl_rs_result = unsafe { isl_printer_print_aff(p, aff) };
385 let isl_rs_result = Printer { ptr: isl_rs_result,
386 should_free_on_drop: true };
387 let err = isl_rs_ctx.last_error();
388 if err != Error::None_ {
389 let err_msg = isl_rs_ctx.last_error_msg();
390 isl_rs_ctx.reset_error();
391 return Err(LibISLError::new(err, err_msg));
392 }
393 Ok(isl_rs_result)
394 }
395
396 pub fn print_aff_list(self, list: &AffList) -> Result<Printer, LibISLError> {
398 let p = self;
399 let isl_rs_ctx = p.get_ctx();
400 let mut p = p;
401 p.do_not_free_on_drop();
402 let p = p.ptr;
403 let list = list.ptr;
404 let isl_rs_result = unsafe { isl_printer_print_aff_list(p, list) };
405 let isl_rs_result = Printer { ptr: isl_rs_result,
406 should_free_on_drop: true };
407 let err = isl_rs_ctx.last_error();
408 if err != Error::None_ {
409 let err_msg = isl_rs_ctx.last_error_msg();
410 isl_rs_ctx.reset_error();
411 return Err(LibISLError::new(err, err_msg));
412 }
413 Ok(isl_rs_result)
414 }
415
416 pub fn print_ast_expr(self, expr: &ASTExpr) -> Result<Printer, LibISLError> {
418 let p = self;
419 let isl_rs_ctx = p.get_ctx();
420 let mut p = p;
421 p.do_not_free_on_drop();
422 let p = p.ptr;
423 let expr = expr.ptr;
424 let isl_rs_result = unsafe { isl_printer_print_ast_expr(p, expr) };
425 let isl_rs_result = Printer { ptr: isl_rs_result,
426 should_free_on_drop: true };
427 let err = isl_rs_ctx.last_error();
428 if err != Error::None_ {
429 let err_msg = isl_rs_ctx.last_error_msg();
430 isl_rs_ctx.reset_error();
431 return Err(LibISLError::new(err, err_msg));
432 }
433 Ok(isl_rs_result)
434 }
435
436 pub fn print_ast_expr_list(self, list: &ASTExprList) -> Result<Printer, LibISLError> {
438 let p = self;
439 let isl_rs_ctx = p.get_ctx();
440 let mut p = p;
441 p.do_not_free_on_drop();
442 let p = p.ptr;
443 let list = list.ptr;
444 let isl_rs_result = unsafe { isl_printer_print_ast_expr_list(p, list) };
445 let isl_rs_result = Printer { ptr: isl_rs_result,
446 should_free_on_drop: true };
447 let err = isl_rs_ctx.last_error();
448 if err != Error::None_ {
449 let err_msg = isl_rs_ctx.last_error_msg();
450 isl_rs_ctx.reset_error();
451 return Err(LibISLError::new(err, err_msg));
452 }
453 Ok(isl_rs_result)
454 }
455
456 pub fn print_ast_node(self, node: &ASTNode) -> Result<Printer, LibISLError> {
458 let p = self;
459 let isl_rs_ctx = p.get_ctx();
460 let mut p = p;
461 p.do_not_free_on_drop();
462 let p = p.ptr;
463 let node = node.ptr;
464 let isl_rs_result = unsafe { isl_printer_print_ast_node(p, node) };
465 let isl_rs_result = Printer { ptr: isl_rs_result,
466 should_free_on_drop: true };
467 let err = isl_rs_ctx.last_error();
468 if err != Error::None_ {
469 let err_msg = isl_rs_ctx.last_error_msg();
470 isl_rs_ctx.reset_error();
471 return Err(LibISLError::new(err, err_msg));
472 }
473 Ok(isl_rs_result)
474 }
475
476 pub fn print_ast_node_list(self, list: &ASTNodeList) -> Result<Printer, LibISLError> {
478 let p = self;
479 let isl_rs_ctx = p.get_ctx();
480 let mut p = p;
481 p.do_not_free_on_drop();
482 let p = p.ptr;
483 let list = list.ptr;
484 let isl_rs_result = unsafe { isl_printer_print_ast_node_list(p, list) };
485 let isl_rs_result = Printer { ptr: isl_rs_result,
486 should_free_on_drop: true };
487 let err = isl_rs_ctx.last_error();
488 if err != Error::None_ {
489 let err_msg = isl_rs_ctx.last_error_msg();
490 isl_rs_ctx.reset_error();
491 return Err(LibISLError::new(err, err_msg));
492 }
493 Ok(isl_rs_result)
494 }
495
496 pub fn print_basic_map(self, bmap: &BasicMap) -> Result<Printer, LibISLError> {
498 let printer = self;
499 let isl_rs_ctx = printer.get_ctx();
500 let mut printer = printer;
501 printer.do_not_free_on_drop();
502 let printer = printer.ptr;
503 let bmap = bmap.ptr;
504 let isl_rs_result = unsafe { isl_printer_print_basic_map(printer, bmap) };
505 let isl_rs_result = Printer { ptr: isl_rs_result,
506 should_free_on_drop: true };
507 let err = isl_rs_ctx.last_error();
508 if err != Error::None_ {
509 let err_msg = isl_rs_ctx.last_error_msg();
510 isl_rs_ctx.reset_error();
511 return Err(LibISLError::new(err, err_msg));
512 }
513 Ok(isl_rs_result)
514 }
515
516 pub fn print_basic_map_list(self, list: &BasicMapList) -> Result<Printer, LibISLError> {
518 let p = self;
519 let isl_rs_ctx = p.get_ctx();
520 let mut p = p;
521 p.do_not_free_on_drop();
522 let p = p.ptr;
523 let list = list.ptr;
524 let isl_rs_result = unsafe { isl_printer_print_basic_map_list(p, list) };
525 let isl_rs_result = Printer { ptr: isl_rs_result,
526 should_free_on_drop: true };
527 let err = isl_rs_ctx.last_error();
528 if err != Error::None_ {
529 let err_msg = isl_rs_ctx.last_error_msg();
530 isl_rs_ctx.reset_error();
531 return Err(LibISLError::new(err, err_msg));
532 }
533 Ok(isl_rs_result)
534 }
535
536 pub fn print_basic_set(self, bset: &BasicSet) -> Result<Printer, LibISLError> {
538 let printer = self;
539 let isl_rs_ctx = printer.get_ctx();
540 let mut printer = printer;
541 printer.do_not_free_on_drop();
542 let printer = printer.ptr;
543 let bset = bset.ptr;
544 let isl_rs_result = unsafe { isl_printer_print_basic_set(printer, bset) };
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 let err_msg = isl_rs_ctx.last_error_msg();
550 isl_rs_ctx.reset_error();
551 return Err(LibISLError::new(err, err_msg));
552 }
553 Ok(isl_rs_result)
554 }
555
556 pub fn print_basic_set_list(self, list: &BasicSetList) -> Result<Printer, LibISLError> {
558 let p = self;
559 let isl_rs_ctx = p.get_ctx();
560 let mut p = p;
561 p.do_not_free_on_drop();
562 let p = p.ptr;
563 let list = list.ptr;
564 let isl_rs_result = unsafe { isl_printer_print_basic_set_list(p, list) };
565 let isl_rs_result = Printer { ptr: isl_rs_result,
566 should_free_on_drop: true };
567 let err = isl_rs_ctx.last_error();
568 if err != Error::None_ {
569 let err_msg = isl_rs_ctx.last_error_msg();
570 isl_rs_ctx.reset_error();
571 return Err(LibISLError::new(err, err_msg));
572 }
573 Ok(isl_rs_result)
574 }
575
576 pub fn print_constraint(self, c: &Constraint) -> Result<Printer, LibISLError> {
578 let p = self;
579 let isl_rs_ctx = p.get_ctx();
580 let mut p = p;
581 p.do_not_free_on_drop();
582 let p = p.ptr;
583 let c = c.ptr;
584 let isl_rs_result = unsafe { isl_printer_print_constraint(p, c) };
585 let isl_rs_result = Printer { ptr: isl_rs_result,
586 should_free_on_drop: true };
587 let err = isl_rs_ctx.last_error();
588 if err != Error::None_ {
589 let err_msg = isl_rs_ctx.last_error_msg();
590 isl_rs_ctx.reset_error();
591 return Err(LibISLError::new(err, err_msg));
592 }
593 Ok(isl_rs_result)
594 }
595
596 pub fn print_constraint_list(self, list: &ConstraintList) -> Result<Printer, LibISLError> {
598 let p = self;
599 let isl_rs_ctx = p.get_ctx();
600 let mut p = p;
601 p.do_not_free_on_drop();
602 let p = p.ptr;
603 let list = list.ptr;
604 let isl_rs_result = unsafe { isl_printer_print_constraint_list(p, list) };
605 let isl_rs_result = Printer { ptr: isl_rs_result,
606 should_free_on_drop: true };
607 let err = isl_rs_ctx.last_error();
608 if err != Error::None_ {
609 let err_msg = isl_rs_ctx.last_error_msg();
610 isl_rs_ctx.reset_error();
611 return Err(LibISLError::new(err, err_msg));
612 }
613 Ok(isl_rs_result)
614 }
615
616 pub fn print_double(self, d: f64) -> Result<Printer, LibISLError> {
618 let p = self;
619 let isl_rs_ctx = p.get_ctx();
620 let mut p = p;
621 p.do_not_free_on_drop();
622 let p = p.ptr;
623 let isl_rs_result = unsafe { isl_printer_print_double(p, d) };
624 let isl_rs_result = Printer { ptr: isl_rs_result,
625 should_free_on_drop: true };
626 let err = isl_rs_ctx.last_error();
627 if err != Error::None_ {
628 let err_msg = isl_rs_ctx.last_error_msg();
629 isl_rs_ctx.reset_error();
630 return Err(LibISLError::new(err, err_msg));
631 }
632 Ok(isl_rs_result)
633 }
634
635 pub fn print_fixed_box(self, box_: &FixedBox) -> Result<Printer, LibISLError> {
637 let p = self;
638 let isl_rs_ctx = p.get_ctx();
639 let mut p = p;
640 p.do_not_free_on_drop();
641 let p = p.ptr;
642 let box_ = box_.ptr;
643 let isl_rs_result = unsafe { isl_printer_print_fixed_box(p, box_) };
644 let isl_rs_result = Printer { ptr: isl_rs_result,
645 should_free_on_drop: true };
646 let err = isl_rs_ctx.last_error();
647 if err != Error::None_ {
648 let err_msg = isl_rs_ctx.last_error_msg();
649 isl_rs_ctx.reset_error();
650 return Err(LibISLError::new(err, err_msg));
651 }
652 Ok(isl_rs_result)
653 }
654
655 pub fn print_id(self, id: &Id) -> Result<Printer, LibISLError> {
657 let p = self;
658 let isl_rs_ctx = p.get_ctx();
659 let mut p = p;
660 p.do_not_free_on_drop();
661 let p = p.ptr;
662 let id = id.ptr;
663 let isl_rs_result = unsafe { isl_printer_print_id(p, id) };
664 let isl_rs_result = Printer { ptr: isl_rs_result,
665 should_free_on_drop: true };
666 let err = isl_rs_ctx.last_error();
667 if err != Error::None_ {
668 let err_msg = isl_rs_ctx.last_error_msg();
669 isl_rs_ctx.reset_error();
670 return Err(LibISLError::new(err, err_msg));
671 }
672 Ok(isl_rs_result)
673 }
674
675 pub fn print_id_list(self, list: &IdList) -> Result<Printer, LibISLError> {
677 let p = self;
678 let isl_rs_ctx = p.get_ctx();
679 let mut p = p;
680 p.do_not_free_on_drop();
681 let p = p.ptr;
682 let list = list.ptr;
683 let isl_rs_result = unsafe { isl_printer_print_id_list(p, list) };
684 let isl_rs_result = Printer { ptr: isl_rs_result,
685 should_free_on_drop: true };
686 let err = isl_rs_ctx.last_error();
687 if err != Error::None_ {
688 let err_msg = isl_rs_ctx.last_error_msg();
689 isl_rs_ctx.reset_error();
690 return Err(LibISLError::new(err, err_msg));
691 }
692 Ok(isl_rs_result)
693 }
694
695 pub fn print_id_to_ast_expr(self, hmap: &IdToASTExpr) -> Result<Printer, LibISLError> {
697 let p = self;
698 let isl_rs_ctx = p.get_ctx();
699 let mut p = p;
700 p.do_not_free_on_drop();
701 let p = p.ptr;
702 let hmap = hmap.ptr;
703 let isl_rs_result = unsafe { isl_printer_print_id_to_ast_expr(p, hmap) };
704 let isl_rs_result = Printer { ptr: isl_rs_result,
705 should_free_on_drop: true };
706 let err = isl_rs_ctx.last_error();
707 if err != Error::None_ {
708 let err_msg = isl_rs_ctx.last_error_msg();
709 isl_rs_ctx.reset_error();
710 return Err(LibISLError::new(err, err_msg));
711 }
712 Ok(isl_rs_result)
713 }
714
715 pub fn print_int(self, i: i32) -> Result<Printer, LibISLError> {
717 let p = self;
718 let isl_rs_ctx = p.get_ctx();
719 let mut p = p;
720 p.do_not_free_on_drop();
721 let p = p.ptr;
722 let isl_rs_result = unsafe { isl_printer_print_int(p, i) };
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 let err_msg = isl_rs_ctx.last_error_msg();
728 isl_rs_ctx.reset_error();
729 return Err(LibISLError::new(err, err_msg));
730 }
731 Ok(isl_rs_result)
732 }
733
734 pub fn print_local_space(self, ls: &LocalSpace) -> Result<Printer, LibISLError> {
736 let p = self;
737 let isl_rs_ctx = p.get_ctx();
738 let mut p = p;
739 p.do_not_free_on_drop();
740 let p = p.ptr;
741 let ls = ls.ptr;
742 let isl_rs_result = unsafe { isl_printer_print_local_space(p, ls) };
743 let isl_rs_result = Printer { ptr: isl_rs_result,
744 should_free_on_drop: true };
745 let err = isl_rs_ctx.last_error();
746 if err != Error::None_ {
747 let err_msg = isl_rs_ctx.last_error_msg();
748 isl_rs_ctx.reset_error();
749 return Err(LibISLError::new(err, err_msg));
750 }
751 Ok(isl_rs_result)
752 }
753
754 pub fn print_map(self, map: &Map) -> Result<Printer, LibISLError> {
756 let printer = self;
757 let isl_rs_ctx = printer.get_ctx();
758 let mut printer = printer;
759 printer.do_not_free_on_drop();
760 let printer = printer.ptr;
761 let map = map.ptr;
762 let isl_rs_result = unsafe { isl_printer_print_map(printer, map) };
763 let isl_rs_result = Printer { ptr: isl_rs_result,
764 should_free_on_drop: true };
765 let err = isl_rs_ctx.last_error();
766 if err != Error::None_ {
767 let err_msg = isl_rs_ctx.last_error_msg();
768 isl_rs_ctx.reset_error();
769 return Err(LibISLError::new(err, err_msg));
770 }
771 Ok(isl_rs_result)
772 }
773
774 pub fn print_map_list(self, list: &MapList) -> Result<Printer, LibISLError> {
776 let p = self;
777 let isl_rs_ctx = p.get_ctx();
778 let mut p = p;
779 p.do_not_free_on_drop();
780 let p = p.ptr;
781 let list = list.ptr;
782 let isl_rs_result = unsafe { isl_printer_print_map_list(p, list) };
783 let isl_rs_result = Printer { ptr: isl_rs_result,
784 should_free_on_drop: true };
785 let err = isl_rs_ctx.last_error();
786 if err != Error::None_ {
787 let err_msg = isl_rs_ctx.last_error_msg();
788 isl_rs_ctx.reset_error();
789 return Err(LibISLError::new(err, err_msg));
790 }
791 Ok(isl_rs_result)
792 }
793
794 pub fn print_multi_aff(self, maff: &MultiAff) -> Result<Printer, LibISLError> {
796 let p = self;
797 let isl_rs_ctx = p.get_ctx();
798 let mut p = p;
799 p.do_not_free_on_drop();
800 let p = p.ptr;
801 let maff = maff.ptr;
802 let isl_rs_result = unsafe { isl_printer_print_multi_aff(p, maff) };
803 let isl_rs_result = Printer { ptr: isl_rs_result,
804 should_free_on_drop: true };
805 let err = isl_rs_ctx.last_error();
806 if err != Error::None_ {
807 let err_msg = isl_rs_ctx.last_error_msg();
808 isl_rs_ctx.reset_error();
809 return Err(LibISLError::new(err, err_msg));
810 }
811 Ok(isl_rs_result)
812 }
813
814 pub fn print_multi_id(self, mi: &MultiId) -> Result<Printer, LibISLError> {
816 let p = self;
817 let isl_rs_ctx = p.get_ctx();
818 let mut p = p;
819 p.do_not_free_on_drop();
820 let p = p.ptr;
821 let mi = mi.ptr;
822 let isl_rs_result = unsafe { isl_printer_print_multi_id(p, mi) };
823 let isl_rs_result = Printer { ptr: isl_rs_result,
824 should_free_on_drop: true };
825 let err = isl_rs_ctx.last_error();
826 if err != Error::None_ {
827 let err_msg = isl_rs_ctx.last_error_msg();
828 isl_rs_ctx.reset_error();
829 return Err(LibISLError::new(err, err_msg));
830 }
831 Ok(isl_rs_result)
832 }
833
834 pub fn print_multi_pw_aff(self, mpa: &MultiPwAff) -> Result<Printer, LibISLError> {
836 let p = self;
837 let isl_rs_ctx = p.get_ctx();
838 let mut p = p;
839 p.do_not_free_on_drop();
840 let p = p.ptr;
841 let mpa = mpa.ptr;
842 let isl_rs_result = unsafe { isl_printer_print_multi_pw_aff(p, mpa) };
843 let isl_rs_result = Printer { ptr: isl_rs_result,
844 should_free_on_drop: true };
845 let err = isl_rs_ctx.last_error();
846 if err != Error::None_ {
847 let err_msg = isl_rs_ctx.last_error_msg();
848 isl_rs_ctx.reset_error();
849 return Err(LibISLError::new(err, err_msg));
850 }
851 Ok(isl_rs_result)
852 }
853
854 pub fn print_multi_union_pw_aff(self, mupa: &MultiUnionPwAff) -> Result<Printer, LibISLError> {
856 let p = self;
857 let isl_rs_ctx = p.get_ctx();
858 let mut p = p;
859 p.do_not_free_on_drop();
860 let p = p.ptr;
861 let mupa = mupa.ptr;
862 let isl_rs_result = unsafe { isl_printer_print_multi_union_pw_aff(p, mupa) };
863 let isl_rs_result = Printer { ptr: isl_rs_result,
864 should_free_on_drop: true };
865 let err = isl_rs_ctx.last_error();
866 if err != Error::None_ {
867 let err_msg = isl_rs_ctx.last_error_msg();
868 isl_rs_ctx.reset_error();
869 return Err(LibISLError::new(err, err_msg));
870 }
871 Ok(isl_rs_result)
872 }
873
874 pub fn print_multi_val(self, mv: &MultiVal) -> Result<Printer, LibISLError> {
876 let p = self;
877 let isl_rs_ctx = p.get_ctx();
878 let mut p = p;
879 p.do_not_free_on_drop();
880 let p = p.ptr;
881 let mv = mv.ptr;
882 let isl_rs_result = unsafe { isl_printer_print_multi_val(p, mv) };
883 let isl_rs_result = Printer { ptr: isl_rs_result,
884 should_free_on_drop: true };
885 let err = isl_rs_ctx.last_error();
886 if err != Error::None_ {
887 let err_msg = isl_rs_ctx.last_error_msg();
888 isl_rs_ctx.reset_error();
889 return Err(LibISLError::new(err, err_msg));
890 }
891 Ok(isl_rs_result)
892 }
893
894 pub fn print_point(self, pnt: &Point) -> Result<Printer, LibISLError> {
896 let printer = self;
897 let isl_rs_ctx = printer.get_ctx();
898 let mut printer = printer;
899 printer.do_not_free_on_drop();
900 let printer = printer.ptr;
901 let pnt = pnt.ptr;
902 let isl_rs_result = unsafe { isl_printer_print_point(printer, pnt) };
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 let err_msg = isl_rs_ctx.last_error_msg();
908 isl_rs_ctx.reset_error();
909 return Err(LibISLError::new(err, err_msg));
910 }
911 Ok(isl_rs_result)
912 }
913
914 pub fn print_pw_aff(self, pwaff: &PwAff) -> Result<Printer, LibISLError> {
916 let p = self;
917 let isl_rs_ctx = p.get_ctx();
918 let mut p = p;
919 p.do_not_free_on_drop();
920 let p = p.ptr;
921 let pwaff = pwaff.ptr;
922 let isl_rs_result = unsafe { isl_printer_print_pw_aff(p, pwaff) };
923 let isl_rs_result = Printer { ptr: isl_rs_result,
924 should_free_on_drop: true };
925 let err = isl_rs_ctx.last_error();
926 if err != Error::None_ {
927 let err_msg = isl_rs_ctx.last_error_msg();
928 isl_rs_ctx.reset_error();
929 return Err(LibISLError::new(err, err_msg));
930 }
931 Ok(isl_rs_result)
932 }
933
934 pub fn print_pw_aff_list(self, list: &PwAffList) -> Result<Printer, LibISLError> {
936 let p = self;
937 let isl_rs_ctx = p.get_ctx();
938 let mut p = p;
939 p.do_not_free_on_drop();
940 let p = p.ptr;
941 let list = list.ptr;
942 let isl_rs_result = unsafe { isl_printer_print_pw_aff_list(p, list) };
943 let isl_rs_result = Printer { ptr: isl_rs_result,
944 should_free_on_drop: true };
945 let err = isl_rs_ctx.last_error();
946 if err != Error::None_ {
947 let err_msg = isl_rs_ctx.last_error_msg();
948 isl_rs_ctx.reset_error();
949 return Err(LibISLError::new(err, err_msg));
950 }
951 Ok(isl_rs_result)
952 }
953
954 pub fn print_pw_multi_aff(self, pma: &PwMultiAff) -> Result<Printer, LibISLError> {
956 let p = self;
957 let isl_rs_ctx = p.get_ctx();
958 let mut p = p;
959 p.do_not_free_on_drop();
960 let p = p.ptr;
961 let pma = pma.ptr;
962 let isl_rs_result = unsafe { isl_printer_print_pw_multi_aff(p, pma) };
963 let isl_rs_result = Printer { ptr: isl_rs_result,
964 should_free_on_drop: true };
965 let err = isl_rs_ctx.last_error();
966 if err != Error::None_ {
967 let err_msg = isl_rs_ctx.last_error_msg();
968 isl_rs_ctx.reset_error();
969 return Err(LibISLError::new(err, err_msg));
970 }
971 Ok(isl_rs_result)
972 }
973
974 pub fn print_pw_multi_aff_list(self, list: &PwMultiAffList) -> Result<Printer, LibISLError> {
976 let p = self;
977 let isl_rs_ctx = p.get_ctx();
978 let mut p = p;
979 p.do_not_free_on_drop();
980 let p = p.ptr;
981 let list = list.ptr;
982 let isl_rs_result = unsafe { isl_printer_print_pw_multi_aff_list(p, list) };
983 let isl_rs_result = Printer { ptr: isl_rs_result,
984 should_free_on_drop: true };
985 let err = isl_rs_ctx.last_error();
986 if err != Error::None_ {
987 let err_msg = isl_rs_ctx.last_error_msg();
988 isl_rs_ctx.reset_error();
989 return Err(LibISLError::new(err, err_msg));
990 }
991 Ok(isl_rs_result)
992 }
993
994 pub fn print_pw_qpolynomial(self, pwqp: &PwQPolynomial) -> Result<Printer, LibISLError> {
996 let p = self;
997 let isl_rs_ctx = p.get_ctx();
998 let mut p = p;
999 p.do_not_free_on_drop();
1000 let p = p.ptr;
1001 let pwqp = pwqp.ptr;
1002 let isl_rs_result = unsafe { isl_printer_print_pw_qpolynomial(p, pwqp) };
1003 let isl_rs_result = Printer { ptr: isl_rs_result,
1004 should_free_on_drop: true };
1005 let err = isl_rs_ctx.last_error();
1006 if err != Error::None_ {
1007 let err_msg = isl_rs_ctx.last_error_msg();
1008 isl_rs_ctx.reset_error();
1009 return Err(LibISLError::new(err, err_msg));
1010 }
1011 Ok(isl_rs_result)
1012 }
1013
1014 pub fn print_pw_qpolynomial_fold(self, pwf: &PwQPolynomialFold)
1016 -> Result<Printer, LibISLError> {
1017 let p = self;
1018 let isl_rs_ctx = p.get_ctx();
1019 let mut p = p;
1020 p.do_not_free_on_drop();
1021 let p = p.ptr;
1022 let pwf = pwf.ptr;
1023 let isl_rs_result = unsafe { isl_printer_print_pw_qpolynomial_fold(p, pwf) };
1024 let isl_rs_result = Printer { ptr: isl_rs_result,
1025 should_free_on_drop: true };
1026 let err = isl_rs_ctx.last_error();
1027 if err != Error::None_ {
1028 let err_msg = isl_rs_ctx.last_error_msg();
1029 isl_rs_ctx.reset_error();
1030 return Err(LibISLError::new(err, err_msg));
1031 }
1032 Ok(isl_rs_result)
1033 }
1034
1035 pub fn print_pw_qpolynomial_fold_list(self, list: &PwQPolynomialFoldList)
1037 -> Result<Printer, LibISLError> {
1038 let p = self;
1039 let isl_rs_ctx = p.get_ctx();
1040 let mut p = p;
1041 p.do_not_free_on_drop();
1042 let p = p.ptr;
1043 let list = list.ptr;
1044 let isl_rs_result = unsafe { isl_printer_print_pw_qpolynomial_fold_list(p, list) };
1045 let isl_rs_result = Printer { ptr: isl_rs_result,
1046 should_free_on_drop: true };
1047 let err = isl_rs_ctx.last_error();
1048 if err != Error::None_ {
1049 let err_msg = isl_rs_ctx.last_error_msg();
1050 isl_rs_ctx.reset_error();
1051 return Err(LibISLError::new(err, err_msg));
1052 }
1053 Ok(isl_rs_result)
1054 }
1055
1056 pub fn print_pw_qpolynomial_list(self, list: &PwQPolynomialList)
1058 -> Result<Printer, LibISLError> {
1059 let p = self;
1060 let isl_rs_ctx = p.get_ctx();
1061 let mut p = p;
1062 p.do_not_free_on_drop();
1063 let p = p.ptr;
1064 let list = list.ptr;
1065 let isl_rs_result = unsafe { isl_printer_print_pw_qpolynomial_list(p, list) };
1066 let isl_rs_result = Printer { ptr: isl_rs_result,
1067 should_free_on_drop: true };
1068 let err = isl_rs_ctx.last_error();
1069 if err != Error::None_ {
1070 let err_msg = isl_rs_ctx.last_error_msg();
1071 isl_rs_ctx.reset_error();
1072 return Err(LibISLError::new(err, err_msg));
1073 }
1074 Ok(isl_rs_result)
1075 }
1076
1077 pub fn print_qpolynomial(self, qp: &QPolynomial) -> Result<Printer, LibISLError> {
1079 let p = self;
1080 let isl_rs_ctx = p.get_ctx();
1081 let mut p = p;
1082 p.do_not_free_on_drop();
1083 let p = p.ptr;
1084 let qp = qp.ptr;
1085 let isl_rs_result = unsafe { isl_printer_print_qpolynomial(p, qp) };
1086 let isl_rs_result = Printer { ptr: isl_rs_result,
1087 should_free_on_drop: true };
1088 let err = isl_rs_ctx.last_error();
1089 if err != Error::None_ {
1090 let err_msg = isl_rs_ctx.last_error_msg();
1091 isl_rs_ctx.reset_error();
1092 return Err(LibISLError::new(err, err_msg));
1093 }
1094 Ok(isl_rs_result)
1095 }
1096
1097 pub fn print_qpolynomial_fold(self, fold: &QPolynomialFold) -> Result<Printer, LibISLError> {
1099 let p = self;
1100 let isl_rs_ctx = p.get_ctx();
1101 let mut p = p;
1102 p.do_not_free_on_drop();
1103 let p = p.ptr;
1104 let fold = fold.ptr;
1105 let isl_rs_result = unsafe { isl_printer_print_qpolynomial_fold(p, fold) };
1106 let isl_rs_result = Printer { ptr: isl_rs_result,
1107 should_free_on_drop: true };
1108 let err = isl_rs_ctx.last_error();
1109 if err != Error::None_ {
1110 let err_msg = isl_rs_ctx.last_error_msg();
1111 isl_rs_ctx.reset_error();
1112 return Err(LibISLError::new(err, err_msg));
1113 }
1114 Ok(isl_rs_result)
1115 }
1116
1117 pub fn print_qpolynomial_list(self, list: &QPolynomialList) -> Result<Printer, LibISLError> {
1119 let p = self;
1120 let isl_rs_ctx = p.get_ctx();
1121 let mut p = p;
1122 p.do_not_free_on_drop();
1123 let p = p.ptr;
1124 let list = list.ptr;
1125 let isl_rs_result = unsafe { isl_printer_print_qpolynomial_list(p, list) };
1126 let isl_rs_result = Printer { ptr: isl_rs_result,
1127 should_free_on_drop: true };
1128 let err = isl_rs_ctx.last_error();
1129 if err != Error::None_ {
1130 let err_msg = isl_rs_ctx.last_error_msg();
1131 isl_rs_ctx.reset_error();
1132 return Err(LibISLError::new(err, err_msg));
1133 }
1134 Ok(isl_rs_result)
1135 }
1136
1137 pub fn print_schedule(self, schedule: &Schedule) -> Result<Printer, LibISLError> {
1139 let p = self;
1140 let isl_rs_ctx = p.get_ctx();
1141 let mut p = p;
1142 p.do_not_free_on_drop();
1143 let p = p.ptr;
1144 let schedule = schedule.ptr;
1145 let isl_rs_result = unsafe { isl_printer_print_schedule(p, schedule) };
1146 let isl_rs_result = Printer { ptr: isl_rs_result,
1147 should_free_on_drop: true };
1148 let err = isl_rs_ctx.last_error();
1149 if err != Error::None_ {
1150 let err_msg = isl_rs_ctx.last_error_msg();
1151 isl_rs_ctx.reset_error();
1152 return Err(LibISLError::new(err, err_msg));
1153 }
1154 Ok(isl_rs_result)
1155 }
1156
1157 pub fn print_schedule_constraints(self, sc: &ScheduleConstraints)
1159 -> Result<Printer, LibISLError> {
1160 let p = self;
1161 let isl_rs_ctx = p.get_ctx();
1162 let mut p = p;
1163 p.do_not_free_on_drop();
1164 let p = p.ptr;
1165 let sc = sc.ptr;
1166 let isl_rs_result = unsafe { isl_printer_print_schedule_constraints(p, sc) };
1167 let isl_rs_result = Printer { ptr: isl_rs_result,
1168 should_free_on_drop: true };
1169 let err = isl_rs_ctx.last_error();
1170 if err != Error::None_ {
1171 let err_msg = isl_rs_ctx.last_error_msg();
1172 isl_rs_ctx.reset_error();
1173 return Err(LibISLError::new(err, err_msg));
1174 }
1175 Ok(isl_rs_result)
1176 }
1177
1178 pub fn print_schedule_node(self, node: &ScheduleNode) -> Result<Printer, LibISLError> {
1180 let p = self;
1181 let isl_rs_ctx = p.get_ctx();
1182 let mut p = p;
1183 p.do_not_free_on_drop();
1184 let p = p.ptr;
1185 let node = node.ptr;
1186 let isl_rs_result = unsafe { isl_printer_print_schedule_node(p, node) };
1187 let isl_rs_result = Printer { ptr: isl_rs_result,
1188 should_free_on_drop: true };
1189 let err = isl_rs_ctx.last_error();
1190 if err != Error::None_ {
1191 let err_msg = isl_rs_ctx.last_error_msg();
1192 isl_rs_ctx.reset_error();
1193 return Err(LibISLError::new(err, err_msg));
1194 }
1195 Ok(isl_rs_result)
1196 }
1197
1198 pub fn print_set(self, map: &Set) -> Result<Printer, LibISLError> {
1200 let printer = self;
1201 let isl_rs_ctx = printer.get_ctx();
1202 let mut printer = printer;
1203 printer.do_not_free_on_drop();
1204 let printer = printer.ptr;
1205 let map = map.ptr;
1206 let isl_rs_result = unsafe { isl_printer_print_set(printer, map) };
1207 let isl_rs_result = Printer { ptr: isl_rs_result,
1208 should_free_on_drop: true };
1209 let err = isl_rs_ctx.last_error();
1210 if err != Error::None_ {
1211 let err_msg = isl_rs_ctx.last_error_msg();
1212 isl_rs_ctx.reset_error();
1213 return Err(LibISLError::new(err, err_msg));
1214 }
1215 Ok(isl_rs_result)
1216 }
1217
1218 pub fn print_set_list(self, list: &SetList) -> Result<Printer, LibISLError> {
1220 let p = self;
1221 let isl_rs_ctx = p.get_ctx();
1222 let mut p = p;
1223 p.do_not_free_on_drop();
1224 let p = p.ptr;
1225 let list = list.ptr;
1226 let isl_rs_result = unsafe { isl_printer_print_set_list(p, list) };
1227 let isl_rs_result = Printer { ptr: isl_rs_result,
1228 should_free_on_drop: true };
1229 let err = isl_rs_ctx.last_error();
1230 if err != Error::None_ {
1231 let err_msg = isl_rs_ctx.last_error_msg();
1232 isl_rs_ctx.reset_error();
1233 return Err(LibISLError::new(err, err_msg));
1234 }
1235 Ok(isl_rs_result)
1236 }
1237
1238 pub fn print_space(self, space: &Space) -> Result<Printer, LibISLError> {
1240 let p = self;
1241 let isl_rs_ctx = p.get_ctx();
1242 let mut p = p;
1243 p.do_not_free_on_drop();
1244 let p = p.ptr;
1245 let space = space.ptr;
1246 let isl_rs_result = unsafe { isl_printer_print_space(p, space) };
1247 let isl_rs_result = Printer { ptr: isl_rs_result,
1248 should_free_on_drop: true };
1249 let err = isl_rs_ctx.last_error();
1250 if err != Error::None_ {
1251 let err_msg = isl_rs_ctx.last_error_msg();
1252 isl_rs_ctx.reset_error();
1253 return Err(LibISLError::new(err, err_msg));
1254 }
1255 Ok(isl_rs_result)
1256 }
1257
1258 pub fn print_str(self, s: &str) -> Result<Printer, LibISLError> {
1260 let p = self;
1261 let isl_rs_ctx = p.get_ctx();
1262 let mut p = p;
1263 p.do_not_free_on_drop();
1264 let p = p.ptr;
1265 let s = CString::new(s).unwrap();
1266 let s = s.as_ptr();
1267 let isl_rs_result = unsafe { isl_printer_print_str(p, s) };
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 let err_msg = isl_rs_ctx.last_error_msg();
1273 isl_rs_ctx.reset_error();
1274 return Err(LibISLError::new(err, err_msg));
1275 }
1276 Ok(isl_rs_result)
1277 }
1278
1279 pub fn print_union_access_info(self, access: &UnionAccessInfo) -> Result<Printer, LibISLError> {
1281 let p = self;
1282 let isl_rs_ctx = p.get_ctx();
1283 let mut p = p;
1284 p.do_not_free_on_drop();
1285 let p = p.ptr;
1286 let access = access.ptr;
1287 let isl_rs_result = unsafe { isl_printer_print_union_access_info(p, access) };
1288 let isl_rs_result = Printer { ptr: isl_rs_result,
1289 should_free_on_drop: true };
1290 let err = isl_rs_ctx.last_error();
1291 if err != Error::None_ {
1292 let err_msg = isl_rs_ctx.last_error_msg();
1293 isl_rs_ctx.reset_error();
1294 return Err(LibISLError::new(err, err_msg));
1295 }
1296 Ok(isl_rs_result)
1297 }
1298
1299 pub fn print_union_flow(self, flow: &UnionFlow) -> Result<Printer, LibISLError> {
1301 let p = self;
1302 let isl_rs_ctx = p.get_ctx();
1303 let mut p = p;
1304 p.do_not_free_on_drop();
1305 let p = p.ptr;
1306 let flow = flow.ptr;
1307 let isl_rs_result = unsafe { isl_printer_print_union_flow(p, flow) };
1308 let isl_rs_result = Printer { ptr: isl_rs_result,
1309 should_free_on_drop: true };
1310 let err = isl_rs_ctx.last_error();
1311 if err != Error::None_ {
1312 let err_msg = isl_rs_ctx.last_error_msg();
1313 isl_rs_ctx.reset_error();
1314 return Err(LibISLError::new(err, err_msg));
1315 }
1316 Ok(isl_rs_result)
1317 }
1318
1319 pub fn print_union_map(self, umap: &UnionMap) -> Result<Printer, LibISLError> {
1321 let p = self;
1322 let isl_rs_ctx = p.get_ctx();
1323 let mut p = p;
1324 p.do_not_free_on_drop();
1325 let p = p.ptr;
1326 let umap = umap.ptr;
1327 let isl_rs_result = unsafe { isl_printer_print_union_map(p, umap) };
1328 let isl_rs_result = Printer { ptr: isl_rs_result,
1329 should_free_on_drop: true };
1330 let err = isl_rs_ctx.last_error();
1331 if err != Error::None_ {
1332 let err_msg = isl_rs_ctx.last_error_msg();
1333 isl_rs_ctx.reset_error();
1334 return Err(LibISLError::new(err, err_msg));
1335 }
1336 Ok(isl_rs_result)
1337 }
1338
1339 pub fn print_union_map_list(self, list: &UnionMapList) -> Result<Printer, LibISLError> {
1341 let p = self;
1342 let isl_rs_ctx = p.get_ctx();
1343 let mut p = p;
1344 p.do_not_free_on_drop();
1345 let p = p.ptr;
1346 let list = list.ptr;
1347 let isl_rs_result = unsafe { isl_printer_print_union_map_list(p, list) };
1348 let isl_rs_result = Printer { ptr: isl_rs_result,
1349 should_free_on_drop: true };
1350 let err = isl_rs_ctx.last_error();
1351 if err != Error::None_ {
1352 let err_msg = isl_rs_ctx.last_error_msg();
1353 isl_rs_ctx.reset_error();
1354 return Err(LibISLError::new(err, err_msg));
1355 }
1356 Ok(isl_rs_result)
1357 }
1358
1359 pub fn print_union_pw_aff(self, upa: &UnionPwAff) -> Result<Printer, LibISLError> {
1361 let p = self;
1362 let isl_rs_ctx = p.get_ctx();
1363 let mut p = p;
1364 p.do_not_free_on_drop();
1365 let p = p.ptr;
1366 let upa = upa.ptr;
1367 let isl_rs_result = unsafe { isl_printer_print_union_pw_aff(p, upa) };
1368 let isl_rs_result = Printer { ptr: isl_rs_result,
1369 should_free_on_drop: true };
1370 let err = isl_rs_ctx.last_error();
1371 if err != Error::None_ {
1372 let err_msg = isl_rs_ctx.last_error_msg();
1373 isl_rs_ctx.reset_error();
1374 return Err(LibISLError::new(err, err_msg));
1375 }
1376 Ok(isl_rs_result)
1377 }
1378
1379 pub fn print_union_pw_aff_list(self, list: &UnionPwAffList) -> Result<Printer, LibISLError> {
1381 let p = self;
1382 let isl_rs_ctx = p.get_ctx();
1383 let mut p = p;
1384 p.do_not_free_on_drop();
1385 let p = p.ptr;
1386 let list = list.ptr;
1387 let isl_rs_result = unsafe { isl_printer_print_union_pw_aff_list(p, list) };
1388 let isl_rs_result = Printer { ptr: isl_rs_result,
1389 should_free_on_drop: true };
1390 let err = isl_rs_ctx.last_error();
1391 if err != Error::None_ {
1392 let err_msg = isl_rs_ctx.last_error_msg();
1393 isl_rs_ctx.reset_error();
1394 return Err(LibISLError::new(err, err_msg));
1395 }
1396 Ok(isl_rs_result)
1397 }
1398
1399 pub fn print_union_pw_multi_aff(self, upma: &UnionPwMultiAff) -> Result<Printer, LibISLError> {
1401 let p = self;
1402 let isl_rs_ctx = p.get_ctx();
1403 let mut p = p;
1404 p.do_not_free_on_drop();
1405 let p = p.ptr;
1406 let upma = upma.ptr;
1407 let isl_rs_result = unsafe { isl_printer_print_union_pw_multi_aff(p, upma) };
1408 let isl_rs_result = Printer { ptr: isl_rs_result,
1409 should_free_on_drop: true };
1410 let err = isl_rs_ctx.last_error();
1411 if err != Error::None_ {
1412 let err_msg = isl_rs_ctx.last_error_msg();
1413 isl_rs_ctx.reset_error();
1414 return Err(LibISLError::new(err, err_msg));
1415 }
1416 Ok(isl_rs_result)
1417 }
1418
1419 pub fn print_union_pw_multi_aff_list(self, list: &UnionPwMultiAffList)
1421 -> Result<Printer, LibISLError> {
1422 let p = self;
1423 let isl_rs_ctx = p.get_ctx();
1424 let mut p = p;
1425 p.do_not_free_on_drop();
1426 let p = p.ptr;
1427 let list = list.ptr;
1428 let isl_rs_result = unsafe { isl_printer_print_union_pw_multi_aff_list(p, list) };
1429 let isl_rs_result = Printer { ptr: isl_rs_result,
1430 should_free_on_drop: true };
1431 let err = isl_rs_ctx.last_error();
1432 if err != Error::None_ {
1433 let err_msg = isl_rs_ctx.last_error_msg();
1434 isl_rs_ctx.reset_error();
1435 return Err(LibISLError::new(err, err_msg));
1436 }
1437 Ok(isl_rs_result)
1438 }
1439
1440 pub fn print_union_pw_qpolynomial(self, upwqp: &UnionPwQPolynomial)
1442 -> Result<Printer, LibISLError> {
1443 let p = self;
1444 let isl_rs_ctx = p.get_ctx();
1445 let mut p = p;
1446 p.do_not_free_on_drop();
1447 let p = p.ptr;
1448 let upwqp = upwqp.ptr;
1449 let isl_rs_result = unsafe { isl_printer_print_union_pw_qpolynomial(p, upwqp) };
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 let err_msg = isl_rs_ctx.last_error_msg();
1455 isl_rs_ctx.reset_error();
1456 return Err(LibISLError::new(err, err_msg));
1457 }
1458 Ok(isl_rs_result)
1459 }
1460
1461 pub fn print_union_pw_qpolynomial_fold(self, upwf: &UnionPwQPolynomialFold)
1463 -> Result<Printer, LibISLError> {
1464 let p = self;
1465 let isl_rs_ctx = p.get_ctx();
1466 let mut p = p;
1467 p.do_not_free_on_drop();
1468 let p = p.ptr;
1469 let upwf = upwf.ptr;
1470 let isl_rs_result = unsafe { isl_printer_print_union_pw_qpolynomial_fold(p, upwf) };
1471 let isl_rs_result = Printer { ptr: isl_rs_result,
1472 should_free_on_drop: true };
1473 let err = isl_rs_ctx.last_error();
1474 if err != Error::None_ {
1475 let err_msg = isl_rs_ctx.last_error_msg();
1476 isl_rs_ctx.reset_error();
1477 return Err(LibISLError::new(err, err_msg));
1478 }
1479 Ok(isl_rs_result)
1480 }
1481
1482 pub fn print_union_set(self, uset: &UnionSet) -> Result<Printer, LibISLError> {
1484 let p = self;
1485 let isl_rs_ctx = p.get_ctx();
1486 let mut p = p;
1487 p.do_not_free_on_drop();
1488 let p = p.ptr;
1489 let uset = uset.ptr;
1490 let isl_rs_result = unsafe { isl_printer_print_union_set(p, uset) };
1491 let isl_rs_result = Printer { ptr: isl_rs_result,
1492 should_free_on_drop: true };
1493 let err = isl_rs_ctx.last_error();
1494 if err != Error::None_ {
1495 let err_msg = isl_rs_ctx.last_error_msg();
1496 isl_rs_ctx.reset_error();
1497 return Err(LibISLError::new(err, err_msg));
1498 }
1499 Ok(isl_rs_result)
1500 }
1501
1502 pub fn print_union_set_list(self, list: &UnionSetList) -> Result<Printer, LibISLError> {
1504 let p = self;
1505 let isl_rs_ctx = p.get_ctx();
1506 let mut p = p;
1507 p.do_not_free_on_drop();
1508 let p = p.ptr;
1509 let list = list.ptr;
1510 let isl_rs_result = unsafe { isl_printer_print_union_set_list(p, list) };
1511 let isl_rs_result = Printer { ptr: isl_rs_result,
1512 should_free_on_drop: true };
1513 let err = isl_rs_ctx.last_error();
1514 if err != Error::None_ {
1515 let err_msg = isl_rs_ctx.last_error_msg();
1516 isl_rs_ctx.reset_error();
1517 return Err(LibISLError::new(err, err_msg));
1518 }
1519 Ok(isl_rs_result)
1520 }
1521
1522 pub fn print_val(self, v: &Val) -> Result<Printer, LibISLError> {
1524 let p = self;
1525 let isl_rs_ctx = p.get_ctx();
1526 let mut p = p;
1527 p.do_not_free_on_drop();
1528 let p = p.ptr;
1529 let v = v.ptr;
1530 let isl_rs_result = unsafe { isl_printer_print_val(p, v) };
1531 let isl_rs_result = Printer { ptr: isl_rs_result,
1532 should_free_on_drop: true };
1533 let err = isl_rs_ctx.last_error();
1534 if err != Error::None_ {
1535 let err_msg = isl_rs_ctx.last_error_msg();
1536 isl_rs_ctx.reset_error();
1537 return Err(LibISLError::new(err, err_msg));
1538 }
1539 Ok(isl_rs_result)
1540 }
1541
1542 pub fn print_val_list(self, list: &ValList) -> Result<Printer, LibISLError> {
1544 let p = self;
1545 let isl_rs_ctx = p.get_ctx();
1546 let mut p = p;
1547 p.do_not_free_on_drop();
1548 let p = p.ptr;
1549 let list = list.ptr;
1550 let isl_rs_result = unsafe { isl_printer_print_val_list(p, list) };
1551 let isl_rs_result = Printer { ptr: isl_rs_result,
1552 should_free_on_drop: true };
1553 let err = isl_rs_ctx.last_error();
1554 if err != Error::None_ {
1555 let err_msg = isl_rs_ctx.last_error_msg();
1556 isl_rs_ctx.reset_error();
1557 return Err(LibISLError::new(err, err_msg));
1558 }
1559 Ok(isl_rs_result)
1560 }
1561
1562 pub fn print_vec(self, vec: &Vec) -> Result<Printer, LibISLError> {
1564 let printer = self;
1565 let isl_rs_ctx = printer.get_ctx();
1566 let mut printer = printer;
1567 printer.do_not_free_on_drop();
1568 let printer = printer.ptr;
1569 let vec = vec.ptr;
1570 let isl_rs_result = unsafe { isl_printer_print_vec(printer, vec) };
1571 let isl_rs_result = Printer { ptr: isl_rs_result,
1572 should_free_on_drop: true };
1573 let err = isl_rs_ctx.last_error();
1574 if err != Error::None_ {
1575 let err_msg = isl_rs_ctx.last_error_msg();
1576 isl_rs_ctx.reset_error();
1577 return Err(LibISLError::new(err, err_msg));
1578 }
1579 Ok(isl_rs_result)
1580 }
1581
1582 pub fn set_indent(self, indent: i32) -> Result<Printer, LibISLError> {
1584 let p = self;
1585 let isl_rs_ctx = p.get_ctx();
1586 let mut p = p;
1587 p.do_not_free_on_drop();
1588 let p = p.ptr;
1589 let isl_rs_result = unsafe { isl_printer_set_indent(p, indent) };
1590 let isl_rs_result = Printer { ptr: isl_rs_result,
1591 should_free_on_drop: true };
1592 let err = isl_rs_ctx.last_error();
1593 if err != Error::None_ {
1594 let err_msg = isl_rs_ctx.last_error_msg();
1595 isl_rs_ctx.reset_error();
1596 return Err(LibISLError::new(err, err_msg));
1597 }
1598 Ok(isl_rs_result)
1599 }
1600
1601 pub fn set_indent_prefix(self, prefix: &str) -> Result<Printer, LibISLError> {
1603 let p = self;
1604 let isl_rs_ctx = p.get_ctx();
1605 let mut p = p;
1606 p.do_not_free_on_drop();
1607 let p = p.ptr;
1608 let prefix = CString::new(prefix).unwrap();
1609 let prefix = prefix.as_ptr();
1610 let isl_rs_result = unsafe { isl_printer_set_indent_prefix(p, prefix) };
1611 let isl_rs_result = Printer { ptr: isl_rs_result,
1612 should_free_on_drop: true };
1613 let err = isl_rs_ctx.last_error();
1614 if err != Error::None_ {
1615 let err_msg = isl_rs_ctx.last_error_msg();
1616 isl_rs_ctx.reset_error();
1617 return Err(LibISLError::new(err, err_msg));
1618 }
1619 Ok(isl_rs_result)
1620 }
1621
1622 pub fn set_isl_int_width(self, width: i32) -> 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_set_isl_int_width(p, width) };
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 let err_msg = isl_rs_ctx.last_error_msg();
1635 isl_rs_ctx.reset_error();
1636 return Err(LibISLError::new(err, err_msg));
1637 }
1638 Ok(isl_rs_result)
1639 }
1640
1641 pub fn set_note(self, id: Id, note: Id) -> Result<Printer, LibISLError> {
1643 let p = self;
1644 let isl_rs_ctx = p.get_ctx();
1645 let mut p = p;
1646 p.do_not_free_on_drop();
1647 let p = p.ptr;
1648 let mut id = id;
1649 id.do_not_free_on_drop();
1650 let id = id.ptr;
1651 let mut note = note;
1652 note.do_not_free_on_drop();
1653 let note = note.ptr;
1654 let isl_rs_result = unsafe { isl_printer_set_note(p, id, note) };
1655 let isl_rs_result = Printer { ptr: isl_rs_result,
1656 should_free_on_drop: true };
1657 let err = isl_rs_ctx.last_error();
1658 if err != Error::None_ {
1659 let err_msg = isl_rs_ctx.last_error_msg();
1660 isl_rs_ctx.reset_error();
1661 return Err(LibISLError::new(err, err_msg));
1662 }
1663 Ok(isl_rs_result)
1664 }
1665
1666 pub fn set_output_format(self, output_format: i32) -> Result<Printer, LibISLError> {
1668 let p = self;
1669 let isl_rs_ctx = p.get_ctx();
1670 let mut p = p;
1671 p.do_not_free_on_drop();
1672 let p = p.ptr;
1673 let isl_rs_result = unsafe { isl_printer_set_output_format(p, output_format) };
1674 let isl_rs_result = Printer { ptr: isl_rs_result,
1675 should_free_on_drop: true };
1676 let err = isl_rs_ctx.last_error();
1677 if err != Error::None_ {
1678 let err_msg = isl_rs_ctx.last_error_msg();
1679 isl_rs_ctx.reset_error();
1680 return Err(LibISLError::new(err, err_msg));
1681 }
1682 Ok(isl_rs_result)
1683 }
1684
1685 pub fn set_prefix(self, prefix: &str) -> Result<Printer, LibISLError> {
1687 let p = self;
1688 let isl_rs_ctx = p.get_ctx();
1689 let mut p = p;
1690 p.do_not_free_on_drop();
1691 let p = p.ptr;
1692 let prefix = CString::new(prefix).unwrap();
1693 let prefix = prefix.as_ptr();
1694 let isl_rs_result = unsafe { isl_printer_set_prefix(p, prefix) };
1695 let isl_rs_result = Printer { ptr: isl_rs_result,
1696 should_free_on_drop: true };
1697 let err = isl_rs_ctx.last_error();
1698 if err != Error::None_ {
1699 let err_msg = isl_rs_ctx.last_error_msg();
1700 isl_rs_ctx.reset_error();
1701 return Err(LibISLError::new(err, err_msg));
1702 }
1703 Ok(isl_rs_result)
1704 }
1705
1706 pub fn set_suffix(self, suffix: &str) -> Result<Printer, LibISLError> {
1708 let p = self;
1709 let isl_rs_ctx = p.get_ctx();
1710 let mut p = p;
1711 p.do_not_free_on_drop();
1712 let p = p.ptr;
1713 let suffix = CString::new(suffix).unwrap();
1714 let suffix = suffix.as_ptr();
1715 let isl_rs_result = unsafe { isl_printer_set_suffix(p, suffix) };
1716 let isl_rs_result = Printer { ptr: isl_rs_result,
1717 should_free_on_drop: true };
1718 let err = isl_rs_ctx.last_error();
1719 if err != Error::None_ {
1720 let err_msg = isl_rs_ctx.last_error_msg();
1721 isl_rs_ctx.reset_error();
1722 return Err(LibISLError::new(err, err_msg));
1723 }
1724 Ok(isl_rs_result)
1725 }
1726
1727 pub fn set_yaml_style(self, yaml_style: i32) -> Result<Printer, LibISLError> {
1729 let p = self;
1730 let isl_rs_ctx = p.get_ctx();
1731 let mut p = p;
1732 p.do_not_free_on_drop();
1733 let p = p.ptr;
1734 let isl_rs_result = unsafe { isl_printer_set_yaml_style(p, yaml_style) };
1735 let isl_rs_result = Printer { ptr: isl_rs_result,
1736 should_free_on_drop: true };
1737 let err = isl_rs_ctx.last_error();
1738 if err != Error::None_ {
1739 let err_msg = isl_rs_ctx.last_error_msg();
1740 isl_rs_ctx.reset_error();
1741 return Err(LibISLError::new(err, err_msg));
1742 }
1743 Ok(isl_rs_result)
1744 }
1745
1746 pub fn start_line(self) -> Result<Printer, LibISLError> {
1748 let p = self;
1749 let isl_rs_ctx = p.get_ctx();
1750 let mut p = p;
1751 p.do_not_free_on_drop();
1752 let p = p.ptr;
1753 let isl_rs_result = unsafe { isl_printer_start_line(p) };
1754 let isl_rs_result = Printer { ptr: isl_rs_result,
1755 should_free_on_drop: true };
1756 let err = isl_rs_ctx.last_error();
1757 if err != Error::None_ {
1758 let err_msg = isl_rs_ctx.last_error_msg();
1759 isl_rs_ctx.reset_error();
1760 return Err(LibISLError::new(err, err_msg));
1761 }
1762 Ok(isl_rs_result)
1763 }
1764
1765 pub fn to_str(ctx: &Context) -> Result<Printer, LibISLError> {
1767 let isl_rs_ctx = Context { ptr: ctx.ptr,
1768 should_free_on_drop: false };
1769 let ctx = ctx.ptr;
1770 let isl_rs_result = unsafe { isl_printer_to_str(ctx) };
1771 let isl_rs_result = Printer { ptr: isl_rs_result,
1772 should_free_on_drop: true };
1773 let err = isl_rs_ctx.last_error();
1774 if err != Error::None_ {
1775 let err_msg = isl_rs_ctx.last_error_msg();
1776 isl_rs_ctx.reset_error();
1777 return Err(LibISLError::new(err, err_msg));
1778 }
1779 Ok(isl_rs_result)
1780 }
1781
1782 pub fn yaml_end_mapping(self) -> Result<Printer, LibISLError> {
1784 let p = self;
1785 let isl_rs_ctx = p.get_ctx();
1786 let mut p = p;
1787 p.do_not_free_on_drop();
1788 let p = p.ptr;
1789 let isl_rs_result = unsafe { isl_printer_yaml_end_mapping(p) };
1790 let isl_rs_result = Printer { ptr: isl_rs_result,
1791 should_free_on_drop: true };
1792 let err = isl_rs_ctx.last_error();
1793 if err != Error::None_ {
1794 let err_msg = isl_rs_ctx.last_error_msg();
1795 isl_rs_ctx.reset_error();
1796 return Err(LibISLError::new(err, err_msg));
1797 }
1798 Ok(isl_rs_result)
1799 }
1800
1801 pub fn yaml_end_sequence(self) -> Result<Printer, LibISLError> {
1803 let p = self;
1804 let isl_rs_ctx = p.get_ctx();
1805 let mut p = p;
1806 p.do_not_free_on_drop();
1807 let p = p.ptr;
1808 let isl_rs_result = unsafe { isl_printer_yaml_end_sequence(p) };
1809 let isl_rs_result = Printer { ptr: isl_rs_result,
1810 should_free_on_drop: true };
1811 let err = isl_rs_ctx.last_error();
1812 if err != Error::None_ {
1813 let err_msg = isl_rs_ctx.last_error_msg();
1814 isl_rs_ctx.reset_error();
1815 return Err(LibISLError::new(err, err_msg));
1816 }
1817 Ok(isl_rs_result)
1818 }
1819
1820 pub fn yaml_next(self) -> Result<Printer, LibISLError> {
1822 let p = self;
1823 let isl_rs_ctx = p.get_ctx();
1824 let mut p = p;
1825 p.do_not_free_on_drop();
1826 let p = p.ptr;
1827 let isl_rs_result = unsafe { isl_printer_yaml_next(p) };
1828 let isl_rs_result = Printer { ptr: isl_rs_result,
1829 should_free_on_drop: true };
1830 let err = isl_rs_ctx.last_error();
1831 if err != Error::None_ {
1832 let err_msg = isl_rs_ctx.last_error_msg();
1833 isl_rs_ctx.reset_error();
1834 return Err(LibISLError::new(err, err_msg));
1835 }
1836 Ok(isl_rs_result)
1837 }
1838
1839 pub fn yaml_start_mapping(self) -> Result<Printer, LibISLError> {
1841 let p = self;
1842 let isl_rs_ctx = p.get_ctx();
1843 let mut p = p;
1844 p.do_not_free_on_drop();
1845 let p = p.ptr;
1846 let isl_rs_result = unsafe { isl_printer_yaml_start_mapping(p) };
1847 let isl_rs_result = Printer { ptr: isl_rs_result,
1848 should_free_on_drop: true };
1849 let err = isl_rs_ctx.last_error();
1850 if err != Error::None_ {
1851 let err_msg = isl_rs_ctx.last_error_msg();
1852 isl_rs_ctx.reset_error();
1853 return Err(LibISLError::new(err, err_msg));
1854 }
1855 Ok(isl_rs_result)
1856 }
1857
1858 pub fn yaml_start_sequence(self) -> Result<Printer, LibISLError> {
1860 let p = self;
1861 let isl_rs_ctx = p.get_ctx();
1862 let mut p = p;
1863 p.do_not_free_on_drop();
1864 let p = p.ptr;
1865 let isl_rs_result = unsafe { isl_printer_yaml_start_sequence(p) };
1866 let isl_rs_result = Printer { ptr: isl_rs_result,
1867 should_free_on_drop: true };
1868 let err = isl_rs_ctx.last_error();
1869 if err != Error::None_ {
1870 let err_msg = isl_rs_ctx.last_error_msg();
1871 isl_rs_ctx.reset_error();
1872 return Err(LibISLError::new(err, err_msg));
1873 }
1874 Ok(isl_rs_result)
1875 }
1876
1877 pub fn do_not_free_on_drop(&mut self) {
1880 self.should_free_on_drop = false;
1881 }
1882}
1883
1884impl Drop for Printer {
1885 fn drop(&mut self) {
1886 if self.should_free_on_drop {
1887 unsafe {
1888 isl_printer_free(self.ptr);
1889 }
1890 }
1891 }
1892}