diff options
author | Sven Verdoolaege <skimo@kotnet.org> | 2010-03-01 11:20:08 +0100 |
---|---|---|
committer | Sven Verdoolaege <skimo@kotnet.org> | 2010-03-04 17:08:39 +0100 |
commit | d99a30cdb34b6de97a4aaa620a081273ccacd2a5 (patch) | |
tree | a0c686726e818938ee42bc7a4b0d2aa3abe9be8c /isl_sample.c | |
parent | 4f428ff2eec852ab265fd596869c6901cd3143cb (diff) | |
download | isl-d99a30cdb34b6de97a4aaa620a081273ccacd2a5.tar.gz isl-d99a30cdb34b6de97a4aaa620a081273ccacd2a5.tar.bz2 isl-d99a30cdb34b6de97a4aaa620a081273ccacd2a5.zip |
add isl_set_sample_point
Diffstat (limited to 'isl_sample.c')
-rw-r--r-- | isl_sample.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/isl_sample.c b/isl_sample.c index ed627531..f7c1c879 100644 --- a/isl_sample.c +++ b/isl_sample.c @@ -16,6 +16,7 @@ #include "isl_equalities.h" #include "isl_tab.h" #include "isl_basis_reduction.h" +#include <isl_point_private.h> static struct isl_vec *empty_sample(struct isl_basic_set *bset) { @@ -1246,3 +1247,41 @@ __isl_give isl_basic_set *isl_set_sample(__isl_take isl_set *set) { return (isl_basic_set *) isl_map_sample((isl_map *)set); } + +__isl_give isl_point *isl_basic_set_sample_point(__isl_take isl_basic_set *bset) +{ + isl_vec *vec; + isl_dim *dim; + + dim = isl_basic_set_get_dim(bset); + bset = isl_basic_set_underlying_set(bset); + vec = isl_basic_set_sample_vec(bset); + + return isl_point_alloc(dim, vec); +} + +__isl_give isl_point *isl_set_sample_point(__isl_take isl_set *set) +{ + int i; + isl_point *pnt; + + if (!set) + return NULL; + + for (i = 0; i < set->n; ++i) { + pnt = isl_basic_set_sample_point(isl_basic_set_copy(set->p[i])); + if (!pnt) + goto error; + if (!isl_point_is_void(pnt)) + break; + isl_point_free(pnt); + } + if (i == set->n) + pnt = isl_point_void(isl_set_get_dim(set)); + + isl_set_free(set); + return pnt; +error: + isl_set_free(set); + return NULL; +} |