add isl_basic_set_params and isl_set_params
authorSven Verdoolaege <skimo@kotnet.org>
Sat, 27 Aug 2011 09:05:30 +0000 (11:05 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Sat, 3 Sep 2011 10:04:55 +0000 (12:04 +0200)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/set.h
isl_map.c

index 8f2fd63..5ffbf66 100644 (file)
@@ -1615,10 +1615,13 @@ i.e., whether both domain and range are nested relations.
                enum isl_dim_type type, unsigned first, unsigned n);
        __isl_give isl_map *isl_map_project_out(__isl_take isl_map *map,
                enum isl_dim_type type, unsigned first, unsigned n);
+       __isl_give isl_basic_set *isl_basic_set_params(
+               __isl_take isl_basic_set *bset);
        __isl_give isl_basic_set *isl_basic_map_domain(
                __isl_take isl_basic_map *bmap);
        __isl_give isl_basic_set *isl_basic_map_range(
                __isl_take isl_basic_map *bmap);
+       __isl_give isl_set *isl_set_params(__isl_take isl_set *set);
        __isl_give isl_set *isl_map_domain(
                __isl_take isl_map *bmap);
        __isl_give isl_set *isl_map_range(
index 5b0427f..abfad86 100644 (file)
@@ -190,6 +190,9 @@ int isl_basic_set_compare_at(struct isl_basic_set *bset1,
 int isl_set_follows_at(__isl_keep isl_set *set1,
        __isl_keep isl_set *set2, int pos);
 
+__isl_give isl_basic_set *isl_basic_set_params(__isl_take isl_basic_set *bset);
+__isl_give isl_set *isl_set_params(__isl_take isl_set *set);
+
 int isl_basic_set_dims_get_sign(__isl_keep isl_basic_set *bset,
        enum isl_dim_type type, unsigned pos, unsigned n, int *signs);
 
index bd7cbae..3112e96 100644 (file)
--- a/isl_map.c
+++ b/isl_map.c
@@ -4057,6 +4057,36 @@ __isl_give isl_set *isl_set_reset_space(__isl_take isl_set *set,
        return (struct isl_set *) isl_map_reset_space((struct isl_map *)set, dim);
 }
 
+/* Compute the parameter domain of the given basic set.
+ */
+__isl_give isl_basic_set *isl_basic_set_params(__isl_take isl_basic_set *bset)
+{
+       isl_space *space;
+       unsigned n;
+
+       n = isl_basic_set_dim(bset, isl_dim_set);
+       bset = isl_basic_set_project_out(bset, isl_dim_set, 0, n);
+       space = isl_basic_set_get_space(bset);
+       space = isl_space_params(space);
+       bset = isl_basic_set_reset_space(bset, space);
+       return bset;
+}
+
+/* Compute the parameter domain of the given set.
+ */
+__isl_give isl_set *isl_set_params(__isl_take isl_set *set)
+{
+       isl_space *space;
+       unsigned n;
+
+       n = isl_set_dim(set, isl_dim_set);
+       set = isl_set_project_out(set, isl_dim_set, 0, n);
+       space = isl_set_get_space(set);
+       space = isl_space_params(space);
+       set = isl_set_reset_space(set, space);
+       return set;
+}
+
 struct isl_basic_set *isl_basic_map_domain(struct isl_basic_map *bmap)
 {
        isl_space *dim;