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