From e41ef1ac5e734eb57a3dcfa9e651bd53def312cc Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Wed, 21 Jul 2010 09:55:23 +0200 Subject: [PATCH] mark some data structures and functions for export to language bindings We prefer to only include function in interfaces to other languages that have been explicitly marked for export. In particular, we do not want to add functions that are obsolescent and are only kept for backward compatibility, or functions that only make sense for a C interface, or functions that are only meant for other libraries such as barvinok that are tightly coupled to isl. Signed-off-by: Sven Verdoolaege --- include/isl/ctx.h | 15 +++++++++++ include/isl/map.h | 62 ++++++++++++++++++++++++++++++++++++++++--- include/isl/map_type.h | 6 +++++ include/isl/polynomial.h | 2 ++ include/isl/polynomial_type.h | 2 ++ include/isl/set.h | 31 ++++++++++++++++++++++ include/isl/union_map.h | 29 ++++++++++++++++++++ include/isl/union_set.h | 17 ++++++++++++ 8 files changed, 161 insertions(+), 3 deletions(-) diff --git a/include/isl/ctx.h b/include/isl/ctx.h index 33d1f572..d507066d 100644 --- a/include/isl/ctx.h +++ b/include/isl/ctx.h @@ -19,9 +19,24 @@ #include #include +#ifndef __isl_give #define __isl_give +#endif +#ifndef __isl_take #define __isl_take +#endif +#ifndef __isl_keep #define __isl_keep +#endif +#ifndef __isl_export +#define __isl_export +#endif +#ifndef __isl_constructor +#define __isl_constructor +#endif +#ifndef __isl_subclass +#define __isl_subclass(super) +#endif #ifdef GCC_WARN_UNUSED_RESULT #define WARN_UNUSED GCC_WARN_UNUSED_RESULT diff --git a/include/isl/map.h b/include/isl/map.h index 97eca2fe..b73ff860 100644 --- a/include/isl/map.h +++ b/include/isl/map.h @@ -138,26 +138,34 @@ __isl_give isl_basic_map *isl_basic_map_remove_redundancies( __isl_give isl_map *isl_map_remove_redundancies(__isl_take isl_map *map); __isl_give isl_basic_map *isl_map_simple_hull(__isl_take isl_map *map); +__isl_export __isl_give isl_basic_map *isl_basic_map_intersect_domain( __isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset); +__isl_export __isl_give isl_basic_map *isl_basic_map_intersect_range( __isl_take isl_basic_map *bmap, __isl_take isl_basic_set *bset); +__isl_export __isl_give isl_basic_map *isl_basic_map_intersect( __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2); +__isl_export __isl_give isl_map *isl_basic_map_union( __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2); +__isl_export __isl_give isl_basic_map *isl_basic_map_apply_domain( __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2); +__isl_export __isl_give isl_basic_map *isl_basic_map_apply_range( __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2); +__isl_export __isl_give isl_basic_map *isl_basic_map_affine_hull( __isl_take isl_basic_map *bmap); +__isl_export __isl_give isl_basic_map *isl_basic_map_reverse(__isl_take isl_basic_map *bmap); __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); @@ -174,15 +182,19 @@ __isl_give isl_basic_map *isl_basic_map_eliminate( __isl_give isl_basic_map *isl_basic_map_from_basic_set( __isl_take isl_basic_set *bset, __isl_take isl_space *dim); struct isl_basic_set *isl_basic_set_from_basic_map(struct isl_basic_map *bmap); +__isl_export __isl_give isl_basic_map *isl_basic_map_sample(__isl_take isl_basic_map *bmap); struct isl_basic_map *isl_basic_map_simplify(struct isl_basic_map *bmap); -struct isl_basic_map *isl_basic_map_detect_equalities( - struct isl_basic_map *bmap); +__isl_export +__isl_give isl_basic_map *isl_basic_map_detect_equalities( + __isl_take isl_basic_map *bmap); __isl_give isl_basic_map *isl_basic_map_read_from_file(isl_ctx *ctx, FILE *input); +__isl_constructor __isl_give isl_basic_map *isl_basic_map_read_from_str(isl_ctx *ctx, const char *str); __isl_give isl_map *isl_map_read_from_file(isl_ctx *ctx, FILE *input); +__isl_constructor __isl_give isl_map *isl_map_read_from_str(isl_ctx *ctx, const char *str); void isl_basic_map_dump(__isl_keep isl_basic_map *bmap); void isl_basic_map_print(__isl_keep isl_basic_map *bmap, FILE *out, int indent, @@ -210,6 +222,7 @@ struct isl_map *isl_map_sum(struct isl_map *map1, struct isl_map *map2); struct isl_map *isl_map_neg(struct isl_map *map); struct isl_map *isl_map_floordiv(struct isl_map *map, isl_int d); +__isl_export int isl_basic_map_is_equal( __isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2); @@ -226,9 +239,13 @@ __isl_give isl_map *isl_map_partial_lexmax( __isl_give isl_map *isl_map_partial_lexmin( __isl_take isl_map *map, __isl_take isl_set *dom, __isl_give isl_set **empty); +__isl_export __isl_give isl_map *isl_basic_map_lexmin(__isl_take isl_basic_map *bmap); +__isl_export __isl_give isl_map *isl_basic_map_lexmax(__isl_take isl_basic_map *bmap); +__isl_export __isl_give isl_map *isl_map_lexmin(__isl_take isl_map *map); +__isl_export __isl_give isl_map *isl_map_lexmax(__isl_take isl_map *map); int isl_basic_map_foreach_lexmin(__isl_keep isl_basic_map *bmap, int (*fn)(__isl_take isl_basic_set *dom, __isl_take isl_aff_list *list, @@ -261,6 +278,7 @@ int isl_basic_map_image_is_bounded(__isl_keep isl_basic_map *bmap); int isl_basic_map_is_universe(__isl_keep isl_basic_map *bmap); int isl_basic_map_plain_is_empty(__isl_keep isl_basic_map *bmap); int isl_basic_map_fast_is_empty(__isl_keep isl_basic_map *bmap); +__isl_export int isl_basic_map_is_empty(__isl_keep isl_basic_map *bmap); int isl_basic_map_is_subset(__isl_keep isl_basic_map *bmap1, __isl_keep isl_basic_map *bmap2); @@ -294,21 +312,27 @@ void isl_map_free(__isl_take isl_map *map); __isl_give isl_map *isl_map_copy(__isl_keep isl_map *map); struct isl_map *isl_map_extend(struct isl_map *base, unsigned nparam, unsigned n_in, unsigned n_out); +__isl_export __isl_give isl_map *isl_map_reverse(__isl_take isl_map *map); +__isl_export __isl_give isl_map *isl_map_union( __isl_take isl_map *map1, __isl_take isl_map *map2); struct isl_map *isl_map_union_disjoint( struct isl_map *map1, struct isl_map *map2); +__isl_export __isl_give isl_map *isl_map_intersect_domain( __isl_take isl_map *map, __isl_take isl_set *set); +__isl_export __isl_give isl_map *isl_map_intersect_range( __isl_take isl_map *map, __isl_take isl_set *set); +__isl_export __isl_give isl_map *isl_map_apply_domain( __isl_take isl_map *map1, __isl_take isl_map *map2); +__isl_export __isl_give isl_map *isl_map_apply_range( __isl_take isl_map *map1, __isl_take isl_map *map2); @@ -332,10 +356,13 @@ __isl_give isl_map *isl_map_flat_domain_product(__isl_take isl_map *map1, __isl_take isl_map *map2); __isl_give isl_map *isl_map_flat_range_product(__isl_take isl_map *map1, __isl_take isl_map *map2); +__isl_export __isl_give isl_map *isl_map_intersect(__isl_take isl_map *map1, __isl_take isl_map *map2); +__isl_export __isl_give isl_map *isl_map_intersect_params(__isl_take isl_map *map, __isl_take isl_set *params); +__isl_export __isl_give isl_map *isl_map_subtract( __isl_take isl_map *map1, __isl_take isl_map *map2); @@ -345,14 +372,19 @@ __isl_give isl_map *isl_map_fix_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value); __isl_give isl_map *isl_map_lower_bound_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value); +__isl_export __isl_give isl_basic_set *isl_basic_map_deltas(__isl_take isl_basic_map *bmap); +__isl_export __isl_give isl_set *isl_map_deltas(__isl_take isl_map *map); __isl_give isl_basic_map *isl_basic_map_deltas_map( __isl_take isl_basic_map *bmap); __isl_give isl_map *isl_map_deltas_map(__isl_take isl_map *map); -struct isl_map *isl_map_detect_equalities(struct isl_map *map); +__isl_export +__isl_give isl_map *isl_map_detect_equalities(__isl_take isl_map *map); +__isl_export __isl_give isl_basic_map *isl_map_affine_hull(__isl_take isl_map *map); __isl_give isl_basic_map *isl_map_convex_hull(__isl_take isl_map *map); +__isl_export __isl_give isl_basic_map *isl_map_polyhedral_hull(__isl_take isl_map *map); __isl_give isl_basic_map *isl_basic_map_add(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned n); @@ -385,23 +417,34 @@ __isl_give isl_map *isl_map_equate(__isl_take isl_map *map, __isl_give isl_map *isl_map_oppose(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); +__isl_export __isl_give isl_map *isl_set_identity(__isl_take isl_set *set); +__isl_export int isl_basic_set_is_wrapping(__isl_keep isl_basic_set *bset); +__isl_export int isl_set_is_wrapping(__isl_keep isl_set *set); __isl_give isl_basic_set *isl_basic_map_wrap(__isl_take isl_basic_map *bmap); __isl_give isl_set *isl_map_wrap(__isl_take isl_map *map); __isl_give isl_basic_map *isl_basic_set_unwrap(__isl_take isl_basic_set *bset); __isl_give isl_map *isl_set_unwrap(__isl_take isl_set *set); +__isl_export __isl_give isl_basic_map *isl_basic_map_flatten(__isl_take isl_basic_map *bmap); +__isl_export __isl_give isl_map *isl_map_flatten(__isl_take isl_map *map); +__isl_export __isl_give isl_basic_map *isl_basic_map_flatten_domain( __isl_take isl_basic_map *bmap); +__isl_export __isl_give isl_basic_map *isl_basic_map_flatten_range( __isl_take isl_basic_map *bmap); +__isl_export __isl_give isl_map *isl_map_flatten_domain(__isl_take isl_map *map); +__isl_export __isl_give isl_map *isl_map_flatten_range(__isl_take isl_map *map); +__isl_export __isl_give isl_basic_set *isl_basic_set_flatten(__isl_take isl_basic_set *bset); +__isl_export __isl_give isl_set *isl_set_flatten(__isl_take isl_set *set); __isl_give isl_map *isl_set_flatten_map(__isl_take isl_set *set); __isl_give isl_set *isl_map_params(__isl_take isl_map *map); @@ -409,6 +452,7 @@ __isl_give isl_set *isl_map_domain(__isl_take isl_map *bmap); __isl_give isl_set *isl_map_range(__isl_take isl_map *map); __isl_give isl_map *isl_map_domain_map(__isl_take isl_map *map); __isl_give isl_map *isl_map_range_map(__isl_take isl_map *map); +__isl_constructor __isl_give isl_map *isl_map_from_basic_map(__isl_take isl_basic_map *bmap); __isl_give isl_map *isl_map_from_domain(__isl_take isl_set *set); __isl_give isl_basic_map *isl_basic_map_from_domain( @@ -423,18 +467,26 @@ __isl_give isl_map *isl_map_from_domain_and_range(__isl_take isl_set *domain, __isl_give isl_map *isl_map_from_set(__isl_take isl_set *set, __isl_take isl_space *dim); struct isl_set *isl_set_from_map(struct isl_map *map); +__isl_export __isl_give isl_basic_map *isl_map_sample(__isl_take isl_map *map); int isl_map_plain_is_empty(__isl_keep isl_map *map); int isl_map_fast_is_empty(__isl_keep isl_map *map); int isl_map_plain_is_universe(__isl_keep isl_map *map); +__isl_export int isl_map_is_empty(__isl_keep isl_map *map); +__isl_export int isl_map_is_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2); +__isl_export int isl_map_is_strict_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2); +__isl_export int isl_map_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2); +__isl_export int isl_map_is_single_valued(__isl_keep isl_map *map); int isl_map_plain_is_injective(__isl_keep isl_map *map); +__isl_export int isl_map_is_injective(__isl_keep isl_map *map); +__isl_export int isl_map_is_bijective(__isl_keep isl_map *map); int isl_map_is_translation(__isl_keep isl_map *map); int isl_map_has_equal_space(__isl_keep isl_map *map1, __isl_keep isl_map *map2); @@ -463,8 +515,10 @@ int isl_map_plain_is_fixed(__isl_keep isl_map *map, int isl_map_fast_is_fixed(__isl_keep isl_map *map, enum isl_dim_type type, unsigned pos, isl_int *val); +__isl_export __isl_give isl_basic_map *isl_basic_map_gist(__isl_take isl_basic_map *bmap, __isl_take isl_basic_map *context); +__isl_export __isl_give isl_map *isl_map_gist(__isl_take isl_map *map, __isl_take isl_map *context); __isl_give isl_map *isl_map_gist_params(__isl_take isl_map *map, @@ -472,6 +526,7 @@ __isl_give isl_map *isl_map_gist_params(__isl_take isl_map *map, __isl_give isl_map *isl_map_gist_basic_map(__isl_take isl_map *map, __isl_take isl_basic_map *context); +__isl_export __isl_give isl_map *isl_map_coalesce(__isl_take isl_map *map); int isl_map_plain_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2); @@ -479,6 +534,7 @@ int isl_map_fast_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2); uint32_t isl_map_get_hash(__isl_keep isl_map *map); +__isl_export int isl_map_foreach_basic_map(__isl_keep isl_map *map, int (*fn)(__isl_take isl_basic_map *bmap, void *user), void *user); diff --git a/include/isl/map_type.h b/include/isl/map_type.h index 1ba26e0d..a6002330 100644 --- a/include/isl/map_type.h +++ b/include/isl/map_type.h @@ -1,20 +1,26 @@ #ifndef ISL_MAP_TYPE_H #define ISL_MAP_TYPE_H +#include + #if defined(__cplusplus) extern "C" { #endif +__isl_subclass(isl_map) struct isl_basic_map; typedef struct isl_basic_map isl_basic_map; +__isl_subclass(isl_union_map) struct isl_map; typedef struct isl_map isl_map; #ifndef isl_basic_set +__isl_subclass(isl_set) struct isl_basic_set; typedef struct isl_basic_set isl_basic_set; #endif #ifndef isl_set +__isl_subclass(isl_union_set) struct isl_set; typedef struct isl_set isl_set; #endif diff --git a/include/isl/polynomial.h b/include/isl/polynomial.h index 228eb943..5fdecfb2 100644 --- a/include/isl/polynomial.h +++ b/include/isl/polynomial.h @@ -230,6 +230,7 @@ int isl_pw_qpolynomial_foreach_lifted_piece(__isl_keep isl_pw_qpolynomial *pwqp, __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_from_pw_aff( __isl_take isl_pw_aff *pwaff); +__isl_constructor __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_read_from_str(isl_ctx *ctx, const char *str); __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_read_from_file(isl_ctx *ctx, @@ -431,6 +432,7 @@ __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_copy( __isl_keep isl_union_pw_qpolynomial *upwqp); void isl_union_pw_qpolynomial_free(__isl_take isl_union_pw_qpolynomial *upwqp); +__isl_constructor __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_read_from_str( isl_ctx *ctx, const char *str); diff --git a/include/isl/polynomial_type.h b/include/isl/polynomial_type.h index 021374e6..bb022bf8 100644 --- a/include/isl/polynomial_type.h +++ b/include/isl/polynomial_type.h @@ -7,6 +7,7 @@ typedef struct isl_qpolynomial isl_qpolynomial; struct isl_term; typedef struct isl_term isl_term; +__isl_export struct isl_pw_qpolynomial; typedef struct isl_pw_qpolynomial isl_pw_qpolynomial; @@ -22,6 +23,7 @@ typedef struct isl_qpolynomial_fold isl_qpolynomial_fold; struct isl_pw_qpolynomial_fold; typedef struct isl_pw_qpolynomial_fold isl_pw_qpolynomial_fold; +__isl_export struct isl_union_pw_qpolynomial; typedef struct isl_union_pw_qpolynomial isl_union_pw_qpolynomial; diff --git a/include/isl/set.h b/include/isl/set.h index 9b3c9598..e938e4fa 100644 --- a/include/isl/set.h +++ b/include/isl/set.h @@ -102,18 +102,22 @@ __isl_give isl_basic_set *isl_basic_set_positive_orthant( __isl_take isl_space *space); void isl_basic_set_print_internal(__isl_keep isl_basic_set *bset, FILE *out, int indent); +__isl_export __isl_give isl_basic_set *isl_basic_set_intersect( __isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2); +__isl_export __isl_give isl_basic_set *isl_basic_set_apply( __isl_take isl_basic_set *bset, __isl_take isl_basic_map *bmap); +__isl_export __isl_give isl_basic_set *isl_basic_set_affine_hull( __isl_take isl_basic_set *bset); __isl_give isl_basic_set *isl_basic_set_remove_dims( __isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n); struct isl_basic_set *isl_basic_set_simplify(struct isl_basic_set *bset); +__isl_export __isl_give isl_basic_set *isl_basic_set_detect_equalities( __isl_take isl_basic_set *bset); __isl_give isl_basic_set *isl_basic_set_remove_redundancies( @@ -124,9 +128,11 @@ __isl_give isl_basic_set *isl_basic_set_list_product( __isl_give isl_basic_set *isl_basic_set_read_from_file(isl_ctx *ctx, FILE *input); +__isl_constructor __isl_give isl_basic_set *isl_basic_set_read_from_str(isl_ctx *ctx, const char *str); __isl_give isl_set *isl_set_read_from_file(isl_ctx *ctx, FILE *input); +__isl_constructor __isl_give isl_set *isl_set_read_from_str(isl_ctx *ctx, const char *str); void isl_basic_set_dump(__isl_keep isl_basic_set *bset); void isl_set_dump(__isl_keep isl_set *set); @@ -156,6 +162,7 @@ struct isl_set *isl_set_from_underlying_set( struct isl_set *set, struct isl_basic_set *like); struct isl_set *isl_set_to_underlying_set(struct isl_set *set); +__isl_export int isl_basic_set_is_equal( struct isl_basic_set *bset1, struct isl_basic_set *bset2); @@ -171,9 +178,13 @@ __isl_give isl_set *isl_set_partial_lexmin( __isl_give isl_set *isl_set_partial_lexmax( __isl_take isl_set *set, __isl_take isl_set *dom, __isl_give isl_set **empty); +__isl_export __isl_give isl_set *isl_basic_set_lexmin(__isl_take isl_basic_set *bset); +__isl_export __isl_give isl_set *isl_basic_set_lexmax(__isl_take isl_basic_set *bset); +__isl_export __isl_give isl_set *isl_set_lexmin(__isl_take isl_set *set); +__isl_export __isl_give isl_set *isl_set_lexmax(__isl_take isl_set *set); int isl_basic_set_foreach_lexmax(__isl_keep isl_basic_set *bset, int (*fn)(__isl_take isl_basic_set *dom, __isl_take isl_aff_list *list, @@ -186,6 +197,7 @@ __isl_give isl_pw_multi_aff *isl_basic_set_partial_lexmax_pw_multi_aff( __isl_take isl_basic_set *bset, __isl_take isl_basic_set *dom, __isl_give isl_set **empty); +__isl_export __isl_give isl_set *isl_basic_set_union( __isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2); @@ -205,6 +217,7 @@ int isl_basic_set_dims_get_sign(__isl_keep isl_basic_set *bset, int isl_basic_set_is_universe(__isl_keep isl_basic_set *bset); int isl_basic_set_plain_is_empty(__isl_keep isl_basic_set *bset); int isl_basic_set_fast_is_empty(__isl_keep isl_basic_set *bset); +__isl_export int isl_basic_set_is_empty(__isl_keep isl_basic_set *bset); int isl_basic_set_is_bounded(__isl_keep isl_basic_set *bset); @@ -223,13 +236,17 @@ struct isl_set *isl_set_finalize(struct isl_set *set); __isl_give isl_set *isl_set_copy(__isl_keep isl_set *set); void isl_set_free(__isl_take isl_set *set); struct isl_set *isl_set_dup(struct isl_set *set); +__isl_constructor __isl_give isl_set *isl_set_from_basic_set(__isl_take isl_basic_set *bset); __isl_give isl_basic_set *isl_set_sample(__isl_take isl_set *set); __isl_give isl_point *isl_basic_set_sample_point(__isl_take isl_basic_set *bset); __isl_give isl_point *isl_set_sample_point(__isl_take isl_set *set); +__isl_export __isl_give isl_set *isl_set_detect_equalities(__isl_take isl_set *set); +__isl_export __isl_give isl_basic_set *isl_set_affine_hull(__isl_take isl_set *set); __isl_give isl_basic_set *isl_set_convex_hull(__isl_take isl_set *set); +__isl_export __isl_give isl_basic_set *isl_set_polyhedral_hull(__isl_take isl_set *set); __isl_give isl_basic_set *isl_set_simple_hull(__isl_take isl_set *set); struct isl_basic_set *isl_set_bounded_simple_hull(struct isl_set *set); @@ -237,6 +254,7 @@ __isl_give isl_set *isl_set_recession_cone(__isl_take isl_set *set); struct isl_set *isl_set_union_disjoint( struct isl_set *set1, struct isl_set *set2); +__isl_export __isl_give isl_set *isl_set_union( __isl_take isl_set *set1, __isl_take isl_set *set2); @@ -246,15 +264,20 @@ __isl_give isl_basic_set *isl_basic_set_flat_product( __isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2); __isl_give isl_set *isl_set_flat_product(__isl_take isl_set *set1, __isl_take isl_set *set2); +__isl_export __isl_give isl_set *isl_set_intersect( __isl_take isl_set *set1, __isl_take isl_set *set2); +__isl_export __isl_give isl_set *isl_set_intersect_params(__isl_take isl_set *set, __isl_take isl_set *params); +__isl_export __isl_give isl_set *isl_set_subtract( __isl_take isl_set *set1, __isl_take isl_set *set2); +__isl_export __isl_give isl_set *isl_set_complement(__isl_take isl_set *set); +__isl_export __isl_give isl_set *isl_set_apply( __isl_take isl_set *set, __isl_take isl_map *map); @@ -307,10 +330,14 @@ int isl_set_fast_is_empty(__isl_keep isl_set *set); int isl_set_plain_is_universe(__isl_keep isl_set *set); int isl_set_fast_is_universe(__isl_keep isl_set *set); int isl_set_is_params(__isl_keep isl_set *set); +__isl_export int isl_set_is_empty(__isl_keep isl_set *set); int isl_set_is_bounded(__isl_keep isl_set *set); +__isl_export int isl_set_is_subset(__isl_keep isl_set *set1, __isl_keep isl_set *set2); +__isl_export int isl_set_is_strict_subset(__isl_keep isl_set *set1, __isl_keep isl_set *set2); +__isl_export int isl_set_is_equal(__isl_keep isl_set *set1, __isl_keep isl_set *set2); int isl_set_is_singleton(__isl_keep isl_set *set); int isl_set_is_box(__isl_keep isl_set *set); @@ -348,10 +375,12 @@ int isl_set_dim_has_lower_bound(__isl_keep isl_set *set, int isl_set_dim_has_upper_bound(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos); +__isl_export __isl_give isl_basic_set *isl_basic_set_gist(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context); __isl_give isl_set *isl_set_gist_basic_set(__isl_take isl_set *set, __isl_take isl_basic_set *context); +__isl_export __isl_give isl_set *isl_set_gist(__isl_take isl_set *set, __isl_take isl_set *context); __isl_give isl_set *isl_set_gist_params(__isl_take isl_set *set, @@ -361,6 +390,7 @@ int isl_basic_set_dim_residue_class(struct isl_basic_set *bset, int isl_set_dim_residue_class(struct isl_set *set, int pos, isl_int *modulo, isl_int *residue); +__isl_export __isl_give isl_set *isl_set_coalesce(__isl_take isl_set *set); int isl_set_plain_is_equal(__isl_keep isl_set *set1, __isl_keep isl_set *set2); @@ -375,6 +405,7 @@ uint32_t isl_set_get_hash(struct isl_set *set); int isl_set_dim_is_unique(struct isl_set *set, unsigned dim); int isl_set_n_basic_set(__isl_keep isl_set *set); +__isl_export int isl_set_foreach_basic_set(__isl_keep isl_set *set, int (*fn)(__isl_take isl_basic_set *bset, void *user), void *user); diff --git a/include/isl/union_map.h b/include/isl/union_map.h index 70699a73..d17730c9 100644 --- a/include/isl/union_map.h +++ b/include/isl/union_map.h @@ -9,13 +9,16 @@ extern "C" { #endif +__isl_export struct isl_union_map; typedef struct isl_union_map isl_union_map; #ifndef isl_union_set +__isl_export struct isl_union_set; typedef struct isl_union_set isl_union_set; #endif +__isl_constructor __isl_give isl_union_map *isl_union_map_from_map(__isl_take isl_map *map); __isl_give isl_union_map *isl_union_map_empty(__isl_take isl_space *dim); __isl_give isl_union_map *isl_union_map_copy(__isl_keep isl_union_map *umap); @@ -37,25 +40,33 @@ __isl_give isl_union_map *isl_union_map_from_domain( __isl_give isl_union_map *isl_union_map_from_range( __isl_take isl_union_set *uset); +__isl_export __isl_give isl_union_map *isl_union_map_affine_hull( __isl_take isl_union_map *umap); +__isl_export __isl_give isl_union_map *isl_union_map_polyhedral_hull( __isl_take isl_union_map *umap); __isl_give isl_union_map *isl_union_map_simple_hull( __isl_take isl_union_map *umap); +__isl_export __isl_give isl_union_map *isl_union_map_coalesce( __isl_take isl_union_map *umap); __isl_give isl_union_map *isl_union_map_compute_divs( __isl_take isl_union_map *umap); +__isl_export __isl_give isl_union_map *isl_union_map_lexmin(__isl_take isl_union_map *umap); +__isl_export __isl_give isl_union_map *isl_union_map_lexmax(__isl_take isl_union_map *umap); __isl_give isl_union_map *isl_union_map_add_map(__isl_take isl_union_map *umap, __isl_take isl_map *map); +__isl_export __isl_give isl_union_map *isl_union_map_union(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); +__isl_export __isl_give isl_union_map *isl_union_map_subtract( __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); +__isl_export __isl_give isl_union_map *isl_union_map_intersect( __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); __isl_give isl_union_map *isl_union_map_product(__isl_take isl_union_map *umap1, @@ -64,43 +75,60 @@ __isl_give isl_union_map *isl_union_map_range_product( __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); __isl_give isl_union_map *isl_union_map_flat_range_product( __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); +__isl_export __isl_give isl_union_map *isl_union_map_gist(__isl_take isl_union_map *umap, __isl_take isl_union_map *context); +__isl_export __isl_give isl_union_map *isl_union_map_intersect_domain( __isl_take isl_union_map *umap, __isl_take isl_union_set *uset); +__isl_export __isl_give isl_union_map *isl_union_map_intersect_range( __isl_take isl_union_map *umap, __isl_take isl_union_set *uset); +__isl_export __isl_give isl_union_map *isl_union_map_apply_domain( __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); +__isl_export __isl_give isl_union_map *isl_union_map_apply_range( __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); +__isl_export __isl_give isl_union_map *isl_union_map_reverse(__isl_take isl_union_map *umap); __isl_give isl_union_map *isl_union_map_from_domain_and_range( __isl_take isl_union_set *domain, __isl_take isl_union_set *range); +__isl_export __isl_give isl_union_map *isl_union_map_detect_equalities( __isl_keep isl_union_map *umap); +__isl_export __isl_give isl_union_set *isl_union_map_deltas(__isl_take isl_union_map *umap); __isl_give isl_union_map *isl_union_map_deltas_map( __isl_take isl_union_map *umap); +__isl_export __isl_give isl_union_map *isl_union_set_identity(__isl_take isl_union_set *uset); +__isl_export int isl_union_map_is_empty(__isl_keep isl_union_map *umap); +__isl_export int isl_union_map_is_single_valued(__isl_keep isl_union_map *umap); int isl_union_map_plain_is_injective(__isl_keep isl_union_map *umap); +__isl_export int isl_union_map_is_injective(__isl_keep isl_union_map *umap); +__isl_export int isl_union_map_is_bijective(__isl_keep isl_union_map *umap); +__isl_export int isl_union_map_is_subset(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2); +__isl_export int isl_union_map_is_equal(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2); +__isl_export int isl_union_map_is_strict_subset(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2); int isl_union_map_n_map(__isl_keep isl_union_map *umap); +__isl_export int isl_union_map_foreach_map(__isl_keep isl_union_map *umap, int (*fn)(__isl_take isl_map *map, void *user), void *user); __isl_give int isl_union_map_contains(__isl_keep isl_union_map *umap, @@ -127,6 +155,7 @@ __isl_give isl_union_map *isl_union_map_lex_ge_union_map( __isl_give isl_union_map *isl_union_map_read_from_file(isl_ctx *ctx, FILE *input); +__isl_constructor __isl_give isl_union_map *isl_union_map_read_from_str(isl_ctx *ctx, const char *str); __isl_give isl_printer *isl_printer_print_union_map(__isl_take isl_printer *p, diff --git a/include/isl/union_set.h b/include/isl/union_set.h index eda3ff96..dbc07857 100644 --- a/include/isl/union_set.h +++ b/include/isl/union_set.h @@ -8,6 +8,7 @@ extern "C" { #endif +__isl_constructor __isl_give isl_union_set *isl_union_set_from_set(__isl_take isl_set *set); __isl_give isl_union_set *isl_union_set_empty(__isl_take isl_space *dim); __isl_give isl_union_set *isl_union_set_copy(__isl_keep isl_union_set *uset); @@ -19,47 +20,62 @@ __isl_give isl_space *isl_union_set_get_space(__isl_keep isl_union_set *uset); __isl_give isl_union_set *isl_union_set_universe( __isl_take isl_union_set *uset); +__isl_export __isl_give isl_union_set *isl_union_set_detect_equalities( __isl_take isl_union_set *uset); +__isl_export __isl_give isl_union_set *isl_union_set_affine_hull( __isl_take isl_union_set *uset); +__isl_export __isl_give isl_union_set *isl_union_set_polyhedral_hull( __isl_take isl_union_set *uset); __isl_give isl_union_set *isl_union_set_simple_hull( __isl_take isl_union_set *uset); +__isl_export __isl_give isl_union_set *isl_union_set_coalesce( __isl_take isl_union_set *uset); __isl_give isl_union_set *isl_union_set_compute_divs( __isl_take isl_union_set *uset); +__isl_export __isl_give isl_union_set *isl_union_set_lexmin(__isl_take isl_union_set *uset); +__isl_export __isl_give isl_union_set *isl_union_set_lexmax(__isl_take isl_union_set *uset); __isl_give isl_union_set *isl_union_set_add_set(__isl_take isl_union_set *uset, __isl_take isl_set *set); __isl_give isl_union_set *isl_union_set_union(__isl_take isl_union_set *uset1, __isl_take isl_union_set *uset2); +__isl_export __isl_give isl_union_set *isl_union_set_subtract( __isl_take isl_union_set *uset1, __isl_take isl_union_set *uset2); +__isl_export __isl_give isl_union_set *isl_union_set_intersect( __isl_take isl_union_set *uset1, __isl_take isl_union_set *uset2); __isl_give isl_union_set *isl_union_set_product(__isl_take isl_union_set *uset1, __isl_take isl_union_set *uset2); +__isl_export __isl_give isl_union_set *isl_union_set_gist(__isl_take isl_union_set *uset, __isl_take isl_union_set *context); +__isl_export __isl_give isl_union_set *isl_union_set_apply( __isl_take isl_union_set *uset, __isl_take isl_union_map *umap); +__isl_export int isl_union_set_is_empty(__isl_keep isl_union_set *uset); +__isl_export int isl_union_set_is_subset(__isl_keep isl_union_set *uset1, __isl_keep isl_union_set *uset2); +__isl_export int isl_union_set_is_equal(__isl_keep isl_union_set *uset1, __isl_keep isl_union_set *uset2); +__isl_export int isl_union_set_is_strict_subset(__isl_keep isl_union_set *uset1, __isl_keep isl_union_set *uset2); int isl_union_set_n_set(__isl_keep isl_union_set *uset); +__isl_export int isl_union_set_foreach_set(__isl_keep isl_union_set *uset, int (*fn)(__isl_take isl_set *set, void *user), void *user); __isl_give int isl_union_set_contains(__isl_keep isl_union_set *uset, @@ -90,6 +106,7 @@ __isl_give isl_union_set *isl_union_set_solutions( __isl_give isl_union_set *isl_union_set_read_from_file(isl_ctx *ctx, FILE *input); +__isl_constructor __isl_give isl_union_set *isl_union_set_read_from_str(isl_ctx *ctx, const char *str); __isl_give isl_printer *isl_printer_print_union_set(__isl_take isl_printer *p, -- 2.11.4.GIT