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 return Err(LibISLError::new(err, isl_rs_ctx.last_error_msg()));
213 }
214 Ok(isl_rs_result)
215 }
216
217 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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}