1/* 2 * Copyright 2011 Sven Verdoolaege 3 * 4 * Use of this software is governed by the MIT license 5 * 6 * Written by Sven Verdoolaege. 7 */ 8 9#undef EL 10#define EL CAT(isl_,BASE) 11#undef PW 12#define PW CAT(isl_pw_,BASE) 13 14/* Print the body of a piecewise expression, i.e., a semicolon delimited 15 * sequence of expressions, each followed by constraints. 16 */ 17static __isl_give isl_printer *FN(print_body_pw,BASE)( 18 __isl_take isl_printer *p, __isl_keep PW *pw) 19{ 20 int i; 21 22 if (!pw) 23 return isl_printer_free(p); 24 25 for (i = 0; i < pw->n; ++i) { 26 EL *el; 27 isl_space *space; 28 29 if (i) 30 p = isl_printer_print_str(p, "; "); 31 el = FN(PW,peek_base_at)(pw, i); 32 p = FN(print_body,BASE)(p, el); 33 space = FN(EL,get_domain_space)(el); 34 p = print_disjuncts(set_to_map(pw->p[i].set), space, p, 0); 35 isl_space_free(space); 36 } 37 return p; 38} 39 40/* Print a piecewise expression in isl format. 41 */ 42static __isl_give isl_printer *FN(FN(print_pw,BASE),isl)( 43 __isl_take isl_printer *p, __isl_keep PW *pw) 44{ 45 struct isl_print_space_data data = { 0 }; 46 47 if (!pw) 48 return isl_printer_free(p); 49 50 p = print_param_tuple(p, pw->dim, &data); 51 p = isl_printer_print_str(p, "{ "); 52 p = FN(print_body_pw,BASE)(p, pw); 53 p = isl_printer_print_str(p, " }"); 54 return p; 55} 56