From 23ad253c184472308d07aa5cca82a5b69d9f8f49 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Tue, 3 Dec 2013 16:23:28 +0100 Subject: [PATCH] add isl_pw_*_find_dim_by_name Signed-off-by: Sven Verdoolaege --- doc/user.pod | 13 +++++++++++++ include/isl/aff.h | 6 ++++++ include/isl/polynomial.h | 7 +++++++ isl_pw_templ.c | 12 ++++++++++++ 4 files changed, 38 insertions(+) diff --git a/doc/user.pod b/doc/user.pod index e4d25eb0..18e72a52 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -1277,9 +1277,22 @@ its position can be obtained from the following functions. int isl_multi_aff_find_dim_by_name( __isl_keep isl_multi_aff *ma, enum isl_dim_type type, const char *name); + int isl_pw_aff_find_dim_by_name(__isl_keep isl_pw_aff *pa, + enum isl_dim_type type, const char *name); int isl_multi_pw_aff_find_dim_by_name( __isl_keep isl_multi_pw_aff *mpa, enum isl_dim_type type, const char *name); + int isl_pw_multi_aff_find_dim_by_name( + __isl_keep isl_pw_multi_aff *pma, + enum isl_dim_type type, const char *name); + + #include + int isl_pw_qpolynomial_find_dim_by_name( + __isl_keep isl_pw_qpolynomial *pwqp, + enum isl_dim_type type, const char *name); + int isl_pw_qpolynomial_fold_find_dim_by_name( + __isl_keep isl_pw_qpolynomial_fold *pwf, + enum isl_dim_type type, const char *name); The identifiers or names of entire spaces may be set or read off using the following functions. diff --git a/include/isl/aff.h b/include/isl/aff.h index eb8e8611..94f36425 100644 --- a/include/isl/aff.h +++ b/include/isl/aff.h @@ -163,6 +163,9 @@ __isl_give isl_id *isl_pw_aff_get_dim_id(__isl_keep isl_pw_aff *pa, __isl_give isl_pw_aff *isl_pw_aff_set_dim_id(__isl_take isl_pw_aff *pma, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); +int isl_pw_aff_find_dim_by_name(__isl_keep isl_pw_aff *pa, + enum isl_dim_type type, const char *name); + int isl_pw_aff_is_empty(__isl_keep isl_pw_aff *pwaff); int isl_pw_aff_involves_nan(__isl_keep isl_pw_aff *pa); int isl_pw_aff_plain_cmp(__isl_keep isl_pw_aff *pa1, @@ -403,6 +406,9 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_tuple_id( __isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_tuple_id( __isl_take isl_pw_multi_aff *pma, enum isl_dim_type type); +int isl_pw_multi_aff_find_dim_by_name(__isl_keep isl_pw_multi_aff *pma, + enum isl_dim_type type, const char *name); + __isl_give isl_pw_multi_aff *isl_pw_multi_aff_drop_dims( __isl_take isl_pw_multi_aff *pma, enum isl_dim_type type, unsigned first, unsigned n); diff --git a/include/isl/polynomial.h b/include/isl/polynomial.h index 6eb4364d..f9b2ff0d 100644 --- a/include/isl/polynomial.h +++ b/include/isl/polynomial.h @@ -167,6 +167,9 @@ __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_set_dim_name( __isl_take isl_pw_qpolynomial *pwqp, enum isl_dim_type type, unsigned pos, const char *s); +int isl_pw_qpolynomial_find_dim_by_name(__isl_keep isl_pw_qpolynomial *pwqp, + enum isl_dim_type type, const char *name); + __isl_give isl_set *isl_pw_qpolynomial_domain(__isl_take isl_pw_qpolynomial *pwqp); __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_intersect_domain( __isl_take isl_pw_qpolynomial *pwpq, __isl_take isl_set *set); @@ -354,6 +357,10 @@ __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_set_dim_name( __isl_take isl_pw_qpolynomial_fold *pwf, enum isl_dim_type type, unsigned pos, const char *s); +int isl_pw_qpolynomial_fold_find_dim_by_name( + __isl_keep isl_pw_qpolynomial_fold *pwf, + enum isl_dim_type type, const char *name); + __isl_give isl_set *isl_pw_qpolynomial_fold_domain( __isl_take isl_pw_qpolynomial_fold *pwf); __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_intersect_domain( diff --git a/isl_pw_templ.c b/isl_pw_templ.c index 996d3af7..594f6b73 100644 --- a/isl_pw_templ.c +++ b/isl_pw_templ.c @@ -1393,6 +1393,18 @@ __isl_give isl_space *FN(PW,get_domain_space)(__isl_keep PW *pw) return pw ? isl_space_domain(isl_space_copy(pw->dim)) : NULL; } +/* Return the position of the dimension of the given type and name + * in "pw". + * Return -1 if no such dimension can be found. + */ +int FN(PW,find_dim_by_name)(__isl_keep PW *pw, + enum isl_dim_type type, const char *name) +{ + if (!pw) + return -1; + return isl_space_find_dim_by_name(pw->dim, type, name); +} + #ifndef NO_RESET_DIM /* Reset the space of "pw". Since we don't know if the elements * represent the spaces themselves or their domains, we pass along -- 2.11.4.GIT