1 /* 2 * Copyright 2008-2009 Katholieke Universiteit Leuven 3 * 4 * Use of this software is governed by the MIT license 5 * 6 * Written by Sven Verdoolaege, K.U.Leuven, Departement 7 * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium 8 */ 9 10 #ifndef ISL_SET_H 11 #define ISL_SET_H 12 13 #include <isl/id_type.h> 14 #include <isl/map_type.h> 15 #include <isl/aff_type.h> 16 #include <isl/list.h> 17 #include <isl/mat.h> 18 #include <isl/point.h> 19 #include <isl/local_space.h> 20 #include <isl/val_type.h> 21 #include <isl/stdint.h> 22 #include <isl/stride_info.h> 23 #include <isl/fixed_box.h> 24 25 #if defined(__cplusplus) 26 extern "C" { 27 #endif 28 29 isl_size isl_basic_set_n_dim(__isl_keep isl_basic_set *bset); 30 isl_size isl_basic_set_n_param(__isl_keep isl_basic_set *bset); 31 isl_size isl_basic_set_total_dim(__isl_keep const isl_basic_set *bset); 32 isl_size isl_basic_set_dim(__isl_keep isl_basic_set *bset, 33 enum isl_dim_type type); 34 35 isl_size isl_set_n_dim(__isl_keep isl_set *set); 36 isl_size isl_set_n_param(__isl_keep isl_set *set); 37 __isl_export 38 isl_size isl_set_tuple_dim(__isl_keep isl_set *set); 39 isl_size isl_set_dim(__isl_keep isl_set *set, enum isl_dim_type type); 40 41 isl_ctx *isl_basic_set_get_ctx(__isl_keep isl_basic_set *bset); 42 isl_ctx *isl_set_get_ctx(__isl_keep isl_set *set); 43 __isl_give isl_space *isl_basic_set_get_space(__isl_keep isl_basic_set *bset); 44 __isl_export 45 __isl_give isl_space *isl_set_get_space(__isl_keep isl_set *set); 46 __isl_give isl_set *isl_set_reset_space(__isl_take isl_set *set, 47 __isl_take isl_space *space); 48 49 __isl_give isl_aff *isl_basic_set_get_div(__isl_keep isl_basic_set *bset, 50 int pos); 51 52 __isl_give isl_local_space *isl_basic_set_get_local_space( 53 __isl_keep isl_basic_set *bset); 54 55 const char *isl_basic_set_get_tuple_name(__isl_keep isl_basic_set *bset); 56 isl_bool isl_set_has_tuple_name(__isl_keep isl_set *set); 57 const char *isl_set_get_tuple_name(__isl_keep isl_set *set); 58 __isl_give isl_basic_set *isl_basic_set_set_tuple_name( 59 __isl_take isl_basic_set *set, const char *s); 60 __isl_give isl_set *isl_set_set_tuple_name(__isl_take isl_set *set, 61 const char *s); 62 const char *isl_basic_set_get_dim_name(__isl_keep isl_basic_set *bset, 63 enum isl_dim_type type, unsigned pos); 64 __isl_give isl_basic_set *isl_basic_set_set_dim_name( 65 __isl_take isl_basic_set *bset, 66 enum isl_dim_type type, unsigned pos, const char *s); 67 isl_bool isl_set_has_dim_name(__isl_keep isl_set *set, 68 enum isl_dim_type type, unsigned pos); 69 const char *isl_set_get_dim_name(__isl_keep isl_set *set, 70 enum isl_dim_type type, unsigned pos); 71 __isl_give isl_set *isl_set_set_dim_name(__isl_take isl_set *set, 72 enum isl_dim_type type, unsigned pos, const char *s); 73 74 __isl_give isl_id *isl_basic_set_get_dim_id(__isl_keep isl_basic_set *bset, 75 enum isl_dim_type type, unsigned pos); 76 __isl_give isl_basic_set *isl_basic_set_set_tuple_id( 77 __isl_take isl_basic_set *bset, __isl_take isl_id *id); 78 __isl_give isl_set *isl_set_set_dim_id(__isl_take isl_set *set, 79 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 80 isl_bool isl_set_has_dim_id(__isl_keep isl_set *set, 81 enum isl_dim_type type, unsigned pos); 82 __isl_give isl_id *isl_set_get_dim_id(__isl_keep isl_set *set, 83 enum isl_dim_type type, unsigned pos); 84 __isl_give isl_set *isl_set_set_tuple_id(__isl_take isl_set *set, 85 __isl_take isl_id *id); 86 __isl_give isl_set *isl_set_reset_tuple_id(__isl_take isl_set *set); 87 isl_bool isl_set_has_tuple_id(__isl_keep isl_set *set); 88 __isl_give isl_id *isl_set_get_tuple_id(__isl_keep isl_set *set); 89 __isl_give isl_set *isl_set_reset_user(__isl_take isl_set *set); 90 91 int isl_set_find_dim_by_id(__isl_keep isl_set *set, enum isl_dim_type type, 92 __isl_keep isl_id *id); 93 int isl_set_find_dim_by_name(__isl_keep isl_set *set, enum isl_dim_type type, 94 const char *name); 95 96 int isl_basic_set_is_rational(__isl_keep isl_basic_set *bset); 97 98 __isl_null isl_basic_set *isl_basic_set_free(__isl_take isl_basic_set *bset); 99 __isl_give isl_basic_set *isl_basic_set_copy(__isl_keep isl_basic_set *bset); 100 __isl_give isl_basic_set *isl_basic_set_empty(__isl_take isl_space *space); 101 __isl_give isl_basic_set *isl_basic_set_universe(__isl_take isl_space *space); 102 __isl_give isl_basic_set *isl_basic_set_nat_universe( 103 __isl_take isl_space *space); 104 __isl_give isl_basic_set *isl_basic_set_positive_orthant( 105 __isl_take isl_space *space); 106 void isl_basic_set_print_internal(__isl_keep isl_basic_set *bset, 107 FILE *out, int indent); 108 __isl_export 109 __isl_give isl_basic_set *isl_basic_set_intersect( 110 __isl_take isl_basic_set *bset1, 111 __isl_take isl_basic_set *bset2); 112 __isl_export 113 __isl_give isl_basic_set *isl_basic_set_intersect_params( 114 __isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2); 115 __isl_export 116 __isl_give isl_basic_set *isl_basic_set_apply( 117 __isl_take isl_basic_set *bset, 118 __isl_take isl_basic_map *bmap); 119 __isl_give isl_basic_set *isl_basic_set_preimage_multi_aff( 120 __isl_take isl_basic_set *bset, __isl_take isl_multi_aff *ma); 121 __isl_export 122 __isl_give isl_basic_set *isl_basic_set_affine_hull( 123 __isl_take isl_basic_set *bset); 124 __isl_give isl_basic_set *isl_basic_set_remove_dims( 125 __isl_take isl_basic_set *bset, 126 enum isl_dim_type type, unsigned first, unsigned n); 127 __isl_export 128 __isl_give isl_basic_set *isl_basic_set_sample(__isl_take isl_basic_set *bset); 129 __isl_export 130 __isl_give isl_basic_set *isl_basic_set_detect_equalities( 131 __isl_take isl_basic_set *bset); 132 __isl_give isl_basic_set *isl_basic_set_remove_redundancies( 133 __isl_take isl_basic_set *bset); 134 __isl_give isl_set *isl_set_remove_redundancies(__isl_take isl_set *set); 135 __isl_give isl_basic_set *isl_basic_set_list_intersect( 136 __isl_take struct isl_basic_set_list *list); 137 138 __isl_give isl_set *isl_set_list_union(__isl_take isl_set_list *list); 139 140 __isl_give isl_basic_set *isl_basic_set_read_from_file(isl_ctx *ctx, 141 FILE *input); 142 __isl_constructor 143 __isl_give isl_basic_set *isl_basic_set_read_from_str(isl_ctx *ctx, 144 const char *str); 145 __isl_give isl_set *isl_set_read_from_file(isl_ctx *ctx, FILE *input); 146 __isl_constructor 147 __isl_give isl_set *isl_set_read_from_str(isl_ctx *ctx, const char *str); 148 void isl_basic_set_dump(__isl_keep isl_basic_set *bset); 149 void isl_set_dump(__isl_keep isl_set *set); 150 __isl_give isl_printer *isl_printer_print_basic_set( 151 __isl_take isl_printer *printer, __isl_keep isl_basic_set *bset); 152 __isl_give isl_printer *isl_printer_print_set(__isl_take isl_printer *printer, 153 __isl_keep isl_set *map); 154 __isl_give isl_basic_set *isl_basic_set_fix_si(__isl_take isl_basic_set *bset, 155 enum isl_dim_type type, unsigned pos, int value); 156 __isl_give isl_basic_set *isl_basic_set_fix_val(__isl_take isl_basic_set *bset, 157 enum isl_dim_type type, unsigned pos, __isl_take isl_val *v); 158 __isl_give isl_set *isl_set_fix_si(__isl_take isl_set *set, 159 enum isl_dim_type type, unsigned pos, int value); 160 __isl_give isl_set *isl_set_lower_bound_si(__isl_take isl_set *set, 161 enum isl_dim_type type, unsigned pos, int value); 162 __isl_give isl_basic_set *isl_basic_set_lower_bound_val( 163 __isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, 164 __isl_take isl_val *value); 165 __isl_give isl_set *isl_set_lower_bound_val(__isl_take isl_set *set, 166 enum isl_dim_type type, unsigned pos, __isl_take isl_val *value); 167 __isl_give isl_set *isl_set_upper_bound_si(__isl_take isl_set *set, 168 enum isl_dim_type type, unsigned pos, int value); 169 __isl_give isl_basic_set *isl_basic_set_upper_bound_val( 170 __isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned pos, 171 __isl_take isl_val *value); 172 __isl_give isl_set *isl_set_upper_bound_val(__isl_take isl_set *set, 173 enum isl_dim_type type, unsigned pos, __isl_take isl_val *value); 174 __isl_overload 175 __isl_give isl_set *isl_set_lower_bound_multi_val(__isl_take isl_set *set, 176 __isl_take isl_multi_val *lower); 177 __isl_overload 178 __isl_give isl_set *isl_set_upper_bound_multi_val(__isl_take isl_set *set, 179 __isl_take isl_multi_val *upper); 180 __isl_overload 181 __isl_give isl_set *isl_set_lower_bound_multi_pw_aff(__isl_take isl_set *set, 182 __isl_take isl_multi_pw_aff *lower); 183 __isl_overload 184 __isl_give isl_set *isl_set_upper_bound_multi_pw_aff(__isl_take isl_set *set, 185 __isl_take isl_multi_pw_aff *upper); 186 187 __isl_give isl_set *isl_set_equate(__isl_take isl_set *set, 188 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 189 190 __isl_export 191 isl_bool isl_basic_set_is_equal(__isl_keep isl_basic_set *bset1, 192 __isl_keep isl_basic_set *bset2); 193 isl_bool isl_basic_set_is_disjoint(__isl_keep isl_basic_set *bset1, 194 __isl_keep isl_basic_set *bset2); 195 196 __isl_give isl_set *isl_basic_set_partial_lexmin( 197 __isl_take isl_basic_set *bset, __isl_take isl_basic_set *dom, 198 __isl_give isl_set **empty); 199 __isl_give isl_set *isl_basic_set_partial_lexmax( 200 __isl_take isl_basic_set *bset, __isl_take isl_basic_set *dom, 201 __isl_give isl_set **empty); 202 __isl_give isl_set *isl_set_partial_lexmin( 203 __isl_take isl_set *set, __isl_take isl_set *dom, 204 __isl_give isl_set **empty); 205 __isl_give isl_set *isl_set_partial_lexmax( 206 __isl_take isl_set *set, __isl_take isl_set *dom, 207 __isl_give isl_set **empty); 208 __isl_export 209 __isl_give isl_set *isl_basic_set_lexmin(__isl_take isl_basic_set *bset); 210 __isl_export 211 __isl_give isl_set *isl_basic_set_lexmax(__isl_take isl_basic_set *bset); 212 __isl_export 213 __isl_give isl_set *isl_set_lexmin(__isl_take isl_set *set); 214 __isl_export 215 __isl_give isl_set *isl_set_lexmax(__isl_take isl_set *set); 216 __isl_give isl_pw_multi_aff *isl_basic_set_partial_lexmin_pw_multi_aff( 217 __isl_take isl_basic_set *bset, __isl_take isl_basic_set *dom, 218 __isl_give isl_set **empty); 219 __isl_give isl_pw_multi_aff *isl_basic_set_partial_lexmax_pw_multi_aff( 220 __isl_take isl_basic_set *bset, __isl_take isl_basic_set *dom, 221 __isl_give isl_set **empty); 222 __isl_export 223 __isl_give isl_pw_multi_aff *isl_set_lexmin_pw_multi_aff( 224 __isl_take isl_set *set); 225 __isl_export 226 __isl_give isl_pw_multi_aff *isl_set_lexmax_pw_multi_aff( 227 __isl_take isl_set *set); 228 __isl_export 229 __isl_give isl_multi_pw_aff *isl_set_min_multi_pw_aff(__isl_take isl_set *set); 230 __isl_export 231 __isl_give isl_multi_pw_aff *isl_set_max_multi_pw_aff(__isl_take isl_set *set); 232 233 __isl_export 234 __isl_give isl_set *isl_basic_set_union( 235 __isl_take isl_basic_set *bset1, 236 __isl_take isl_basic_set *bset2); 237 238 int isl_basic_set_compare_at(__isl_keep isl_basic_set *bset1, 239 __isl_keep isl_basic_set *bset2, int pos); 240 int isl_set_follows_at(__isl_keep isl_set *set1, 241 __isl_keep isl_set *set2, int pos); 242 243 __isl_export 244 __isl_give isl_basic_set *isl_basic_set_params(__isl_take isl_basic_set *bset); 245 __isl_give isl_basic_set *isl_basic_set_from_params( 246 __isl_take isl_basic_set *bset); 247 __isl_export 248 __isl_give isl_set *isl_set_params(__isl_take isl_set *set); 249 __isl_give isl_set *isl_set_from_params(__isl_take isl_set *set); 250 251 __isl_export 252 __isl_give isl_set *isl_set_bind(__isl_take isl_set *set, 253 __isl_take isl_multi_id *tuple); 254 __isl_export 255 __isl_give isl_set *isl_set_unbind_params(__isl_take isl_set *set, 256 __isl_take isl_multi_id *tuple); 257 __isl_export 258 __isl_give isl_map *isl_set_unbind_params_insert_domain( 259 __isl_take isl_set *set, __isl_take isl_multi_id *domain); 260 261 isl_stat isl_basic_set_dims_get_sign(__isl_keep isl_basic_set *bset, 262 enum isl_dim_type type, unsigned pos, unsigned n, int *signs); 263 264 isl_bool isl_basic_set_plain_is_universe(__isl_keep isl_basic_set *bset); 265 isl_bool isl_basic_set_is_universe(__isl_keep isl_basic_set *bset); 266 isl_bool isl_basic_set_plain_is_empty(__isl_keep isl_basic_set *bset); 267 __isl_export 268 isl_bool isl_basic_set_is_empty(__isl_keep isl_basic_set *bset); 269 isl_bool isl_basic_set_is_bounded(__isl_keep isl_basic_set *bset); 270 __isl_export 271 isl_bool isl_basic_set_is_subset(__isl_keep isl_basic_set *bset1, 272 __isl_keep isl_basic_set *bset2); 273 isl_bool isl_basic_set_plain_is_equal(__isl_keep isl_basic_set *bset1, 274 __isl_keep isl_basic_set *bset2); 275 276 __isl_export 277 __isl_give isl_set *isl_set_empty(__isl_take isl_space *space); 278 __isl_export 279 __isl_give isl_set *isl_set_universe(__isl_take isl_space *space); 280 __isl_export 281 __isl_give isl_set *isl_space_universe_set(__isl_take isl_space *space); 282 __isl_give isl_set *isl_set_nat_universe(__isl_take isl_space *space); 283 __isl_give isl_set *isl_set_copy(__isl_keep isl_set *set); 284 __isl_null isl_set *isl_set_free(__isl_take isl_set *set); 285 __isl_export 286 __isl_give isl_set *isl_basic_set_to_set(__isl_take isl_basic_set *bset); 287 __isl_constructor 288 __isl_give isl_set *isl_set_from_basic_set(__isl_take isl_basic_set *bset); 289 __isl_export 290 __isl_give isl_basic_set *isl_set_sample(__isl_take isl_set *set); 291 __isl_export 292 __isl_give isl_point *isl_basic_set_sample_point(__isl_take isl_basic_set *bset); 293 __isl_export 294 __isl_give isl_point *isl_set_sample_point(__isl_take isl_set *set); 295 __isl_export 296 __isl_give isl_set *isl_set_detect_equalities(__isl_take isl_set *set); 297 __isl_export 298 __isl_give isl_basic_set *isl_set_affine_hull(__isl_take isl_set *set); 299 __isl_give isl_basic_set *isl_set_convex_hull(__isl_take isl_set *set); 300 __isl_export 301 __isl_give isl_basic_set *isl_set_polyhedral_hull(__isl_take isl_set *set); 302 __isl_give isl_basic_set *isl_set_simple_hull(__isl_take isl_set *set); 303 __isl_export 304 __isl_give isl_basic_set *isl_set_unshifted_simple_hull( 305 __isl_take isl_set *set); 306 __isl_give isl_basic_set *isl_set_plain_unshifted_simple_hull( 307 __isl_take isl_set *set); 308 __isl_give isl_basic_set *isl_set_unshifted_simple_hull_from_set_list( 309 __isl_take isl_set *set, __isl_take isl_set_list *list); 310 __isl_give isl_basic_set *isl_set_bounded_simple_hull(__isl_take isl_set *set); 311 312 __isl_give isl_set *isl_set_union_disjoint( 313 __isl_take isl_set *set1, __isl_take isl_set *set2); 314 __isl_export 315 __isl_give isl_set *isl_set_union( 316 __isl_take isl_set *set1, 317 __isl_take isl_set *set2); 318 __isl_export 319 __isl_give isl_set *isl_set_product(__isl_take isl_set *set1, 320 __isl_take isl_set *set2); 321 __isl_give isl_basic_set *isl_basic_set_flat_product( 322 __isl_take isl_basic_set *bset1, __isl_take isl_basic_set *bset2); 323 __isl_give isl_set *isl_set_flat_product(__isl_take isl_set *set1, 324 __isl_take isl_set *set2); 325 __isl_export 326 __isl_give isl_set *isl_set_intersect( 327 __isl_take isl_set *set1, 328 __isl_take isl_set *set2); 329 __isl_export 330 __isl_give isl_set *isl_set_intersect_params(__isl_take isl_set *set, 331 __isl_take isl_set *params); 332 __isl_give isl_set *isl_set_intersect_factor_domain(__isl_take isl_set *set, 333 __isl_take isl_set *domain); 334 __isl_give isl_set *isl_set_intersect_factor_range(__isl_take isl_set *set, 335 __isl_take isl_set *range); 336 __isl_export 337 __isl_give isl_set *isl_set_subtract( 338 __isl_take isl_set *set1, 339 __isl_take isl_set *set2); 340 __isl_export 341 __isl_give isl_set *isl_set_complement(__isl_take isl_set *set); 342 __isl_export 343 __isl_give isl_set *isl_set_apply( 344 __isl_take isl_set *set, 345 __isl_take isl_map *map); 346 __isl_overload 347 __isl_give isl_set *isl_set_preimage_multi_aff(__isl_take isl_set *set, 348 __isl_take isl_multi_aff *ma); 349 __isl_overload 350 __isl_give isl_set *isl_set_preimage_pw_multi_aff(__isl_take isl_set *set, 351 __isl_take isl_pw_multi_aff *pma); 352 __isl_overload 353 __isl_give isl_set *isl_set_preimage_multi_pw_aff(__isl_take isl_set *set, 354 __isl_take isl_multi_pw_aff *mpa); 355 __isl_give isl_set *isl_set_fix_val(__isl_take isl_set *set, 356 enum isl_dim_type type, unsigned pos, __isl_take isl_val *v); 357 __isl_give isl_set *isl_set_fix_dim_si(__isl_take isl_set *set, 358 unsigned dim, int value); 359 __isl_give isl_basic_set *isl_basic_set_insert_dims( 360 __isl_take isl_basic_set *bset, 361 enum isl_dim_type type, unsigned pos, unsigned n); 362 __isl_give isl_set *isl_set_insert_dims(__isl_take isl_set *set, 363 enum isl_dim_type type, unsigned pos, unsigned n); 364 __isl_give isl_basic_set *isl_basic_set_add_dims(__isl_take isl_basic_set *bset, 365 enum isl_dim_type type, unsigned n); 366 __isl_give isl_set *isl_set_add_dims(__isl_take isl_set *set, 367 enum isl_dim_type type, unsigned n); 368 __isl_give isl_basic_set *isl_basic_set_move_dims(__isl_take isl_basic_set *bset, 369 enum isl_dim_type dst_type, unsigned dst_pos, 370 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 371 __isl_give isl_set *isl_set_move_dims(__isl_take isl_set *set, 372 enum isl_dim_type dst_type, unsigned dst_pos, 373 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 374 __isl_give isl_basic_set *isl_basic_set_project_out( 375 __isl_take isl_basic_set *bset, 376 enum isl_dim_type type, unsigned first, unsigned n); 377 __isl_overload 378 __isl_give isl_set *isl_set_project_out_param_id(__isl_take isl_set *set, 379 __isl_take isl_id *id); 380 __isl_overload 381 __isl_give isl_set *isl_set_project_out_param_id_list(__isl_take isl_set *set, 382 __isl_take isl_id_list *list); 383 __isl_give isl_set *isl_set_project_out(__isl_take isl_set *set, 384 enum isl_dim_type type, unsigned first, unsigned n); 385 __isl_export 386 __isl_give isl_set *isl_set_project_out_all_params(__isl_take isl_set *set); 387 __isl_give isl_map *isl_set_project_onto_map(__isl_take isl_set *set, 388 enum isl_dim_type type, unsigned first, unsigned n); 389 __isl_give isl_basic_set *isl_basic_set_remove_divs( 390 __isl_take isl_basic_set *bset); 391 __isl_give isl_basic_set *isl_basic_set_eliminate( 392 __isl_take isl_basic_set *bset, 393 enum isl_dim_type type, unsigned first, unsigned n); 394 __isl_give isl_set *isl_set_eliminate(__isl_take isl_set *set, 395 enum isl_dim_type type, unsigned first, unsigned n); 396 __isl_give isl_set *isl_set_eliminate_dims(__isl_take isl_set *set, 397 unsigned first, unsigned n); 398 __isl_give isl_set *isl_set_remove_dims(__isl_take isl_set *bset, 399 enum isl_dim_type type, unsigned first, unsigned n); 400 __isl_give isl_basic_set *isl_basic_set_remove_divs_involving_dims( 401 __isl_take isl_basic_set *bset, 402 enum isl_dim_type type, unsigned first, unsigned n); 403 __isl_give isl_set *isl_set_remove_divs_involving_dims(__isl_take isl_set *set, 404 enum isl_dim_type type, unsigned first, unsigned n); 405 __isl_give isl_basic_set *isl_basic_set_remove_unknown_divs( 406 __isl_take isl_basic_set *bset); 407 __isl_give isl_set *isl_set_remove_unknown_divs(__isl_take isl_set *set); 408 __isl_give isl_set *isl_set_remove_divs(__isl_take isl_set *set); 409 __isl_give isl_set *isl_set_split_dims(__isl_take isl_set *set, 410 enum isl_dim_type type, unsigned first, unsigned n); 411 412 __isl_give isl_basic_set *isl_basic_set_drop_constraints_involving_dims( 413 __isl_take isl_basic_set *bset, 414 enum isl_dim_type type, unsigned first, unsigned n); 415 __isl_give isl_basic_set *isl_basic_set_drop_constraints_not_involving_dims( 416 __isl_take isl_basic_set *bset, 417 enum isl_dim_type type, unsigned first, unsigned n); 418 __isl_give isl_set *isl_set_drop_constraints_involving_dims( 419 __isl_take isl_set *set, 420 enum isl_dim_type type, unsigned first, unsigned n); 421 __isl_give isl_set *isl_set_drop_constraints_not_involving_dims( 422 __isl_take isl_set *set, 423 enum isl_dim_type type, unsigned first, unsigned n); 424 425 __isl_export 426 isl_bool isl_set_involves_locals(__isl_keep isl_set *set); 427 428 isl_bool isl_basic_set_involves_dims(__isl_keep isl_basic_set *bset, 429 enum isl_dim_type type, unsigned first, unsigned n); 430 isl_bool isl_set_involves_dims(__isl_keep isl_set *set, 431 enum isl_dim_type type, unsigned first, unsigned n); 432 433 void isl_set_print_internal(__isl_keep isl_set *set, FILE *out, int indent); 434 isl_bool isl_set_plain_is_empty(__isl_keep isl_set *set); 435 isl_bool isl_set_plain_is_universe(__isl_keep isl_set *set); 436 isl_bool isl_set_is_params(__isl_keep isl_set *set); 437 __isl_export 438 isl_bool isl_set_is_empty(__isl_keep isl_set *set); 439 isl_bool isl_set_is_bounded(__isl_keep isl_set *set); 440 __isl_export 441 isl_bool isl_set_is_subset(__isl_keep isl_set *set1, __isl_keep isl_set *set2); 442 __isl_export 443 isl_bool isl_set_is_strict_subset(__isl_keep isl_set *set1, 444 __isl_keep isl_set *set2); 445 __isl_export 446 isl_bool isl_set_is_equal(__isl_keep isl_set *set1, __isl_keep isl_set *set2); 447 __isl_export 448 isl_bool isl_set_is_disjoint(__isl_keep isl_set *set1, 449 __isl_keep isl_set *set2); 450 __isl_export 451 isl_bool isl_set_is_singleton(__isl_keep isl_set *set); 452 isl_bool isl_set_is_box(__isl_keep isl_set *set); 453 isl_bool isl_set_has_equal_space(__isl_keep isl_set *set1, 454 __isl_keep isl_set *set2); 455 456 __isl_give isl_set *isl_set_sum(__isl_take isl_set *set1, 457 __isl_take isl_set *set2); 458 __isl_give isl_basic_set *isl_basic_set_neg(__isl_take isl_basic_set *bset); 459 __isl_give isl_set *isl_set_neg(__isl_take isl_set *set); 460 461 __isl_give isl_set *isl_set_make_disjoint(__isl_take isl_set *set); 462 __isl_give isl_set *isl_basic_set_compute_divs(__isl_take isl_basic_set *bset); 463 __isl_give isl_set *isl_set_compute_divs(__isl_take isl_set *set); 464 ISL_DEPRECATED 465 __isl_give isl_set *isl_set_align_divs(__isl_take isl_set *set); 466 467 __isl_export 468 __isl_give isl_multi_val *isl_set_get_plain_multi_val_if_fixed( 469 __isl_keep isl_set *set); 470 __isl_give isl_val *isl_set_plain_get_val_if_fixed(__isl_keep isl_set *set, 471 enum isl_dim_type type, unsigned pos); 472 isl_bool isl_set_dim_is_bounded(__isl_keep isl_set *set, 473 enum isl_dim_type type, unsigned pos); 474 isl_bool isl_set_dim_has_lower_bound(__isl_keep isl_set *set, 475 enum isl_dim_type type, unsigned pos); 476 isl_bool isl_set_dim_has_upper_bound(__isl_keep isl_set *set, 477 enum isl_dim_type type, unsigned pos); 478 isl_bool isl_set_dim_has_any_lower_bound(__isl_keep isl_set *set, 479 enum isl_dim_type type, unsigned pos); 480 isl_bool isl_set_dim_has_any_upper_bound(__isl_keep isl_set *set, 481 enum isl_dim_type type, unsigned pos); 482 483 __isl_export 484 __isl_give isl_basic_set *isl_basic_set_gist(__isl_take isl_basic_set *bset, 485 __isl_take isl_basic_set *context); 486 __isl_give isl_set *isl_set_gist_basic_set(__isl_take isl_set *set, 487 __isl_take isl_basic_set *context); 488 __isl_export 489 __isl_give isl_set *isl_set_gist(__isl_take isl_set *set, 490 __isl_take isl_set *context); 491 __isl_export 492 __isl_give isl_set *isl_set_gist_params(__isl_take isl_set *set, 493 __isl_take isl_set *context); 494 isl_stat isl_set_dim_residue_class_val(__isl_keep isl_set *set, 495 int pos, __isl_give isl_val **modulo, __isl_give isl_val **residue); 496 497 __isl_give isl_stride_info *isl_set_get_stride_info(__isl_keep isl_set *set, 498 int pos); 499 __isl_export 500 __isl_give isl_val *isl_set_get_stride(__isl_keep isl_set *set, int pos); 501 __isl_export 502 __isl_give isl_fixed_box *isl_set_get_lattice_tile(__isl_keep isl_set *set); 503 __isl_export 504 __isl_give isl_fixed_box *isl_set_get_simple_fixed_box_hull( 505 __isl_keep isl_set *set); 506 507 __isl_export 508 __isl_give isl_set *isl_set_coalesce(__isl_take isl_set *set); 509 510 int isl_set_plain_cmp(__isl_keep isl_set *set1, __isl_keep isl_set *set2); 511 isl_bool isl_set_plain_is_equal(__isl_keep isl_set *set1, 512 __isl_keep isl_set *set2); 513 isl_bool isl_set_plain_is_disjoint(__isl_keep isl_set *set1, 514 __isl_keep isl_set *set2); 515 516 uint32_t isl_set_get_hash(__isl_keep isl_set *set); 517 518 __isl_export 519 isl_size isl_set_n_basic_set(__isl_keep isl_set *set); 520 __isl_export 521 isl_stat isl_set_foreach_basic_set(__isl_keep isl_set *set, 522 isl_stat (*fn)(__isl_take isl_basic_set *bset, void *user), void *user); 523 __isl_give isl_basic_set_list *isl_set_get_basic_set_list( 524 __isl_keep isl_set *set); 525 526 __isl_export 527 isl_stat isl_set_foreach_point(__isl_keep isl_set *set, 528 isl_stat (*fn)(__isl_take isl_point *pnt, void *user), void *user); 529 __isl_give isl_val *isl_set_count_val(__isl_keep isl_set *set); 530 531 __isl_constructor 532 __isl_give isl_basic_set *isl_basic_set_from_point(__isl_take isl_point *pnt); 533 __isl_export 534 __isl_give isl_set *isl_point_to_set(__isl_take isl_point *pnt); 535 __isl_constructor 536 __isl_give isl_set *isl_set_from_point(__isl_take isl_point *pnt); 537 __isl_give isl_basic_set *isl_basic_set_box_from_points( 538 __isl_take isl_point *pnt1, __isl_take isl_point *pnt2); 539 __isl_give isl_set *isl_set_box_from_points(__isl_take isl_point *pnt1, 540 __isl_take isl_point *pnt2); 541 542 __isl_give isl_basic_set *isl_basic_set_lift(__isl_take isl_basic_set *bset); 543 __isl_give isl_set *isl_set_lift(__isl_take isl_set *set); 544 545 __isl_give isl_map *isl_set_lex_le_set(__isl_take isl_set *set1, 546 __isl_take isl_set *set2); 547 __isl_give isl_map *isl_set_lex_lt_set(__isl_take isl_set *set1, 548 __isl_take isl_set *set2); 549 __isl_give isl_map *isl_set_lex_ge_set(__isl_take isl_set *set1, 550 __isl_take isl_set *set2); 551 __isl_give isl_map *isl_set_lex_gt_set(__isl_take isl_set *set1, 552 __isl_take isl_set *set2); 553 554 int isl_set_size(__isl_keep isl_set *set); 555 556 __isl_give isl_basic_set *isl_basic_set_align_params( 557 __isl_take isl_basic_set *bset, __isl_take isl_space *model); 558 __isl_give isl_set *isl_set_align_params(__isl_take isl_set *set, 559 __isl_take isl_space *model); 560 __isl_give isl_basic_set *isl_basic_set_drop_unused_params( 561 __isl_take isl_basic_set *bset); 562 __isl_give isl_set *isl_set_drop_unused_params(__isl_take isl_set *set); 563 564 __isl_give isl_mat *isl_basic_set_equalities_matrix( 565 __isl_keep isl_basic_set *bset, enum isl_dim_type c1, 566 enum isl_dim_type c2, enum isl_dim_type c3, enum isl_dim_type c4); 567 __isl_give isl_mat *isl_basic_set_inequalities_matrix( 568 __isl_keep isl_basic_set *bset, enum isl_dim_type c1, 569 enum isl_dim_type c2, enum isl_dim_type c3, enum isl_dim_type c4); 570 __isl_give isl_basic_set *isl_basic_set_from_constraint_matrices( 571 __isl_take isl_space *space, 572 __isl_take isl_mat *eq, __isl_take isl_mat *ineq, enum isl_dim_type c1, 573 enum isl_dim_type c2, enum isl_dim_type c3, enum isl_dim_type c4); 574 575 __isl_give isl_basic_set *isl_basic_set_from_multi_aff( 576 __isl_take isl_multi_aff *ma); 577 578 __isl_export 579 __isl_give isl_set *isl_multi_aff_as_set(__isl_take isl_multi_aff *ma); 580 __isl_give isl_set *isl_set_from_multi_aff(__isl_take isl_multi_aff *ma); 581 582 __isl_give isl_mat *isl_basic_set_reduced_basis(__isl_keep isl_basic_set *bset); 583 584 __isl_give isl_basic_set *isl_basic_set_coefficients( 585 __isl_take isl_basic_set *bset); 586 __isl_give isl_basic_set_list *isl_basic_set_list_coefficients( 587 __isl_take isl_basic_set_list *list); 588 __isl_give isl_basic_set *isl_set_coefficients(__isl_take isl_set *set); 589 __isl_give isl_basic_set *isl_basic_set_solutions( 590 __isl_take isl_basic_set *bset); 591 __isl_give isl_basic_set *isl_set_solutions(__isl_take isl_set *set); 592 593 __isl_give isl_pw_aff *isl_set_dim_max(__isl_take isl_set *set, int pos); 594 __isl_give isl_pw_aff *isl_set_dim_min(__isl_take isl_set *set, int pos); 595 596 __isl_give char *isl_basic_set_to_str(__isl_keep isl_basic_set *bset); 597 __isl_give char *isl_set_to_str(__isl_keep isl_set *set); 598 599 #if defined(__cplusplus) 600 } 601 #endif 602 603 #endif 604