1 | #ifndef ISL_UNION_MAP_H |
2 | #define ISL_UNION_MAP_H |
3 | |
4 | #include <isl/stdint.h> |
5 | #include <isl/space_type.h> |
6 | #include <isl/aff_type.h> |
7 | #include <isl/map_type.h> |
8 | #include <isl/union_map_type.h> |
9 | #include <isl/printer.h> |
10 | #include <isl/val_type.h> |
11 | |
12 | #if defined(__cplusplus) |
13 | extern "C" { |
14 | #endif |
15 | |
16 | isl_size isl_union_map_dim(__isl_keep isl_union_map *umap, |
17 | enum isl_dim_type type); |
18 | isl_bool isl_union_map_involves_dims(__isl_keep isl_union_map *umap, |
19 | enum isl_dim_type type, unsigned first, unsigned n); |
20 | __isl_give isl_id *isl_union_map_get_dim_id(__isl_keep isl_union_map *umap, |
21 | enum isl_dim_type type, unsigned pos); |
22 | |
23 | __isl_constructor |
24 | __isl_give isl_union_map *isl_union_map_from_basic_map( |
25 | __isl_take isl_basic_map *bmap); |
26 | __isl_export |
27 | __isl_give isl_union_map *isl_map_to_union_map(__isl_take isl_map *map); |
28 | __isl_constructor |
29 | __isl_give isl_union_map *isl_union_map_from_map(__isl_take isl_map *map); |
30 | __isl_overload |
31 | __isl_give isl_union_map *isl_union_map_empty_ctx(isl_ctx *ctx); |
32 | __isl_give isl_union_map *isl_union_map_empty_space( |
33 | __isl_take isl_space *space); |
34 | __isl_give isl_union_map *isl_union_map_empty(__isl_take isl_space *space); |
35 | __isl_give isl_union_map *isl_union_map_copy(__isl_keep isl_union_map *umap); |
36 | __isl_null isl_union_map *isl_union_map_free(__isl_take isl_union_map *umap); |
37 | |
38 | isl_ctx *isl_union_map_get_ctx(__isl_keep isl_union_map *umap); |
39 | __isl_export |
40 | __isl_give isl_space *isl_union_map_get_space(__isl_keep isl_union_map *umap); |
41 | |
42 | __isl_give isl_union_map *isl_union_map_reset_user( |
43 | __isl_take isl_union_map *umap); |
44 | |
45 | int isl_union_map_find_dim_by_name(__isl_keep isl_union_map *umap, |
46 | enum isl_dim_type type, const char *name); |
47 | |
48 | __isl_export |
49 | __isl_give isl_union_map *isl_union_map_universe( |
50 | __isl_take isl_union_map *umap); |
51 | __isl_give isl_set *isl_union_map_params(__isl_take isl_union_map *umap); |
52 | __isl_export |
53 | __isl_give isl_union_set *isl_union_map_domain(__isl_take isl_union_map *umap); |
54 | __isl_export |
55 | __isl_give isl_union_set *isl_union_map_range(__isl_take isl_union_map *umap); |
56 | __isl_export |
57 | __isl_give isl_union_map *isl_union_map_domain_map( |
58 | __isl_take isl_union_map *umap); |
59 | __isl_export |
60 | __isl_give isl_union_pw_multi_aff *isl_union_map_domain_map_union_pw_multi_aff( |
61 | __isl_take isl_union_map *umap); |
62 | __isl_export |
63 | __isl_give isl_union_map *isl_union_map_range_map( |
64 | __isl_take isl_union_map *umap); |
65 | __isl_give isl_union_map *isl_union_set_wrapped_domain_map( |
66 | __isl_take isl_union_set *uset); |
67 | __isl_export |
68 | __isl_give isl_union_map *isl_union_map_from_domain( |
69 | __isl_take isl_union_set *uset); |
70 | __isl_export |
71 | __isl_give isl_union_map *isl_union_map_from_range( |
72 | __isl_take isl_union_set *uset); |
73 | |
74 | __isl_export |
75 | __isl_give isl_union_map *isl_union_map_affine_hull( |
76 | __isl_take isl_union_map *umap); |
77 | __isl_export |
78 | __isl_give isl_union_map *isl_union_map_polyhedral_hull( |
79 | __isl_take isl_union_map *umap); |
80 | __isl_give isl_union_map *isl_union_map_remove_redundancies( |
81 | __isl_take isl_union_map *umap); |
82 | __isl_give isl_union_map *isl_union_map_simple_hull( |
83 | __isl_take isl_union_map *umap); |
84 | __isl_export |
85 | __isl_give isl_union_map *isl_union_map_coalesce( |
86 | __isl_take isl_union_map *umap); |
87 | __isl_export |
88 | __isl_give isl_union_map *isl_union_map_compute_divs( |
89 | __isl_take isl_union_map *umap); |
90 | __isl_export |
91 | __isl_give isl_union_map *isl_union_map_lexmin(__isl_take isl_union_map *umap); |
92 | __isl_export |
93 | __isl_give isl_union_map *isl_union_map_lexmax(__isl_take isl_union_map *umap); |
94 | |
95 | __isl_give isl_union_map *isl_union_map_add_map(__isl_take isl_union_map *umap, |
96 | __isl_take isl_map *map); |
97 | __isl_export |
98 | __isl_give isl_union_map *isl_union_map_union(__isl_take isl_union_map *umap1, |
99 | __isl_take isl_union_map *umap2); |
100 | __isl_export |
101 | __isl_give isl_union_map *isl_union_map_subtract( |
102 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
103 | __isl_export |
104 | __isl_give isl_union_map *isl_union_map_intersect( |
105 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
106 | __isl_export |
107 | __isl_give isl_union_map *isl_union_map_intersect_params( |
108 | __isl_take isl_union_map *umap, __isl_take isl_set *set); |
109 | __isl_export |
110 | __isl_give isl_union_map *isl_union_map_product(__isl_take isl_union_map *umap1, |
111 | __isl_take isl_union_map *umap2); |
112 | __isl_export |
113 | __isl_give isl_union_map *isl_union_map_domain_product( |
114 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
115 | __isl_give isl_union_map *isl_union_map_flat_domain_product( |
116 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
117 | __isl_export |
118 | __isl_give isl_union_map *isl_union_map_range_product( |
119 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
120 | __isl_give isl_union_map *isl_union_map_flat_range_product( |
121 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
122 | __isl_export |
123 | __isl_give isl_union_map *isl_union_map_domain_factor_domain( |
124 | __isl_take isl_union_map *umap); |
125 | __isl_export |
126 | __isl_give isl_union_map *isl_union_map_domain_factor_range( |
127 | __isl_take isl_union_map *umap); |
128 | __isl_export |
129 | __isl_give isl_union_map *isl_union_map_range_factor_domain( |
130 | __isl_take isl_union_map *umap); |
131 | __isl_export |
132 | __isl_give isl_union_map *isl_union_map_range_factor_range( |
133 | __isl_take isl_union_map *umap); |
134 | __isl_export |
135 | __isl_give isl_union_map *isl_union_map_factor_domain( |
136 | __isl_take isl_union_map *umap); |
137 | __isl_export |
138 | __isl_give isl_union_map *isl_union_map_factor_range( |
139 | __isl_take isl_union_map *umap); |
140 | __isl_export |
141 | __isl_give isl_union_map *isl_union_map_gist(__isl_take isl_union_map *umap, |
142 | __isl_take isl_union_map *context); |
143 | __isl_export |
144 | __isl_give isl_union_map *isl_union_map_gist_params( |
145 | __isl_take isl_union_map *umap, __isl_take isl_set *set); |
146 | __isl_export |
147 | __isl_give isl_union_map *isl_union_map_gist_domain( |
148 | __isl_take isl_union_map *umap, __isl_take isl_union_set *uset); |
149 | __isl_export |
150 | __isl_give isl_union_map *isl_union_map_gist_range( |
151 | __isl_take isl_union_map *umap, __isl_take isl_union_set *uset); |
152 | |
153 | __isl_overload |
154 | __isl_give isl_union_map *isl_union_map_intersect_domain_union_set( |
155 | __isl_take isl_union_map *umap, __isl_take isl_union_set *uset); |
156 | __isl_overload |
157 | __isl_give isl_union_map *isl_union_map_intersect_domain_space( |
158 | __isl_take isl_union_map *umap, __isl_take isl_space *space); |
159 | __isl_give isl_union_map *isl_union_map_intersect_domain( |
160 | __isl_take isl_union_map *umap, __isl_take isl_union_set *uset); |
161 | __isl_overload |
162 | __isl_give isl_union_map *isl_union_map_intersect_range_union_set( |
163 | __isl_take isl_union_map *umap, __isl_take isl_union_set *uset); |
164 | __isl_overload |
165 | __isl_give isl_union_map *isl_union_map_intersect_range_space( |
166 | __isl_take isl_union_map *umap, __isl_take isl_space *space); |
167 | __isl_give isl_union_map *isl_union_map_intersect_range( |
168 | __isl_take isl_union_map *umap, __isl_take isl_union_set *uset); |
169 | __isl_export |
170 | __isl_give isl_union_map *isl_union_map_intersect_domain_factor_domain( |
171 | __isl_take isl_union_map *umap, __isl_take isl_union_map *factor); |
172 | __isl_export |
173 | __isl_give isl_union_map *isl_union_map_intersect_domain_factor_range( |
174 | __isl_take isl_union_map *umap, __isl_take isl_union_map *factor); |
175 | __isl_export |
176 | __isl_give isl_union_map *isl_union_map_intersect_range_factor_domain( |
177 | __isl_take isl_union_map *umap, __isl_take isl_union_map *factor); |
178 | __isl_export |
179 | __isl_give isl_union_map *isl_union_map_intersect_range_factor_range( |
180 | __isl_take isl_union_map *umap, __isl_take isl_union_map *factor); |
181 | __isl_overload |
182 | __isl_give isl_union_map * |
183 | isl_union_map_intersect_domain_wrapped_domain_union_set( |
184 | __isl_take isl_union_map *umap, __isl_take isl_union_set *domain); |
185 | __isl_overload |
186 | __isl_give isl_union_map * |
187 | isl_union_map_intersect_range_wrapped_domain_union_set( |
188 | __isl_take isl_union_map *umap, __isl_take isl_union_set *domain); |
189 | |
190 | __isl_export |
191 | __isl_give isl_union_map *isl_union_map_subtract_domain( |
192 | __isl_take isl_union_map *umap, __isl_take isl_union_set *dom); |
193 | __isl_export |
194 | __isl_give isl_union_map *isl_union_map_subtract_range( |
195 | __isl_take isl_union_map *umap, __isl_take isl_union_set *dom); |
196 | |
197 | __isl_export |
198 | __isl_give isl_union_map *isl_union_map_apply_domain( |
199 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
200 | __isl_export |
201 | __isl_give isl_union_map *isl_union_map_apply_range( |
202 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
203 | __isl_overload |
204 | __isl_give isl_union_map *isl_union_map_preimage_domain_multi_aff( |
205 | __isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma); |
206 | __isl_overload |
207 | __isl_give isl_union_map *isl_union_map_preimage_range_multi_aff( |
208 | __isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma); |
209 | __isl_overload |
210 | __isl_give isl_union_map *isl_union_map_preimage_domain_pw_multi_aff( |
211 | __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma); |
212 | __isl_overload |
213 | __isl_give isl_union_map *isl_union_map_preimage_range_pw_multi_aff( |
214 | __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma); |
215 | __isl_overload |
216 | __isl_give isl_union_map *isl_union_map_preimage_domain_multi_pw_aff( |
217 | __isl_take isl_union_map *umap, __isl_take isl_multi_pw_aff *mpa); |
218 | __isl_overload |
219 | __isl_give isl_union_map *isl_union_map_preimage_domain_union_pw_multi_aff( |
220 | __isl_take isl_union_map *umap, |
221 | __isl_take isl_union_pw_multi_aff *upma); |
222 | __isl_overload |
223 | __isl_give isl_union_map *isl_union_map_preimage_range_union_pw_multi_aff( |
224 | __isl_take isl_union_map *umap, |
225 | __isl_take isl_union_pw_multi_aff *upma); |
226 | __isl_export |
227 | __isl_give isl_union_map *isl_union_map_reverse(__isl_take isl_union_map *umap); |
228 | __isl_export |
229 | __isl_give isl_union_map *isl_union_map_range_reverse( |
230 | __isl_take isl_union_map *umap); |
231 | __isl_export |
232 | __isl_give isl_union_map *isl_union_map_from_domain_and_range( |
233 | __isl_take isl_union_set *domain, __isl_take isl_union_set *range); |
234 | |
235 | __isl_export |
236 | __isl_give isl_union_map *isl_union_map_detect_equalities( |
237 | __isl_take isl_union_map *umap); |
238 | __isl_export |
239 | __isl_give isl_union_set *isl_union_map_deltas(__isl_take isl_union_map *umap); |
240 | __isl_give isl_union_map *isl_union_map_deltas_map( |
241 | __isl_take isl_union_map *umap); |
242 | __isl_export |
243 | __isl_give isl_union_map *isl_union_set_identity(__isl_take isl_union_set *uset); |
244 | |
245 | __isl_overload |
246 | __isl_give isl_union_map *isl_union_map_project_out_param_id( |
247 | __isl_take isl_union_map *umap, __isl_take isl_id *id); |
248 | __isl_overload |
249 | __isl_give isl_union_map *isl_union_map_project_out_param_id_list( |
250 | __isl_take isl_union_map *umap, __isl_take isl_id_list *list); |
251 | __isl_give isl_union_map *isl_union_map_project_out( |
252 | __isl_take isl_union_map *umap, |
253 | enum isl_dim_type type, unsigned first, unsigned n); |
254 | __isl_export |
255 | __isl_give isl_union_map *isl_union_map_project_out_all_params( |
256 | __isl_take isl_union_map *umap); |
257 | __isl_give isl_union_map *isl_union_map_remove_divs( |
258 | __isl_take isl_union_map *bmap); |
259 | |
260 | __isl_export |
261 | __isl_give isl_union_set *isl_union_map_bind_range( |
262 | __isl_take isl_union_map *umap, __isl_take isl_multi_id *tuple); |
263 | |
264 | isl_bool isl_union_map_plain_is_empty(__isl_keep isl_union_map *umap); |
265 | __isl_export |
266 | isl_bool isl_union_map_is_empty(__isl_keep isl_union_map *umap); |
267 | __isl_export |
268 | isl_bool isl_union_map_is_single_valued(__isl_keep isl_union_map *umap); |
269 | isl_bool isl_union_map_plain_is_injective(__isl_keep isl_union_map *umap); |
270 | __isl_export |
271 | isl_bool isl_union_map_is_injective(__isl_keep isl_union_map *umap); |
272 | __isl_export |
273 | isl_bool isl_union_map_is_bijective(__isl_keep isl_union_map *umap); |
274 | isl_bool isl_union_map_is_identity(__isl_keep isl_union_map *umap); |
275 | |
276 | __isl_export |
277 | isl_bool isl_union_map_is_subset(__isl_keep isl_union_map *umap1, |
278 | __isl_keep isl_union_map *umap2); |
279 | __isl_export |
280 | isl_bool isl_union_map_is_equal(__isl_keep isl_union_map *umap1, |
281 | __isl_keep isl_union_map *umap2); |
282 | __isl_export |
283 | isl_bool isl_union_map_is_disjoint(__isl_keep isl_union_map *umap1, |
284 | __isl_keep isl_union_map *umap2); |
285 | __isl_export |
286 | isl_bool isl_union_map_is_strict_subset(__isl_keep isl_union_map *umap1, |
287 | __isl_keep isl_union_map *umap2); |
288 | |
289 | uint32_t isl_union_map_get_hash(__isl_keep isl_union_map *umap); |
290 | |
291 | isl_size isl_union_map_n_map(__isl_keep isl_union_map *umap); |
292 | __isl_export |
293 | isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap, |
294 | isl_stat (*fn)(__isl_take isl_map *map, void *user), void *user); |
295 | __isl_export |
296 | __isl_give isl_map_list *isl_union_map_get_map_list( |
297 | __isl_keep isl_union_map *umap); |
298 | __isl_export |
299 | isl_bool isl_union_map_every_map(__isl_keep isl_union_map *umap, |
300 | isl_bool (*test)(__isl_keep isl_map *map, void *user), void *user); |
301 | __isl_give isl_union_map *isl_union_map_remove_map_if( |
302 | __isl_take isl_union_map *umap, |
303 | isl_bool (*fn)(__isl_keep isl_map *map, void *user), void *user); |
304 | isl_bool isl_union_map_contains(__isl_keep isl_union_map *umap, |
305 | __isl_keep isl_space *space); |
306 | __isl_export |
307 | __isl_give isl_map *(__isl_keep isl_union_map *umap, |
308 | __isl_take isl_space *space); |
309 | __isl_export |
310 | isl_bool isl_union_map_isa_map(__isl_keep isl_union_map *umap); |
311 | __isl_export |
312 | __isl_give isl_map *isl_union_map_as_map(__isl_take isl_union_map *umap); |
313 | __isl_give isl_map *isl_map_from_union_map(__isl_take isl_union_map *umap); |
314 | |
315 | __isl_give isl_basic_map *isl_union_map_sample(__isl_take isl_union_map *umap); |
316 | |
317 | __isl_overload |
318 | __isl_give isl_union_map *isl_union_map_fixed_power_val( |
319 | __isl_take isl_union_map *umap, __isl_take isl_val *exp); |
320 | __isl_give isl_union_map *isl_union_map_power(__isl_take isl_union_map *umap, |
321 | isl_bool *exact); |
322 | __isl_give isl_union_map *isl_union_map_transitive_closure( |
323 | __isl_take isl_union_map *umap, isl_bool *exact); |
324 | |
325 | __isl_give isl_union_map *isl_union_map_lex_lt_union_map( |
326 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
327 | __isl_give isl_union_map *isl_union_map_lex_le_union_map( |
328 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
329 | __isl_give isl_union_map *isl_union_map_lex_gt_union_map( |
330 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
331 | __isl_give isl_union_map *isl_union_map_lex_ge_union_map( |
332 | __isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2); |
333 | |
334 | __isl_overload |
335 | __isl_give isl_union_map *isl_union_map_eq_at_multi_union_pw_aff( |
336 | __isl_take isl_union_map *umap, |
337 | __isl_take isl_multi_union_pw_aff *mupa); |
338 | __isl_give isl_union_map *isl_union_map_lex_le_at_multi_union_pw_aff( |
339 | __isl_take isl_union_map *umap, |
340 | __isl_take isl_multi_union_pw_aff *mupa); |
341 | __isl_give isl_union_map *isl_union_map_lex_lt_at_multi_union_pw_aff( |
342 | __isl_take isl_union_map *umap, |
343 | __isl_take isl_multi_union_pw_aff *mupa); |
344 | __isl_give isl_union_map *isl_union_map_lex_ge_at_multi_union_pw_aff( |
345 | __isl_take isl_union_map *umap, |
346 | __isl_take isl_multi_union_pw_aff *mupa); |
347 | __isl_give isl_union_map *isl_union_map_lex_gt_at_multi_union_pw_aff( |
348 | __isl_take isl_union_map *umap, |
349 | __isl_take isl_multi_union_pw_aff *mupa); |
350 | |
351 | __isl_give isl_union_map *isl_union_map_read_from_file(isl_ctx *ctx, |
352 | FILE *input); |
353 | __isl_constructor |
354 | __isl_give isl_union_map *isl_union_map_read_from_str(isl_ctx *ctx, |
355 | const char *str); |
356 | __isl_give char *isl_union_map_to_str(__isl_keep isl_union_map *umap); |
357 | __isl_give isl_printer *isl_printer_print_union_map(__isl_take isl_printer *p, |
358 | __isl_keep isl_union_map *umap); |
359 | void isl_union_map_dump(__isl_keep isl_union_map *umap); |
360 | |
361 | __isl_export |
362 | __isl_give isl_union_set *isl_union_map_wrap(__isl_take isl_union_map *umap); |
363 | __isl_export |
364 | __isl_give isl_union_map *isl_union_set_unwrap(__isl_take isl_union_set *uset); |
365 | |
366 | __isl_export |
367 | __isl_give isl_union_map *isl_union_map_zip(__isl_take isl_union_map *umap); |
368 | __isl_export |
369 | __isl_give isl_union_map *isl_union_map_curry(__isl_take isl_union_map *umap); |
370 | __isl_give isl_union_map *isl_union_map_range_curry( |
371 | __isl_take isl_union_map *umap); |
372 | __isl_export |
373 | __isl_give isl_union_map *isl_union_map_uncurry(__isl_take isl_union_map *umap); |
374 | |
375 | __isl_give isl_union_map *isl_union_map_align_params( |
376 | __isl_take isl_union_map *umap, __isl_take isl_space *model); |
377 | __isl_give isl_union_set *isl_union_set_align_params( |
378 | __isl_take isl_union_set *uset, __isl_take isl_space *model); |
379 | |
380 | ISL_DECLARE_LIST_FN(union_map) |
381 | |
382 | #if defined(__cplusplus) |
383 | } |
384 | #endif |
385 | |
386 | #endif |
387 | |