+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);
+}
+