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