#include <isl_local_space_private.h>
#include <isl_aff_private.h>
#include <isl_ast_build_expr.h>
+#include <isl_sort.h>
static const char *s_to[2] = { " -> ", " \\to " };
static const char *s_and[2] = { " and ", " \\wedge " };
return p;
}
-static __isl_give isl_printer *isl_basic_map_print_omega(
- __isl_keep isl_basic_map *bmap, __isl_take isl_printer *p)
-{
- p = print_omega_parameters(bmap->dim, p);
-
- p = isl_printer_start_line(p);
- p = basic_map_print_omega(bmap, p);
- p = isl_printer_end_line(p);
- return p;
-}
-
static __isl_give isl_printer *basic_set_print_omega(
__isl_keep isl_basic_set *bset, __isl_take isl_printer *p)
{
return p;
}
-static __isl_give isl_printer *isl_basic_set_print_omega(
- __isl_keep isl_basic_set *bset, __isl_take isl_printer *p)
-{
- p = print_omega_parameters(bset->dim, p);
-
- p = isl_printer_start_line(p);
- p = basic_set_print_omega(bset, p);
- p = isl_printer_end_line(p);
- return p;
-}
-
static __isl_give isl_printer *isl_map_print_omega(__isl_keep isl_map *map,
__isl_take isl_printer *p)
{
int i;
- p = print_omega_parameters(map->dim, p);
-
- p = isl_printer_start_line(p);
for (i = 0; i < map->n; ++i) {
if (i)
p = isl_printer_print_str(p, " union ");
p = basic_map_print_omega(map->p[i], p);
}
- p = isl_printer_end_line(p);
return p;
}
{
int i;
- p = print_omega_parameters(set->dim, p);
-
- p = isl_printer_start_line(p);
for (i = 0; i < set->n; ++i) {
if (i)
p = isl_printer_print_str(p, " union ");
p = basic_set_print_omega(set->p[i], p);
}
- p = isl_printer_end_line(p);
return p;
}
return NULL;
}
-static int aff_split_cmp(const void *p1, const void *p2)
+static int aff_split_cmp(const void *p1, const void *p2, void *user)
{
const struct isl_aff_split *s1, *s2;
s1 = (const struct isl_aff_split *) p1;
goto error;
}
- qsort(split, map->n, sizeof(struct isl_aff_split), &aff_split_cmp);
+ if (isl_sort(split, map->n, sizeof(struct isl_aff_split),
+ &aff_split_cmp, NULL) < 0)
+ goto error;
n = map->n;
for (i = n - 1; i >= 1; --i) {
if (p->output_format == ISL_FORMAT_ISL)
return isl_basic_map_print_isl(bmap, p, 0);
else if (p->output_format == ISL_FORMAT_OMEGA)
- return isl_basic_map_print_omega(bmap, p);
+ return basic_map_print_omega(bmap, p);
isl_assert(bmap->ctx, 0, goto error);
error:
isl_printer_free(p);
else if (p->output_format == ISL_FORMAT_POLYLIB_CONSTRAINTS)
return bset_print_constraints_polylib(bset, p);
else if (p->output_format == ISL_FORMAT_OMEGA)
- return isl_basic_set_print_omega(bset, p);
+ return basic_set_print_omega(bset, p);
isl_assert(p->ctx, 0, goto error);
error:
isl_printer_free(p);
}
if (qp)
p = upoly_print(qp->upoly, dim, qp->div, p, 0);
+ else
+ p = isl_printer_free(p);
if (!isl_int_is_one(den)) {
p = isl_printer_print_str(p, ")/");
p = isl_printer_print_isl_int(p, den);
{
int i;
+ if (!set)
+ return isl_printer_free(p);
+
if (set->n == 0)
p = isl_printer_print_str(p, "0");