From 1b27a3d89bed5564a911a9c12802e0e18835c032 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Thu, 29 Jul 2010 16:18:28 +0200 Subject: [PATCH] privately export isl_set_reset_dim and isl_map_reset_dim Signed-off-by: Sven Verdoolaege --- isl_map.c | 83 ++++++++++++++++++++++++++++++++++++------------------- isl_map_private.h | 5 ++++ 2 files changed, 60 insertions(+), 28 deletions(-) diff --git a/isl_map.c b/isl_map.c index d49252a9..bd3eeab8 100644 --- a/isl_map.c +++ b/isl_map.c @@ -3385,6 +3385,61 @@ struct isl_set *isl_set_to_underlying_set(struct isl_set *set) return (struct isl_set *)isl_map_underlying_set((struct isl_map *)set); } +static __isl_give isl_basic_map *isl_basic_map_reset_dim( + __isl_take isl_basic_map *bmap, __isl_take isl_dim *dim) +{ + bmap = isl_basic_map_cow(bmap); + if (!bmap || !dim) + goto error; + + isl_dim_free(bmap->dim); + bmap->dim = dim; + + return bmap; +error: + isl_basic_map_free(bmap); + isl_dim_free(dim); + return NULL; +} + +static __isl_give isl_basic_set *isl_basic_set_reset_dim( + __isl_take isl_basic_set *bset, __isl_take isl_dim *dim) +{ + return (isl_basic_set *)isl_basic_map_reset_dim((isl_basic_map *)bset, + dim); +} + +__isl_give isl_map *isl_map_reset_dim(__isl_take isl_map *map, + __isl_take isl_dim *dim) +{ + int i; + + map = isl_map_cow(map); + if (!map || !dim) + goto error; + + for (i = 0; i < map->n; ++i) { + map->p[i] = isl_basic_map_reset_dim(map->p[i], + isl_dim_copy(dim)); + if (!map->p[i]) + goto error; + } + isl_dim_free(map->dim); + map->dim = dim; + + return map; +error: + isl_map_free(map); + isl_dim_free(dim); + return NULL; +} + +__isl_give isl_set *isl_set_reset_dim(__isl_take isl_set *set, + __isl_take isl_dim *dim) +{ + return (struct isl_set *) isl_map_reset_dim((struct isl_map *)set, dim); +} + struct isl_basic_set *isl_basic_map_domain(struct isl_basic_map *bmap) { struct isl_basic_set *domain; @@ -4348,34 +4403,6 @@ __isl_give isl_set *isl_set_lexmax(__isl_take isl_set *set) return (isl_set *)isl_map_lexmax((isl_map *)set); } -static struct isl_map *isl_map_reset_dim(struct isl_map *map, - struct isl_dim *dim) -{ - int i; - - if (!map || !dim) - goto error; - - for (i = 0; i < map->n; ++i) { - isl_dim_free(map->p[i]->dim); - map->p[i]->dim = isl_dim_copy(dim); - } - isl_dim_free(map->dim); - map->dim = dim; - - return map; -error: - isl_map_free(map); - isl_dim_free(dim); - return NULL; -} - -static struct isl_set *isl_set_reset_dim(struct isl_set *set, - struct isl_dim *dim) -{ - return (struct isl_set *) isl_map_reset_dim((struct isl_map *)set, dim); -} - /* Apply a preimage specified by "mat" on the parameters of "bset". * bset is assumed to have only parameters and divs. */ diff --git a/isl_map_private.h b/isl_map_private.h index b6a2d52d..5905e39e 100644 --- a/isl_map_private.h +++ b/isl_map_private.h @@ -11,6 +11,11 @@ #include "isl_map.h" #include "isl_vec.h" +__isl_give isl_map *isl_map_reset_dim(__isl_take isl_map *map, + __isl_take isl_dim *dim); +__isl_give isl_set *isl_set_reset_dim(__isl_take isl_set *set, + __isl_take isl_dim *dim); + unsigned isl_basic_map_offset(struct isl_basic_map *bmap, enum isl_dim_type type); -- 2.11.4.GIT